Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Wie current werte und in target werte schreiben

    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

    Wie current werte und in target werte schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Flopsi @paul53 last edited by

      @paul53

      2020-09-30 19_15_05-javascript - ioBroker.png

      Das habe ich mal probiert so ohne Erfolg

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

        @Flopsi sagte:

        Das habe ich mal probiert

        Daraus kann ich leider keine IDs erkennen, sondern nur Namen. Poste bitte die beiden IDs zu Node_24.

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

          @paul53 2020-10-01 19_14_30-objects - ioBroker.png

          2020-10-01 19_15_39-objects - ioBroker.png

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

            @Flopsi
            Welche Instanz ? "zwave.0" ?

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

              @paul53 2020-10-01 19_19_05-objects - ioBroker.png

              paul53 1 Reply Last reply Reply Quote 0
              • F
                Flopsi last edited by

                @paul53
                Ich hab schon Alias im Einsatz und zwar nutze ich das als Platzhalter für meine Module..

                Soll ich das Javaskript mal Posten .....

                1 Reply Last reply Reply Quote 0
                • AlCalzone
                  AlCalzone Developer last edited by

                  Statt "steuere" müsste mindestens "aktualisiere" verwendet werden. Sonst löst nachher jedes Update von currentValue einen neuen Schaltvorgang aus.

                  @paul53 Die Überlegung war, das durch einen Alias wegzukapseln, da es für @Flopsi ein Anzeigeproblem in VIS darstellt. Lesen immer aus currentValue, Schreiben immer in targetValue.

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

                    @Flopsi
                    Das folgende Script in das Javascript-Editor-Fenster kopieren und starten:

                    // Original-Datenpunkt
                    const idOrigin = 'zwave2.0.Node_24.Binary_Switch.targetValue_002'; 
                    // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                    // Bei Nicht-Verwendung Leerstring '' zuweisen
                    const idRead = 'zwave2.0.Node_24.Binary_Switch.currentValue_002';
                     
                    // Alias-Datenpunkt
                    const idAlias = 'Wohnzimmer.Fernseher';
                    var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                    
                    // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                    nameAlias = 'Fernseher Wohnzimmer';
                    desc = 'per Script erstellt';
                    // typeAlias = 'boolean'; // oder 'number'
                    // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
                    // write = "val ? true : true";
                    // role = 'value';
                    // min = 0; // nur Zahlen
                    // max = 100; // nur Zahlen
                    // unit = '%'; // nur für Zahlen
                    // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
                    // custom = []; // verhindert doppelte Ausführung von history, ...
                    // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
                    // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
                    
                    // Ab hier nichts ändern !!
                    function createAlias(idDst, idSrc, idRd) {
                       if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                       else {
                          var obj = {};
                          obj.type = 'state';
                          obj.common = getObject(idSrc).common;
                          obj.common.alias = {};
                          if(idRd) {
                              obj.common.alias.id = {};
                              obj.common.alias.id.read = idRd;
                              obj.common.alias.id.write = idSrc;
                              obj.common.read = true;
                          } else 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 && existsObject('enum.rooms.' + raum)) {
                             let obj = getObject('enum.rooms.' + raum)
                             obj.common.members.push(idDst);
                             setObject('enum.rooms.' + raum, obj);
                          }
                          if(gewerk && existsObject('enum.functions.' + gewerk)) {
                             let obj = getObject('enum.functions.' + gewerk)
                             obj.common.members.push(idDst);
                             setObject('enum.functions.' + gewerk, obj);
                          }
                       } 
                    }
                     
                    createAlias('alias.0.' + idAlias, idOrigin, idRead);
                    

                    Für weitere Alias-Datenpunkte müssen idOrigin, idRead, idAlias und nameAlias angepasst werden.

                    1 Reply Last reply Reply Quote 0
                    • F
                      Flopsi last edited by

                      @AlCalzone Ne nicht im VIS sondern im Datenpunkt selber.....da steht dann bei Current der Wert

                      true

                      und im targte steht

                      (null)

                      @paul53

                      kann man zwei alias skripte laufen lassen wie gesagt habe ich schon ein am laufen ...

                      AlCalzone paul53 2 Replies Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer @Flopsi last edited by

                        @Flopsi Das ist doch vollkommen egal, wenn der Alias so konfiguriert ist, dass er den currentValue liest und den targetValue schreibt!

                        Das Alias-Skript ist auch nur zum Anlegen des Alias-Datenpunkts. Diesen Alias-DP nutzt du dann in VIS etc.

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

                          @Flopsi sagte:

                          kann man zwei alias skripte laufen lassen

                          Die Skripte zur Erzeugung von Alias-DP laufen nicht ständig, sondern werden nur kurz gestartet und nach Erledigung wieder gestoppt. Deshalb können auch mehrere Skripte existieren.

                          1 Reply Last reply Reply Quote 0
                          • F
                            Flopsi last edited by Flopsi

                            Ok ich werde es mal testen sobald ich meinen Pi neustarten muss was ich mal am Wochende mache, unter der Woche das bewust machen ist immer so ne sache ...mit der Zeit 🙂

                            Auf jeden fall erstmal vielen Dank

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            595
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            blockly javascript
                            3
                            14
                            693
                            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