NEWS
Script um JSON in states zu schreiben
-
Hallo zusammen,
ich habe mir einen zigbee2mqtt Stick angeschafft.
Mit einem sensor (aqara Tür/Fenster) bekomme ich folgendes JSON:{"contact":false,"linkquality":70,"battery":66,"voltage":2945}
Um darauf per blockly schalten zu können, würde ich die states gerne erstellen und habe mir folgendes script in Blockly erstellt:
// i = iobObject var obj = JSON.parse(getState(i).val); for (var prop in obj) { url = i + "." + prop; //console.log(url + " = " + obj[prop]); try { createState(url, obj[prop], true, { read: true, write: false, name: prop, role: "value", type: "mixed", def: false }); //console.log(getState(url)) } catch (e) { console.log('exception in getState [' + e + ']'); } }
Die Variablen werden erstellt... nur leider kann ich nur Variablen in Javascript.0. erstellen...
javascript.0.mqtt-client.0.zigbee2mqtt.0x00158d00033a73d5
wie kann ich die Variable hier erstellen?
mqtt-client.0.zigbee2mqtt.0x00158d00033a73d5
Vielen Dank
-
@madjack84 sagte in Script um JSON in states zu schreiben:
ich habe mir einen zigbee2mqtt Stick angeschafft.
es gibt keinen zigbee2mqtt Stick .. zigbee2mqtt ist ein Projekt der Zigbee Geräte bedienen kann ...
ich Tippe auf einen cc2531 Stickaber warum nimmst du nicht den Zigbee Adapter ??
-
@arteck korrekt.
Einfache Antwort: ich kannte den Adapter nicht
Dachte ich kann von mqtt alles einfach abgreifen, da ich mqtt als dreh und Angelpunkt nutze. (shellies, tasmota, App)
Kommt auch daher weil ich RAM sparen will und so wenige Adapter wie möglich nutze.Das zigbee2mqtt Projekt nutze ich via docker... Auch etwas Spielerei dabei
Gibt es im Javascript Umfeld eine Möglichkeit states im mqtt Client Adapter zu beschreiben?
-
@madjack84 sagte:
wie kann ich die Variable hier erstellen?
Man sollte keine eigenen Datenpunkte im Instanzen-Namensraum erstellen, da die Instanzen ihre Datenpunkte verwalten, also auch löschen. Außerhalb von javascript.N kann man Datenpunkte nur manuell im Reiter "Objekte" erstellen.
-
@madjack84 Hab ich auch mal nach gesucht. Leider ist das bewusst blockiert.
Du kannst einen Adapter in Javascript erstellen. Der kann sowasFür Deine Zwecke sollte aber doch auch so ok sein, oder? Auslesen kannst du den Wert ja überall. Geht Dir nur um Kosmetik oder?