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.
    • A
      ak1 last edited by

      Ich nutze das Skript nun schon eine gewisse Zeit erfolgreich, insbesondere als Basis für meine Anwesenheitssimulation.
      @GiuseppeS Danke!
      Die Timer-Views/Dialoge habe ich in meiner Visualisierung (basierend auf MDCSS2) eingebaut. Auch das klappt. Ich ändere jedoch sehr selten bestehende Timer.

      Jetzt würde ich gerne folgendes erreichen:
      Für ein einzelnes bekanntes Device bzw. einen Timer, z.B. badHeizung #1 möchte ich einen vereinfachten Editor-Dialog bauen. Vereinfacht, weil es hier nur auf die Startzeit ankommt. Alle anderen Einstellungen (Astro, Bedingungen, etc.) bleiben unverändert. Ich brauche den einfachen Dialog, um ihn den anderen Familienmitgliedern zur Verfügung stellen zu können.

      Einen Tipp benötige ich, wie ich denn gezielt einen Timer zum Editieren anspreche.
      Ist der richtige Timer ausgewählt, stehen die relevanten Einstellung ja offensichtlich in der javascript.0.Timer.Editor Struktur.

      Vielleicht hat ja jemand eine Idee...

      Danke!

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

        @ak1
        Werde in den nächsten Wochen das Skript nicht einsehen können, diesbezüglich also offline, aber aus der Erinnerung heraus besteht die Möglichkeit zwei verschiedene Editoren zu verwenden.
        Wie fit bist du in Javascript?

        Beschreibung der aktuellen Arbeitsweise:
        Der Editor wird im View automatisch gefunden, weil im Editor-Widget eine zusätzliche Klasse angegeben ist. Im HTML Code befindet sich auch Javascript. Dieser Code sucht nach der Klasse und übermittelt per ioBroker State die Widget ID an das Hauptskript. Somit weiß das Skript, welcher Editor /Widget geöffnet werden soll.

        Erweiterung für zweiten Editor:
        Timer Tabelle bekommt ein Bool-Widget für "Expert / Anfänger". Widget für bestehenden Editor copy / paste.
        Dieser Editor-Light bekommt andere Klasse zugewiesen.
        Im HTML Javascript Code muss folgendes rein:
        Wenn Bool Widget auf Expert, dann Standard Editor ID übertragen (d.h. was aktuell übertragen wird). Wenn Bool auf Anfänger steht, dann den Editor-Light übertragen.

        Ich bin mit gerade nur unsicher wann die Widget ID übertragen wird, automatisch mit Laden der Seite oder wenn ein Timer angewählt wird. Für diese Lösung dürfte die ID erst mit Klick des Timers erfolgen.

        Alternative Lösung:
        Du fängst im Hauptskript die übertragene Timer ID ab und entscheidest dort einen anderen Editor Widget aufzurufen. Dies wäre allerdings absolut unflexibel.

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

          @giuseppes Danke! Ich schaue mal, ob ich etwas mit diesen Information hinbekomme.

          1 Reply Last reply Reply Quote 0
          • M
            Moko last edited by

            Danke für die Vorlage. Habe sie bei mir erfolgreich eingesetzt und war auch damit zufrieden.
            War.... bis zum 06.01. da wollte ich einen Timer deaktivieren.
            Hab ihn deaktiviert und anschließend gelöscht.
            Dummerweise ist der Timer immer noch aktiv und läuft fröhlich weiter, obwohl er nicht mehr angezeigt wird und auch in der
            javascript.0.Timer.Devices.TimerJSON bzw javascript.0.Timer.Devices.TableHTML nicht vorhanden ist.😟
            Wie bekomme ich diesen Ghosttimer wieder gelöscht?
            Würde es reichen wenn ich das Script stoppe, javascript.0.Timer lösche und das Script wieder starte?
            Danke

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

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

              Wie bekomme ich diesen Ghosttimer wieder gelöscht?

              Starte dein System neu .

              sudo reboot
              
              1 Reply Last reply Reply Quote 1
              • G
                GiuseppeS @Moko last edited by

                @moko
                Also mir ist das so noch nicht vorgekommen. Evtl reicht wirklich ein Neustart des Systems. Ansonsten gibt es ja die vollumfängliche JSON. Wenn das Skript neu gestartet wird, wird diese json interpretiert. Wenn hier der Timer nicht drin ist, dann wird er auch nicht gesetzt.

                1 Reply Last reply Reply Quote 0
                • M
                  Moko last edited by

                  Danke, hab jetzt mal komplett neugestartet. Muss jetzt bis 16:40 Uhr warten 😉

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

                    @moko

                    Ich hatte auch mal ein 👻 ( gaaaanz am Anfang ,wo ich mit GiuseppeS immer getestet habe )

                    Hast du das Log aktiv .

                    Standarteinstellung :

                    // Log-Modus
                    var stdLog = true; // elementare Ausgabe, Schedule erstellt/gelöscht
                    var debugLog = false; // zusätzliche Ausgaben, z.B. zu den Bedingungen
                    
                    1 Reply Last reply Reply Quote 1
                    • M
                      Moko last edited by

                      Reboot scheint geholfen zu haben: Steckdosen haben sich heute nicht eingeschaltet 😀

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

                        @sigi234 Hast du diese Menüfenster noch in Betrieb?
                        EB2C68A7-46CE-406B-B3C1-86B27CEEDA00.jpeg

                        Würdest du es zur Verfügung stellen?

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

                          @stefu87_ch

                          ist im Github vorhanden :

                          a3f28386-8476-46c7-957c-b4c97f7c953e-grafik.png

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

                            @glasfaser Finde das mit den grün leuchtenden Ein Knöpfen sehr gut aussehend. Darum die Frage an @sigi234

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

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

                              grün leuchtenden Ein Knöpfen sehr gut aussehend.

                              PopUp.txt

                              button.png

                              wird hierrüber geschaltet

                              55c78d97-7b12-4a18-9637-4c4417bb2c4e-grafik.png

                              .
                              4378e484-473e-49e3-99b7-26b142680b80-grafik.png

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

                                @glasfaser Cool Danke

                                1 Reply Last reply Reply Quote 0
                                • S
                                  stromie last edited by

                                  Hallo Zusammen

                                  hab jetzt auch mal versucht mit der Zeitsteuerung zu spielen.
                                  Lieder bekomme ich folgende Meldung:

                                  code_text
                                  2023-12-04 09:12:39.218 - info: javascript.0 (190) Start javascript script.js.MIC_System.Zeitschaltuhr
                                  2023-12-04 09:12:39.228 - info: javascript.0 (190) script.js.MIC_System.Zeitschaltuhr: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                  2023-12-04 09:12:40.731 - error: javascript.0 (190) Error in callback: TypeError: Cannot read properties of null (reading 'hasOwnProperty')
                                  2023-12-04 09:12:40.732 - error: javascript.0 (190) at Object.main (script.js.MIC_System.Zeitschaltuhr:1509:27)
                                  2023-12-04 09:12:40.732 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
                                  2023-12-04 09:12:40.732 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
                                  2023-12-04 09:12:40.732 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)
                                  2023-12-04 09:12:41.229 - error: javascript.0 (190) Error in callback: TypeError: Cannot convert undefined or null to object
                                  2023-12-04 09:12:41.230 - error: javascript.0 (190) at Function.keys ()
                                  2023-12-04 09:12:41.230 - error: javascript.0 (190) at Object.updateCond (script.js.MIC_System.Zeitschaltuhr:290:12)
                                  2023-12-04 09:12:41.230 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
                                  2023-12-04 09:12:41.230 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
                                  2023-12-04 09:12:41.230 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)```
                                  

                                  die beiden Aufzählungen habe ich angelegt. Auch das Script mehrfach gestartet.

                                  1f498aa5-aafe-4e65-bd22-4a86ae9491c8-image.png
                                  4b4bbf0c-692d-45fd-bee5-81ed8a16ef56-image.png

                                  c7339ae9-c5b8-406f-96fc-f5ce03329ea9-image.png

                                  0063a4f5-fd11-4dca-aee7-334ee49ba329-image.png

                                  wo liegt mein Fehler?

                                  Grüße Ronny

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

                                    @stromie
                                    Kommen die Fehler nach den ersten starts oder wenn bereits ein Timer abgelaufen ist, d.h. wenn der Timer auslöst?
                                    Das letzte Mal habe ich vor Ewigkeiten was am Code geändert. Würde mich wundern wenn es daran liegt.
                                    Kann es später mal testen, beginnend bei 0.

                                    Ich frage nur um sicher zu gehen:
                                    In beiden Aufzählungen sind ausschließlich States enthalten, korrekt? Es dürfen keine Folder, Channel oder Devices angegeben werden.

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

                                      @stromie

                                      Bei mir startet alles einwandfrei mit original Skript aus Github.

                                      Wie schaut dein TimerJSON aus, wenn Du das Skript gestartet hast? Der State TimerJSON wird vom Skript erstellt und befindet sich Standard unter:
                                      javascript.0.Timer.Devices.TimerJSON

                                      Kannst Du auch ein Screenshot vom State S_DG08_01 erstellen, so wie bereits für den State Trigger_Abend. Meine Vermutung ist, dass dieser State nicht korrekt verarbeitet wird.

                                      Auch hilfreich wäre ein Screenshot von Zeile 285 - 295 im Skript. Ich vermute den Fehler im original Skript in Zeile 289, aber bei dir wird 290 angezeigt, was ich merkwürdig finde.

                                      Falls Du im original Skript im oberen Teil etwas verändert hast, wäre davon ein Screenshot auch hifreich.

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        stromie last edited by stromie

                                        Hi

                                        hab mal etwas debuggt und folgendes gefunden, dass es bei mir geht.

                                        a6f2f21f-5489-4e6e-be6f-755691cba067-image.png

                                        3413f871-ee02-4a28-b4bd-49da341d3e13-image.png

                                        wenn ich das Script bei ersten mal laufen lasse, werden die States erzeugt. Beim zweiten und weiteren Starts prüft er ja auff null. Im State steht auch nix drin. Er geht aber nicht in die If Anweisung sondern in die else.

                                        wenn ich das Script so ändere

                                        64e69d5b-8ccc-4453-b7c3-4798e83a36f3-image.png

                                        geht es.

                                        Grüße Ronny

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

                                          @stromie
                                          Klasse, super analysiert. Dann hat sich das Verhalten anscheinend verändert, wie der Leere Wert eines neuen States interpretiert wird. Werde ich zeitnah auf github aktualisieren. Kurios ist aber weiterhin, dass es bei mir ohne Anpassung funktioniert.
                                          Bist du bei Javascript oder Admin Adapter auf einer Beta Version unterwegs? Würde es gerne bei mir nachstellen. Evtl genügt auch eine Abfrage auf Leerstring statt null.

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            stromie last edited by

                                            Hi
                                            hier noch die Version der Adapter

                                            Admin ist auf 6.12.0
                                            Javascript auf 7.1.4

                                            Beta bin ich eigentlich nicht.

                                            Grüße Ronny

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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