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 last edited by

      Hallo zusammen,
      ich würde gerne die current Werte in die target Werte schreiben.... wie muss ich da vorgehen ?

      Grund ist folgendes Problem ich nutze den Zwave 2 Adapter in verbindung mit Fibaro Modulen.

      Leider passiert es immer wieder das wenn ich den PI neustarte oder wenn ich den Adapter neustarte verschieden Traget Wert den Wert (null) zugewiesen bekommen. Diese lassen sich dann natürch nicht mehr wie gewohnt steuern und ich fange an die Werte händisch nachzutragen, was aber nicht im Sinn des Erfinders sein kann.

      Ich dachte da evtl. an eine Blockly Lösung oder eine alias Lösung wie die auch immer sein Mag,,,,,,,,,,,

      Hierzu würd ich gern um eure Hilfe bitten ..im muss dazu sagen das ich kein Profi bin im Blockly und auch der Bereich Alias ist für mich Neuland.

      Evtl hat ja wer schon eine Lösung die ich nutzen kann... bzw. die ich mir dann so umbaue wie ich es benötige.

      Vielen Dank

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

        @Flopsi
        Poste bitte die ID eines "target" und des dazugehörigen "current" und die Funktion (Namen) des Gerätes (z.B. Fernseher Wohnzimmer). Dann zeige ich an diesem Beispiel, wie man Alias-Datenpunkte per Script erzeugt.

        F 1 Reply Last reply Reply Quote 0
        • 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

                                648
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

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