Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. JSON mit Blockly auswerten

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

JSON mit Blockly auswerten

Scheduled Pinned Locked Moved ioBroker Allgemein
5 Posts 3 Posters 454 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • KlausStoertebekerK Offline
    KlausStoertebekerK Offline
    KlausStoertebeker
    wrote on last edited by
    #1

    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:

    Bildschirmfoto vom 2025-03-23 18-14-34.png

    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?

    ioBroker-Host: Raspberry Pi 5 (8GByte RAM) mit Halo8-KI-Hat, Argon ONE M.2-Gehäuse mit 256GByte PCIe-SSD

    mickymM paul53P 3 Replies Last reply
    0
    • KlausStoertebekerK KlausStoertebeker

      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:

      Bildschirmfoto vom 2025-03-23 18-14-34.png

      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?

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      wrote on last edited by mickym
      #2

      @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.

      https://forum.iobroker.net/post/1259702

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      KlausStoertebekerK 1 Reply Last reply
      0
      • mickymM mickym

        @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.

        https://forum.iobroker.net/post/1259702

        KlausStoertebekerK Offline
        KlausStoertebekerK Offline
        KlausStoertebeker
        wrote on last edited by KlausStoertebeker
        #3

        @mickym

        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...

        ioBroker-Host: Raspberry Pi 5 (8GByte RAM) mit Halo8-KI-Hat, Argon ONE M.2-Gehäuse mit 256GByte PCIe-SSD

        1 Reply Last reply
        0
        • KlausStoertebekerK KlausStoertebeker

          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:

          Bildschirmfoto vom 2025-03-23 18-14-34.png

          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?

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          wrote on last edited by
          #4

          @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.

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          1 Reply Last reply
          0
          • KlausStoertebekerK KlausStoertebeker

            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:

            Bildschirmfoto vom 2025-03-23 18-14-34.png

            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?

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by paul53
            #5

            @klausstoertebeker sagte: Blockly ändern muss, damit ich die gewünschten Attribute auslesen kann?

            Blockly_temp.JPG

            Das Schreiben eines Strings "null" macht keinen Sinn.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate
            FAQ Cloud / IOT
            HowTo: Node.js-Update
            HowTo: Backup/Restore
            Downloads
            BLOG

            789

            Online

            32.5k

            Users

            81.7k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe