Hallo,
ich habe mir mal (aus Raspberry und IMST IC880a) einen LoRa WAN Gateway gebaut und an The Things Network TTN angemeldet (siehe http://www.thethingsnetwork.org/, zur Netzabdeckung http://ttnmapper.org/). Ein paar ESP32 basierende Nodes funktionieren auch schon, jetzt wäre eine Anbindung an Symcon natürlich schön.
TTN erlaubt für die Backend-Kommunikation verschiedene Protokolle, natürlich MQTT und auch HTTP Requests. Leider ist es mir aber nicht gelungen, weder das eine noch das andere in Symcon zu implementieren. Mit @Thomas68 MQTT Client Modul bekomme ich nur Nachrichtenfragmente, bei Nutzung von WebHooks fehlt das JSON Objekt im GET oder POST. Mit Werkzeugen wie mosquitto_sub oder beim Debug des TTN HTTP Requests mit z. B. RequestBin kommen alle Daten. Hat hier jemand schon Erfahrungen, die er teilen kann?
Ich habe Lorawan auch schon seit langem im Auge
Ich weiß nicht ob ich hier Link zu einem gateway bekomme und hab ein eigenes Gateway bis jetzt noch gescheut.
Ich denke ich werde mich in Zukunft etwas damit beschäftigen und würde dir wenn du magst gerne helfen
Da HTTP und Webhooks von Symcon nativ Unterstützt werden würde ich die Umsetzung damit machen.
Danke für das Angebot. Ich bin zum Glück auch schon einen Schritt weiter - die Daten beim HTTP Interface von TTN landen nicht in der Symcon Variable $_POST, sondern haben ich bei IPS_LogMessage(„WebHook RAW“, file_get_contents(„php://input“)); gefunden. Ergebnis:
27.01.2019 21:19:42 | WebHook RAW |
{"app_id":"dheiss-esp32","dev_id":"esp32-02","hardware_serial":"0000000000000001","port":1,"counter":10,"payload_raw":"SGVsbG8sIHdvcmxkIQ==","metadata":{"time":"2019-01-27T20:19:41.628626339Z","frequency":868.1,"modulation":"LORA","data_rate":"SF7BW125","coding_rate":"4/5","gateways":[{"gtw_id":"eui-b827ebfffefxxxxx","timestamp":2786096187,"time":"2019-01-27T20:19:41.601041Z","channel":0,"rssi":-89,"snr":10,"rf_chain":1,"latitude":48.12321,"longitude":11.57606,"altitude":517}]},"downlink_url":"https://integrations.thethingsnetwork.org/ttn-eu/api/v2/down/dheiss-esp32/symcon_webhook?key=ttn-account-v2.***********"}
Payload_Raw ist die Base64 codierte „Hello, world!“ Botschaft meines Nodes. MQTT wäre mir zwar insgesamt lieber gewesen (…wird ja zundehmend zum IoT Standardprotokoll), aber Symcon ist hier hinten dran.
Übrigens: mit einem ESP8266 und einem HopeRF Modul kann man einen sehr preisgünstigen (1-Kanal) LoRa WAN Gateway bauen, Details GitHub - hallard/WeMos-Lora (inkl. Link zum Platinen bestellen) und #134 15$ LoRa Gateway - YouTube. Mit diesen Aufsteckplatinen für den Wemos D1 mini pro habe ich mir meine Nodes gebaut.
Ich habe jetzt erst mal in ein richtiges Gateway investiert, welches Alle Kanäle und SF unterstützt
Ein Single-Channel Gateway (oder mehrere) werde ich dennoch bauen müssen, da ich es mit meinem Gateway nicht schaffe den kompletten Ortsbereich abzudecken :rolleyes:
MQTT hällt mittlerweiele ja Einzug in IPS. Allerdings beinhaltet IPS ja den Broker. Den müsste man da nach außen frei geben. Auch nicht besser als der Webhook.
Darauf muss man erst mal kommen. Danke fürs rausfinden
Ich bin momentan am überlegen die Funktionalität in ein Modul zu packen.
Eine IO-Instanz die die Autorisierung prüft und die Daten an die Clients weiter gibt.
Der (einfachste) Client reagiert auf seine Device-ID und schreibt zunächst nur den Inhalt in eine String-Variable.
gibt es weitere Funktionen die so ein Client erfüllen sollte?
TTN Device
Der Payload der eingehenden Nachricht wird in die Variable „Payload“ geschrieben.
Zur Auswahl hierfür steht:
String
HEX (Daten werden Hexadezimal in eine String-Variable geschrieben)
Boolean
Integer
Float
TTN JSON Device
Eingehende Nachrichten im JSON-Format werden decodiert und in Variablen umgewandelt. Hierbei wird nur die erste Ebene des JSON unterstützt. Unterstützte Formate sind hierbei String, Boolean, Integer und Double (bzw. Float).
Durch aktivieren von Auto Create Variables werden außerdem alle enthaltenen Variablen automatisch erstellt
Das Gateway wird mit Werte angezeigt. Die Sensoren nicht.
HookName habe ich /hook/ttn und für die Autorisierung den Acces Key /base 64 eingegeben.
Leider bekomme ich keine Daten wie im Bild zu sehen ist.
Über Unterstützung würde ich mich freuen. Vielen Dank.
Hallo, vielen Dank für das schöne Modul, aber irgendwie bekomm ich das nicht funktionsfähig.
Kannst du mal kurz beschreiben was ich in der http integration eigentlich konfigurieren muss?
In IPS habe ich das Modul Installiert. Dann habe ich eine Instanz vom TYP TTN Object Device erstellt.
Die Application ID ist der „Name“ der Anwendung (Erster Eintrag in der Übersicht der Anwendung) nicht die EUIS richtig?
Die Geräte ID ist der String DeciveID im Device Overview, richtig?
Im Gateway habe ich bei Hook einfach ttn stehen lassen.
Im Autorisation Feld habe ich den Accesskey der unter der Aplication zu finden ist eingefügt. (Copy 2 Clipboard & Einfügen)
Ich bekomme jedenfalls in IPS keine Daten rein, obwohl ich im TTN regelmäßig neue Daten kommen sehe.
Die HTTP Integration ist aktiv, aber ich bin mir unsicher was ich beim erstellen der Integration in den Pflichtfeldern ausfüllen muss (Vor allem URL)
Nein! Die Daten werden via Webhook empfangen. D.H. Der Webserver muss verfügbar sein.
Das Funktioniert am einfachsten über den Connect-Dienst.
MQTT habe ich mir angeschaut, habe es aber verworfen weil der Datenaustausch übers Internet dann unverschlüsselt übertragen wird.
Durch den Connect-Dienst ist die Übertragung verschlüsselt.
Alternativ kann hierfür auch ein eigener Web-Proxy verwendet werden.
vielen Dank für das geniale Modul. Eine RAk7200 Tracker habe ich schon einmal „online“ bekommen.
Als Gateway habe ich ein RAK7258 laufen.
Jetzt habe ich allerdings noch zwei Herausforderungen:
mit
$data = TTN_GetData(32744);
versuche ich die Metadaten der Message auszulesen.
Leider erfolglos, der Befehl wird auch nicht angeboten (s.u.). Modul habe ich bereits neu installiert (auch mal auf Beta umgeschaltet).
Auch ein Frohes Neues!
musste es jetzt erst mal nachstellen, deswegen gibt es die Antwort erst jetzt.
[quote=„kea,post:17,topic:49076“]
mit
$data = TTN_GetData(32744);
versuche ich die Metadaten der Message auszulesen.
Leider erfolglos, der Befehl wird auch nicht angeboten (s.u.). Modul habe ich bereits neu installiert (auch mal auf Beta umgeschaltet).
/QUOTE]
Diese Funktion war bislang nur verfügbar wenn man die Version via Github installiert hat. Ich habe die aktuelle Version als BETA in den Store gestellt und als Stable eingereicht.
Wenn du den Decoder in TTN verwendest kannst du in Symcon direkt mit den Daten arbeiten. Hierfür nutzt du das TTNObjectDevice.
In den Einstellungen hierzu den Schalter „Inhalt aus dem RAW-Payload“ deaktivieren und „Variablen automatisch erstellen“ aktivieren. Beim Empfang werden aus den Daten Direkt die passenden Variablen erstellt.
Für meine Geräte nutzte ich aktuell das Cayenne LPP Protokoll. Damit werden die Daten so übertragen, dass auf der Empfängerseite die Datentypen direkt passend empfangen werden. TTN wandelt die Daten dann automatisch um und übergibt diese an Symcon.
In Symcon können die Daten dann wiederum mit dem TTNObjectDevice direkt erstellt und empfangen werden.
Update:
Die Version mit „TTN_GetData()“ wurde soeben auch im Store (Stable) freigeschaltet.
Außerdem ist als BETA im Store schon die nächste Version verfügbar.
[ul]
[li]Sendeintervall [/li][li]Onlinestatus (Watchdog) [/li][li]Variablenprofile für dB, dBm, sekunden [/li][/ul]
Diese Ergänzungen gibt es aktuell „nur“ im TtnObjectDevice. Ich gehe mal davon aus, dass die meisten Benutzer den Decoder im TTN nutzen und das TtnDevice (Rohdaten) nicht verwenden !?
Feedback hierzu wäre interessant
erstmal vielen dank für Dein Modul „The Things Network“, ich habe dazu ein paar Fragen und Hinweise.
Beim „TTN Device“ fehlt bei RSSI im Profil die Einheit „dBm“.
In jeder Instanz steht „Intevall“ statt „Intervall“.
Ich möchte die Werte vom Klax Zählersensor da gestellt haben (In TTN habe ich einen Decoder), ich habe die folgenden drei Instanzen zum testen installiert.
„TTN Device“ bekomme ich die Metadaten angezeigt und in der Variable Daten Hex Werte, aber kein SNR, Frame ID, Status und Intervall.
„TTN Object Device“ da sehe ich nur die Metadaten.
„TTN Object Device“ hier habe ich die RAW-Payload deaktiviert, da wird mir nur der Status angezeigt.
„TTN Environment Sensor“ da sehe ich auch nur die Metadaten.
Was ist der „TTN Environment Sensor“, im Modul/Doku ist der nicht vorhanden?