NEWS
JSON mit Blockly auswerten
-
Hallo in's Forum,
ich betreibe einen Shelly Plus 2PM-Doppelschalter über MQTT (NICHT mit dem Shelly-Adapter, sondern mit dem MQTT-Adapter), der auch zwei Eingänge hat. Diese Eingänge können als "Switch" oder "Button" konfiguriert werden - ich habe sie als "Button" konfiguriert, damit ich auswerten kann, ob jemand den Taster ein, zwei oder drei Mal gedrückt hat. Diese Information wird im Datenpunkt "events/rpc" (in diesem Fall "mqtt.0.shellyplus2pm-d48afc7dbd1c.events.rpc" als JSON abgelegt und hat folgendes Format:{ "src": "shellyplusi4-c4d8d554856c", "dst": "shellyplusi4-c4d8d554856c/events", "method": "NotifyEvent", "params": { "ts": 1742530641.42, "events": [ { "component": "input:0", "id": 2, "event": "single_push", "ts": 1742530641.42 } ] } }
Ich möchte dieses JSON mit einem Blockly-Skript auswerten, und zwar folgendermaßen:
Zuerst prüfen, ob das Attribut "component" vorhanden ist, um Fehler bei weiteren Abfragen zu vermeiden.
Wenn "component" vorhanden ist, will ich prüfen ob es den Wert "Input:0" oder "Input:1" hat. Und wenn einer dieser beiden Werte enthalten ist, möchte ich das Attribut "event" auslesen und den ausgelesenen Wert abspeichern.
"event" kann die Zeichenketten "single_push", "double_push", "triple_push", "btn_down" und "btn_up" annehmen.
Ich habe mir die folgende Blockly-Lösung ausgedacht:Aber leider funktioniert das nicht, denn offenbar habe ich etwas bei den Attributen oder deren Schreibweise falschgemacht. Denn obwohl das Attribut "params.events[0].component" vorhanden ist, wird die Bedingung "params.events[0].component /= null" nicht erfüllt. (Achtung: "events" ist ein Array, daher [0] als Index).
Kann mir jemand helfen und mir sagen, was ich an meinem Blockly ändern muss, damit ich die gewünschten Attribute auslesen kann? -
@klausstoertebeker Ich hab Dir doch die Lösung mit dem Alias gezeigt - das ging bei mir. Ich bin nur der Meinung, du solltest unter status suchen.
-
Das hat ja auch funktioniert, ich habe auch gerade geantwortet: siehe hier
Aber ich wollte Dich nicht mit Blockly nerven, und Node Red kann ich (noch) nicht... -
@klausstoertebeker Das Du auf das blaue "null" überprüfst ist richtig - aber was das Beschreiben mit einem String "null" sein soll, das ist wahrscheinlich verkehrt.
Ich würde halt mal Debugs einbauen, dann siehst Du ob in die Bedinung reingesprungen wird.
-
@klausstoertebeker sagte: Blockly ändern muss, damit ich die gewünschten Attribute auslesen kann?
Das Schreiben eines Strings "null" macht keinen Sinn.