Pereiti prie turinio

"SmartHome" - GPS duomenų nustatymas

Skaitymo laikas 4 minutės

Atnaujinta - kovo 10, 2025

Jei norite nustatyti GPS duomenis naudodamiesi "SmartHome", pvz., užklausti vietinių orų duomenų, tai galima padaryti naudojant "Teltonika RUTX50" maršrutizatorių be papildomos aparatinės ar programinės įrangos su "Homematic" / "RaspberryMatic".

Pagrindai

"Teltonika" maršrutizatoriai RUTX... leidžia siųsti ir gauti SMS žinutes per aktyvuotą SIM kortelę. Taip pat galima siųsti padėties duomenis, atsakant į SMS žinutę su turiniu "Slaptažodis gps„.

Gautų SMS sąrašą ir SMS turinį galima peržiūrėti per HTTP užklausą. Dabartinius geografinės ilgumos ir platumos duomenis galima perskaityti iš SMS, gautų atsakant į SMS užklausą.

Dabar juos galima toliau apdoroti naudojant "SmarttHome" automatizavimo sistemos scenarijų, naudojant "HomeMatic" arba "RaspberryMatic". Keliaujant nuolat besikeičiančius geoduomenis galima naudoti nuolat atnaujinamoms orų užklausoms pagal esamą vietą, pvz., naudojantis nemokama paslauga iš openweathermap.org naudoti.

Teikėjo SMS nustatymai

Priklausomai nuo paslaugų teikėjo, maršrutizatoriuje naudojamą SIM kortelę gali reikėti aktyvuoti SMS žinutėms. Paprastai tai atliekama atitinkamuose nustatymuose, prisijungus prie paslaugų teikėjo svetainės.

Nors vadinamuoju kelių kortelių pasiūlymu galima skambinti ir atlikti skambučius visuose įrenginiuose, kuriuose įrengta tokia SIM kortelė, SMS žinutės palaikomos tik VIENOJE SIM kortelėje!

Sąranka - "Teltonika" maršrutizatorius

Paslaugos - Mobiliosios paslaugos - SMS vartai

  • Mobiliosios žinutės / gauti nustatymus - Įjungta
  • Vartotojo vardas: Prisijungimo vardas
  • Slaptažodis: Prisijungimo slaptažodis

Paslaugos - Įvestis / išvestis - "Post/Get

  • I/O Post/Get Settings - Įjungta
  • Vartotojo vardas: Prisijungimo vardas
  • Slaptažodis: Prisijungimo slaptažodis

Sąranka - RaspberryMatic

Įdiegti CUx demoną

CUx demonas - tai priedas, kuris "HomeMatic" / "RaspberryMatic" sistemoje pateikia virtualius įrenginius, kuriuos galima naudoti kaip mažiau apsunkinantį sistemos skambučių pakaitalą, pvz., siunčiant SMS pranešimus į maršrutizatorių per HTTP užklausą.

Papildoma programinė įranga įdiegiama per Nustatymai - Papildoma programinė įranga, iš kur galite atsisiųsti papildomą failą spustelėję mygtuką Pasirinkite failą atitinkamame kompiuterio atsisiuntimo aplanke ir spustelėkite mygtuką Įdiekite galima įkelti ir įdiegti į centrą.

CUx demonas - Sukurti įrenginį

CUx demonas iškviečiamas per Sistemą paspaudus mygtuką CUx demonas.

Spustelėkite viršutiniame dešiniajame kampe esantį mygtuką Įrenginiai atidaroma sąsaja. Viršuje kairėje, CUxD įrenginio tipo skiltyje, iš toliau pateikto sąrašo pasirenkama Sistema pasirinktas.

Funkcija Vykdyti pasirenkama, į lauką Name įvedamas atitinkamas pavadinimas, pvz. GPSir spustelėkite mygtuką Sukurti įrenginį CCUprietaisas išsaugomas.

Dešiniajame lange rodomas sukurto įrenginio ID, pvz., CUX2801001, ir į jį galima kreiptis scenarijuose naudojant šį ID.

Skriptai

Siųsti SMS žinutę GPS duomenų išvedimui

Kvadratiniuose skliaustuose esančią informaciją reikia pakeisti savo duomenimis:

string url="'http://[Maršrutizatoriaus IP]/cgi-bin/sms_send?username=[Vartotojo vardas]&password=[[slaptažodis]&number=[Tarptautinis telefono numeris]&text=[[Slaptažodis gps]'“;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);

Atkreipkite dėmesį, kad eilutė pateikiama su dvigubais (") IR viengubais (') kabliataškiais!

Šis scenarijus naudojamas programoje, kurią reikia sukurti GPS_Loc_Update o toliau pateikiamas scenarijus, kuriuo savo ruožtu iškviečiama programa GPS_Data, atidedamas 30 sekundžių, kad būtų galima laukti, kol bus gauta SMS žinutė su PÜS duomenimis:

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

Programa GPS_Loc_Update gali būti vykdomas kartą per dieną arba trumpesniais intervalais, priklausomai nuo poreikių, taikant laiko kontrolę.

Išvesties SMS sąrašas

Norint nuskaityti GPS duomenis, maršrutizatoriaus prašoma išvesti SMS sąrašą per HTTP užklausą.

Šiam scenarijui reikalingi du DRAWING CHAIN tipo kintamieji, kurie turi būti sukurti nustatymų dalyje Settings - System variables (Nustatymai - Sistemos kintamieji) apačioje spustelėjus mygtuką New (Naujas):

  • W_Lat (geografinei platumai įrašyti)
  • W_Lon (geografiniam ilgiui įrašyti)

Scenarijaus turinys (eilutės su pradžia Šauktukas yra komentarai; WriteLine-Instrukcijos naudojamos tik išėjimo valdymui ir gali būti ištrintos):

var url = "http://[Maršrutizatoriaus IP]/cgi-bin/sms_list?username=[Vartotojo vardas]&password=[[slaptažodis]“;

! Kintamųjų deklaravimas
var posValueStart;
var posValueEnd;
var pos;
var duomenys;
var posStart;
var posEnd; string stderr; string stdout;

! WGET komanda, skirta HTTP užklausos eilutei perduoti į maršrutizatorių
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);

! Užklausos rezultato išvestis patikrinimui
WriteLine(stdout);

! Indeksas: 1
! Data: Fri Jan 26 11:01:02 2024
! Siuntėjas: +49xxxxxxxxxxxxxxx
! Tekstas: Fiksuotas laikas: 2024-01-26, 11:01:01 Platuma: 54.834682 Geografinė ilguma: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Būsena: perskaityta

! GPS duomenų skaitymas
pos = 0;
! Ieškomos reikšmės pradžios padėtis
posStart = 'Platuma: ';
! Ieškomos reikšmės pabaigos padėtis
posEnd = ' Ilguma: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! yra ieškoma eilutė:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! Eilutės (simbolių eilutės) konvertavimas į slankiojo kablelio skaičių
var lat = Latitude.ToFloat();
! Geografinės ilgumos išvedimas patikrinimui
WriteLine("Platuma");WriteLine(Platuma);

! Geografinės ilgumos įrašymas į kintamąjį W_Lat
dom.GetObject('W_Lat').State(lat);

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

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

Programoje nėra vykdymo sąlygos, nes ji inicijuojama pirmiau minėta programa arba scenarijumi.

Dabar geografinę informaciją galima naudoti šios vietos orų duomenų užklausai. Tam sukuriama kita programa, kuri periodiškai paleidžiama valdant laiką ir į minėtos orų tarnybos HTTP užklausos eilutę, naudojant scenarijų, įterpia šias dvi reikšmes, taip užklausoje atsižvelgiama į kintančias vietoves.

Programa W_Data_OWM

URL adreso sudarymas

! GPS_Data užpildytų kintamųjų įkėlimas W_Lat ir W_Lon ir priskiriant kintamiesiems url_1 ir 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);

! Sudarykite URL, naudodami kintamojo turinį iš url_1 ir url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] - tai po registracijos gautas orų tarnybos API raktas
var url = "https://api.openweathermap.org/data/2.5/weather?lat="#url_1#"&lon="#url_2#"&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric";
! Išvedama visa eilutė patikrinimui
WriteLine(url);

Po to seka ta pati kintamųjų deklaravimo procedūra, WGET komanda, užklausos rezultato išvedimas patikrinimui ir norimų orų duomenų nuskaitymas (žr. Dokumentacija) pagal GPS duomenims pateiktą procedūrą.

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *