Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [Vorlage] Variable Zeitsteuerung mit VIS Editor

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Variable Zeitsteuerung mit VIS Editor

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      GiuseppeS @gender last edited by

      @gender
      Das mit dem Gruppieren versteh ich. Hab das selbe Thema mit meinem Balkon; sind auch zwei Rollläden. Das Gruppieren im Skript wäre umsetzbar, allerdings macht es außerhalb des Skripts mehr Sinn. Mit dem "Scenes Adapter" können nicht nur Szenen sondern auch Gruppen erstellt werden.
      Diese neue Scene-Gruppe könnte wiederum in die Skript Aufzählung hinzugefügt werden; Skript neustarten, fertig.

      Da es eine dauerhafte Gruppe ist, würde eine Umsetzung innerhalb des Skripts nur die Komplexität erhöhen, ohne Mehrwert. Schließlich besteht nie der Bedarf, diese Gruppe in VIS spontan aufzulösen.

      P.S.:
      Um ein Gerät aus dem Skript bzw aus der VIS zu löschen, bitte so vorgehen: in VIS alle Timer des Geräts mit Button DEL löschen. Dann Skript stoppen, Gerät aus der Aufzählung entfernen und Skript wieder starten.

      Ich hatte es bisher am Balkon so hingenommen, dass beide getrennt voneinander fahren, aber werde heute Nachmittag meinen Vorschlag selbst umsetzen 😉

      1 Reply Last reply Reply Quote 0
      • smartboart
        smartboart last edited by smartboart

        @GiuseppeS

        Hi Giuseppe....
        Wenn ich selbst weitere Bedingungen hinzufügen möchte, reicht es aus folgende Scriptteile einfach fortlaufend hinzuzufügen?

        createState("Timer.Editor.Condition3");
        createState("Timer.Editor.Cond3State");
        createState("Timer.Editor.Cond3Comp");
        createState("Timer.Editor.Cond3Value");
        createState("Timer.Editor.Cond3Result");
        
        EditSubsArr[4] = on({id: ["javascript." + instance + ".Timer.Editor.Cond3Comp","javascript." + instance + ".Timer.Editor.Cond3State","javascript." + instance + ".Timer.Editor.Cond3Value"], change: "any", ack: false}, function (obj) {
                var ConditionJSON = JSON.parse(getState("javascript." + instance + ".Timer.Editor.ConditionJSON").val);
                var Cond3State = getState("javascript." + instance + ".Timer.Editor.Cond3State").val
                var Cond3Comp = getState("javascript." + instance + ".Timer.Editor.Cond3Comp").val
                var Cond3Value = getState("javascript." + instance + ".Timer.Editor.Cond3Value").val
                var strCond3 = "getState(\"" + ConditionJSON[Cond3State] + "\").val " + Cond3Comp + " " + Cond3Value
                setState("javascript." + instance + ".Timer.Editor.Condition3", strCond3);
                if (Cond3State != "" && Cond3Comp != "" && Cond3Value != "") {
                    setState("javascript." + instance + ".Timer.Editor.Cond3Result", eval(strCond3));
                }
            });
                case 3:
                    strEval1 = eval(DeviceJSON.Conditions[1].ConditionStr);
                    strEval2 = eval(DeviceJSON.Conditions[2].ConditionStr);
                    strEval3 = eval(DeviceJSON.Conditions[3].ConditionStr);
                    sumEval = (strEval1 && strEval2 && strEval3);
                    break;
        
        
                    "3":{
                        "ConditionStr": "",
                        "CondState": "",
                        "CondComp": "==",
                        "CondValue": ""
                    }
        
        
        
        
        
        
        G 1 Reply Last reply Reply Quote 0
        • G
          GiuseppeS @smartboart last edited by

          @smartboart
          Ich müsste mir das am PC genauer anschauen. Was definitiv fehlt ist die Auswertung der Bedingungen:

          function condEval(DeviceJSON){
          ... 
          }
          

          Da eine zukünftige Version höhere Anzahl von Bedingungen unterstützen soll, müsste ich genau diese Funktion mit einem generischen Ansatz programmieren.
          Es wären einige Neuerungen notwendig...

          Vorerst kannst du es probieren, selbst die Erweiterung einzupflegen 😉 können in der Testphase auch chatten, wenns zeitlich passt.

          Aktuell bin ich dabei, eine HTML Ansicht des Editors zu erstellen. Es geht voran, aber mühselig, dass es gut ausschaut 😂
          Im nächsten Schritt muss der html Code im Skript erstellt werden.
          Das Projekt dauert daher noch ca. 2 Wochen.

          smartboart 1 Reply Last reply Reply Quote 0
          • smartboart
            smartboart @GiuseppeS last edited by

            @GiuseppeS

            danke für das Anbgebot...hab jetzt überall mal angepasst wo ich denke dass es sinn macht...
            Mit Vortlaufenden Nummern macht aber im Code an den

            EditSubsArr[5]
            

            spätesten Robleme, da dise bereits vortlaufend sind...
            Für ene 4 Bedingung müsste nach meiner denke dann für den EditSubsArr[] ne ander Nummer herhalten..
            Worauf das wieder Auswirkungen hat, steige ich noch nicht durch....

            G 1 Reply Last reply Reply Quote 0
            • G
              GiuseppeS @smartboart last edited by

              @smartboart

              Das kannst du ruhig machen mit der fortlaufenden Nummer bei EditSubsArr[]
              Nimm die nächste freie Ziffer. Die letzte müsstest du ganz unten finden, in dieser Reihe von Subscribtions. Beim Löschen dieser Subscribtions wird die Länge ermittelt, bedeutet, dass deins auch gelöscht wird.

              Hintergrund dieser optionalen Subsribtions:
              Bei der Verwendung von nur einem Editor-PopUp musst ich steuern welches Skript auf die Editor-Eingaben reagieren soll. Diese Subscribtions werden aktiviert, sobald ein Click in Tabelle erfolgt. Wird auch im Log ausgegeben, wenn Debug im Skript aktiviert wird.

              1 Reply Last reply Reply Quote 0
              • smartboart
                smartboart last edited by

                @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                EditSubsArr[]

                ok, verstanden...

                        //for (let i = 1; i <= 3; i++){
                        //selbst geändert
                        for (let i = 1; i <= 4; i++){
                

                habe alle for Schleifen auf 4 geändert...
                Jetzt ist beim ofnnen der Konfiguration folgendes Fehlerbild...

                javascript.1	2020-07-26 16:33:06.122	error	(1703) at processImmediate (internal/timers.js:456:21)
                javascript.1	2020-07-26 16:33:06.122	error	(1703) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
                javascript.1	2020-07-26 16:33:06.121	error	(1703) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:451:25)
                javascript.1	2020-07-26 16:33:06.121	error	(1703) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1052:38)
                javascript.1	2020-07-26 16:33:06.120	error	(1703) at Object.<anonymous> (script.js.common.Zeitsteuerung.Variable_Zeitsteuerung_Vis:804:17)
                javascript.1	2020-07-26 16:33:06.120	error	(1703) at openEditor (script.js.common.Zeitsteuerung.Variable_Zeitsteuerung_Vis:711:112)
                javascript.1	2020-07-26 16:33:06.119	error	(1703) Error in callback: TypeError: Cannot read property 'ConditionStr' of undefined
                
                G 1 Reply Last reply Reply Quote 0
                • G
                  GiuseppeS @smartboart last edited by GiuseppeS

                  @smartboart sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                  ConditionStr

                  Das JSON, welches alle Timer beinhaltet muss natürlich auch aufgebohrt werden.
                  Unter dem Key Conditions sind nur 3 Objekte angesiedelt, hier müsste das 4. noch ergänzt werden. Könntest du erstmal mit einem Online-JSON-Editor bewerkstelligen; ansonsten gehts natürlich auch im Code.
                  So schaut es aktuell aus:
                  Es ist nur Vorhalt für 3 Timer vorhanden, denke daher kommt dein Fehler...
                  Timer_JSON.jpg

                  smartboart 1 Reply Last reply Reply Quote 0
                  • smartboart
                    smartboart @GiuseppeS last edited by

                    @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                    JSON

                    ja tatsächlich... Geräte welche ich später in die Enumeration DeviceEnum aufgenommen haben, haben nun bereits meine 4 conditions hinterlegt...
                    Bzw Geräte welche schon hinterlegt waren aber nocht nicht programmiert..

                    Geräte welche bereits eine Zeitsteuerung im editor erfahren haben, haben meine 4. Bedingung nocht nicht.. Sollte so also funktionieren...

                    Müsste halt die json löschen und alles neu programmieren....oder wie due sagst im editor ändern...Unbenannt.JPG

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      GiuseppeS @smartboart last edited by

                      @smartboart

                      Hängt nun davon ab, wie komplex deine bisherigen Timer waren... Komplett bei null anfangen könnte aufwendiger sein, als diesen weiteren Key zu ergänzen. Ich würde es deine Stelle zumindest nicht programmatisch lösen.

                      smartboart 1 Reply Last reply Reply Quote 0
                      • smartboart
                        smartboart @GiuseppeS last edited by

                        @GiuseppeS
                        ja

                        @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                        Hängt nun davon ab, wie komplex deine bisherigen Timer waren... Komplett bei null anfangen könnte aufwendiger sein, als diesen weiteren Key zu ergänzen. Ich würde es deine Stelle zumindest nicht programmatisch lösen.

                        ich war noch am Testen, so viele habe ich noch nicht programmiert...
                        Werde das jetzt erstmal testen ob meine 4. Bedingung tut, dann packe ich noch 2 drauf ...Dann werde ich die Timer neu programmieren...

                        Vielen Dank für die Unterstützung...

                        1 Reply Last reply Reply Quote 1
                        • G
                          GiuseppeS last edited by

                          Habe nun einen ersten (zufriedenstellenden) Entwurf des Editors in HTML.
                          HTML-Beispiel.png

                          Aus dem Code werden folgende Optionen der Darstellung herausgelöst:

                          • Schriftfarbe bei Texten und Button/Select (hier: weiß)
                          • Rahmen der Button/Select (hier: weiß); Grün/Rot sind "funktional", daher nicht einfach editierbar
                          • Füllfarbe der Button/Select (hier: schwarz); es funktioniert übrigens auch "transparent" oder rgba mit Alphawerten

                          Bedingungen werden über Plus-Button ergänzt und mit Del-Button gelöscht. Klasse ist, dass bei manueller Zeitauswahl die Funktionalität des Browsers genutzt wird, d.h. bei Android-Geräten schaut das z.B. so aus:
                          Screenshot_20200726_173135_com.android.chrome.jpg

                          1 Reply Last reply Reply Quote 0
                          • G
                            GiuseppeS last edited by GiuseppeS

                            So würde es mit "rgba(255,255,255,0.2)" ausschauen, statt "#fff":
                            html2bsp.png

                            Wenn keine Gegen- bzw. Verbesserungsvorschläge eingehen, würde ich damit weitermachen.

                            EDIT:
                            Astro1 und Astro2 sind zwei alternative Darstellungen. Im Fall1 wird "manuell" ausgewählt, d.h. rechts erscheint ein Zeiteingabefeld. Im Fall2 wird eine Astrozeit gewählt, d.h. rechts erscheint eine Möglichkeit für die Offset-Korrektur.

                            sigi234 Glasfaser 3 Replies Last reply Reply Quote 1
                            • sigi234
                              sigi234 Forum Testing Most Active @GiuseppeS last edited by

                              @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                              Wenn keine Gegen- bzw. Verbesserungsvorschläge eingehen, würde ich damit weitermachen.

                              Ist der Hintergrund auswählbar? Kann man umschalten Helles/Dunkles Design?

                              G 1 Reply Last reply Reply Quote 0
                              • Glasfaser
                                Glasfaser @GiuseppeS last edited by

                                @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                                So würde es mit "rgba(255,255,255,0.2)" ausschauen, statt "#fff":
                                html2bsp.png

                                Ist halt Geschmacksache .... ist ein wenig aufgebläht ..

                                finde es immer noch so besser ... strukturierter Aufbau .

                                af2f7f46-fd5d-4351-b226-9d776304b2ba-image.png

                                1 Reply Last reply Reply Quote 1
                                • Glasfaser
                                  Glasfaser @GiuseppeS last edited by

                                  @GiuseppeS

                                  Wenn keine Gegen- bzw. Verbesserungsvorschläge eingehen, würde ich damit weitermachen.

                                  1.JPG

                                  G 1 Reply Last reply Reply Quote 0
                                  • G
                                    GiuseppeS @sigi234 last edited by

                                    @sigi234
                                    Meinst du den Hintergrund der Buttons? Der blaue Hintergrund ist von mir.

                                    sigi234 1 Reply Last reply Reply Quote 0
                                    • sigi234
                                      sigi234 Forum Testing Most Active @GiuseppeS last edited by

                                      @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                                      Der blaue Hintergrund ist von mir.

                                      Den blauen

                                      G 1 Reply Last reply Reply Quote 0
                                      • G
                                        GiuseppeS @Glasfaser last edited by GiuseppeS

                                        @Glasfaser sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                                        @GiuseppeS

                                        Wenn keine Gegen- bzw. Verbesserungsvorschläge eingehen, würde ich damit weitermachen.

                                        1.JPG

                                        Scherzkeks 😆

                                        Was den Punkt bzgl. Optik betrifft: Bin selbst auch hin- und hergerissen.
                                        In HTML wären mehrere Vorteile:

                                        • Darstellung ist dynamisch, d.h. es werden keine Elemente aktiviert oder deaktiviert, sie werden so erstellt wie benötigt. Das macht sich in der Höhe bemerkbar; so gering wie möglich.
                                        • Bedingungen sind dynamischer zu ergänzen/löschen.
                                        • In Bedingungen könnte ich als Zielwert dynamisch ein Select-true/false oder ein freies Input-Feld erzeugen. Aktuell kaum möglich...
                                        • Es wird nur noch ein View benötigt.

                                        Die HTML Ergänzung würde übrigens auf die aktuelle PopUp-Editor-Bedienung aufsetzen. Der alte Editor könnte wahrscheinlich weiter genutzt werden.

                                        Allerdings würde ich die HTML-Ergänzung ehrlich gesagt nicht weiter verfolgen, wenn es allgemein nicht akzeptiert wird. Habe bisher nicht viel Arbeit rein gesteckt. Das waren heute ca. 3 Stunden. Der programmatische Anteil wäre deutlich aufwendiger.

                                        1 Reply Last reply Reply Quote 0
                                        • G
                                          GiuseppeS @sigi234 last edited by

                                          @sigi234

                                          Wie erwähnt, der blaue Hintergrund ist von mir. So wie der Hintergrund aktuell in der Tabellenansicht der Timer ist, so wird auch der Hintergrund beim Editor sein. Das verändere ich nicht. Und ich überdecke den User-Hintergrund auch nicht. Deshalb können auch verschiedene Farben des Editors leicht verändert werden, damit jeder Hintergrund weiterhin genutzt werden kann.

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            GiuseppeS last edited by

                                            Wäre klasse, wenn sich weitere Anwender melden und ihre Wünsche äußern. PopUp weiter nutzen oder HTML.

                                            Mir ist jetzt erst aufgefallen, dass eine Zeile im PopUp-Editor eingespart werden kann. Zeile für Offset und Zeile für Zeitangabe wird nie gleichzeitig genutzt; könnte also in eine Zeile mit bedingter Darstellung zusammengefasst werden. Somit würde eine Bedingung Nr. 4 Platz finden.

                                            Allgemeine Frage:
                                            Finde die Lösung von Smartboat ehrlich gesagt auch gut, dass der Editor im Extra-View statt im PopUp angezeigt wird. Wie steht ihr zu dieser Lösung? Man hätte definitiv mehr Platz; andererseits kann man nicht auf die Tabelle "spicken" falls etwas von einem anderen Timer übernommen werden soll.

                                            smartboart sigi234 3 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            771
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            template vis
                                            47
                                            919
                                            215987
                                            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