NEWS
JavaScript und Tuya
-
Moin,
ich messe die Leistung meiner Solaranlage mit einer WLAN-Steckdose. Über den Tuya-Adapter habe ich sie erfolgreich in den ioBroker eingebunden. Nun möchte ich die aktuelle Leistung auslesen und in einem Datenpunkt speichern. Dazu habe ich (abgeleitet von Blockly) folgendes Script erstellt.on({id: "tuya.0.bfcf767c97aecb2b5dawpe.19"/*cur_power*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; getState("tuya.0.bfcf767c97aecb2b5dawpe.19", async function (err, state) { var value = state.val; log(value); setState('0_userdata.0.Solar_Aktuell', (value)); });
Leider will es nicht laufen und ich finde den Fehler nicht ...
-
@theophilus
versuch´s mal damit:on({id: "tuya.0.bfcf767c97aecb2b5dawpe.19"/*cur_power*/, change: "any"}, async function (obj) { var value = obj.state.val; setState('0_userdata.0.Solar_Aktuell', value); log(value); });
-
@latzi Super, das funktioniert, danke!
-
@theophilus sagte: 0_userdata.0.Solar_Aktuell
Damit die Objekte unter "0_userdata.0" nicht schnell unübersichtlich viele werden, empfehle ich, Ordner vom Typ "folder" oder "device" zu erstellen und erst darunter die Datenpunkte. Die Datenpunkt-ID wäre dann z.B. "0_userdata.0.Solar.Leistung".
Blockly liefert leider keine guten Vorgaben für strukturierten Javascript-Code, der z.B. so aussehen kann:
const idSrc = "tuya.0.bfcf767c97aecb2b5dawpe.19"; const idDst = "0_userdata.0.Solar.Leistung"; on(idSrc, function(dp) { // triggert bei Wertänderung setState(idDst, dp.state.val, true); });
Es gibt eine Doku zu den Funktionen des Javascript-Adapters.
-
@paul53 Super, danke für den Hinweis auf die Doku, sowas habe ich vermisst.