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.
    • sigi234
      sigi234 Forum Testing Most Active @Glasfaser last edited by

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

      Dann MDCSS v2.5 wieder rein und das einfügen .

      👍

      Screenshot (2610).png

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

        @sigi234

        Kannst ja deine Farben nehmen 🙂 😁

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

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

          @sigi234

          Kannst ja deine Farben nehmen 🙂 😁

          Ja, Danke Deine gefällt mir auch. 😀

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

            @GiuseppeS

            Wegen der NULL im Popup mußt du noch was machen , denn die Warnung wird angezeigt !

            Sie verschwindet natürlich beim ersten befüllen / leeren .... aber einer Neustarter wundert sich

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

              Ich glaube ich teste mal demnächst auch diesen Gradienten Style 👍

              @sigi234
              Wenn das Skript läuft, darf der gelbe Streifen im PopUp nicht mehr sichtbar sein. Der ist nur sichtbar, wenn bei den Bedingungen Fehler drin sind.

              Edit: Glasfaser war schneller 👍

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

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

                Wenn das Skript läuft, darf der gelbe Streifen im PopUp nicht mehr sichtbar sein.

                ist so beim neuanlegen !
                bei leerem Datenpunkt , wird es zum ersten mal angezeigt

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

                  @Glasfaser
                  Okay. War mir nicht aufgefallen. Werde beim Anlegen des States einen Wert mitgeben.

                  Glasfaser 2 Replies Last reply Reply Quote 0
                  • Glasfaser
                    Glasfaser @GiuseppeS last edited by

                    @GiuseppeS

                    und den "scrollamount="50" langsamer auf 10 ... sonst ist kein Effekt ...
                    bei mir Blitz die Schrift nach links 🙂

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

                      @GiuseppeS

                      Mal was anderes ....
                      Ich arbeite viel mit dem Adapter - Logparser und habe im Script dazu etwas eingebaut , damit die Log Ausgabe dementsprechend auch Sinnvoll dargestellt wird .

                      var logPraefix = '[Timer] ##{"severity":"", "from":"", "message":"'; // Wenn stdLog = true, kann hiermit die Ausgabe des ausgeführten Timers manipuliert werden
                      var logPraefixend = '"}##'; // Logparser Ende
                      
                      

                      .

                      // Timer neu erstellen falls AKTIV == true
                          if (aktiv){
                              // Verschiedene Mappings aus DropDown zu realen States erstellen
                              if(sollWertMapping.hasOwnProperty(sollwert)){
                                  if(debugLog){console.log("Sollwert Mapping! Ist: " + sollwert);}
                                  sollwert = sollWertMapping[sollwert]
                                  if(debugLog){console.log("Sollwert Mapping! Real: " + sollwert);}
                              } else (sollwert = parseInt(sollwert));
                      
                              if(stdLog){console.log("Schedule aktiviert: \"" + device + " #" + nr + "\": [" + scheduleNr + "] | " + cronString + " | " + objID + " | " + sollwert);}
                      
                              if (rememberState){
                                  // Array der CondIDs zusammenstellen für späteren Subscribe
                                  var ConditionJSON = JSON.parse(getState("javascript.0.Timer." + path + ".ConditionJSON").val);
                                  condArr.push(objID); // Auch objID = Ziel-ID überwachen
                                  for (let i = 1; i <= conditionsNr; i++){
                                      condArr.push(ConditionJSON[TimerJSON[device][nr].Conditions[i].CondState]);
                                  }
                              }
                              
                              cronArr[scheduleNr] = schedule(cronString, function(){
                                  // Löschen der Subscription des selben Devices, falls vorhanden
                                  if (subscribesList[device] > 0){
                                      if(debugLog){console.log("Aktive Subscription für \"" + device + "\" gelöscht! Nächster Timer übernimmt!");}
                                      unsubscribe(subscribesArr[subscribesList[device]]);
                                      subscribesArr[subscribesList[device]] = null;
                                      subscribesList[device] = 0;
                                  }
                                  if( condEval(TimerJSON[device][nr]) ){
                                      if(stdLog){ console.log(logPraefix + device + " (" + tmpSollwert + ")" + logPraefixend);}
                                      setState(objID, sollwert);
                                      setTimeout(tableMain, 500); // aktualisieren der Tabelle
                                  } else if (rememberState){
                                      if(stdLog){ console.log(logPraefix + device + " (" + tmpSollwert + ") -> Timer gespeichert. Bedingung(en) noch nicht erfüllt!" + logPraefixend);}
                                      subscribesList[device] = scheduleNr;
                                      subscribesArr[scheduleNr] = on({id: condArr, change: "ne"}, function (obj) {
                                          if (obj.id == objID){ // Falls getriggert durch objID, Subscription löschen
                                              if(debugLog){console.log("Schedule für \"" + device + " #" + nr + "\" [" + scheduleNr + "] -> Timer gelöscht! Istwert von Ziel-ID direkt verändert!");}
                                              unsubscribe(subscribesArr[scheduleNr]);
                                              subscribesArr[scheduleNr] = null;
                                              subscribesList[device] = 0;
                                              setTimeout(tableMain, 500); // aktualisieren der Tabelle
                                          } else if( condEval(TimerJSON[device][nr]) ){
                                              if(stdLog){ console.log(logPraefix + device + " (" + tmpSollwert + ") -> Timer ausgeführt. Bedingung(en) nachträglich erfüllt!" + logPraefixend);}
                                              setState(objID, sollwert);
                                              unsubscribe(subscribesArr[scheduleNr]);
                                              subscribesArr[scheduleNr] = null;
                                              subscribesList[device] = 0;
                                              setState("javascript.0.Timer." + path + ".BackgroundTimersAfterwardsFulfilled", true);
                                              setStateDelayed("javascript.0.Timer." + path + ".BackgroundTimersAfterwardsFulfilled", false, 500, false);
                                              // aktualisieren der Tabelle erfolgt bereits über separatem Trigger der Bedingungen
                                          }
                                      });
                                      setTimeout(tableMain, 500); // aktualisieren der Tabelle für Blinken
                                  } else {
                                      if(stdLog){ console.log(logPraefix + device + " (" + tmpSollwert + ") -> Nicht ausgeführt. Bedingung(en) nicht erfüllt!" + logPraefixend);}
                                      setTimeout(tableMain, 500);
                                  };
                              });
                          } else {
                              // Falls Timer deaktiviert wird, während es gespeichert wurde... Subscription löschen!
                              if (subscribesArr[scheduleNr]){
                                  if(debugLog){console.log("Schedule für \"" + device + " #" + nr + "\" [" + scheduleNr + "] -> Timer aus Speicher entfernt!");}
                                  unsubscribe(subscribesArr[scheduleNr]);
                                  subscribesArr[scheduleNr] = null;
                                  subscribesList[device] = 0;
                              }
                          }
                      }
                      
                      
                      

                      Logparser :
                      .
                      1.JPG
                      .
                      1.JPG

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

                        @GiuseppeS

                        Eine Anzeige ob der Timer ausgelöst hat wäre Super. Oder übersehe ich da was?

                        Glasfaser G 2 Replies Last reply Reply Quote 0
                        • Glasfaser
                          Glasfaser @sigi234 last edited by Glasfaser

                          @sigi234

                          Ist doch drinn , mußt du nur oben einschalten !

                          / Log-Modus
                          var stdLog = true; // elementare Ausgabe, Schedule erstellt/gelöscht
                          var debugLog = false; // zusätzliche Ausgaben, z.B. zu den Bedingungen
                          

                          Deshalb habe ich doch die Logausgabe über den Logparser so

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

                            @sigi234
                            Im Log sollte eine Meldung erscheinen, wenn ein Timer ausgelöst hat.

                            EDIT:
                            OK, habe heute gegen Glasfaser keine Chance bin zu langsam, gehe jetzt schlafen 😂

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

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

                              @sigi234
                              Im Log sollte eine Meldung erscheinen, wenn ein Timer ausgelöst hat.

                              Ja, das sehe ich. Ich meine in der Tabelle.

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

                                @sigi234

                                Alles mit dem Logparser .. siehe oben !

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

                                  @GiuseppeS

                                  im Script bei :

                                  -> Timer ausgeführt. Bedingung(en) nachträglich erfüllt!

                                  Trigger ich dann mit :

                                  setState("javascript.0.Timer." + path + ".BackgroundTimersAfterwardsFulfilled", true);
                                                          setStateDelayed("javascript.0.Timer." + path + ".BackgroundTimersAfterwardsFulfilled", false, 500, false);
                                  

                                  Damit die erstellte Log Tabelle von den nicht erfüllten Bedingungen wieder gelöscht wird .

                                  Problem was ich nicht finde ...
                                  wenn die Bedingung abgebrochen wird in der Tabelle selber , mit bed oder auf die Zahl Bedingung , das dort auch der Trigger ausgelöst wird .

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

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

                                    @sigi234

                                    Alles mit dem Logparser .. siehe oben !

                                    Ja, den habe ich.

                                    Aber mein nächstes Projekt:

                                    Überwachung und Steuerung eines Weinkühlschranks.
                                    Das wird mit dem Timer Super gehen.
                                    Also, Kühlschrank wird nur zu bestimmten Zeiten und nur wenn die Temperatur unter X Grad fällt eingeschaltet. 😀
                                    Ich werde da einfach einen Hue Bewegungssensor reinstellen in Kombination mit einer Funksteckdose.

                                    So ungefähr halt.

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

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

                                      Ja, den habe ich.

                                      Ja ... ich weiß das du den hast 😉

                                      Überwachung und Steuerung eines Weinkühlschranks.

                                      Geiles Projekt 😂

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

                                        @sigi234
                                        Für die Anzeige ausgeführter Timer sollte die Log-Ausgabe genügen. Innerhalb der Tabelle dürfte es eh nur eine vorübergehende Darstellung sein, da Timer sich ja u.U. täglich wiederholen und somit die Darstellung rechtzeitig zurück gesetzt werden müsste.

                                        @Glasfaser
                                        Log Variablen ist mit logSuffix ergänzt. Überall wo logPraefix verwendet wird, steht am Ende des Logs noch logSuffix.

                                        Bzgl. des gewünschten States für die Darstellung der nachträglich erfüllten Timer bin ich noch nicht ganz sicher:
                                        Dein State wird auf true gesetzt, wenn Timer nachträglich erfüllt werden und setzt sich automatisch zurück. Ok.
                                        Es könnten allerdings mehrere Timer im Hintergrund schlummern und wenn einer auslöst, dürften eigentlich nicht alle bereinigt werden. Eigentlich müsste dem State statt true/false der Timer-Name mitgegeben werden. Somit könnte explizit dieser Timer aus dem Log bereinigt werden. Dann mit nachgelagertem Skript deinerseits.

                                        Allgemein bzgl. Log:
                                        Ich bin der Meinung, dass eine Log-Ausgabe kontinuierlich sein müsste und keine nachträgliche Manipulation eines Logs stattfinden sollte.
                                        Aber wenn dir ein State iwie weiterhilft mach ich den rein, stört ja nicht.

                                        Glasfaser 2 Replies Last reply Reply Quote 0
                                        • Glasfaser
                                          Glasfaser @GiuseppeS last edited by

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

                                          Allgemein bzgl. Log:
                                          Ich bin der Meinung, dass eine Log-Ausgabe kontinuierlich sein müsste und keine nachträgliche Manipulation eines Logs stattfinden sollte.

                                          ist ja nur für den Adapter Logparser gedacht !

                                          1. Man kann auch mit dem Logparser ganz normal danach Filtern , das heißt auch ganz ohne den Zusatz ( aber ohne Log Beeinflussung )

                                          2. Der Adapter Logpaser bringt aber zusätzlich eine Filterung mit , so das man die Logausgabe manipulieren kann , die ich bei dir im Script nutze .

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

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

                                            zgl. des gewünschten States für die Darstellung der nachträglich erfüllten Timer bin ich noch nicht ganz sicher:
                                            Somit könnte explizit dieser Timer aus dem Log bereinigt werden.

                                            Das geht leider in einem Gesamtlog nicht .. das ein Eintrag gelöscht wird.

                                            .... stelle es noch zurück , da ich selber damit noch am werkeln bin 🙂

                                            aber hier kannst du mir noch ein Tip geben !

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

                                            Problem was ich nicht finde ...
                                            wenn die Bedingung abgebrochen wird in der Tabelle selber , mit bed oder auf die Zahl Bedingung , das dort auch der Trigger ausgelöst wird .

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            956
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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