Slaan oor na inhoud

SmartHome – Bepaal GPS-data

Leestyd 4 minute

Opgedateer – 10 Maart 2025

As jy GPS-data met behulp van SmartHome wil bepaal, byvoorbeeld om plaaslike weerdata na te vra, kan jy dit doen met 'n Teltonika-router RUTX50 sonder bykomende hardeware of sagteware deur Homematic / RaspberryMatic te gebruik.

Basiese beginsels

Teltonika RUTX.. routers laat die stuur en ontvang van SMS-boodskappe toe via die geaktiveerde SIM-kaart. Hulle laat ook die stuur van liggingsdata toe in reaksie op 'n SMS wat "Wagwoord gps„.

'n HTTP-versoek kan gebruik word om die inkomende SMS-lys en SMS-inhoud te besigtig. Die huidige lengtegraad- en breedtegraadinligting kan gelees word vanaf die SMS wat in reaksie op die SMS-versoek ontvang word.

Hierdie kan nou verder verwerk word via 'n skrip binne die Slimhuis-outomatisering met behulp van HomeMatic of RaspberryMatic. Dit laat toe dat die voortdurend veranderende geodata tydens reis gebruik word vir 'n voortdurend opgedateerde weernavraag gebaseer op die huidige ligging, byvoorbeeld via die gratis diens van oopweerkaart.org om te gebruik.

Verskaffer SMS-instellings

Afhangende van jou verskaffer, moet die SIM-kaart wat in jou router geplaas is, moontlik vir SMS-boodskappe geaktiveer word. Dit word gewoonlik in die instellings gedoen nadat jy by die verskaffer se webwerf aangemeld het.

Terwyl sogenaamde multikaart-aanbiedinge lui en oproepe maak op alle toestelle wat met so 'n SIM-kaart toegerus is, word SMS slegs op EEN van die SIM-kaarte ondersteun!

Opstelling – Teltonika-router

Dienste – Mobiele nutsdienste – SMS-poort

  • Mobiele plasing/kry instellings – Geaktiveer
  • Gebruikersnaam: Aanmeldnaam
  • Wagwoord: AanmeldWagwoord

Dienste – Invoer/Uitvoer – Plaas/Kry

  • I/O-plasing/kry-instellings – Geaktiveer
  • Gebruikersnaam: Aanmeldnaam
  • Wagwoord: AanmeldWagwoord

Opstelling – RaspberryMatic

Installeer CUx-daemon

Die CUx-daemon is 'n byvoeging wat virtuele toestelle binne HomeMatic / Raspberry Matic verskaf, wat as 'n minder lastige plaasvervanger vir stelseloproepe gebruik kan word, byvoorbeeld om SMS-boodskappe via 'n HTTP-versoek na die router te stuur.

Die installering van die AddOn word gedoen via Instellings – Bykomende Sagteware, daar in die onderste area kan die AddOn-lêer afgelaai word deur op die knoppie te klik. Kies lêer in die ooreenstemmende aflaai-lêergids van die rekenaar en klik op die knoppie Installeer gelaai en op die sentrale eenheid geïnstalleer.

CUx Daemon – Skep toestel

Die CUx-daemon word via System aangeroep deur op die knoppie te klik. CUx-daemon.

Klik op die knoppie regs bo Toestelle maak die koppelvlak oop. Links bo, onder CUxD-toesteltipe, uit die lys hieronder stelsel gekies.

Die funksie is Uitvoerende gekies, in die veld Naam 'n ooreenstemmende naam, bv. GPS, en klik dan op die knoppie Skep toestel op die CCU, die toestel is gestoor.

Die geskepte toestel sal dan met sy ID in die regtervenster verskyn, bv. CUX2801001, en kan in skripte aangespreek word met behulp van hierdie ID.

Skripte

Stuur SMS vir GPS-data-uitvoer

Die inligting tussen vierkantige hakies moet met u eie data vervang word:

string url="http://[IP van die router]/cgi-bin/sms_send?gebruikersnaam=[Gebruikersnaam]&wagwoord=[wagwoord]&nommer=[Internasionale telefoonnommer]&teks=[Wagwoord gps]'“;
dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“wget -q -O – “#url);

Let asseblief daarop dat die string tussen dubbele (“) EN enkele (‘) aanhalingstekens ingesluit is!

Hierdie skrip sal in die program gebruik word wat geskep moet word GPS_Loc_Opdatering en die volgende skrip, wat weer die GPS_Data-program aanroep, word met 30 sekondes vertraag om te wag vir die ontvangs van die SMS met die PÜS-data:

var programObj = dom.GetObject(“GPS_Data”);
programObj.ProgramExecute();

program GPS_Loc_Opdatering kan een keer per dag of met korter tussenposes, soos nodig, met behulp van 'n timer uitgevoer word.

Druk SMS-lys

Om die GPS-data te lees, word die router versoek om die SMS-lys via 'n HTTP-versoek uit te voer.

Hierdie skrip benodig twee veranderlikes van die tipe STRING, wat onder Instellings – Stelselveranderlikes hieronder geskep moet word deur op die Nuwe-knoppie te klik:

  • W_Breedtegraad (vir die berging van die geografiese breedtegraad)
  • W_Lon (vir die berging van die geografiese lengtegraad)

Die inhoud van die draaiboek (reëls met voorste uitroepteken is kommentaar; SkryfLyn-stellings is slegs vir uitvoerbeheerdoeleindes en kan verwyder word.)):

var url = "http://[IP van die router]/cgi-bin/sms_lys?gebruikersnaam=[Gebruikersnaam]&wagwoord=[wagwoord]“;

! Verklaring van veranderlikes
var posWaardeBegin;
var posWaardeEinde;
var pos;
var data;
var posBegin;
var posEnd; string stderr; string stdout;

! WGET-opdrag om die HTTP-versoekstring na die router te stuur
stelsel.Exec(“wget -q -O – ‘“#url#“‚”, &stdout, &stderr);

Uitvoer van die navraagresultaat vir kontrolering
SkryfLyn(stdout);

! Indeks: 1
! Datum: Vr 26 Januarie 11:01:02 2024
Sender: +49xxxxxxxxxxxxxx
! Teks: Hersteltyd: 2024-01-26, 11:01:01 Breedtegraad: 54.834682 Lengtegraad: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1spoed:0
Status: gelees

Lees GPS-data
pos = 0;
Posisie van die begin van die gesoekte waarde
posBegin = 'Breedtegraad: ';
Posisie van die einde van die gesoekte waarde
posEnd = ‚ Lengtegraad: ‚;
posWaardeBegin = stdout.Vind(posBegin) + posBegin.Lengte();
posWaardeEinde = stdout.Vind(posEinde)-posWaardeBegin;
! die soekstring is:
string Breedtegraad = stdout.Substr(posWaardeBegin, posWaardeEinde);
! Skakel die string om na 'n drywende kommagetal
var lat = Latitude.ToFloat();
Uitvoer van geografiese lengtegraad vir kontrole
SkryfLyn(“Breedtegraad”); SkryfLyn(Breedtegraad);

Stoor die geografiese lengtegraad in die veranderlike W_Breedtegraad
dom.GetObject('W_Lat').Staat(lat);

pos = 0;
posBegin = 'Lengtegraad: ';
posEnd = 'http';
posWaardeBegin = stdout.Vind(posBegin) + posBegin.Lengte();
posWaardeEinde = stdout.Vind(posEinde)-posWaardeBegin;
string Lengtegraad = stdout.Substr(posWaardeBegin, posWaardeEinde);
var lon = Longitude.ToFloat();
SkryfLyn(“Lengtegraad”); SkryfLyn(lengtegraad);

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

Die program bevat geen voorwaarde vir uitvoering nie, aangesien dit via die bogenoemde program of skrip geïnisieer word.

Die geografiese inligting kan nou gebruik word om die weerdata vir hierdie ligging te navraag. Om dit te doen, word 'n ander program geskep wat periodiek met behulp van 'n timer gelanseer word. Hierdie program gebruik 'n skrip om die twee waardes in die HTTP-versoekstring van die bogenoemde weerdiens in te voeg, en sodoende die veranderende liggings in die navraag in ag te neem.

Program W_Data_OWM

Die URL saamstel

Laai die veranderlikes wat in GPS_Data ingevul is W_Breedtegraad en W_Lon en toewys aan die veranderlikes url_1 en url_2

var url_1 = dom.GetObject(“W_Lat”).Value();
SkryfLyn("Lat="); SkryfLyn(url_1);
var url_2 = dom.GetObject(“W_Lon”).Value();
SkryfLyn("Lon="); SkryfLyn(url_2);

! Die URL word saamgestel deur die veranderlike inhoud van url_1 en url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] verteenwoordig die API-sleutel van die weerdiens wat na registrasie ontvang is.
var url = “https://api.openweathermap.org/data/2.5/weather?lat=”#url_1#”&lon=”#url_2#”&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxxx]&eenhede=metriek”;
! Gee die volledige string uit vir kontrole
SkryfLyn(url);

Dit word gevolg deur dieselfde prosedure vir die deklarasie van die veranderlikes, die WGET-opdrag, die uitvoer van die navraagresultaat vir kontrole en die lees van die verlangde weerdata (sien dokumentasie) volgens die prosedure wat gegee is rakende GPS-data.

Maak 'n opvolg-bydrae

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde word met * aangedui

afAfrikaans