Innholdsfortegnelse
Oppdatert - 29. januar 2024
Hvis du ønsker å bestemme GPS-data ved hjelp av SmartHome, f.eks. for å spørre etter lokale værdata, kan dette realiseres med en Teltonika RUTX50-ruter uten ekstra maskinvare eller programvare med Homematic / RaspberryMatic.
Grunnleggende
Teltonika-ruterne RUTX... gjør det mulig å sende og motta SMS via det aktiverte SIM-kortet. Det er også mulig å sende posisjonsdata som svar på en SMS med innholdet "Passord gps„.
Listen over innkommende SMS og SMS-innholdet kan vises via HTTP-forespørsel. Gjeldende lengde- og breddegradsdata kan leses fra SMS-en som mottas som svar på SMS-forespørselen.
Disse kan nå bearbeides videre via skript i SmarttHome-automatiseringssystemet ved hjelp av HomeMatic eller RaspberryMatic. Når du er på reise, kan de stadig skiftende geodataene brukes til en kontinuerlig oppdatert værforespørsel basert på den aktuelle posisjonen, f.eks. via gratistjenesten fra openweathermap.org utnytte.
Oppsett - Teltonika Router
Tjenester - Mobile Utilities - SMS Gateway
- Innstillinger for mobilinnlegg/hent innstillinger Aktivert
- Brukernavn: Innloggingsnavn
- Passord: LoginPassword
Tjenester - Input/Output - Post/Get
- I/O Post/Get Settings - Innstillinger Aktivert
- Brukernavn: Innloggingsnavn
- Passord: LoginPassword
Oppsett - RaspberryMatic
Installer CUx-daemon
CUx-dæmonen er et tillegg som tilbyr virtuelle enheter i HomeMatic / RaspberryMatic som kan brukes som en mindre belastende erstatning for systemanrop, f.eks. for å sende SMS-meldinger til ruteren via en HTTP-forespørsel.
AddOn installeres via Innstillinger - Tilleggsprogramvare, hvor du kan laste ned AddOn-filen ved å klikke på knappen Velg fil
i den tilsvarende nedlastingsmappen på datamaskinen og klikk på knappen Installere
kan lastes inn på senteret og installeres.
CUx daemon - Opprett enhet
CUx-daemonen kalles opp via System ved å klikke på knappen CUx-daemon
.
Klikk på knappen øverst til høyre Enheter
åpner grensesnittet. Øverst til venstre, under CUxD-enhetstype, velges følgende fra listen nedenfor System
valgt.
Funksjonen Sjef
velges, legges det inn en tilsvarende betegnelse i feltet Navn, f.eks. GPSog klikk deretter på knappen Opprett enhet på CCU-enheten
enheten er lagret.
Den opprettede enheten vises da med ID i høyre vindu, f.eks. CUX2801001, og kan adresseres i skript ved hjelp av denne ID-en.
Skript
Send SMS for å få ut GPS-data
Opplysningene i parentes må erstattes med dine egne data:
string url="'http://[IP-adressen til ruteren]/cgi-bin/sms_send?username=[Brukernavn]&passord=[passord]&number=[Internasjonalt telefonnummer]&text=[Passord gps]'“;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O -"#url);
Vær oppmerksom på at strengen er omsluttet av doble (") OG enkle (') anførselstegn!
Dette skriptet brukes i programmet som skal opprettes GPS_Loc_Update
og det følgende skriptet, som i sin tur kaller GPS_Data-programmet, forsinkes med 30 sekunder for å vente på at SMS-en med PÜS-dataene skal mottas:
var programObj = dom.GetObject("GPS_Data");
programObj.ProgramExecute();
Program GPS_Loc_Update
kan kjøres én gang i døgnet eller med kortere intervaller, avhengig av behov, ved hjelp av tidsstyring.
![](https://csiag.de/wp-content/uploads/2024/01/image-1-1024x387.png)
Utgående SMS-liste
For å kunne lese ut GPS-dataene, blir ruteren bedt om å sende ut SMS-listen via en HTTP-forespørsel.
Dette skriptet krever to variabler av typen DRAWING CHAIN, som må opprettes under Innstillinger - Systemvariabler nederst ved å klikke på knappen Ny:
- W_Lat (for lagring av geograrpisk breddegrad)
- W_Lon (for lagring av geograrpisk lengdegrad)
Innholdet i skriptet (linjer med ledende Utropstegn er kommentarer; WriteLine-Instruksjonene brukes kun til utdatakontroll og kan slettes):
var url = "http://[IP-adressen til ruteren]/cgi-bin/sms_list?username=[Brukernavn]&passord=[passord]“;
! Deklarasjon av variablene
var posValueStart;
var posValueEnd;
var pos;
var data;
var posStart;
var posEnd; string stderr; string stdout;
! WGET-kommando for overføring av HTTP-forespørselsstrengen til ruteren
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
! Utdata av spørringsresultatet for kontroll
WriteLine(stdout);
! Indeks: 1
! Dato: Fri Jan 26 11:01:02 2024
! Avsender: +49xxxxxxxxxxxxxxxxx
! Tekst: Fastsatt tid: 2024-01-26, 11:01:01 Breddegrad: 54.834682 Lengdegrad: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Status: les
! Les av GPS-data
pos = 0;
! Posisjonen til begynnelsen av den søkte verdien
posStart = 'Breddegrad: ';
! Posisjon for slutten av den søkte verdien
posEnd = ' Lengdegrad: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! er strengen du leter etter:
string Latitude = stdout.substr(posValueStart, posValueEnd);
! Konvertering av strengen (tegnstreng) til et flyttall
var lat = Latitude.ToFloat();
! Utdata av geografisk lengdegrad for kontroll
WriteLine("Breddegrad");WriteLine(Breddegrad);
! Lagring av geografisk lengdegrad i variabelen W_Lat
dom.GetObject('W_Lat').State(lat);
pos = 0;
posStart = 'Lengdegrad: ';
posEnd = ' http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitude = stdout.substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine("Lengdegrad");WriteLine(lon);
dom.GetObject('W_Lon').State(lon);
Programmet inneholder ingen betingelse for kjøring, ettersom det initieres via programmet eller skriptet ovenfor.
![](https://csiag.de/wp-content/uploads/2024/01/image-2-1024x305.png)
Den geografiske informasjonen kan nå brukes til å spørre etter værdata for dette stedet. For å gjøre dette opprettes det et annet program som startes med jevne mellomrom via tidsstyring og setter inn de to verdiene i HTTP-forespørselsstrengen til den ovennevnte værtjenesten ved hjelp av et skript, slik at det tas hensyn til de skiftende stedene i spørringen.
Program W_Data_OWM
![](https://csiag.de/wp-content/uploads/2024/01/image-3-1024x426.png)
Sette sammen URL-en
! Laster inn variablene som er fylt ut i GPS_Data W_Lat og W_Lon og tilordne til variablene url_1 og 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);
! Sett sammen URL-en ved hjelp av variabelinnholdet fra url_1 og url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] representerer API-nøkkelen til værtjenesten mottatt etter registrering
var url = "https://api.openweathermap.org/data/2.5/weather?lat="#url_1#"&lon="#url_2#"&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metrisk";
! Utdata av hele strengen for kontroll
WriteLine(url);
Deretter følger samme prosedyre for deklarering av variablene, WGET-kommandoen, utkjøring av spørringsresultatet for kontroll og utlesning av de ønskede værdataene (se Dokumentasjon) i henhold til prosedyren for GPS-data.