Vai al contenuto

SmartHome: determina i dati GPS

Momento della lettura 4 minuti

Aktualisiert – Marzo 10, 2025

Se desideri rilevare i dati GPS utilizzando SmartHome, ad esempio per interrogare i dati meteorologici locali, puoi farlo con un router Teltonika RUTX50 senza hardware o software aggiuntivo utilizzando Homematic / RaspberryMatic.

Nozioni di base

I router Teltonika RUTX.. consentono di inviare e ricevere SMS tramite la scheda SIM attivata. Allo stesso modo, l'invio di dati di posizione in risposta a un SMS con il contenuto "Password GPS„.

È possibile visualizzare l'elenco degli SMS in arrivo e il contenuto degli SMS tramite richiesta HTTP. Le informazioni attuali su longitudine e latitudine possono essere lette dall'SMS ricevuto in risposta alla richiesta SMS.

Questi possono ora essere ulteriormente elaborati tramite script all'interno dell'automazione Smart Home utilizzando HomeMatic o RaspberryMatic. Durante il viaggio, i geodati in continua evoluzione possono essere utilizzati per una query meteo costantemente aggiornata in base alla posizione attuale, ad esempio tramite il servizio gratuito di openweathermap.org usare.

Provider SMS-Einstellungen

Je nach Provider muss ggf. noch die im Router eingesetzte SIM-Karte für SMS freigeschaltet werden. Dies geschieht i.d.R. in den zugehörigen Einstellungen nach Einloggen auf der Provider-Webseite.

Während sog. Multi-Card-Angebote das Klingeln und Telefonieren auf allen mit einer solchen SIM-Karte ausgestatteten Geräten umsetzbar ist, wird SMS nur wahlweise auf EINER der SIM-Karten unterstützt!

Installazione: router Teltonika

Servizi – Utilità mobili – Gateway SMS

  • Impostazioni pubblicazione/acquisizione mobile – Abilitato
  • Nome utente: Nome di login
  • Parola d'ordine: Password per il login

Servizi – Input/Output – Posta/Ricevi

  • Impostazioni post/ottieni I/O – Abilitato
  • Nome utente: Nome di login
  • Parola d'ordine: Password per il login

Configurazione – RaspberryMatic

Installa il demone CUx

Il demone CUx è un componente aggiuntivo che mette a disposizione dispositivi virtuali all'interno di HomeMatic / RaspberryMatic, che può essere utilizzato, tra l'altro, come sostituto meno oneroso delle chiamate di sistema, qui ad esempio per inviare SMS tramite una richiesta HTTP al router.

L'AddOn viene installato tramite Impostazioni - Software aggiuntivo, lì nell'area più bassa è possibile scaricare il file AddOn facendo clic sul pulsante Scegli un file nella cartella di download corrispondente sul computer e fare clic sul pulsante Installare essere caricato sul centro e installato.

Demone CUx: crea dispositivo

Il demone CUx viene richiamato tramite il sistema facendo clic sul pulsante Demone CUx.

Clicca sul pulsante in alto a destra Dispositivi apre l'interfaccia. In alto a sinistra, sotto Tipo di dispositivo CUxD, proviene dall'elenco seguente sistema selezionato.

In quanto funzione la funzione diventa Esecutivo selezionato, un nome corrispondente nel campo Nome, ad es GPS, inserito e quindi fatto clic sul pulsante Crea dispositivo sulla CCU, il dispositivo è stato salvato.

Il dispositivo creato viene quindi visualizzato nella finestra di destra con il suo ID, ad es. CUX2801001, e può essere indirizzato negli script tramite questo ID.

Script

Invia SMS per l'output dei dati GPS

Le informazioni tra parentesi quadre devono essere sostituite con i propri dati:

stringa url="'http://[IP del router]/cgi-bin/sms_send?nomeutente=[Nome utente]&password=[parola d'ordine]&numero=[Numero di telefono internazionale]&testo=[Password GPS]'“;
dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“wget -q -O – “#url);

Tieni presente che la stringa è racchiusa tra virgolette doppie (“) E singole (')!

Questo script sarà nel programma da creare GPS_Loc_Aggiornamento chiamato e il seguente script, che a sua volta chiama il programma GPS_Data, viene sfasato di 30 secondi per attendere la ricezione dell'SMS con i dati PÜS:

var programObj = dom.GetObject("GPS_Data");
programmaObj.ProgramExecute();

programma GPS_Loc_Aggiornamento Può essere programmato una volta al giorno o a intervalli più brevi a seconda delle necessità.

Elenco SMS in uscita

Per leggere i dati GPS, al router viene chiesto di emettere l'elenco SMS tramite una richiesta HTTP.

Questo script richiede due variabili di tipo STRING, che devono essere create in Impostazioni - Variabili di sistema di seguito facendo clic sul pulsante Nuovo:

  • W_Lat (per memorizzare la latitudine geografica)
  • W_Lon (per memorizzare la longitudine geografica)

Il contenuto della sceneggiatura (righe con iniziali punto esclamativo sono commenti; Linea di scrittura-Le istruzioni vengono utilizzate solo per il controllo delle uscite e possono essere cancellate.)):

var url = “http://[IP del router]/cgi-bin/sms_list?nomeutente=[Nome utente]&password=[parola d'ordine]“;

! Dichiarazione della variabile
var posValueStart;
var posValueEnd;
var pos;
dati var;
var posStart;
var posEnd; stringa standard; stringa stdout;

! Comando WGET per trasmettere la stringa di richiesta HTTP al router
system.Exec(“wget -q -O – ‘“#url#“‚”, &stdout, &stderr);

! Output del risultato della query per il controllo
WriteLine(stdout);

! Indice: 1
! Data: venerdì 26 gennaio 11:01:02 2024
! Mittente: +49xxxxxxxxxxxxx
! Testo: Ora fissa: 26-01-2024, 11:01:01 Latitudine: 54.834682 Longitudine: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1velocità:0
! Stato: letto

! Leggere i dati GPS
posizione = 0;
! Posizione dell'inizio del valore cercato
posStart = 'Latitudine: ';
! Posizione della fine del valore cercato
posEnd = 'Longitudine: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! la stringa che cerchi è:
string Latitudine = stdout.Substr(posValueStart, posValueEnd);
! Conversione della stringa (stringa di caratteri) in un numero in virgola mobile
var lat = Latitudine.ToFloat();
! Output della longitudine geografica per il controllo
WriteLine("Latitudine");WriteLine(Latitudine);

! Memorizza la longitudine geografica nella variabile W_Lat
dom.GetObject('W_Lat').State(lat);

posizione = 0;
posStart = 'Longitudine: ';
posEnd = 'http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitudine = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitudine.ToFloat();
WriteLine("Longitudine");WriteLine(lon);

dom.GetObject('W_Lon').State(lon);

Il programma non contiene alcuna condizione per l'esecuzione perché viene avviato tramite il programma o lo script sopra indicato.

Ora le informazioni geografiche possono essere utilizzate per interrogare i dati meteorologici per questa località. A questo scopo viene creato un altro programma che viene avviato periodicamente tramite un timer, che inserisce tramite uno script i due valori nella stringa di richiesta HTTP del suddetto servizio meteorologico e tiene quindi conto del cambiamento di località nella query .

Programma W_Data_OWM

Composizione dell'URL

! Caricamento delle variabili inserite in GPS_Data W_Lat E W_Lon e assegnazione alle variabili url_1 E 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);

! Comporre l'URL utilizzando la variabile content url_1 E url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxx] rappresenta la chiave API del servizio meteo ricevuta dopo la registrazione
var url = “https://api.openweathermap.org/data/2.5/weather?lat=”#url_1#”&lon=”#url_2#”&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric”;
! Output della stringa completa per il controllo
ScriviLine(url);

Segue la stessa procedura di dichiarazione delle variabili, il comando WGET, che emette i risultati della query per il controllo e la lettura dei dati meteorologici desiderati (vedi. documentazione) secondo la procedura indicata per i dati GPS.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItalian