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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] Variable Zeitsteuerung mit VIS Editor

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

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

      @Glasfaser
      ….Für dich wahrscheinlich eher uninteressant da schon selbst umgesetzt.

      …… deshalb der Vorschlag von mir !

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

        Ich habe mich heute erstmalig mit dieser Lösung beschäftigt und ich bin ehrlich beeindruckt. @GiuseppeS Toll gemacht!

        Eigentlich müsste doch als Anwendungsfall hier auch die Erstellung einer Anwesenheitssimulation möglich sein. Aufgrund der Berücksichtigung von Astro-Zeiten, Zufallsabweichungen und Bedingungen für die Timer sind die wichtige Komponenten ja vorhanden.

        Hat das vielleicht jemand schon versucht oder sich Gedanken dazu gemacht?

        Selbst solche Szenarien müssten sich abbilden lassen: Ist der Sonnenaufgang vor der Aufstehzeit, dann braucht der Timer zum Licht Anschalten nicht ausgelöst werden, Ansonsten schon. Eine entsprechende Bedingung ließe sich ja zyklisch per Skript ermitteln und beim Timer auswerten.

        VG
        ak1

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

          @ak1
          Schön, dass die diese Lösung gefällt 😊
          Das Skript lässt sich beliebig oft anwenden, daher gibt es die Variable "path" weit oben im Skript. Einfach Skript nochmal kopieren und oben die Variable anpassen.
          Bei den Views VOR dem nochmaligen Import öffnen und mit Copy/Paste den Pfadanteil "Devices" durch deinen neuen Pfad ersetzen.

          Ich nutze das Skript zwei Mal: für die allgemeine Rollladen-Steuerung und für die Anwesenheitssimulation.

          Für deine Idee müsstest du zwar ein Hilfsskript verwenden, aber es wäre möglich. Als Output müsste aus dem Skript ein State mit true oder false beschrieben werden. Das State dann als Bedingung nutzen.

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

            @GiuseppeS , @Glasfaser,

            sehr gute Idee mir der Variablen. So ist es für verschiedene Anwenderwünsche flexibel und das drop down wird nicht ewig lang 😊

            Top!
            Grüße

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

              @GiuseppeS
              Hast Du ggf. mal einen Screenshot (nur einen Ausschnitt) mit 2-3 Timern, die Du im Rahmen der Anwesenheitssteuerung zum Ein- und Ausschalten von Lichtern nutzt? Vielleicht ein Besipiel, wo Du tatsächlich auch Astro-Zeiten einbeziehst.

              VG
              ak1

              G 1 Reply Last reply Reply Quote 0
              • K
                K_o_bold last edited by

                @GiuseppeS ,

                Mir fällt gerade noch eine andere Idee ein.
                Ich nutze dein Skript u.a. für meinen Staubsauger.
                Jetzt möchte ich einen Timer erstellen, der nur morgen einmal zu einer bestimmten Zeit aktiviert wird und anschließend wieder deaktiviert ist.
                Also einen einmaligen Timer.
                Z.B. Wochentag und Zeit auswählen wie bisher und zusätzlich noch eine Editiermöglichkeit für einmalig.

                Siehst du da eine Möglichkeit?

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

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

                  @GiuseppeS
                  Hast Du ggf. mal einen Screenshot (nur einen Ausschnitt) mit 2-3 Timern, die Du im Rahmen der Anwesenheitssteuerung zum Ein- und Ausschalten von Lichtern nutzt? Vielleicht ein Besipiel, wo Du tatsächlich auch Astro-Zeiten einbeziehst.

                  VG
                  ak1

                  A_Übersicht.jpg

                  B_PopUp.jpg

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

                    @GiuseppeS
                    Danke!

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

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

                      @GiuseppeS ,

                      Mir fällt gerade noch eine andere Idee ein.
                      Ich nutze dein Skript u.a. für meinen Staubsauger.
                      Jetzt möchte ich einen Timer erstellen, der nur morgen einmal zu einer bestimmten Zeit aktiviert wird und anschließend wieder deaktiviert ist.
                      Also einen einmaligen Timer.
                      Z.B. Wochentag und Zeit auswählen wie bisher und zusätzlich noch eine Editiermöglichkeit für einmalig.

                      Siehst du da eine Möglichkeit?

                      Hmmm, das ist schon etwas sportlicher umzusetzen...
                      Timer soll sich nach Ausführung selbst deaktivieren wenn zuvor diese neue Option gewählt wurde, korrekt?
                      Wäre es nicht besser, wenn du einen Boolean State erstellst "StaubsaugerTimer = true/false" und diesen als Bedingung einbindest? Wenn der Staubsauger fertig ist setzt er diesen State selbst wieder zurück auf false (separates Mini-Skript). Somit wäre der Timer zwar aktiv aber nicht gesetzt, da die Bedingung nicht erfüllt wäre.
                      Den Schalter zum Scharfstellen des Saugers könntest Du dann auch frei platzieren.

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

                        @GiuseppeS ,

                        Ja korrekt. So war es gemeint.
                        Ein zusätzlicher datenpunkt + miniskript und das ganze als Bedingung einfügen wäre natürlich auch machbar.
                        Nachtrag:
                        Dann könnte ich diesen Datenpunkt in der Vis im Popup einfach selbst als Schalter platzieren..
                        Danke für den Anstoß...👍

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

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

                          @GiuseppeS ,

                          Ja korrekt. So war es gemeint.
                          Ein zusätzlicher datenpunkt + miniskript und das ganze als Bedingung einfügen wäre natürlich auch machbar.
                          Nachtrag:
                          Dann könnte ich diesen Datenpunkt in der Vis im Popup einfach selbst als Schalter platzieren..
                          Danke für den Anstoß...👍

                          Ich würde den neuen Schalter aber nicht im PopUp sondern im HauptView setzen. So steht die Tabelle mit den Timern immer bereit und separat wird die Bedingung für das Aktivieren gesetzt.

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

                            @GiuseppeS,

                            Danke für den Tip. Ich möchte aber den einmaligen Timer z.B. Timer 2 gelegentlich ändern und dazu muss ich das Im popup sowieso editieren, dann kann ich ja gleich da auch den Schalter platzieren.

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

                              Neue Version ist hochgeladen. Minuten Inkremente für PopUp View können nun über Variable verändert werden.

                              Das Skript und das PopUp View müssten theoretisch neu importiert werden.
                              Wer sich auskennt:

                              • Im PopUp View muss nur der Verweis auf das neue Objekt angegeben werden, z.B.:
                              {javascript.0.Timer.Devices.Editor.DropDownMinutes}
                              
                              • Im Skript gibt es die neue Variable
                              var minIncrement = 5;
                              

                              und oben die neue Funktion

                              // Erstellen des DropDown-Inhalts für Minuten Auswahl in PopUp Editor
                              function setMinutesDropDown() {
                              	var strDropDown = "";
                                  for (var i = 0; i < 60; i += minIncrement) {
                                      var tmp = (i <= 9 ? "0" : "") + i;
                                      strDropDown += tmp + ";";
                                  } 
                                  strDropDown = strDropDown.slice(0, strDropDown.length - 1); // Entfernen letztes Semikolon
                                  setState("javascript.0.Timer." + path + ".Editor.DropDownMinutes", strDropDown);
                              }
                              

                              Der Aufruf der Funktion erfolgt in main:

                              
                              function main () {
                                  var dropDownListe = "";
                                  var devName;
                                  var TimerJSON = {};
                                  var idCounter = 0;
                                  if (debugLog){stdLog = true;}
                                  // ConditionJSON wird mit jedem Start neu eingelesen
                                  createConditionsJSON();
                                  compareCond();
                                  setMinutesDropDown();
                              // usw...
                              
                              Glasfaser 1 Reply Last reply Reply Quote 1
                              • Glasfaser
                                Glasfaser @GiuseppeS last edited by

                                @GiuseppeS

                                Habe dein Update-Version inkl. PopUp Einstellung durchgeführt . ( Brauchte ich eigentlich nicht , aber bevor ein Fehler vorhanden ist 😎 was eigentlich nicht bei Dir vorkommt 😜 )

                                Läuft super … wie zuvor bei meine händischen Änderungen 👍

                                1.JPG

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

                                  @Glasfaser
                                  Danke für's Testen 😉

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

                                    Keine Ahnung ich bekomme es einfach nicht hin.
                                    Licht schaltet einfach nicht.

                                    9.9.2019, 21:35:49.681	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:35:49.681	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:35:49.681	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    9.9.2019, 21:35:54.697	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:35:54.697	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:35:54.697	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    9.9.2019, 21:35:59.701	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:35:59.701	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:35:59.701	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    9.9.2019, 21:36:04.703	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:36:04.703	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:36:04.703	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    9.9.2019, 21:36:09.709	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:36:09.709	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:36:09.709	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    9.9.2019, 21:36:14.710	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:36:14.710	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:36:14.710	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    9.9.2019, 21:36:19.715	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:36:19.715	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:36:19.715	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    9.9.2019, 21:36:20.732	[info ]: javascript.0 Stop script script.js.Sigi.Timer_1
                                    9.9.2019, 21:36:20.746	[info ]: javascript.0 Start javascript script.js.Sigi.Timer_1
                                    9.9.2019, 21:36:20.746	[info ]: javascript.0 script.js.Sigi.Timer_1: registered 20 subscriptions and 3 schedules
                                    9.9.2019, 21:36:21.248	[error]: javascript.0     at createConditionsJSON (script.js.Sigi.Timer_1:176:55)
                                    9.9.2019, 21:36:21.248	[error]: javascript.0     at Object.main (script.js.Sigi.Timer_1:984:5)
                                    9.9.2019, 21:36:24.716	[warn ]: javascript.0     at script.js.Sigi.Timer_1:197:39
                                    9.9.2019, 21:36:24.716	[warn ]: javascript.0     at compareCond (script.js.Sigi.Timer_1:196:32)
                                    9.9.2019, 21:36:24.716	[warn ]: javascript.0     at Object.<anonymous> (script.js.Sigi.Timer_1:467:5)
                                    
                                    Glasfaser G 2 Replies Last reply Reply Quote 0
                                    • Glasfaser
                                      Glasfaser @sigi234 last edited by Glasfaser

                                      @sigi234

                                      Da muss @GiuseppeS den Fehler eingrenzen. Der Fehler wird von den Bedingungen erzeugt, nur ich frage mich gerade warum !?

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

                                        @sigi234

                                        Falls Du den Haupt-Pfad des Skripts nicht geändert hast, bitte lade die Inhalte folgender Objekte hoch (direkt als code oder txt-Anhang):

                                        • javascript.0.Timer.Devices.ConditionJSON
                                        • javascript.0.Timer.Devices.TimerJSON

                                        Sind in der Aufzählung für die Bedingungen wirklich nur States oder doch Channels? Nur States sind zulässig.

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

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

                                          @sigi234

                                          Falls Du den Haupt-Pfad des Skripts nicht geändert hast, bitte lade die Inhalte folgender Objekte hoch (direkt als code oder txt-Anhang):

                                          • javascript.0.Timer.Devices.ConditionJSON
                                          • javascript.0.Timer.Devices.TimerJSON

                                          Sind in der Aufzählung für die Bedingungen wirklich nur States oder doch Channels? Nur States sind zulässig.

                                          javascript.0.Timer.Devices.TimerJSON.json

                                          javascript.0.Timer.Devices.ConditionJSON.json

                                          Screenshot (4067).png

                                          /* ####################################################################### */
                                          // Nachfolgende Einträge zwingend anpassen:
                                          
                                          // Eine Aufzählung für Geräte (z.B. Rollläden) angeben:
                                          var deviceEnum = "enum.functions.Licht";
                                          
                                          // Eine Aufzählung für States der Bedingungen:
                                          var deviceCond = "enum.functions.timerconditions";
                                          
                                          // Widget-Nummer für Widget "Timer bearbeiten" (View in Dialog)
                                          var DlgWidget = 'w00311'
                                          
                                          G 1 Reply Last reply Reply Quote 0
                                          • G
                                            GiuseppeS @sigi234 last edited by

                                            @sigi234
                                            Sorry, hatte mich nicht genau ausgedrückt. Ich hätte gern die Inhalte aus den rechts gelb markierten Bereichen:
                                            bca041e1-fae8-42e3-98fb-284ee63c871b-image.png

                                            Aber vorab: Wann bekommst Du die Fehler? Direkt immer nach Neustart eins unveränderten Skripts? Als Du alles neu importiert hattest und die Konfiguration im Skript oben bzgl. der Aufzählungen durchgeführt hattest, kamen danach nach 2-3 Neustarts schon diese Fehler oder erst nachdem Du innerhalb der Timer in der VIS die Bedingungen verändert hast?

                                            Glasfaser sigi234 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            716
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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