Ugrás a tartalomra

SmartHome - GPS-adatok meghatározása

Olvasási idő 4 percek

Frissítve - március 10, 2025

Ha a SmartHome segítségével szeretne GPS adatokat meghatározni, pl. a helyi időjárási adatok lekérdezéséhez, ez egy Teltonika RUTX50 routerrel további hardver vagy szoftver nélkül megvalósítható a Homematic / RaspberryMatic segítségével.

Alapok

A Teltonika RUTX... routerek lehetővé teszik az SMS küldését és fogadását az aktivált SIM-kártyán keresztül. Lehetőség van a pozícióadatok küldésére is, válaszul egy SMS-re, amelynek tartalma "Jelszó gps„.

A bejövő SMS-ek listája és az SMS-ek tartalma HTTP-kéréssel megtekinthető. Az aktuális hosszúsági és szélességi adatok kiolvashatók az SMS-kérésre válaszul kapott SMS-ből.

Ezeket mostantól a SmarttHome automatizálási rendszeren belül a HomeMatic vagy a RaspberryMatic segítségével szkript segítségével tovább lehet feldolgozni. Utazás közben a folyamatosan változó geoadatok felhasználhatók az aktuális hely alapján folyamatosan frissülő időjárás-lekérdezéshez, pl. a következő ingyenes szolgáltatáson keresztül openweathermap.org felhasználni.

Szolgáltató SMS beállításai

A szolgáltatótól függően előfordulhat, hogy az útválasztóban használt SIM-kártyát aktiválni kell az SMS-hez. Ez általában a szolgáltató weboldalára való bejelentkezés után a megfelelő beállításoknál történik.

Míg az úgynevezett többkártyás ajánlatokkal az összes ilyen SIM-kártyával felszerelt eszközön lehet hívásokat kezdeményezni és telefonálni, addig az SMS csak EGY SIM-kártyán támogatott!

Beállítás - Teltonika Router

Szolgáltatások - Mobil segédprogramok - SMS Gateway

  • Mobil postázás/beállítások - Engedélyezve
  • Felhasználónév: Bejelentkezési név
  • Jelszó: LoginPassword

Szolgáltatások - Input/Output - Post/Get

  • I/O Post/Get Settings - Engedélyezve
  • Felhasználónév: Bejelentkezési név
  • Jelszó: LoginPassword

Beállítás - RaspberryMatic

CUx démon telepítése

A CUx démon egy olyan kiegészítő, amely virtuális eszközöket biztosít a HomeMatic / RaspberryMatic-on belül, amelyek a rendszerhívások kevésbé megterhelő helyettesítőjeként használhatók, például SMS üzenetek küldésére a routerre HTTP kérésen keresztül.

Az AddOn telepítése a Beállítások - További szoftverek menüponton keresztül történik, ahol az AddOn fájlt a gombra kattintva töltheti le. Fájl kiválasztása a számítógép megfelelő letöltési mappájában, és kattintson a gombra Telepítse a betölthető és telepíthető a központba.

CUx démon - Eszköz létrehozása

A CUx démon a Rendszer segítségével hívható elő a gombra kattintva. CUx démon.

Kattintson a jobb felső sarokban lévő gombra Eszközök megnyitja a felületet. A bal felső sarokban, a CUxD eszköztípus alatt a következő listából választhatunk Rendszer kiválasztva.

A funkció Végrehajtó van kiválasztva, a megfelelő megnevezés kerül beírásra a Név mezőbe, pl. GPSmajd kattintson a gombra Eszköz létrehozása a CCU-na készülék elmentésre kerül.

A létrehozott eszköz ezután a jobb oldali ablakban megjelenik az azonosítójával, pl. CUX2801001, és a szkriptekben ennek az azonosítónak a használatával lehet megszólítani.

Szkriptek

SMS küldése a GPS-adatok kimenetéhez

A szögletes zárójelben lévő adatokat saját adatokkal kell helyettesíteni:

string url="'http://[Az útválasztó IP címe]/cgi-bin/sms_send?username=[Felhasználónév]&password=[jelszó]&number=[Nemzetközi telefonszám]&text=[Jelszó gps]'“;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);

Kérjük, vegye figyelembe, hogy a karakterláncot dupla (") ÉS szimpla (') idézőjelek zárják!

Ezt a szkriptet a létrehozandó programban kell használni GPS_Loc_Update és a következő szkript, amely viszont a GPS_Data programot hívja, 30 másodperccel késleltetve van, hogy megvárja a PÜS-adatokat tartalmazó SMS megérkezését:

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

Program GPS_Loc_Update az igényektől függően naponta egyszer vagy rövidebb időközönként, idővezérléssel is végrehajtható.

Kimeneti SMS lista

A GPS-adatok kiolvasásához az útválasztótól az SMS-listát HTTP-kérésen keresztül kell kérni.

Ehhez a szkripthez két DRAWING CHAIN típusú változóra van szükség, amelyeket a Beállítások - Rendszer változók menüpont alatt kell létrehozni az Új gombra kattintva:

  • W_Lat (a földrajzi szélesség mentéséhez)
  • W_Lon (a földrajzi hosszúság mentéséhez)

A forgatókönyv tartalma (sorok vezető Felkiáltójel a megjegyzések; WriteLine-Az utasítások csak a kimenet vezérlésére szolgálnak, és törölhetők):

var url = "http://[[Az útválasztó IP címe]/cgi-bin/sms_list?username=[Felhasználónév]&password=[jelszó]“;

! A változók deklarálása
var posValueStart;
var posValueEnd;
var pos;
var data;
var posStart;
var posEnd; string stderr; string stdout;

! WGET parancs a HTTP-kérelmi karakterlánc továbbítására az útválasztónak
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);

! A lekérdezés eredményének kimenete az ellenőrzéshez
WriteLine(stdout);

! Index: 1
! Dátum: péntek jan 26 11:01:02 2024
! Feladó: +49xxxxxxxxxxxxxxxxxxx
! Szöveg: 2024-01-26, 11:01:01 Szélesség: 54.834682 Hosszúság: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Állapot: olvasott

! GPS adatok olvasása
pos = 0;
! A keresett érték kezdetének pozíciója
posStart = 'Szélesség: ';
! A keresett érték végének pozíciója
posEnd = ' Hosszúság: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! a keresett karakterlánc:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! A karakterlánc (karakterlánc) átalakítása lebegőpontos számmá
var lat = Latitude.ToFloat();
! A földrajzi hosszúság kimenete az ellenőrzéshez
WriteLine("Szélesség");WriteLine(Szélesség);

! A földrajzi hosszúság elmentése a változóban W_Lat
dom.GetObject('W_Lat').State(lat);

pos = 0;
posStart = 'Hosszúság: ';
posEnd = ' http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitude = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine("Longitude");WriteLine(lon);

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

A program nem tartalmaz végrehajtási feltételt, mivel a fenti program vagy szkript indítja el.

A földrajzi információk most már felhasználhatók az adott hely időjárási adatainak lekérdezésére. Ehhez egy másik programot hozunk létre, amely az idővezérlésen keresztül periodikusan elindul, és egy szkript segítségével beilleszti a két értéket a fent említett időjárási szolgáltatás HTTP-kérelmi karakterláncába, így a lekérdezésben figyelembe veszi a változó helyszíneket.

Program W_Data_OWM

Az URL összeállítása

! A GPS_Data változóinak betöltése W_Lat és W_Lon és a változókhoz rendelve url_1 és 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);

! Állítsa össze az URL-t a változó tartalmának felhasználásával a url_1 és url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] az időjárás-szolgáltatás API-kulcsa, amelyet a regisztráció után kapott.
var url = "https://api.openweathermap.org/data/2.5/weather?lat="#url_1#"&lon="#url_2#"&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric";
! A teljes karakterlánc kimenete az ellenőrzéshez
WriteLine(url);

Ezt követi ugyanaz az eljárás a változók deklarálására, a WGET parancs, a lekérdezés eredményének kiírása az ellenőrzéshez és a kívánt időjárási adatok kiolvasása (ld. Dokumentáció) a GPS-adatokra megadott eljárás szerint.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük