Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly will keine Status werte in Wort

    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

    Blockly will keine Status werte in Wort

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

      Hallo Paul,

      schau mal oben im Bild das meine ich.
      2020-04-18 22_30_23-objects - ioBroker.png

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

        @acidsubway sagte:

        oben im Bild

        Funktion ist ein Aufzählungsobjekt (ursprünglich "Gewerk"), dem Objekte zugeordnet werden können. Dort lassen sich keine Zustände eines Datenpunktes unterbringen. Die Zustandstexte werden in der Spalte "Wert" angezeigt, wenn vorhanden.

        Senderliste.JPG

        In Klammern steht der eigentliche Zahlenwert.

        1 Reply Last reply Reply Quote 0
        • A
          acidsubway last edited by

          ach super das geht auch, wie schaut das in blockly aus?
          mit dem Programmieren habe ich es nicht so 😕

          paul53 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @acidsubway last edited by

            @acidsubway sagte in Blockly will keine Status werte in Wort:

            wie schaut das in blockly aus?

            Blockly hat da seine Grenzen. In Javascript kann man den Zustandstext leicht ermitteln.

            on('javascript.1.test.Senderliste', function(dp) {
                log(dp.common.states[dp.state.val]);
            });
            
            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @acidsubway last edited by paul53

              @acidsubway
              Wo möchtest Du die Zustandstexte letztlich anzeigen ?
              In Vis gibt es dafür die Widgets mit ValueList im Namen. Dort trägt man die Texte direkt ein.

              Vis_ValueList.JPG

              1 Reply Last reply Reply Quote 0
              • A
                acidsubway last edited by

                ok Paul danke, schau mal so schaut jetzt mein Script aus?

                // Solar Status Scrip
                {
                  "from": "system.adapter.modbis.1.holdingRegisters",
                  "user": "system.user.admin",
                  "ts": 1582661467074,          // was muss hier rein?
                  "common": {
                    "name": "Regelstatus",
                    "role": "",
                    "type": "number",           //welche Nummer muss hier rein?
                    "desc": "Manuell erzeugt",
                    "states": {
                      "0": "Warte auf Sonne",
                      "1": "Frostschutz",
                      "2": "Anschieben",
                      "3": "Einscchaltverzögerung"
                      "4": "Einspeisen"
                      "5": "Speicher voll"
                      "6": "Kollektor überhitzt"
                      "7": "Manuell"
                      "8": "Messung"
                      "9": "Störabschaltung"
                      "10": "Speicher umladen"
                      "11": "Heißstart"
                      "12": "SPS übernimmt"
                
                    },
                    "min": 0,
                    "max": 12,
                    "def": 0,
                    "read": true,
                    "write": true
                  },
                

                2020-04-19 08_40_28-objects - ioBroker.png

                um die oben markierte Zeile geht es, ich hab das gefühl mir fehlt noch was in meinem Script?

                mfg

                1 Reply Last reply Reply Quote 0
                • A
                  acidsubway last edited by

                  oh ja der hat einen Fehler.

                  08:44:35.961	info	javascript.0 (112) Stop script script.js.common.Solar_Status_umwandeln
                  08:44:35.961	info	javascript.1 (5369) Stop script script.js.common.Solar_Status_umwandeln
                  08:44:36.085	info	javascript.0 (112) Start javascript script.js.common.Solar_Status_umwandeln
                  08:44:36.086	error	javascript.0 (112) script.js.common.Solar_Status_umwandeln compile failed: at script.js.common.Solar_Status_umwandeln:3
                  
                  1 Reply Last reply Reply Quote 0
                  • A
                    acidsubway last edited by

                    2020-04-19 08_49_39-objects - ioBroker.png

                    hab vorhin ein falsches Objekt gepostet, das ist der Solarregler

                    paul53 1 Reply Last reply Reply Quote 0
                    • A
                      acidsubway last edited by acidsubway

                      // Solar Status Scrip
                      {
                        "from": "system.adapter.modbus.0.holdingRegisters.4028",
                        "user": "system.user.admin",
                        "ts": 1582661467074,          // was muss hier rein?
                        "common": {
                          "name": "Regelstatus",
                          "role": "",
                          "type": "number",           //welche Nummer muss hier rein?
                          "desc": "Manuell erzeugt",
                          "states": {
                            "0": "Warte auf Sonne",
                            "1": "Frostschutz",
                            "2": "Anschieben",
                            "3": "Einscchaltverzögerung"
                            "4": "Einspeisen"
                            "5": "Speicher voll"
                            "6": "Kollektor überhitzt"
                            "7": "Manuell"
                            "8": "Messung"
                            "9": "Störabschaltung"
                            "10": "Speicher umladen"
                            "11": "Heißstart"
                            "12": "SPS übernimmt"
                      
                          },
                          "min": 0,
                          "max": 12,
                          "def": 0,
                          "read": true,
                          "write": true
                        },
                      

                      ich sehe leider nicht woran es liegen könnte

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

                        @acidsubway
                        Das, was ich hier gezeigt habe, ist kein Script, sondern die RAW-Ansicht eines Datenpunktes mit einer Werteliste, und davon nur der Teil "common".

                        Du brauchst kein Script, um die Zustandstexte in Vis anzuzeigen. Sie müssen im Widget eingegeben werden. Z.B. Widget "ValueList HTML":

                        Vis_ValueList.JPG

                        Oder brauchst Du die Zustandstexte woanders ?

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

                          @acidsubway sagte in Blockly will keine Status werte in Wort:

                          das ist der Solarregler

                          Bitte verändere keine Original-Datenpunkte des Modbus-Adapters. Wenn Du einen Datenpunkt mit Zustandstexten benötigst, der ansonsten ein Abbild des "Status Solar" ist, dann erzeuge einen Alias. Das kannst Du mit diesem Script machen:

                          // Original-Datenpunkt
                          const idOrigin = 'modbus.0.holdingRegisters.4028';
                           
                          // Alias-Datenpunkt
                          const idAlias = 'Solar.Status';
                          var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                          // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                          // nameAlias = 'Batterie Deckenlicht';
                          desc = 'per Script erstellt';
                          // typeAlias = 'boolean'; // oder 'number'
                          // read = "val < 20 ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
                          // write = "val ? 'Ein' : 'Aus'";
                          // role = 'indicator';
                          // min = 0; // nur Zahlen
                          // max = 100; // nur Zahlen
                          // unit = '%'; // nur für Zahlen
                          states = {
                                0: "Warte auf Sonne",
                                1: "Frostschutz",
                                2: "Anschieben",
                                3: "Einschaltverzögerung",
                                4: "Einspeisen",
                                5: "Speicher voll",
                                6: "Kollektor überhitzt",
                                7: "Manuell",
                                8: "Messung",
                                9: "Störabschaltung",
                                10: "Speicher umladen",
                                11: "Heißstart",
                                12: "SPS übernimmt"
                          };
                          // custom = []; // verhindert doppelte Ausführung von history, ...
                          // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
                          // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
                          
                          function createAlias(idSrc, idDst) {
                             if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                             else {
                                var obj = {};
                                obj.type = 'state';
                                obj.common = getObject(idSrc).common;
                                obj.common.alias = {};
                                obj.common.alias.id = idSrc;
                                if(typeAlias) obj.common.type = typeAlias;
                                if(obj.common.read !== false && read) obj.common.alias.read = read;
                                if(obj.common.write !== false && write) obj.common.alias.write = write;
                                if(nameAlias) obj.common.name = nameAlias;
                                if(role) obj.common.role = role;
                                if(desc) obj.common.desc = desc;
                                if(min !== undefined) obj.common.min = min;
                                if(max !== undefined) obj.common.max = max;
                                if(unit) obj.common.unit = unit;
                                if(states) obj.common.states = states;
                                if(custom && obj.common.custom) obj.common.custom = custom;
                                obj.native = {};
                                setObject(idDst, obj);
                                if(raum && getObject('enum.rooms.' + raum)) {
                                   let obj = getObject('enum.rooms.' + raum)
                                   obj.common.members.push(idDst);
                                   setObject('enum.rooms.' + raum, obj);
                                }
                                if(gewerk && getObject('enum.functions.' + gewerk)) {
                                   let obj = getObject('enum.functions.' + gewerk)
                                   obj.common.members.push(idDst);
                                   setObject('enum.functions.' + gewerk, obj);
                                }
                             } 
                          }
                           
                          createAlias(idOrigin, 'alias.0.' + idAlias);
                          
                          1 Reply Last reply Reply Quote 0
                          • A
                            acidsubway last edited by

                            PAUL, DANKE DIR!!!!!!!!!!!!!!!!!!!!!!!

                            Das geht super, kann das nun auch noch umschreiben für noch mehr statuse 😄 DANKE

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            892
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            2
                            14
                            844
                            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