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 goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Vorlage] Variable Zeitsteuerung mit VIS Editor

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

      Neues Update ist online: https://github.com/gsicilia82/Timer_iobroker

      Changelog v1.2.1 30.11.2020 (Skript)

      • Bugfix: Updates der IDs von Bedingungen funktioniert nun ohne Fehlermeldung
        • Wenn gleichnamige Ersetzungen in der Aufzählung für Bedingungen oder für die Zielgeräte stattfinden, dann werden in allen Skript- und JSON-Elementen die neuen State-IDs übernommen
      • Lange String Passagen durch Backtick Strings ersetzt (Code besser zu lesen)
      B 1 Reply Last reply Reply Quote 0
      • B
        boehmgui @GiuseppeS last edited by

        Moin zusammen,
        ich habe zwei Fragen bzgl. "Timer merken".

        • Meine Rolläden sollen bei "sunset" -+ radom 5 Minuten herunterfahren. Als Bedingung habe ich noch dass bestimmte Steckdosen ausgeschaltet sein müssen (Weihnachstbeleuchtung am Fenster).
          Die Steckdosen gehen um 21:00 aus. Ich habe beobachtet, dass die Rolläden einige Minuten später zu gingen. Wirkt sich der offset dann noch aus oder braucht es eine Zeit, bis erkannt wird, dass die Bedingungen nun erfüllt sind?

        • In der Doku steht dass der Timner aus dem Speicher gelöscht wird wenn das Ziel-Gerät unabhängig vom Timer geschaltet wurde. Bedeutet das, dass der Zieldatenpunkt gemonitored wird? Wir der timer dann bei jedweder Zustandsänderung gelöscht?

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

          @boehmgui

          Zu Punkt 1)
          Die veränderten Bedingungen werden sofort registriert. Müsste auf der Tabelle auch direkt sichtbar sein (zumindest wenn dann alle Bedingungen true oder false sind). Random wird bei gemerkten Timer auch angewendet. Dieses Verhalten kann über die Variable

          var bgTimerWithRandom
          

          deaktiviert (= false) werden.

          Punkt 2)
          Zielgerät wird tatsächlich überwacht. Wenn sich der Zustand vom Zielgerät ändert, wird ein im Hintergrund befindlicher Timer gelöscht. Ab diesem Zeitpunkt gibt es den Timer nicht mehr im Hintergrund. Weitere Zustandsänderungen des Zielgeräts haben somit keinen weiteren Einfluss auf die Timer.

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

            Hi, ich versuche gerade diese Zeitsteuerung für MDCSS2 umzustricken. Das geht ansich ganz easy und ist vergleichsweise schnell erledigt.

            Nur ich habe dann festgestellt, dass die Haupttabelle auf einem Handy im Hochformat mir nicht gefällt. Deshalb habe ich auch noch zusätzlich begonnen mir hier was anderes einfallen zu lassen (wenn es denn mal soweit ist, dann bekommst du / ihr das).

            Nun habe ich ein Problem mit der Aktualisierung der Tabelle, wenn ich einen Timer aktiviere bzw. deaktiviere. Im TimerJSON wird die Aktualisierung eingetragen, nur in TableHTML kommt es nicht an. Bei der Ursachenforschung bin ich auf die Funktion toggleActivation gestossen. Darin steht in Zeile 884 ein setState("....TimerJSON", ... , true) , also mit ack=true.

            53ed9146-b425-43ba-882e-51acb30633bb-grafik.png

            Es gibt einen on-Handler für den State TimerJSON, aus dem heraus dann auch TableHTML aktualisiert wird. Nur dieser Handler reagiert nur bei ack=false.

            5ad92dda-3a77-4cce-a74f-4b16316b2168-grafik.png

            @GiuseppeS
            Deshalb die Frage: was spricht dagegen, den setState in Zeile 884 mit ack=false zu setzen? Kannst du noch sagen, warum du ein ack=true verwendet hast?

            Auf den ersten Test funktioniert es bei mir gut. Aber welche Stolperfalle habe ich mir dadurch eingebaut?

            VG jpgorganizer

            PS: Zeilennummern sind aus der aktuellen Version v1.2.1 30.11.2020 von github (gestern von dort geholt)

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

              @jpgorganizer
              Erstmal mein Respekt, dass du dich in diesem Skript-Dschungel zurechtfindest. Ist alles andere als vorbildlich programmiert.

              Zum Problem:
              Wenn Du in der Tabelle einen Timer togglest, dann wird es innerhalb der Tabelle verarbeitet, d.h. ohne dass das html im State aktualisiert wird. Aber dennoch soll das JSON aktualisiert werden, schließlich muss alles noch passen wenn das Skript neu gestartet wird.
              Grund:
              Wenn durch ein Toggle das json angepasst wird und dies ein neues html generieren würde, dann würde die vollständige Tabelle neu gerendert werden und somit die Scroll-Position verloren gehen. Nur deshalb funktioniert aktuell das Togglen geschmeidig ohne Sprünge der Scroll-Position.

              Wenn bei dir das Togglen nicht mehr funktioniert, musst du innerhalb des html Codes die Funktion prüfen, ob diese weiter korrekt angesprochen wird und auch der Rückgabewert passt.

              Was genau passt du denn bzgl der mobilen Ansicht an? Evtl könnte ich es allgemein übernehmen.

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

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

                und somit die Scroll-Position verloren gehen.

                aha, das hatte ich schon bemerkt, aber nicht begriffen, dass das sonst nicht der Fall war 🙂 Danke

                Meine Änderungen bekommst du in ein paar Tagen. Schau dir mal diese Demo hier von @Uhula an.

                https://github.com/Uhula/ioBroker-Material-Design-Style/blob/master/templates/MduiLogInstances/MduiLogInstances_Listview_Black.gif

                Ich versuche die Hauptansicht so oder zumindest so ähnlich zu machen. Dann kann ich das auf einem Handy im Hoch- und Querformat besser darstellen - zumindest glaube ich das derzeit.

                VG jpgorganizer

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

                  @jpgorganizer
                  Schaut gut aus, hatte selbst mal mit solch einer Ansicht gespielt, aber die Übersicht fand ich dadurch nicht wirklich besser. Ist aber natürlich Geschmackssache.

                  Mal ohne Test gefragt:
                  Das html widget, welches die Tabelle beinhaltet, besitzt auch css Klassen. Dort nutze ich ja noch die css-v1 Klasse mit Standard Ansicht. Würde es nicht genügen, wie von Uhula üblich, hier den Eintrag für die 2. Variante einzutragen? Evtl hab ich es auch falsch in Erinnerung... Schon länger nicht mit den Tabellen gespielt.

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

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

                    .... hatte selbst mal mit solch einer Ansicht gespielt, aber die Übersicht fand ich dadurch nicht wirklich besser. Ist aber natürlich Geschmackssache.

                    ich erhalte das Original und mach was Neues dazu. Einfach schaltbar per Switch

                    Mal ohne Test gefragt:
                    Das html widget, welches die Tabelle beinhaltet, besitzt auch css Klassen. Dort nutze ich ja noch die css-v1 Klasse mit Standard Ansicht. Würde es nicht genügen, wie von Uhula üblich, hier den Eintrag für die 2. Variante einzutragen? Evtl hab ich es auch falsch in Erinnerung... Schon länger nicht mit den Tabellen gespielt.

                    schon, nur das ist keine Tabelle, das ist eine manuell zusammengestellte HTML Seite 😞 , die natürlich automatisch erstellt wird 🙂 , wenn man den Code geschrieben hat 😞

                    Muss jetzt noch schauen, wie ich das mit dem "ungewollten" Scrollen löse.

                    VG jpgorganizer

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

                      @GiuseppeS

                      jetzt muss ich doch nochmal nachfragen:
                      wenn ich den Editor-Dialog für einen Timer öffne, z.B. die Zeit ändere und wieder schließe mit OK, dann wird an den Anfang der Tabelle gescrollt, oder habe ich da jetzt was falsch gesehen?

                      VG jpgorganizer

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

                        @jpgorganizer

                        Was funktionieren müsste, ist die variable Darstellung bezogen auf das html Widget. So schaut es bei mir aus wenn ich die Breite des Browsers verringere.

                        Oben ist die kompakte Darstellung noch nicht aktiv, unten schon:

                        aabb681c-175b-4b6b-93a3-d48efe62530d-image.png

                        Als Alt-Klassen habe ich folgendes im Widget stehen:
                        a9963a73-0a04-4267-8a0b-13f530fd8dbb-image.png

                        Wenn sowas mit CSS2 weiterhin funktioniert, kann man weitergrübeln, wie dieses Verhalten schaltbar gemacht werden kann. Dazu hätte ich auch schon eine Idee: Mit CSS1 in meinem Beispiel ist die Klasse "mdui-table-ascard-r500-l" ausschlaggebend für dieses Umschaltverhalten. Diese Klasse könnte mit einer Mini-Funktion im HTML-Code aktiviert/deaktiviert.

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

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

                          @GiuseppeS

                          jetzt muss ich doch nochmal nachfragen:
                          wenn ich den Editor-Dialog für einen Timer öffne, z.B. die Zeit ändere und wieder schließe mit OK, dann wird an den Anfang der Tabelle gescrollt, oder habe ich da jetzt was falsch gesehen?

                          VG jpgorganizer

                          Weil in diesem Fall u.U. viel verändert wurde, wird die Tabelle neu erstellt. Somit Scroll-Pos oben.
                          Nur das Aktivieren/Deaktivieren wird zur Laufzeit angepasst, ohne reload der Tabelle. Somit bleibt die Scroll-Pos bestehen.

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

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

                            @jpgorganizer

                            Was funktionieren müsste, ist die variable Darstellung bezogen auf das html Widget. So schaut es bei mir aus wenn ich die Breite des Browsers verringere.

                            Oben ist die kompakte Darstellung noch nicht aktiv, unten schon:

                            aabb681c-175b-4b6b-93a3-d48efe62530d-image.png

                            Als Alt-Klassen habe ich folgendes im Widget stehen:
                            a9963a73-0a04-4267-8a0b-13f530fd8dbb-image.png

                            Wenn sowas mit CSS2 weiterhin funktioniert, kann man weitergrübeln, wie dieses Verhalten schaltbar gemacht werden kann. Dazu hätte ich auch schon eine Idee: Mit CSS1 in meinem Beispiel ist die Klasse "mdui-table-ascard-r500-l" ausschlaggebend für dieses Umschaltverhalten. Diese Klasse könnte mit einer Mini-Funktion im HTML-Code aktiviert/deaktiviert.

                            das funktioniert mit MDCSS2 auch ... zumindest hatte ich das heute auch mal gemacht. Deine CSS Klassen gibt es weiterhin, bzw. es gibt ein Äquivalent dazu.

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

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

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

                              @GiuseppeS

                              jetzt muss ich doch nochmal nachfragen:
                              wenn ich den Editor-Dialog für einen Timer öffne, z.B. die Zeit ändere und wieder schließe mit OK, dann wird an den Anfang der Tabelle gescrollt, oder habe ich da jetzt was falsch gesehen?

                              VG jpgorganizer

                              Weil in diesem Fall u.U. viel verändert wurde, wird die Tabelle neu erstellt. Somit Scroll-Pos oben.
                              Nur das Aktivieren/Deaktivieren wird zur Laufzeit angepasst, ohne reload der Tabelle. Somit bleibt die Scroll-Pos bestehen.

                              soweit so gut, dann bin ich erleichtert, denn ich dachte schon ich habe was kaputt gemacht, aber nichts gesehen, was darauf hindeuten hätte können.

                              Ich habe dann die oben von mir angefragte setState( ....TimerJSON, ... , true) bei ack=true belassen. Das sieht wirklich viel besser aus, wenn er beim Aktivieren/Deaktivieren nicht scrollt. Da wird man ja sonst verrückt. Merci für den Hinweis.

                              VG jpgorganizer

                              jpgorganizer 1 Reply Last reply Reply Quote 0
                              • jpgorganizer
                                jpgorganizer @jpgorganizer last edited by jpgorganizer

                                @GiuseppeS

                                was mich jetzt aber einige Zeit gekostet hat, war die Suche woher das Script den Namen eines Devices nimmt. Mir war nicht klar, dass er das aus ....common.name holt, denn da steht bei mir die Id des States drin und somit war ich der Meinung, er nimmt die Id.

                                erkannt - behoben 🙂

                                Ich weiß nicht, ob ich da der erste war, bei dem das so nicht geht, aber evtl. kannst du das in die Doku mit aufnehmen.
                                Ich habe da jetzt eine kleine Funktion gemacht, in der man ggfs. das reinschreiben kann, was man braucht.

                                // device_name wird aus dem <id.common.name> geholt
                                // falls er dort nicht steht, dann kann hier eine eigene Funktion zum ermitteln erstellt werden
                                function getDevName(id) {
                                	// selector entsprechend setzen
                                	// und ggfs. Funktion erweitern
                                	let selector = 1;  // 0 ist Standard
                                	
                                	switch (selector) {
                                		case 0: {
                                			// standard
                                			return getObject(id).common.name;
                                			break;
                                		}
                                		case 1: {
                                			// Beispiel für anderen Ort
                                			let ida = id.split('.');
                                			let tid = '';
                                			for (let i = 0; i < ida.length - 1; i++) {
                                				tid += ida[i] + '.';
                                			}
                                			tid += 'Name';
                                			return getState(tid).val;
                                		} // end case
                                	} // end switch
                                }
                                

                                Vmtl. wird das bei den COnditions auch noch so sein? Da bin ich noch nicht.

                                Du brauchst da aber jetzt nichts ändern, warte bis ich dir meinen Code gebe - sonst machen alle das Gleiche, aber anders 🙂

                                VG jpgorganizer

                                Edit: Fehler in Funktion behoben

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

                                  @jpgorganizer

                                  Wenn Du soweit bist, kannst du auf Github einfach ein Pull-request absetzen. Bin zwar noch ein github Anfänger aber irgendwie bekomme ich das da schon zusammen gebacken.

                                  Anhand deiner Funktion verstehe ich dein Problem. Okay, hatte "wichtige" States selbst immer umbenannt, daher hab ich ehrlich gesagt nie so weit gedacht.Wäre Klasse, wenn Du in der Funktion für den selector eine Variable verwendest und oben im "Variablen-Bereich" neu anlegst. Somit bleibt der Code unterhalb des Kommentar-Bereichs bei jedem User konstant 😉

                                  Ansonsten kann ich es selber anpassen und dann hochladen.

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

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

                                    Bin zwar noch ein github Anfänger

                                    dann sind wir ja schon mal zu zweit

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

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

                                      Anhand deiner Funktion verstehe ich dein Problem. Okay, hatte "wichtige" States selbst immer umbenannt, daher hab ich ehrlich gesagt nie so weit gedacht.Wäre Klasse, wenn Du in der Funktion für den selector eine Variable verwendest und oben im "Variablen-Bereich" neu anlegst. Somit bleibt der Code unterhalb des Kommentar-Bereichs bei jedem User konstant

                                      kann ich zwar machen, hatte ich auch überlegt, aber jetzt kann die Funktion zwei Varianten, wenn eine weitere dazukommt, dann muss man programmieren ....

                                      Gruß jpgorganizer

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

                                        @jpgorganizer
                                        Das passt natürlich. Wenn Du damit durch bist einfach melden 😉
                                        Werde das dann im Skript integrieren. Kann ja auch andere User betreffen.

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

                                          @GiuseppeS

                                          ich teste gerade meine Conditions - geändert habe ich da wissentlich nichts.

                                          Ich bekomme beim Setzen im Editor einen Fehler
                                          52d7369a-ba27-458d-8555-96d95e611178-grafik.png

                                          Wenn ich OFF schreibe, kommt der Fehler, wenn ich "OFF" schreibe, wird es akzeptiert, aber wenn ich wieder reingehe ist das Feld leer. hmmm ???
                                          Wenn ich eine 1 reinschreibe, wird sie akzeptiert und steht auch drin, wenn ich wieder reingehe. Nur die 1 nützt mir nichts. Aber soeben wurde die Bedingung dass die Steckdose auf OFF geht erfüllt und nun ist Cond1Result = true und das Feld grün statt bisher rot umrandet. Die Bedingung wird also ausgewertet, nur nicht mehr vollständig angezeigt.

                                          Ich schlaf da erst mal drüber. Morgen ist Arbeiten angesagt, mal sehen, ob ich am Abend mich wieder hinsetzen kann und mich der Sache widmen kann.

                                          VG jpgorganizer

                                          jpgorganizer 1 Reply Last reply Reply Quote 0
                                          • jpgorganizer
                                            jpgorganizer @jpgorganizer last edited by

                                            doch noch ein Weilchen gesucht: mit 'OFF' geht es (einfaches Anführungszeichen geht, doppeltes nicht)

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            891
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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