Innehållsförteckning
Uppdaterad - mars 10, 2025
Om du vill bestämma GPS-data med SmartHome, till exempel för att söka lokal väderdata, kan du göra detta med en Teltonika-router RUTX50 utan extra hårdvara eller mjukvara med Homematic / RaspberryMatic.
Grunderna
Teltonika-routrarna RUTX.. tillåter att skicka och ta emot SMS via det aktiverade SIM-kortet. På samma sätt skickar positionsdata som svar på ett SMS med innehållet "GPS-lösenord„.
Du kan se listan över inkommande SMS och SMS-innehåll via HTTP-förfrågan. Den aktuella longitud- och latitudinformationen kan läsas från det SMS som tas emot som svar på SMS-förfrågan.
Dessa kan nu vidarebearbetas via skript inom Smart Home-automatiseringen med HomeMatic eller RaspberryMatic. Vid resor kan den ständigt föränderliga geodatan användas för en ständigt uppdaterad väderförfrågan utifrån aktuell plats, till exempel via gratistjänsten från kl. openweathermap.org att använda.
SMS-inställningar för leverantör
Beroende på leverantör kan det SIM-kort som används i routern behöva aktiveras för SMS. Detta görs vanligtvis i de relevanta inställningarna efter inloggning på leverantörens webbplats.
Medan så kallade multikortserbjudanden kan användas för att ringa och ringa samtal på alla enheter som är utrustade med ett sådant SIM-kort, stöds SMS endast på ETT av SIM-korten!
Installation – Teltonika Router
Tjänster – Mobile Utilities – SMS Gateway
- Mobilt posta/hämta inställningar – Aktiverad
- Användarnamn: Inloggningsnamn
- Lösenord: LoginPassword
Tjänster – Input/Output – Post/Get
- I/O Post/Hämta inställningar – Aktiverad
- Användarnamn: Inloggningsnamn
- Lösenord: LoginPassword
Installation – RaspberryMatic
Installera CUx-demonen
CUx-demonen är ett tillägg som tillhandahåller virtuella enheter inom HomeMatic / RaspberryMatic, som bland annat kan användas som en mindre betungande ersättning för systemsamtal, här till exempel för att skicka SMS via en HTTP-förfrågan till routern.
AddOn installeras via Inställningar - Ytterligare programvara, där i det lägsta området kan du ladda ner AddOn-filen genom att klicka på knappen Välj fil
i motsvarande nedladdningsmapp på datorn och klicka på knappen Installera
laddas på mitten och installeras.
CUx-demon – skapa enhet
CUx-demonen anropas via systemet genom att klicka på knappen CUx-demon
.
Klicka på knappen uppe till höger Enheter
öppnar gränssnittet. Överst till vänster, under CUxD Device Type, är från listan nedan system
vald.
Som funktion blir funktionen Exec
valt, ett motsvarande namn i fältet Namn, t.ex GPS, angav och klickade sedan på knappen Skapa enhet på CCU:n
, enheten sparas.
Den skapade enheten visas sedan i det högra fönstret med dess ID, t.ex. CUX2801001, och kan adresseras i skript med detta ID.
Manus
Skicka SMS för GPS-datautmatning
Informationen inom hakparentes måste ersättas med dina egna uppgifter:
string url=“‘http://[IP för routern]/cgi-bin/sms_send?användarnamn=[Användarnamn]&lösenord=[lösenord]&nummer=[Internationellt telefonnummer]&text=[GPS-lösenord]'“;
dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“wget -q -O – “#url);
Observera att strängen är omgiven av dubbla (“) OCH enkla (‘) citattecken!
Detta skript kommer att finnas i programmet som ska skapas GPS_Loc_Update
anropas och följande skript, som i sin tur anropar GPS_Data-programmet, förskjuts med 30 sekunder för att vänta på att SMS med PÜS-data ska tas emot:
var programObj = dom.GetObject(“GPS_Data”);
programObj.ProgramExecute();
programmera GPS_Loc_Update
Kan schemaläggas en gång om dagen eller med kortare intervall efter behov.

Skriv ut SMS-lista
För att kunna läsa ut GPS-data ombeds routern att skicka ut SMS-listan via en HTTP-förfrågan.
Detta skript kräver två variabler av typen STRING, som måste skapas under Inställningar - Systemvariabler nedan genom att klicka på knappen Ny:
- W_Lat (för att lagra den geografiska latituden)
- W_Lon (för att lagra den geografiska longituden)
Innehållet i manuset (linjer med inledning utropstecken är kommentarer; WriteLine-Instruktioner används endast för utgångskontroll och kan tas bort.)):
var url = "http://[IP för routern]/cgi-bin/sms_list?användarnamn=[Användarnamn]&lösenord=[lösenord]“;
! Deklaration av variabeln
var posValueStart;
var posValueEnd;
var pos;
var data;
var postStart;
var posEnd; sträng stderr; sträng stdout;
! WGET-kommandot för att överföra HTTP-förfrågningssträngen till routern
system.Exec(“wget -q -O – ‘“#url#“‚”, &stdout, &stderr);
! Utdata av frågeresultatet för kontroll
WriteLine(stdout);
! Index: 1
! Datum: Fre 26 januari 11:01:02 2024
! Avsändare: +49xxxxxxxxxxxxxx
! Text: Fixningstid: 2024-01-26, 11:01:01 Latitud: 54.834682 Longitud: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Status: läst
! Läs ut GPS-data
pos = 0;
! Position för början av det sökta värdet
postStart = 'Latitude: ';
! Position för slutet av det sökta värdet
posEnd = ' Longitud: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! strängen du letar efter är:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! Konvertering av strängen (teckensträng) till ett flyttal
var lat = Latitude.ToFloat();
! Utdata för den geografiska longituden för kontroll
WriteLine(“Latitude”);WriteLine(Latitude);
! Spara den geografiska longituden i variabeln W_Lat
dom.GetObject('W_Lat').State(lat);
pos = 0;
posStart = 'Longitud: ';
posEnd = 'http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
sträng Longitud = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine(“Longitud”);WriteLine(lon);
dom.GetObject('W_Lon').State(lon);
Programmet innehåller inga villkor för exekvering eftersom det initieras via ovanstående program eller skript.

Nu kan den geografiska informationen användas för att fråga efter väderdata för denna plats. För detta ändamål skapas ett annat program som startas periodiskt med hjälp av en timer, som använder ett skript för att infoga de två värdena i HTTP-förfrågningssträngen för ovannämnda vädertjänst och därmed tar hänsyn till de ändrade platserna i frågan .
Program W_Data_OWM

Skriver URL
! Laddar variablerna ifyllda GPS_Data W_Lat och W_Lon och tilldelning till variablerna url_1 och 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);
! Komponera URL:en med variabelinnehållet url_1 och url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxx] representerar vädertjänstens API-nyckel som tas emot efter registrering
var url = “https://api.openweathermap.org/data/2.5/weather?lat=”#url_1#”&lon=”#url_2#”&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metrisk”;
! Utmatning av hela strängen för kontroll
WriteLine(url);
Detta följs av samma procedur för att deklarera variablerna, WGET-kommandot, mata ut frågeresultatet för att kontrollera och läsa ut önskad väderdata (se. dokumentation) enligt proceduren för GPS-data.