Table des matières
Mis à jour - mars 10, 2025
Si vous souhaitez déterminer des données GPS à l'aide de SmartHome, par exemple pour interroger des données météorologiques locales, vous pouvez le faire avec un routeur Teltonika RUTX50 sans matériel ni logiciel supplémentaire en utilisant Homematic / RaspberryMatic.
Les bases
Les routeurs Teltonika RUTX.. permettent d'envoyer et de recevoir des SMS via la carte SIM activée. De même, l'envoi de données de position en réponse à un SMS avec le contenu «Mot de passe GPS„.
Vous pouvez afficher la liste des SMS entrants et le contenu des SMS via une requête HTTP. Les informations actuelles de longitude et de latitude peuvent être lues à partir du SMS reçu en réponse à la demande SMS.
Ceux-ci peuvent désormais être traités ultérieurement via un script dans la domotique Smart Home à l'aide de HomeMatic ou RaspberryMatic. En voyage, les géodonnées en constante évolution peuvent être utilisées pour une requête météo constamment mise à jour en fonction de la position actuelle, par exemple via le service gratuit de openweathermap.org à utiliser.
Paramètres SMS de l'opérateur
Selon le fournisseur d'accès, il peut être nécessaire d'activer la carte SIM du routeur pour les SMS. Cela se fait généralement dans les paramètres correspondants après s'être connecté sur le site web de l'opérateur.
Alors que les offres dites multicartes permettent de sonner et de téléphoner sur tous les appareils équipés d'une telle carte SIM, les SMS ne sont supportés qu'au choix sur UNE des cartes SIM !
Configuration – Routeur Teltonika
Services – Utilitaires mobiles – Passerelle SMS
- Publication mobile/Obtenir les paramètres – Activé
- Nom d'utilisateur: Nom de connexion
- Mot de passe: ConnexionMot de passe
Services – Entrée/Sortie – Publier/Obtenir
- Publication d'E/S/Obtenir les paramètres – Activé
- Nom d'utilisateur: Nom de connexion
- Mot de passe: ConnexionMot de passe
Configuration – RaspberryMatic
Installer le démon Cux
Le démon CUx est un module complémentaire qui fournit des appareils virtuels au sein de HomeMatic / RaspberryMatic, qui peuvent être utilisés, entre autres, comme remplacement moins fastidieux des appels système, ici par exemple pour envoyer des SMS via une requête HTTP au routeur.
L'AddOn est installé via Paramètres - Logiciels supplémentaires, là, dans la zone la plus basse, vous pouvez télécharger le fichier AddOn en cliquant sur le bouton Sélectionner un fichier dans le dossier de téléchargement correspondant sur l'ordinateur et cliquez sur le bouton Installer être chargé sur le centre et installé.
Démon CUx – créer un périphérique
Le démon CUx est appelé via le système en cliquant sur le bouton Démon Cux.
Cliquez sur le bouton en haut à droite Dispositifs ouvre l'interface. En haut à gauche, sous Type de périphérique CUxD, figure dans la liste ci-dessous système choisi.
En tant que fonction, la fonction devient Exécutif sélectionné, un nom correspondant dans le champ Nom, par ex. GPS, saisi puis cliqué sur le bouton Créer un appareil sur la CCU, l'appareil a été enregistré.
L'appareil créé apparaît alors dans la fenêtre de droite avec son ID, par exemple CUX2801001, et peut être adressé dans des scripts à l'aide de cet ID.
Scripts
Envoyer des SMS pour la sortie des données GPS
Les informations entre crochets doivent être remplacées par vos propres données :
chaîne url="'http://[IP du routeur]/cgi-bin/sms_send?username=[Nom d'utilisateur]&mot de passe=[mot de passe]&numéro=[Numéro de téléphone international]&text=[Mot de passe GPS]'“ ;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O – "#url);
Veuillez noter que la chaîne est entourée de guillemets doubles («) ET simples (') !
Ce script sera dans le programme à créer GPS_Loc_Update appelé et le script suivant, qui à son tour appelle le programme GPS_Data, est décalé de 30 secondes pour attendre la réception du SMS avec les données PÜS :
var programObj = dom.GetObject("GPS_Data");
programObj.ProgramExecute();
programme GPS_Loc_Update Peut être programmé une fois par jour ou à des intervalles plus courts selon les besoins.

Liste des SMS de sortie
Afin de lire les données GPS, le routeur est invité à émettre la liste SMS via une requête HTTP.
Ce script nécessite deux variables de type STRING, qui doivent être créées sous Paramètres - Variables système ci-dessous en cliquant sur le bouton Nouveau :
- W_Lat (pour stocker la latitude géographique)
- W_Lon (pour stocker la longitude géographique)
Le contenu du script (lignes commençant par point d'exclamation sont des commentaires ; Écrire une ligne-Les instructions ne sont utilisées que pour le contrôle de sortie et peuvent être supprimées.)) :
varurl = « http://[IP du routeur]/cgi-bin/sms_list?username=[Nom d'utilisateur]&mot de passe=[mot de passe]“ ;
! Déclaration de la variable
var posValueStart;
var posValueEnd;
var pos;
données var ;
var posStart;
var posEnd; chaîne stderr ; chaîne sortie standard ;
! Commande WGET pour transmettre la chaîne de requête HTTP au routeur
system.Exec("wget -q -O – '"#url#"‚", &stdout, &stderr);
! Sortie du résultat de la requête pour le contrôle
WriteLine(stdout);
! Indice : 1
! Date : vendredi 26 janvier 11:01:02 2024
! Expéditeur : +49xxxxxxxxxxxxx
! Texte : Heure de correction : 2024-01-26, 11:01:01 Latitude: 54.834682 Longitude: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1vitesse:0
! Statut : lu
! Lire les données GPS
pos = 0 ;
! Position du début de la valeur recherchée
posStart = 'Latitude : ';
! Position de la fin de la valeur recherchée
posEnd = 'Longitude : ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! la chaîne que vous recherchez est :
chaîne Latitude = stdout.Substr(posValueStart, posValueEnd);
! Conversion de la chaîne (chaîne de caractères) en nombre à virgule flottante
var lat = Latitude.ToFloat();
! Sortie de la longitude géographique pour le contrôle
WriteLine("Latitude");WriteLine(Latitude);
! Enregistrez la longitude géographique dans la variable W_Lat
dom.GetObject('W_Lat').State(lat);
pos = 0 ;
posStart = 'Longitude : ';
posEnd = 'http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
chaîne Longitude = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine("Longitude");WriteLine(lon);
dom.GetObject('W_Lon').State(lon);
Le programme ne contient aucune condition d'exécution car il est lancé via le programme ou le script ci-dessus.

Les informations géographiques peuvent désormais être utilisées pour interroger les données météorologiques pour cet emplacement. A cet effet, un autre programme est créé, démarré périodiquement à l'aide d'un minuteur, qui utilise un script pour insérer les deux valeurs dans la chaîne de requête HTTP du service météo mentionné ci-dessus et prend ainsi en compte les changements d'emplacement dans la requête. .
Programme W_Data_OWM

Composer l'URL
! Chargement des variables renseignées dans GPS_Data W_Lat et W_Lon et attribution aux variables url_1 et URL_2
var url_1 = dom.GetObject("W_Lat").Value();
WriteLine("Lat=");WriteLine(url_1);
var url_2 = dom.GetObject("W_Lon").Value();
WriteLine("Lon=");WriteLine(url_2);
! Composer l'URL en utilisant le contenu de la variable url_1 et URL_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxx] représente la clé API reçue du service météo après inscription
var url = « https://api.openweathermap.org/data/2.5/weather?lat= »#url_1# »&lon= »#url_2# »&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric » ;
! Sortie de la chaîne complète pour vérification
WriteLine(url);
Ceci est suivi de la même procédure de déclaration des variables, la commande WGET, produisant le résultat de la requête pour vérifier et lire les données météorologiques souhaitées (voir. documentation) selon la procédure indiquée pour les données GPS.