Indholdsfortegnelse
Opdateret - 10. marts 2025
Hvis du ønsker at bestemme GPS-data ved hjælp af SmartHome, f.eks. for at spørge om lokale vejrdata, kan dette realiseres med en Teltonika RUTX50-router uden yderligere hardware eller software med Homematic / RaspberryMatic.
Grundlæggende
Teltonika-routerne RUTX... gør det muligt at sende og modtage SMS'er via det aktiverede SIM-kort. Det er også muligt at sende positionsdata som svar på en SMS med indholdet "Adgangskode gps„.
Den indgående SMS-liste og SMS-indholdet kan ses via HTTP-anmodning. De aktuelle længde- og breddegradsdata kan læses fra den SMS, der modtages som svar på SMS-anmodningen.
Disse kan nu bearbejdes yderligere via script i SmarttHome-automatiseringssystemet ved hjælp af HomeMatic eller RaspberryMatic. Når man rejser, kan de konstant skiftende geodata bruges til en løbende opdateret vejrforespørgsel baseret på den aktuelle placering, f.eks. via den gratis tjeneste fra openweathermap.org udnytte.
Udbyderens SMS-indstillinger
Afhængigt af udbyderen skal det SIM-kort, der bruges i routeren, muligvis aktiveres til SMS. Dette gøres normalt i de relevante indstillinger, efter at man har logget ind på udbyderens hjemmeside.
Mens såkaldte multikorttilbud kan bruges til at ringe og foretage opkald på alle enheder, der er udstyret med et sådant SIM-kort, understøttes SMS kun på ET af SIM-kortene!
Opsætning - Teltonika Router
Tjenester - Mobile Utilities - SMS Gateway
- Mobilindlæg/Hent indstillinger Aktiveret
- Brugernavn: Login-navn
- Adgangskode: LoginPassword
Tjenester - Input/Output - Post/Get
- I/O Post/Get Settings - (Indstillinger) Aktiveret
- Brugernavn: Login-navn
- Adgangskode: LoginPassword
Opsætning - RaspberryMatic
Installer CUx-dæmonen
CUx-dæmonen er en tilføjelse, der giver virtuelle enheder i HomeMatic / RaspberryMatic, der kan bruges som en mindre belastende erstatning for systemkald, f.eks. til at sende SMS-beskeder til routeren via en HTTP-anmodning.
AddOn installeres via Indstillinger - Yderligere software, hvor du kan downloade AddOn-filen ved at klikke på knappen Vælg fil
i den tilsvarende downloadmappe på computeren, og klik på knappen Installer
kan indlæses og installeres på centret.
CUx-dæmon - Opret enhed
CUx-dæmonen kaldes op via System ved at klikke på knappen CUx-dæmon
.
Klik på knappen øverst til højre Enheder
åbner grænsefladen. Øverst til venstre under CUxD-enhedstype vælges følgende fra listen nedenfor System
udvalgt.
Funktionen Udførende
vælges, indtastes en tilsvarende betegnelse i feltet Navn, f.eks. GPSog klik derefter på knappen Opret enhed på CCU'en
enheden er gemt.
Den oprettede enhed vises derefter med sit ID i højre vindue, f.eks. CUX2801001, og kan adresseres i scripts ved hjælp af dette ID.
Manuskripter
Send SMS for output af GPS-data
Oplysningerne i firkantede parenteser skal erstattes af dine egne data:
string url="'http://[Routerens IP]/cgi-bin/sms_send?username=[Brugernavn]&password=[adgangskode]&number=[Internationalt telefonnummer]&text=[Adgangskode gps]'“;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O -"#url);
Bemærk, at strengen er omsluttet af dobbelt (") OG enkelt (') komma!
Dette script bruges i det program, der skal oprettes GPS_Loc_Update
og det følgende script, som igen kalder GPS_Data-programmet, forsinkes med 30 sekunder for at vente på, at SMS'en med PÜS-dataene modtages:
var programObj = dom.GetObject("GPS_Data");
programObj.ProgramExecute();
Program GPS_Loc_Update
kan udføres en gang om dagen eller med kortere intervaller, afhængigt af behov, ved hjælp af tidsstyring.

Output SMS-liste
For at aflæse GPS-dataene bliver routeren bedt om at sende SMS-listen ud via en HTTP-anmodning.
Dette script kræver to variabler af typen DRAWING CHAIN, som skal oprettes under Indstillinger - Systemvariabler nederst ved at klikke på knappen Ny:
- W_Lat (til at gemme den geograrpiske breddegrad)
- W_Lon (til at gemme den geograrpiske længdegrad)
Indholdet af scriptet (linjer med foranstillet Udråbstegn er kommentarer; WriteLine-Instruktionerne bruges kun til outputkontrol og kan slettes):
var url = "http://[Routerens IP]/cgi-bin/sms_list?username=[Brugernavn]&password=[adgangskode]“;
! Deklaration af variablerne
var posValueStart;
var posValueEnd;
var pos;
var data;
var posStart;
var posEnd; string stderr; string stdout;
! WGET-kommando til overførsel af HTTP-anmodningsstrengen til routeren
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
! Output af forespørgselsresultatet til kontrol
WriteLine(stdout);
! Indeks: 1
! Dato: Fri Jan 26 11:01:02 2024
! Afsender: +49xxxxxxxxxxxxx
! Tekst: Fix tid: 2024-01-26, 11:01:01 Breddegrad: 54.834682 Længdegrad: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Status: læst
! Læs GPS-data
pos = 0;
! Position for begyndelsen af den søgte værdi
posStart = 'Breddegrad: ';
! Position for slutningen af den søgte værdi
posEnd = ' Længdegrad: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! er den streng, du leder efter:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! Konvertering af strengen (tegnstrengen) til et tal med flydende komma
var lat = Latitude.ToFloat();
! Output af den geografiske længdegrad til kontrol
WriteLine("Breddegrad");WriteLine(Breddegrad);
! Gemmer den geografiske længdegrad i variablen W_Lat
dom.GetObject('W_Lat').State(lat);
pos = 0;
posStart = 'Længdegrad: ';
posEnd = ' http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitude = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine("Længdegrad");WriteLine(lon);
dom.GetObject('W_Lon').State(lon);
Programmet indeholder ikke en betingelse for udførelse, da det startes via ovenstående program eller script.

De geografiske oplysninger kan nu bruges til at forespørge på vejrdata for dette sted. For at gøre dette oprettes et andet program, der startes med jævne mellemrum via tidsstyring og indsætter de to værdier i HTTP-anmodningsstrengen fra ovennævnte vejrtjeneste ved hjælp af et script og dermed tager højde for de skiftende placeringer i forespørgslen.
Program W_Data_OWM

Sammensætning af URL'en
! Indlæsning af de variabler, der er udfyldt i GPS_Data W_Lat og W_Lon og tildele variablerne 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);
! Sammensæt URL'en ved hjælp af variabelindholdet fra url_1 og url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxx] repræsenterer API-nøglen for vejrtjenesten, der modtages efter registrering
var url = "https://api.openweathermap.org/data/2.5/weather?lat="#url_1#"&lon="#url_2#"&appid=[xxxxxxxxxxxxxxxxxxxxxxx]&units=metric";
! Output af den komplette streng til kontrol
WriteLine(url);
Dette efterfølges af den samme procedure for deklarering af variablerne, WGET-kommandoen, udlæsning af forespørgselsresultatet til kontrol og udlæsning af de ønskede vejrdata (se Dokumentation) i henhold til proceduren for GPS-data.