NEWS
Teltonika RUTX50 per MQTT in den ioBroker
-
Moin,
ich wäre für Support sehr dankbar.
Ich habe in einem Ferienhaus einen Teltonika RUTX50 Router stehen. Dieser soll per MQTT seine Daten an meinen ioBroker (MQTT Broker) senden. Leider funktioniert dies nicht und ich erkenne in den Logs nicht woran es liegen kann.
IP Adresse des ioBrokers und Port für MQTT: 192.168.178.164:1883
IP Adresse des RUTX50: 192.168.198.1Die Geräte sind aus den jeweils anderen Netzen so erreichbar, stabil, alles fein. Die VPN Lösung ist per Wireguard erfolgt und läuft stabil. Ich kann auch per PING Adapter den RUTX50 aus dem ioBroker heraus anpingen, gleiches über die CLI vom RUTX50 zurück in Richtung ioBroker. Die Firewallregel lässt auf der VPN / Wireguard Strecke alles zu (Accept / Accept).
Hier mal ein paar Screenshots:
1.) Konfiguration auf dem RUTX50:
2.) Angepasste mqtt config Datei unter /etc/config/mqtt:
config broker 'mqtt_broker' option enabled '1' option hostname '192.168.178.164' option port '1883' option client_id 'rutx50_telemetry' option username '' option password '' option keepalive '60' config topic 'system_status' option enabled '1' option topic 'rutx50/system_status' option qos '0' option retain '0' option message '{ "uptime": "$uptime", "load": "$load", "memory": "$memory", "temp": "$temperature" }' option interval '30' config topic 'network_status' option enabled '1' option topic 'rutx50/network_status' option qos '0' option retain '0' option message '{ "wan_ip": "$wan_ip", "lan_ip": "$lan_ip", "signal_strength": "$signal_strength", "data_usage": "$data_usage" }' option interval '30' config topic 'device_info' option enabled '1' option topic 'rutx50/device_info' option qos '0' option retain '0' option message '{ "device_model": "$model", "firmware_version": "$firmware", "serial_number": "$serial" }' option interval '300'
3.) Screenshot aus dem MQTT Adapter vom ioBroker:
Das Verzeichnis und den DP habe ich nicht selbst angelegt, also irgendwas kam wohl mal wann, aber nicht vollständig.
4.) Der MQTT Service auf dem RUTX50 scheint auch sauber zu laufen:
Diverse Neustarts des Routers sind erfolgt, des Adapters im ioBroker ebenso.
Hat jemand eine Idee?
Danke,
Moritz -
@dasmoritz sagte in Teltonika RUTX50 per MQTT in den ioBroker:
Hat jemand eine Idee?
Wenn ich die Doku korrekt interpretiere, muss zunächst ein Topic "router/get" angelegt und mit dem Inhalt "id" gefüllt werden. Daraufhin published der Router Informationen unter "router/<seriennummer>". Dann müssten neue Übertragungen über "router/<seriennummer>/command" getriggert werden.
Über direkte Anpassungen an den Router-Konfig-Dateien kann ich in der Doku nichts finden. Wo hast du das her?
"When a third-party client connects to the Broker, it sends the message id to the the topic <TYPE>/get. The publisher then sends a response containing its serial number to the topic <TYPE>/id. Now that the Client knows the router's or device's serial number it can ask for values of various parameters by sending requests to the topic <TYPE>/<SERIAL>/parameter_name."
-
Danke dir!
Ich denke ich bin deutlich weiter gekommen, ich weiß nur noch nicht wie ich das periodisch abfragen kann bzw. wie gepublished wird. Aber erstmal zu den Schritten.1.) Im RUTX50 Router habe ich gerade eben unter Topic "Publish Prefix Topic" den Wert RUTX50 eingetragen. Kurz darauf war im ioBroker sofort folgender Eintrag. Ähnliches war ja schon in meinem Initialpost. --> Check!
2.) Den Wert des Topics RUTX50/get habe ich dann auf "id" gestellt (vorher "null"). --> Check!
3.) Dann wird im gleichen Baum ein Ordner "router" angelegt, darin befindet sich dann der Datenpunkt id mit der Seriennummer. --> Check!
4.) Nun muss man "nur noch" im Datenpunkt aus 1.) die jeweiligen Parameter eintragen, die man gerne erhalten möchte. Beispiel also "temperature", "uptime", "wan" im Anschluss wird dann in dem unter 3.) angelegten Order "router" ein neuer Ordner mit der Seriennummer des Routers aufgebaut und inkl. dem Datenpunkt "temperature" darin steht dann die Temperatur.
5.) Nun zum noch bestehenden Problem:
Der soll ja eigentlich regelmäßig "publishen". Beispiel: Die Uptime müsste sich ja sekündlich verändern. Ich möchte natürlich nicht sekündlich einen neuen Wert der Uptime haben, aber alle 300 Sekunden oder so würde ich die Daten gerne abfragen. Wie geht das?Wenn ich in das Topic "RUTX50" wie in Schritt 4 nun einfach nochmal "uptime" eingebe und bestätige, dann holt er sich die neue Uptime (vgl. Screenshot in 4. zu diesem hier):
Genau das hätte ich aber gerne automatisiert
Okay, es gibt die Funktion "Data to Server", die macht mich aber gerade völlig verrückt.... Sofern möglich würde ich das gerne über den ioBroker periodisch abfragen und auf dem RUTX50 möglichst wenig machen. Das wirkt zum Teil alles etwas "unausgereift".
Danke,
Moritz -
@dasmoritz sagte in Teltonika RUTX50 per MQTT in den ioBroker:
Genau das hätte ich aber gerne automatisiert
Wenn du in das Topic
router/<seriennummer>/command
jeweils den zu ermittelnden Wert (z.B
uptime
) eingibst, wird der Wert published. Das Gleiche erhältst du (wie du schon getestet hast) auch über das TopicRUTX50/get
nur dass dann an ALLE Router dieses Typs published wird. Spielt bei dir natürlich keine große Rolle, wenn du nur einen hast.
Automatisieren kannst du das mit Blockly, Node Red oder JavaScript.
Hilfe dazu bekommst du in den jeweiligen Unterforen.
https://forum.iobroker.net/category/94/blockly
https://forum.iobroker.net/category/96/node-red
https://forum.iobroker.net/category/93/javascript -
Vielen Dank! Auf Blockly bin ich gar nicht gekommen. Ich schreibe nun einfach alle 60m in den Get-Datenpunkt erst "signal" und kurz danach "temperature", fertig. Es kann so einfach sein.
Danke dir für deine Unterstützung!
Moritz