NEWS
zigbee2mqtt Osram Steckdose schalten ? (Json MQTT)
-
Hallo IoBroker User,
ich habe ein (Verständnis-)Problem mit MQTT und JSON. Nutze zigbee2mqtt und einige Osram Steckdosen. Über ein JSON Convert Script bekomme ich per MQTT sauber die Datenpunkte einzeln getrennt in IoBroker.
Hier ein Screenshot:
Nutze folgendes Script was auch soweit funktioniert für das lesen, aber nicht für das schreiben (schalten der Steckdose):
var pfad = "javascript.0.jsonconverter."; var channel = "zigbee2mqtt."; var sname = "OsramPlug1."; var idstate = pfad + channel + sname + 'State'; var idlinkquality = pfad + channel + sname + 'Linkquality'; var idlast_seen = pfad + channel + sname + 'Last_seen'; createState(idstate, 0,{type: 'boolean',name: 'Aktueller Status', read: true,write: true,role: 'value'}); createState(idlinkquality, 0,{type: 'number',name: 'Funkqualität', read: true,write: true,role: 'value'}); createState(idlast_seen, 0,{type: 'string',name: 'Letzte Verbindung', read: true,write: true,role: 'value'}); on({id: 'mqtt.0.zigbee2mqtt.0x84182600000f197b', change: "any"}, function (obj) { var state; var linkquality; var last_seen; try {obj = JSON.parse(getState('mqtt.0.zigbee2mqtt.0x84182600000f197b').val); } catch (e) { console.error('Cannot parse: ' + getState('mqtt.0.zigbee2mqtt.0x84182600000f197b').val); return; } state = obj.state; linkquality = obj.linkquality; last_seen = obj.last_seen; setState(idstate, state); setState(idlinkquality, linkquality); setState(idlast_seen, last_seen); log(state); log(linkquality); log(last_seen); });
Hier der orignale MQTT Eintrag:
Nur - wie kann ich Daten auf diesen Weg senden um die Steckdose zu schalten ?
Wenn ich true/false auf dem neuen erstellen konvertierten Objekt per Script mache - geht ja das ja nicht per MQTT zurück auf das Eigentlichen MQTT Objekt welches ein JSON String erwartet.
Habt Ihr mit einen Tipp ? Bin da sicherlich nicht der erste, habe aber dazu nichts passendes im Forum gefunden.
Danke & Grüße,
BeNe -
warum nimmst du nicht den zigbee Adapter ??
-
Kann denn der zigbee Adapter auch mit den Routern umgehen bzw. eine networkmap mit graphviz erstellen ?
Das ist sehr hilfreich für mich, um zu sehen welche Geräte an welchen Routern hängen und wie die Empfang stärke ist. Bin immer noch am Ausbau und habe zwei selber gebaute Router im Einsatz.
Auf der anderen Seite, habe ich vielleicht noch Geräte die ebenfalls per MQTT im JSON Format arbeiten, die nicht per Zigbee ankommen. Allerspätestens dann bräuchte ich ja wieder diese Funktion.
-
@BeNeDeLuX was sind den selbstgebaute Router ... und ja es gibt auch eine Map . wobei es immer nur die link_quality der entscheidende Faktor ist... da du keine Möglichkeit hast bei einem Zigbee das routing zu beinflussen..
weiter mit MQTT:
dann musst du den mqtt json wieder so zusammen bauen wie du den auch auseinander genommen hast .. und in das gleiche Datenpunkt schreiben -
Danke schon mal für deine Antwort
Habe mir solche Router gebaut -> https://www.zigbee2mqtt.io/how_tos/how_to_create_a_cc2530_router.htmlDas habe ich mir schon so gedacht, wieder mit dem gleichen Weg zurück.
Also entweder selber was machen (da ich bisher nichts dazu gefunden habe im Forum) oder eben den Zigbee Adapter nutzen.Dann habe ich ja schon mal einen Ansatz.
Danke!