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? -
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.
-
@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... -
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 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.
-
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 sagte: Blockly ändern muss, damit ich die gewünschten Attribute auslesen kann?

Das Schreiben eines Strings "null" macht keinen Sinn.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden