Πίνακας περιεχομένων
Ενημέρωση - Μάρτιος 10, 2025
Εάν θέλετε να προσδιορίσετε δεδομένα GPS χρησιμοποιώντας το SmartHome, π.χ. για να ζητήσετε τοπικά δεδομένα καιρού, αυτό μπορεί να πραγματοποιηθεί με έναν δρομολογητή Teltonika RUTX50 χωρίς πρόσθετο υλικό ή λογισμικό με Homematic / RaspberryMatic.
Βασικά στοιχεία
Οι δρομολογητές Teltonika RUTX... επιτρέπουν την αποστολή και λήψη SMS μέσω της ενεργοποιημένης κάρτας SIM. Είναι επίσης δυνατή η αποστολή δεδομένων θέσης ως απάντηση σε ένα SMS με το περιεχόμενο "Κωδικός πρόσβασης gps„.
Η λίστα εισερχόμενων SMS και το περιεχόμενο των SMS μπορούν να προβληθούν μέσω αίτησης HTTP. Τα τρέχοντα δεδομένα γεωγραφικού μήκους και πλάτους μπορούν να διαβαστούν από το SMS που λαμβάνεται ως απάντηση στο αίτημα SMS.
Αυτά μπορούν τώρα να υποβληθούν σε περαιτέρω επεξεργασία μέσω δέσμης ενεργειών στο σύστημα αυτοματισμού SmarttHome χρησιμοποιώντας το HomeMatic ή το RaspberryMatic. Όταν ταξιδεύετε, τα διαρκώς μεταβαλλόμενα γεωδεδομένα μπορούν να χρησιμοποιηθούν για μια συνεχώς ενημερωμένη αναζήτηση καιρού με βάση την τρέχουσα τοποθεσία, π.χ. μέσω της δωρεάν υπηρεσίας από το openweathermap.org αξιοποιήσει.
Ρυθμίσεις SMS παρόχου
Ανάλογα με τον πάροχο, η κάρτα SIM που χρησιμοποιείται στο δρομολογητή μπορεί να χρειαστεί να ενεργοποιηθεί για SMS. Αυτό γίνεται συνήθως στις σχετικές ρυθμίσεις μετά την είσοδο στον ιστότοπο του παρόχου.
Ενώ οι λεγόμενες προσφορές πολλαπλών καρτών μπορούν να χρησιμοποιηθούν για κλήσεις και κλήσεις σε όλες τις συσκευές που είναι εξοπλισμένες με μια τέτοια κάρτα SIM, τα SMS υποστηρίζονται μόνο σε ΜΙΑ από τις κάρτες SIM!
Εγκατάσταση - Δρομολογητής Teltonika
Υπηρεσίες - Mobile Utilities - Πύλη SMS
- Mobile Post/Get Settings - Ενεργοποιημένο
- Όνομα χρήστη: Όνομα σύνδεσης
- Κωδικός πρόσβασης: LoginPassword
Υπηρεσίες - Είσοδος/Έξοδος - Post/Get
- I/O Post/Get Settings - Ενεργοποιημένο
- Όνομα χρήστη: Όνομα σύνδεσης
- Κωδικός πρόσβασης: LoginPassword
Εγκατάσταση - RaspberryMatic
Εγκατάσταση του δαίμονα CUx
Ο δαίμονας CUx είναι ένα πρόσθετο που παρέχει εικονικές συσκευές εντός του HomeMatic / RaspberryMatic, οι οποίες μπορούν να χρησιμοποιηθούν ως μια λιγότερο επαχθής αντικατάσταση των κλήσεων συστήματος, π.χ. για την αποστολή μηνυμάτων SMS στο δρομολογητή μέσω μιας αίτησης HTTP.
Το AddOn εγκαθίσταται μέσω του μενού Ρυθμίσεις - Πρόσθετο λογισμικό, όπου μπορείτε να κατεβάσετε το αρχείο AddOn κάνοντας κλικ στο κουμπί Επιλέξτε αρχείο
στον αντίστοιχο φάκελο λήψης του υπολογιστή και κάντε κλικ στο κουμπί Εγκαταστήστε το
μπορούν να φορτωθούν και να εγκατασταθούν στο κέντρο.
CUx daemon - Δημιουργία συσκευής
Ο δαίμονας CUx καλείται μέσω του συστήματος κάνοντας κλικ στο κουμπί Δαίμονας CUx
.
Κάντε κλικ στο κουμπί πάνω δεξιά Συσκευές
ανοίγει τη διεπαφή. Στο επάνω αριστερό μέρος, στην περιοχή Τύπος συσκευής CUxD, επιλέγεται από την παρακάτω λίστα το εξής Σύστημα
επιλεγμένο.
Η λειτουργία Exec
επιλέγεται, εισάγεται μια αντίστοιχη ονομασία στο πεδίο Όνομα, π.χ. GPSκαι στη συνέχεια κάντε κλικ στο κουμπί Δημιουργία συσκευής στην CCU
η συσκευή αποθηκεύεται.
Η συσκευή που δημιουργήθηκε εμφανίζεται με το αναγνωριστικό της στο δεξιό παράθυρο, π.χ. CUX2801001, και μπορεί να απευθύνεται σε δέσμες ενεργειών χρησιμοποιώντας αυτό το αναγνωριστικό.
Σενάρια
Αποστολή SMS για έξοδο δεδομένων GPS
Οι πληροφορίες σε αγκύλες πρέπει να αντικατασταθούν από τα δικά σας δεδομένα:
string url="'http://[IP του δρομολογητή]/cgi-bin/sms_send?username=[Όνομα χρήστη]&password=[κωδικός πρόσβασης]&number=[Διεθνής αριθμός τηλεφώνου]&text=[Κωδικός πρόσβασης gps]'“;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url),
Σημειώστε ότι η συμβολοσειρά περικλείεται σε διπλά (") ΚΑΙ απλά (') εισαγωγικά!
Αυτό το σενάριο χρησιμοποιείται στο πρόγραμμα που θα δημιουργηθεί GPS_Loc_Update
και το ακόλουθο σενάριο, το οποίο με τη σειρά του καλεί το πρόγραμμα GPS_Data, καθυστερεί κατά 30 δευτερόλεπτα προκειμένου να περιμένει τη λήψη του SMS με τα δεδομένα PÜS:
var programObj = dom.GetObject("GPS_Data"),
programObj.ProgramExecute(),
Πρόγραμμα GPS_Loc_Update
μπορεί να εκτελείται μία φορά την ημέρα ή σε μικρότερα χρονικά διαστήματα, ανάλογα με τις απαιτήσεις, με έλεγχο χρόνου.

Λίστα SMS εξόδου
Για την ανάγνωση των δεδομένων GPS, ζητείται από τον δρομολογητή να εξάγει τη λίστα SMS μέσω αίτησης HTTP.
Αυτή η δέσμη ενεργειών απαιτεί δύο μεταβλητές του τύπου DRAWING CHAIN, οι οποίες πρέπει να δημιουργηθούν στην ενότητα Ρυθμίσεις - Μεταβλητές συστήματος στο κάτω μέρος κάνοντας κλικ στο κουμπί New:
- W_Lat (για την αποθήκευση του γεωγραφικού πλάτους)
- W_Lon (για την αποθήκευση του γεωγραφικού μήκους)
Το περιεχόμενο του σεναρίου (γραμμές με αρχικό Θαυμαστικό είναι σχόλια, WriteLine-Οι οδηγίες χρησιμοποιούνται μόνο για τον έλεγχο της εξόδου και μπορούν να διαγραφούν):
var url = "http://[IP του δρομολογητή]/cgi-bin/sms_list?username=[Όνομα χρήστη]&password=[κωδικός πρόσβασης]“;
! Δήλωση των μεταβλητών
var posValueStart,
var posValueEnd,
var pos,
var data,
var posStart,
var posEnd; string stderr; string stdout,
! Εντολή WGET για τη μετάδοση της συμβολοσειράς αιτήματος HTTP στο δρομολογητή
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr),
! Έξοδος του αποτελέσματος του ερωτήματος για έλεγχο
WriteLine(stdout),
! Δείκτης: 1
! Ημερομηνία: Παρ Ιαν 26 11:01:02 2024
! Αποστολέας: +49xxxxxxxxxxxxxxxxx
! Κείμενο: 2024-01-26, 11:01:01 Γεωγραφικό πλάτος: 54.834682 Γεωγραφικό μήκος: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Κατάσταση: ανάγνωση
! Ανάγνωση δεδομένων GPS
pos = 0,
! Θέση της αρχής της αναζητούμενης τιμής
posStart = 'Γεωγραφικό πλάτος: ',
! Θέση του τέλους της αναζητούμενης τιμής
posEnd = ' Γεωγραφικό μήκος: ',
posValueStart = stdout.Find(posStart) + posStart.Length(),
posValueEnd = stdout.Find(posEnd)-posValueStart,
! είναι η συμβολοσειρά που ψάχνετε:
string Latitude = stdout.Substr(posValueStart, posValueEnd),
! Μετατροπή της συμβολοσειράς (συμβολοσειρά χαρακτήρων) σε αριθμό κινητής υποδιαστολής
var lat = Latitude.ToFloat(),
! Έξοδος του γεωγραφικού μήκους για έλεγχο
WriteLine("Γεωγραφικό πλάτος");WriteLine(Γεωγραφικό πλάτος),
! Αποθήκευση του γεωγραφικού μήκους στη μεταβλητή W_Lat
dom.GetObject('W_Lat').State(lat),
pos = 0,
posStart = 'Γεωγραφικό μήκος: ',
posEnd = ' http',
posValueStart = stdout.Find(posStart) + posStart.Length(),
posValueEnd = stdout.Find(posEnd)-posValueStart,
string Longitude = stdout.Substr(posValueStart, posValueEnd),
var lon = Longitude.ToFloat(),
WriteLine("Γεωγραφικό μήκος");WriteLine(lon),
dom.GetObject('W_Lon').State(lon),
Το πρόγραμμα δεν περιέχει συνθήκη εκτέλεσης, καθώς ξεκινά μέσω του παραπάνω προγράμματος ή σεναρίου.

Οι γεωγραφικές πληροφορίες μπορούν τώρα να χρησιμοποιηθούν για την αναζήτηση δεδομένων καιρού για τη συγκεκριμένη τοποθεσία. Για να γίνει αυτό, δημιουργείται ένα άλλο πρόγραμμα το οποίο εκκινείται περιοδικά μέσω του ελέγχου του χρόνου και εισάγει τις δύο τιμές στη συμβολοσειρά αίτησης HTTP της προαναφερθείσας υπηρεσίας καιρού χρησιμοποιώντας ένα σενάριο, λαμβάνοντας έτσι υπόψη τις μεταβαλλόμενες τοποθεσίες στο ερώτημα.
Πρόγραμμα W_Data_OWM

Σύνθεση της διεύθυνσης URL
! Φόρτωση των μεταβλητών που συμπληρώνονται στο GPS_Data W_Lat και W_Lon και αναθέτοντας στις μεταβλητές url_1 και 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),
! Συνθέστε το URL χρησιμοποιώντας τα περιεχόμενα της μεταβλητής από url_1 και url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] αντιπροσωπεύει το κλειδί API της υπηρεσίας καιρού που λαμβάνεται μετά την εγγραφή
var url = "https://api.openweathermap.org/data/2.5/weather?lat="#url_1#"&lon="#url_2#"&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric",
! Έξοδος της πλήρους συμβολοσειράς για έλεγχο
WriteLine(url),
Ακολουθεί η ίδια διαδικασία για τη δήλωση των μεταβλητών, η εντολή WGET, η εξαγωγή του αποτελέσματος του ερωτήματος για έλεγχο και η ανάγνωση των επιθυμητών μετεωρολογικών δεδομένων (βλ. Τεκμηρίωση) σύμφωνα με τη διαδικασία που αναφέρεται για τα δεδομένα GPS.