Obsah
Aktualisiert – Březen 10, 2025
Pokud chcete zjišťovat data GPS pomocí SmartHome, např. pro dotazování na místní údaje o počasí, lze to realizovat pomocí routeru Teltonika RUTX50 bez dalšího hardwaru nebo softwaru s Homematic / RaspberryMatic.
Základy
Routery Teltonika RUTX... umožňují odesílání a příjem SMS prostřednictvím aktivované SIM karty. Je také možné odesílat údaje o poloze jako odpověď na SMS s obsahem "Heslo gps„.
Seznam příchozích SMS a obsah SMS lze zobrazit prostřednictvím požadavku HTTP. Aktuální údaje o zeměpisné délce a šířce lze vyčíst z SMS přijatých jako odpověď na požadavek SMS.
Ty lze nyní dále zpracovávat pomocí skriptů v rámci automatizačního systému SmarttHome pomocí HomeMatic nebo RaspberryMatic. Při cestování lze neustále se měnící geodata využít k průběžně aktualizovanému dotazu na počasí podle aktuální polohy, např. prostřednictvím bezplatné služby od společnosti openweathermap.org využívat.
Nastavení SMS poskytovatele
V závislosti na poskytovateli může být nutné aktivovat SIM kartu použitou v routeru pro SMS. To se obvykle provádí v příslušných nastaveních po přihlášení na webové stránky poskytovatele.
Zatímco takzvané nabídky s více kartami lze použít k volání a uskutečňování hovorů na všech zařízeních vybavených takovou kartou SIM, SMS jsou podporovány pouze na JEDNÉ z karet SIM!
Nastavení - Směrovač Teltonika
Služby - Mobilní nástroje - SMS brána
- Nastavení mobilních příspěvků / Získat nastavení - Povoleno
- Uživatelské jméno: Přihlašovací jméno
- Heslo: LoginPassword
Služby - Vstup/výstup - Post/Get
- I/O Post/Get Settings - Povoleno
- Uživatelské jméno: Přihlašovací jméno
- Heslo: LoginPassword
Nastavení - RaspberryMatic
Instalace démona CUx
Démon CUx je doplněk, který poskytuje virtuální zařízení v rámci HomeMatic / RaspberryMatic, které lze použít jako méně náročnou náhradu systémových volání, např. pro odesílání SMS zpráv do směrovače prostřednictvím požadavku HTTP.
AddOn se instaluje přes Nastavení - Další software, kde si můžete stáhnout soubor AddOn kliknutím na tlačítko. Vyberte soubor
v příslušné složce pro stahování v počítači a klikněte na tlačítko Instalace
lze načíst a nainstalovat do střediska.
Démon CUx - Vytvoření zařízení
Démon CUx se vyvolá prostřednictvím systému kliknutím na tlačítko Démon CUx
.
Klikněte na tlačítko vpravo nahoře Zařízení
otevře rozhraní. V levém horním rohu v části Typ zařízení CUxD se z níže uvedeného seznamu vybere následující možnost Systém
vybrané.
Funkce Exec
je vybráno, do pole Název se zadá odpovídající označení, např. GPSa pak klikněte na tlačítko Vytvoření zařízení v jednotce CCU
zařízení je uloženo.
Vytvořené zařízení se pak v pravém okně zobrazí se svým ID, např. CUX2801001, a ve skriptech jej lze adresovat pomocí tohoto ID.
Skripty
Odesílání SMS pro výstup dat GPS
Informace v hranatých závorkách je třeba nahradit vlastními údaji:
string url="'http://[IP adresa směrovače]/cgi-bin/sms_send?username=[[Uživatelské jméno]&password=[heslo]&number=[Mezinárodní telefonní číslo]&text=[Heslo gps]'“;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);
Upozorňujeme, že řetězec je uzavřen dvojitými (") A jednoduchými (') uvozovkami!
Tento skript se používá v programu, který má být vytvořen. GPS_Loc_Update
a následující skript, který zase volá program GPS_Data, se zpozdí o 30 sekund, aby se počkalo na přijetí SMS s údaji PÜS:
var programObj = dom.GetObject("GPS_Data");
programObj.ProgramExecute();
Program GPS_Loc_Update
lze provádět jednou denně nebo v kratších intervalech, v závislosti na požadavcích, pomocí časového řízení.

Výstupní seznam SMS
Aby bylo možné vyčíst údaje GPS, je směrovač požádán o vypsání seznamu SMS prostřednictvím požadavku HTTP.
Tento skript vyžaduje dvě proměnné typu DRAWING CHAIN, které je třeba vytvořit v části Nastavení - Systémové proměnné v dolní části kliknutím na tlačítko Nový:
- W_Lat (pro uložení zeměpisné šířky)
- W_Lon (pro uložení zeměpisné délky)
Obsah skriptu (řádky s počátečními Vykřičník jsou komentáře; WriteLine-Pokyny se používají pouze pro řízení výstupu a lze je smazat):
var url = "http://[IP adresa směrovače]/cgi-bin/sms_list?username=[Uživatelské jméno]&password=[heslo]“;
! Deklarace proměnných
var posValueStart;
var posValueEnd;
var pos;
var data;
var posStart;
var posEnd; string stderr; string stdout;
! Příkaz WGET pro přenos řetězce požadavků HTTP do směrovače
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
! Výstup výsledku dotazu pro kontrolu
WriteLine(stdout);
! Index: 1
! Datum: pá 26. ledna 11:01:02 2024
! Odesílatel: +49xxxxxxxxxxxxx
! Text: Čas opravy: 2024-01-26, 11:01:01 Zeměpisná šířka: 54.834682 Zeměpisná délka: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Stav: číst
! Čtení dat GPS
pos = 0;
! Poloha začátku hledané hodnoty
posStart = 'Latitude: ';
! Poloha konce hledané hodnoty
posEnd = ' Délka: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! je řetězec, který hledáte:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! Převod řetězce (řetězce znaků) na číslo s pohyblivou řádovou čárkou
var lat = Latitude.ToFloat();
! Výstup zeměpisné délky pro kontrolu
WriteLine("Zeměpisná šířka");WriteLine(Zeměpisná šířka);
! Uložení zeměpisné délky do proměnné W_Lat
dom.GetObject('W_Lat').State(lat);
pos = 0;
posStart = 'Délka: ';
posEnd = ' http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitude = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine("Zeměpisná délka");WriteLine(lon);
dom.GetObject('W_Lon').State(lon);
Program neobsahuje podmínku pro provedení, protože je iniciován výše uvedeným programem nebo skriptem.

Zeměpisné informace lze nyní použít k dotazování na údaje o počasí pro toto místo. Za tímto účelem se vytvoří další program, který se periodicky spouští prostřednictvím časového řízení a pomocí skriptu vkládá obě hodnoty do řetězce HTTP požadavku výše uvedené meteorologické služby, čímž se v dotazu zohlední měnící se místa.
Program W_Data_OWM

Sestavení adresy URL
! Načítání proměnných vyplněných v GPS_Data W_Lat a W_Lon a přiřazení proměnným url_1 a 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);
! Sestavte adresu URL pomocí obsahu proměnné z url_1 a url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] představuje klíč API meteorologické služby, který obdržíte po registraci.
var url = "https://api.openweathermap.org/data/2.5/weather?lat="#url_1#"&lon="#url_2#"&appid=[xxxxxxxxxxxxxxxxxxxxxxx]&units=metric";
! Výstup celého řetězce pro kontrolu
WriteLine(url);
Následuje stejný postup pro deklaraci proměnných, příkaz WGET, vypsání výsledku dotazu pro kontrolu a načtení požadovaných údajů o počasí (viz. Dokumentace) podle postupu uvedeného pro údaje GPS.