Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. State-Wert statt -Schlüssel auslesen (Blockly/JS/Lovelace)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    State-Wert statt -Schlüssel auslesen (Blockly/JS/Lovelace)

    This topic has been deleted. Only users with topic management privileges can see it.
    • AxelRHD
      AxelRHD last edited by

      Hallo zusammen! Ich portiere gerade recht erfolgreich meine Heimautomation von Home Assistant nach ioBroker.

      Jetzt hänge ich allerdings an einer Stelle: ich versuche von einem Homematic Control Mode, der als Zahl mit dahinterliegender Werteliste (state) umgesetzt ist, anstatt dem Schlüssel der States den entsprechenden Wert auslesen zu lassen (common.states) und komme dabei einfach nicht weiter.

      Beispielhaft einer der betroffenen Datenpunkte:

      {
        "from": "system.adapter.hm-rega.0",
        "user": "system.user.admin",
        "ts": 1601322081245,
        "common": {
          "name": "Heizungsthermostat (Bad).CONTROL_MODE",
          "type": "number",
          "role": "indicator",
          "def": 0,
          "min": 0,
          "max": 3,
          "read": true,
          "write": false,
          "states": {
            "0": "AUTO-MODE",
            "1": "MANU-MODE",
            "2": "PARTY-MODE",
            "3": "BOOST-MODE"
          },
          "custom": {
            "lovelace.0": {
              "enabled": true,
              "entity": "sensor",
              "name": "LEQ0785938_4_CONTROL_MODE"
            }
          }
        },
        "native": {
          "CONTROL": "HEATING_CONTROL.CONTROL_MODE",
          "ID": "CONTROL_MODE",
          "TYPE": "ENUM",
          "UNIT": "",
          "DEFAULT": 0,
          "FLAGS": 1,
          "MAX": 3,
          "MIN": 0,
          "OPERATIONS": 5,
          "TAB_ORDER": 0,
          "VALUE_LIST": [
            "AUTO-MODE",
            "MANU-MODE",
            "PARTY-MODE",
            "BOOST-MODE"
          ]
        },
        "acl": {
          "object": 1638,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator",
          "state": 1638
        },
        "_id": "hm-rpc.0.LEQ0785938.4.CONTROL_MODE",
        "type": "state"
      }
      

      Ich möchte also in Blockly statt 0 den Wert "AUTO-MODE" auslesen. In Lovelace wird auch 0 statt dem Text angezeigt. Dieser Wert ist reine Information (von Homematic so vorgeben) und nicht schreibbar.

      Hat das schon irgendeiner gelöst, bzw. allgemein einen Hinweis, wie man in ioBroker solche JS-Objekte ausliest?

      Besten Dank schon mal. 🙂

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @AxelRHD last edited by paul53

        @AxelRHD83 sagte:

        wie man in ioBroker solche JS-Objekte ausliest?

        Siehe hier oder hier.

        AxelRHD 1 Reply Last reply Reply Quote 0
        • AxelRHD
          AxelRHD @paul53 last edited by

          @paul53, danke für die schnelle Antwort. Deinen beiden Links entneme ich, dass es in Blockly wohl nicht möglich ist (es sei denn, ich packe es dort in eine Funktion). Dort wurde aber nichts zum Thema Lovelace gesagt. Weißt du darauf zufällig auch eine Antwort?

          AxelRHD Garfonso 2 Replies Last reply Reply Quote 0
          • AxelRHD
            AxelRHD @AxelRHD last edited by

            Habe es gemäß den Informationen von @paul53 in einer Blockly-Funktion getestet. Funktioniert einwandfrei:

            var input_obj;
            
            // Statustext aus States Objekt auslesen
            function get_state_text(input_obj) {
                return getObject(input_obj).common.states[getState(input_obj).val];
            }
            
            N 1 Reply Last reply Reply Quote 0
            • Garfonso
              Garfonso Developer @AxelRHD last edited by

              @AxelRHD said in State-Wert statt -Schlüssel auslesen (Blockly/JS/Lovelace):

              @paul53, danke für die schnelle Antwort. Deinen beiden Links entneme ich, dass es in Blockly wohl nicht möglich ist (es sei denn, ich packe es dort in eine Funktion). Dort wurde aber nichts zum Thema Lovelace gesagt. Weißt du darauf zufällig auch eine Antwort?

              Lovelace wird bei einem sensor nicht auf das States-Attribut zugreifen, Hm. Das ist auch nicht wirklich tivial zu ergänzen gerade... kann dir der neue Klimaanlagen-Typ vom Geräte-Adapter helfen? (ist noch nicht in lovelace unterstützt, steht aber auf der Liste).

              AxelRHD 1 Reply Last reply Reply Quote 0
              • AxelRHD
                AxelRHD @Garfonso last edited by

                @Garfonso, danke für die Antwort. Dann warte ich mal auf die Umsetzung und schaue es mir dann an. Ging in Home Assistant früher ja auch nicht so einfach. Da habe ich mir dann Dummy-Zustände gebaut, die auf den Attributen beruhten.

                1 Reply Last reply Reply Quote 0
                • N
                  nelzon @AxelRHD last edited by

                  @axelrhd Hallo Axel. kannst mal bitte dein Blockly-Scrpit posten. Wie hast du "input_obj" mit deinem Trigger verknüpft?

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    Diamand2k22 @nelzon last edited by

                    @paul53

                    bei mir im Blockly funktioniert das mit dem extrahieren der Texte nicht.
                    was stimmt da noch nicht? kannst du mir weiterhelfen?

                    8030bce7-f0b1-42b4-8ab8-3b386319e74c-image.png

                    acd7ed57-209f-414e-a851-628d3ff2176a-image.png

                    c1cebf87-a00d-4eb1-8902-158d235c1abd-image.png

                    Danke u. Grüße

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Diamand2k22 last edited by paul53

                      @diamand2k22 sagte: was stimmt da noch nicht?

                      Die JS-Funktion mit Ergebnis darf nur diese eine Zeile enthalten:

                      Blockly_temp.JPG

                      Das Funktionsgerüst erstellt Blockly.

                      EDIT: Außerdem muss an die Funktion die ID des Trigger-Datenpunktes übergeben werden.

                      Blockly_temp.JPG

                      D 1 Reply Last reply Reply Quote 0
                      • D
                        Diamand2k22 @paul53 last edited by Diamand2k22

                        @paul53

                        es funktioniert, danke!
                        Das fehlen der ObjectID des Trigger-Datenpunktes war der Hauptfehler.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        742
                        Online

                        31.8k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        979
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo