Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [Vorlage] Variable Zeitsteuerung mit VIS Editor

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

[Vorlage] Variable Zeitsteuerung mit VIS Editor

Scheduled Pinned Locked Moved Visualisierung
vistemplate
919 Posts 47 Posters 281.3k Views 75 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    GiuseppeS
    wrote on last edited by
    #429

    Wie wäre folgendes:

    Alle Funktionen werden mit einfachen Klick ausgeführt.

    Klick auf Status togglet den Status. Klick auf Uhrzeit öffnet PopUp.

    Ansonsten wird egal was man klickt "Add" und "Del" für 5s angezeigt.

    Doppel-Klick wäre somit obsolet (muss ich noch im Detail anschauen, aber sollte klappen).

    Wären keine großen versteckten Funktionen.
    Um die einzelnen Einträge, z.B. für Tablets größer darzustellen, habe ich oben eine Variable im Skript für die Schriftgröße. Steht default auf 1.0em.
    Hier könnt ein größerer Wert auch die Bedienung optimieren.

    Ich will die Tabelle auch für das Smartphone bedienbar halten (mein Hauptnutzen) und nicht viel breiter gestalten.

    GlasfaserG 1 Reply Last reply
    0
    • G GiuseppeS

      Wie wäre folgendes:

      Alle Funktionen werden mit einfachen Klick ausgeführt.

      Klick auf Status togglet den Status. Klick auf Uhrzeit öffnet PopUp.

      Ansonsten wird egal was man klickt "Add" und "Del" für 5s angezeigt.

      Doppel-Klick wäre somit obsolet (muss ich noch im Detail anschauen, aber sollte klappen).

      Wären keine großen versteckten Funktionen.
      Um die einzelnen Einträge, z.B. für Tablets größer darzustellen, habe ich oben eine Variable im Skript für die Schriftgröße. Steht default auf 1.0em.
      Hier könnt ein größerer Wert auch die Bedienung optimieren.

      Ich will die Tabelle auch für das Smartphone bedienbar halten (mein Hauptnutzen) und nicht viel breiter gestalten.

      GlasfaserG Offline
      GlasfaserG Offline
      Glasfaser
      wrote on last edited by Glasfaser
      #430

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

      ich will die Tabelle auch für das Smartphone bedienbar halten

      Sage ich doch ... optimiert ;)

      Also auf ein Tablett habe ich keine Probleme mit Klick .. Doppelklick .

      Ich denke mit der Lösung einmal klick ,wird dann @Zoidberg zufrieden sein :)

      @Zoidberg
      Oder baue dein View nach deinem Geschmack um ... habe ich ja auch gemacht ;) .

      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

      1 Reply Last reply
      0
      • G Offline
        G Offline
        GiuseppeS
        wrote on last edited by
        #431

        Werde es morgen wie weiter oben beschrieben umsetzen. Allerdings ist dieses Verhalten dann optional.

        Es wird eine Variable geben, die dieses Verhalten steuert.
        Steuerung der View ist dann entweder so wie aktuell ODER umgestellt auf 1-Klick.

        Ich werde persönlich die 1-Klick Variante anwesenden.

        @Zoidberg
        Der Grund, wieso die beiden Buttons oben nicht dauerhaft angezeigt werden, ist dass nicht aus Versehen etwas strukturelles geändert werden kann.
        Ein Del-Button direkt neben einem Funktions-Button ist da erst Recht nicht optimal platziert.
        Vorschläge sind immer herzlich willkommen.

        B 1 Reply Last reply
        1
        • G GiuseppeS

          Werde es morgen wie weiter oben beschrieben umsetzen. Allerdings ist dieses Verhalten dann optional.

          Es wird eine Variable geben, die dieses Verhalten steuert.
          Steuerung der View ist dann entweder so wie aktuell ODER umgestellt auf 1-Klick.

          Ich werde persönlich die 1-Klick Variante anwesenden.

          @Zoidberg
          Der Grund, wieso die beiden Buttons oben nicht dauerhaft angezeigt werden, ist dass nicht aus Versehen etwas strukturelles geändert werden kann.
          Ein Del-Button direkt neben einem Funktions-Button ist da erst Recht nicht optimal platziert.
          Vorschläge sind immer herzlich willkommen.

          B Offline
          B Offline
          BoehserWolf
          wrote on last edited by
          #432

          @GiuseppeS Wie wäre es mit einem Burger-Menü wie in der MD-Demo wie bei der Zoom Funktion bei Bildern?

          G 1 Reply Last reply
          0
          • B BoehserWolf

            @GiuseppeS Wie wäre es mit einem Burger-Menü wie in der MD-Demo wie bei der Zoom Funktion bei Bildern?

            G Offline
            G Offline
            GiuseppeS
            wrote on last edited by
            #433

            @BoehserWolf
            Dann würde ich automatisch annehmen, dass jeder Anwender Uhula's CSS benutzt. Ohne diese Klassen bzw Uhula's Skript wären Funktionen nicht nutzbar, das möchte ich vermeiden.
            Ich müsste dieses Menü außerdem in jede Tabellen-Zeile einbinden, da wäre mir noch unklar, wie das funktionieren könnte.

            1 Reply Last reply
            0
            • Z Offline
              Z Offline
              Zoidberg
              wrote on last edited by
              #434

              Einmal Klick für alles Funktion klingt gut, würde das, sobald verfügbar bei mir einbauen.. auch prima zu erfahren das es eine möglchkeit gibt die schriftgrösse anzupassen.

              Schönen Abend noch
              Ulrich

              G 1 Reply Last reply
              0
              • Z Zoidberg

                Einmal Klick für alles Funktion klingt gut, würde das, sobald verfügbar bei mir einbauen.. auch prima zu erfahren das es eine möglchkeit gibt die schriftgrösse anzupassen.

                Schönen Abend noch
                Ulrich

                G Offline
                G Offline
                GiuseppeS
                wrote on last edited by
                #435

                @Zoidberg
                Update gibt's heute noch.

                1 Reply Last reply
                0
                • G Offline
                  G Offline
                  GiuseppeS
                  wrote on last edited by GiuseppeS
                  #436

                  Neue Version ist hochgeladen. Einfach- und Doppel-Klick ist über zusätzliche Variable (optional) einstellbar.
                  Hatte zuletzt meinen PopUp-Editor überarbeitet, siehe Screenshot im ersten Post. Ohne PNGs bleibt mehr Platz für die Zeile der Gruppen-Darstellung, ist nicht mehr so "gequetscht".

                  Hoffe mit dieser Version einen guten Mittelweg gefunden zu haben. Werde selbst die Variante mit "Einfach-Klick" anwenden.

                  Bei Einfach-Klick ist eine kurze Verzögerung bis zur Ausführung bemerkbar, weil die Schrittkette [Auswahl Timer] -> [Funktion ausführen] eingehalten werden muss. Falls als störend empfunden, kann diese evtl. verkürzt werden.

                  Changelog 15.04.2020

                  • PopUp-Editor ohne zusätzliche PNGs für Tage, rein als HTML-Button (siehe Screenshot)
                  • Funktionen innerhalb Tabelle können nun wahlweise mit Einfach-Klick statt Doppelklick ausgeführt werden (außer in Spalte "Device", diese Spalte dient als Haupt-Markierung für ADD/DEL, hier wird immer mit Doppelklick der Editor geöffnet).
                  • Neue Variable "oneClick" im Variablen-Bereich hinzugefügt (Default: oneClick = false)
                  • Neue Variablen müssen ab dieser Version bei einem manuellen Update nicht zwingend übernommen werden!
                    Falls neue Variablen im oberen Bereich nicht existieren, wird der Default-Wert der neuen Variable angenommen. So soll sichergestellt werden, dass neue Funktionen die Funktionsweise älterer Versionen nicht beeinflusst

                  EDIT:

                  Hatte einen Bug bemerkt und behebe ihn noch schnell. Lade es dann nochmal hoch. Ist gerade entfernt...

                  1 Reply Last reply
                  0
                  • G Offline
                    G Offline
                    GiuseppeS
                    wrote on last edited by
                    #437

                    Bug behoben. Korrigierte Version wieder hochgeladen...

                    GlasfaserG 1 Reply Last reply
                    0
                    • G GiuseppeS

                      Bug behoben. Korrigierte Version wieder hochgeladen...

                      GlasfaserG Offline
                      GlasfaserG Offline
                      Glasfaser
                      wrote on last edited by Glasfaser
                      #438

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

                      Korrigierte Version wieder hochgeladen...

                      :( ..... hatte das Update schon eingefügt ...

                      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                      G 1 Reply Last reply
                      0
                      • GlasfaserG Glasfaser

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

                        Korrigierte Version wieder hochgeladen...

                        :( ..... hatte das Update schon eingefügt ...

                        G Offline
                        G Offline
                        GiuseppeS
                        wrote on last edited by GiuseppeS
                        #439

                        @Glasfaser

                        Warte kurz lade dir die Änderung direkt hier hoch, war nur eine Kleinigkeit

                        EDIT: Am besten die Funktion komplett übernehmen, sicherer als einzelne Zeilen. Geht los ab Zeile ca. 618

                            // One-Click Aktion aus Tabelle zur Auswahl des Timers
                            on({id: "javascript.0.Timer." + path + ".clickTarget", change: "any"}, function (obj) {
                            	
                                if (dblClickBlocker) {return}; // Doppelte Ausführung One-Click bei Double-Click vermeiden
                                dblClickBlocker = true;
                                setTimeout(function(){
                                    dblClickBlocker = false;
                                }, 600);
                                
                                if (debugLog){console.log("Klick aus Tabelle erkannt. Übergebener Wert: " + obj.state.val)};
                        
                                setState("javascript.0.Timer.ActiveTable", path);
                                var tmp = obj.state.val.split("~");
                                if (tmp[0] != "all") { // "all" ist ein Tag der Überschriften, daher folgt keine Timer-Auswahl
                                    setState("javascript.0.Timer." + path + ".Editor.Device", tmp[0]);
                                    setStateDelayed("javascript.0.Timer." + path + ".Editor.Nummer", parseInt(tmp[1]), 50, false);
                                }
                        
                                if (oneClick == true){ // Wenn Tabellen Funktionen mit One-Click gewünscht werden ...
                                    setTimeout(function(){
                                        var btnSource = obj.state.val.split("~")[2]; // Button-Funktion wird eingelesen
                        
                                        if (btnSource == "time"){ // Edit-Dialog öffnen bei Doppelklick IST-Zeit-Button
                                            setState("vis.0.control.data"/*Data for control vis*/, DlgWidget);
                                            setState('vis.0.control.instance'/*Control vis*/, "FFFFFFFF");
                                            setState("vis.0.control.command"/*Command for vis*/, 'dialog');
                                            delFocusOnTimer(false); // Auswahl des Timers nicht automatisch zurücksetzen!
                                        }
                                        if (btnSource == "nr"){ // Aktivieren/Deaktivieren des Timers
                                            setState("javascript.0.Timer." + path + ".Editor.Aktiv", !getState("javascript.0.Timer." + path + ".Editor.Aktiv").val);
                                        }
                                        if (btnSource == "cond"){ // Aktivieren/Deaktivieren des Timers
                                            resetBackgroundTimers(obj.state.val.split("~")[0]);
                                        }
                                    }, 100)
                                }
                            });
                        
                        GlasfaserG 2 Replies Last reply
                        1
                        • G GiuseppeS

                          @Glasfaser

                          Warte kurz lade dir die Änderung direkt hier hoch, war nur eine Kleinigkeit

                          EDIT: Am besten die Funktion komplett übernehmen, sicherer als einzelne Zeilen. Geht los ab Zeile ca. 618

                              // One-Click Aktion aus Tabelle zur Auswahl des Timers
                              on({id: "javascript.0.Timer." + path + ".clickTarget", change: "any"}, function (obj) {
                              	
                                  if (dblClickBlocker) {return}; // Doppelte Ausführung One-Click bei Double-Click vermeiden
                                  dblClickBlocker = true;
                                  setTimeout(function(){
                                      dblClickBlocker = false;
                                  }, 600);
                                  
                                  if (debugLog){console.log("Klick aus Tabelle erkannt. Übergebener Wert: " + obj.state.val)};
                          
                                  setState("javascript.0.Timer.ActiveTable", path);
                                  var tmp = obj.state.val.split("~");
                                  if (tmp[0] != "all") { // "all" ist ein Tag der Überschriften, daher folgt keine Timer-Auswahl
                                      setState("javascript.0.Timer." + path + ".Editor.Device", tmp[0]);
                                      setStateDelayed("javascript.0.Timer." + path + ".Editor.Nummer", parseInt(tmp[1]), 50, false);
                                  }
                          
                                  if (oneClick == true){ // Wenn Tabellen Funktionen mit One-Click gewünscht werden ...
                                      setTimeout(function(){
                                          var btnSource = obj.state.val.split("~")[2]; // Button-Funktion wird eingelesen
                          
                                          if (btnSource == "time"){ // Edit-Dialog öffnen bei Doppelklick IST-Zeit-Button
                                              setState("vis.0.control.data"/*Data for control vis*/, DlgWidget);
                                              setState('vis.0.control.instance'/*Control vis*/, "FFFFFFFF");
                                              setState("vis.0.control.command"/*Command for vis*/, 'dialog');
                                              delFocusOnTimer(false); // Auswahl des Timers nicht automatisch zurücksetzen!
                                          }
                                          if (btnSource == "nr"){ // Aktivieren/Deaktivieren des Timers
                                              setState("javascript.0.Timer." + path + ".Editor.Aktiv", !getState("javascript.0.Timer." + path + ".Editor.Aktiv").val);
                                          }
                                          if (btnSource == "cond"){ // Aktivieren/Deaktivieren des Timers
                                              resetBackgroundTimers(obj.state.val.split("~")[0]);
                                          }
                                      }, 100)
                                  }
                              });
                          
                          GlasfaserG Offline
                          GlasfaserG Offline
                          Glasfaser
                          wrote on last edited by
                          #440

                          @GiuseppeS

                          Keine Panik ...mach langsam ..
                          ..... die Rollladen fahren erst heute Abend runter :sunglasses:

                          Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                          1 Reply Last reply
                          1
                          • G GiuseppeS

                            @Glasfaser

                            Warte kurz lade dir die Änderung direkt hier hoch, war nur eine Kleinigkeit

                            EDIT: Am besten die Funktion komplett übernehmen, sicherer als einzelne Zeilen. Geht los ab Zeile ca. 618

                                // One-Click Aktion aus Tabelle zur Auswahl des Timers
                                on({id: "javascript.0.Timer." + path + ".clickTarget", change: "any"}, function (obj) {
                                	
                                    if (dblClickBlocker) {return}; // Doppelte Ausführung One-Click bei Double-Click vermeiden
                                    dblClickBlocker = true;
                                    setTimeout(function(){
                                        dblClickBlocker = false;
                                    }, 600);
                                    
                                    if (debugLog){console.log("Klick aus Tabelle erkannt. Übergebener Wert: " + obj.state.val)};
                            
                                    setState("javascript.0.Timer.ActiveTable", path);
                                    var tmp = obj.state.val.split("~");
                                    if (tmp[0] != "all") { // "all" ist ein Tag der Überschriften, daher folgt keine Timer-Auswahl
                                        setState("javascript.0.Timer." + path + ".Editor.Device", tmp[0]);
                                        setStateDelayed("javascript.0.Timer." + path + ".Editor.Nummer", parseInt(tmp[1]), 50, false);
                                    }
                            
                                    if (oneClick == true){ // Wenn Tabellen Funktionen mit One-Click gewünscht werden ...
                                        setTimeout(function(){
                                            var btnSource = obj.state.val.split("~")[2]; // Button-Funktion wird eingelesen
                            
                                            if (btnSource == "time"){ // Edit-Dialog öffnen bei Doppelklick IST-Zeit-Button
                                                setState("vis.0.control.data"/*Data for control vis*/, DlgWidget);
                                                setState('vis.0.control.instance'/*Control vis*/, "FFFFFFFF");
                                                setState("vis.0.control.command"/*Command for vis*/, 'dialog');
                                                delFocusOnTimer(false); // Auswahl des Timers nicht automatisch zurücksetzen!
                                            }
                                            if (btnSource == "nr"){ // Aktivieren/Deaktivieren des Timers
                                                setState("javascript.0.Timer." + path + ".Editor.Aktiv", !getState("javascript.0.Timer." + path + ".Editor.Aktiv").val);
                                            }
                                            if (btnSource == "cond"){ // Aktivieren/Deaktivieren des Timers
                                                resetBackgroundTimers(obj.state.val.split("~")[0]);
                                            }
                                        }, 100)
                                    }
                                });
                            
                            GlasfaserG Offline
                            GlasfaserG Offline
                            Glasfaser
                            wrote on last edited by
                            #441

                            @GiuseppeS

                            Update funktioniert ... :+1: ( noch kein Fehler gefunden :sunglasses: )

                            Ohhh... mit einem Popup Fenster beim Klick .. nicht schlecht


                            1.JPG

                            Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                            G 1 Reply Last reply
                            0
                            • GlasfaserG Glasfaser

                              @GiuseppeS

                              Update funktioniert ... :+1: ( noch kein Fehler gefunden :sunglasses: )

                              Ohhh... mit einem Popup Fenster beim Klick .. nicht schlecht


                              1.JPG

                              G Offline
                              G Offline
                              GiuseppeS
                              wrote on last edited by
                              #442

                              @Glasfaser
                              Das Editieren mit Einfach-Klick war zweitrangig. Im Großen und Ganzen eigentlich kein Hexenwerk, könnte man meinen, aber da passiert viel im Hintergrund.
                              Wichtiger und nützlicher war mir, das Aktivieren/Deaktivieren mit einem Klick machbar ist. Habe da ein/zwei Timer, die ich gerne toggle. Naja, es tut nicht jeder Klick weh. Aber bei dem Aufwand, der im Skript steckt, könnte man das meinen :laughing:

                              GlasfaserG 1 Reply Last reply
                              1
                              • G GiuseppeS

                                @Glasfaser
                                Das Editieren mit Einfach-Klick war zweitrangig. Im Großen und Ganzen eigentlich kein Hexenwerk, könnte man meinen, aber da passiert viel im Hintergrund.
                                Wichtiger und nützlicher war mir, das Aktivieren/Deaktivieren mit einem Klick machbar ist. Habe da ein/zwei Timer, die ich gerne toggle. Naja, es tut nicht jeder Klick weh. Aber bei dem Aufwand, der im Skript steckt, könnte man das meinen :laughing:

                                GlasfaserG Offline
                                GlasfaserG Offline
                                Glasfaser
                                wrote on last edited by
                                #443

                                @GiuseppeS

                                Ich habe dich mal hier reingesetzt !

                                [Aufruf] Welche guten JavaScripts setzt ihr ein?

                                Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                G 1 Reply Last reply
                                0
                                • GlasfaserG Glasfaser

                                  @GiuseppeS

                                  Ich habe dich mal hier reingesetzt !

                                  [Aufruf] Welche guten JavaScripts setzt ihr ein?

                                  G Offline
                                  G Offline
                                  GiuseppeS
                                  wrote on last edited by
                                  #444

                                  @Glasfaser
                                  Das passt. Kann auch alles auf github hochladen, wenn jemand Interesse hat daraus einen Adapter zu machen.
                                  Finde den Adapter nur mit VIS Widgets sinnvoll, und das PopUp als einzelnes Widget zu erstellen trau ich mir dann doch nicht zu. Bzw. der Aufwand und der Mehrwert steht in keinem guten Verhältnis.

                                  GlasfaserG Z 3 Replies Last reply
                                  1
                                  • G GiuseppeS

                                    @Glasfaser
                                    Das passt. Kann auch alles auf github hochladen, wenn jemand Interesse hat daraus einen Adapter zu machen.
                                    Finde den Adapter nur mit VIS Widgets sinnvoll, und das PopUp als einzelnes Widget zu erstellen trau ich mir dann doch nicht zu. Bzw. der Aufwand und der Mehrwert steht in keinem guten Verhältnis.

                                    GlasfaserG Offline
                                    GlasfaserG Offline
                                    Glasfaser
                                    wrote on last edited by Glasfaser
                                    #445

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

                                    Finde den Adapter nur mit VIS Widgets sinnvoll

                                    Und deshalb nutze ich dein Script und kein anderes !!!!

                                    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                    1 Reply Last reply
                                    0
                                    • G GiuseppeS

                                      @Glasfaser
                                      Das passt. Kann auch alles auf github hochladen, wenn jemand Interesse hat daraus einen Adapter zu machen.
                                      Finde den Adapter nur mit VIS Widgets sinnvoll, und das PopUp als einzelnes Widget zu erstellen trau ich mir dann doch nicht zu. Bzw. der Aufwand und der Mehrwert steht in keinem guten Verhältnis.

                                      Z Offline
                                      Z Offline
                                      Zoidberg
                                      wrote on last edited by
                                      #446

                                      @GiuseppeS
                                      Super werde gleich mal die neue Version bei mir testen

                                      1 Reply Last reply
                                      0
                                      • G GiuseppeS

                                        @Glasfaser
                                        Das passt. Kann auch alles auf github hochladen, wenn jemand Interesse hat daraus einen Adapter zu machen.
                                        Finde den Adapter nur mit VIS Widgets sinnvoll, und das PopUp als einzelnes Widget zu erstellen trau ich mir dann doch nicht zu. Bzw. der Aufwand und der Mehrwert steht in keinem guten Verhältnis.

                                        Z Offline
                                        Z Offline
                                        Zoidberg
                                        wrote on last edited by
                                        #447

                                        @GiuseppeS Sorry für die verspätete Rückmeldung... aber jetzt ist es prima .. funktioniert perfekt der Einzel-Click.. Vielen Dank.

                                        jetzt muss ich nur noch den dämlichen rechtsclick am Touch-Display loswerden

                                        Gruss Ulrich

                                        1 Reply Last reply
                                        2
                                        • H Offline
                                          H Offline
                                          HelmutS
                                          wrote on last edited by
                                          #448

                                          Guten Morgen zusammen.
                                          Ich lasse mir beim editieren der Timer den Zustand der Bedingungen anzeigen.
                                          Eventuell findet das der eine oder andere nützlich.
                                          Hier die Änderungen:
                                          im Script ab ca. Zeile 700, jeweils die letzte Zeile:

                                              // Trigger zum Erstellen der Bedingungen als String für späteres eval() (3x)
                                              on({id: new RegExp('javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond1Comp' + "|" + 'javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond1State' + "|" + 'javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond1Value'), change: "any", ack: false}, function (obj) {
                                                  var ConditionJSON = JSON.parse(getState("javascript.0.Timer." + path + ".ConditionJSON").val);
                                                  var Cond1State = getState("javascript.0.Timer." + path + ".Editor.Cond1State").val
                                                  var Cond1Comp = getState("javascript.0.Timer." + path + ".Editor.Cond1Comp").val
                                                  var Cond1Value = getState("javascript.0.Timer." + path + ".Editor.Cond1Value").val
                                                  var strCond1 = "getState(\"" + ConditionJSON[Cond1State] + "\").val " + Cond1Comp + " " + Cond1Value
                                                  setState("javascript.0.Timer." + path + ".Editor.Condition1", strCond1);
                                                  setState("javascript.0.Timer." + path + ".Editor.Cond1Result", eval(strCond1));
                                              });
                                          
                                              on({id: new RegExp('javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond2Comp' + "|" + 'javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond2State' + "|" + 'javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond2Value'), change: "any", ack: false}, function (obj) {
                                                  var ConditionJSON = JSON.parse(getState("javascript.0.Timer." + path + ".ConditionJSON").val);
                                                  var Cond2State = getState("javascript.0.Timer." + path + ".Editor.Cond2State").val
                                                  var Cond2Comp = getState("javascript.0.Timer." + path + ".Editor.Cond2Comp").val
                                                  var Cond2Value = getState("javascript.0.Timer." + path + ".Editor.Cond2Value").val
                                                  var strCond2 = "getState(\"" + ConditionJSON[Cond2State] + "\").val " + Cond2Comp + " " + Cond2Value
                                                  setState("javascript.0.Timer." + path + ".Editor.Condition2", strCond2);
                                                  setState("javascript.0.Timer." + path + ".Editor.Cond2Result", eval(strCond2));
                                              });
                                          
                                              on({id: new RegExp('javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond3Comp' + "|" + 'javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond3State' + "|" + 'javascript\\.0\\.Timer\\.' + path + '\\.Editor\\.Cond3Value'), change: "any", ack: false}, function (obj) {
                                                  var ConditionJSON = JSON.parse(getState("javascript.0.Timer." + path + ".ConditionJSON").val);
                                                  var Cond3State = getState("javascript.0.Timer." + path + ".Editor.Cond3State").val
                                                  var Cond3Comp = getState("javascript.0.Timer." + path + ".Editor.Cond3Comp").val
                                                  var Cond3Value = getState("javascript.0.Timer." + path + ".Editor.Cond3Value").val
                                                  var strCond3 = "getState(\"" + ConditionJSON[Cond3State] + "\").val " + Cond3Comp + " " + Cond3Value
                                                  setState("javascript.0.Timer." + path + ".Editor.Condition3", strCond3);
                                                  setState("javascript.0.Timer." + path + ".Editor.Cond3Result", eval(strCond3));
                                              });
                                          

                                          und ab Zeile ca 1000:

                                          createState("Timer.ActiveTable");
                                          createState("Timer." + path + ".NextDevice");
                                          createState("Timer." + path + ".FilterDevice");
                                          createState("Timer." + path + ".NextDevices");
                                          createState("Timer." + path + ".clickTarget");
                                          createState("Timer." + path + ".dblClickTarget");
                                          createState("Timer." + path + ".AstroJSON");
                                          createState("Timer." + path + ".DropDownDevice");
                                          createState("Timer." + path + ".DropDownGruppe");
                                          createState("Timer." + path + ".Editor.DropDownMinutes");
                                          createState("Timer." + path + ".Editor.Gruppe");
                                          createState("Timer." + path + ".Editor.Del");
                                          createState("Timer." + path + ".Editor.OK");
                                          createState("Timer." + path + ".Editor.CopyAll");
                                          createState("Timer." + path + ".Editor.CopyCond");
                                          createState("Timer." + path + ".Editor.DropDownAstro");
                                          createState("Timer." + path + ".Editor.DropDownAstroWerte");
                                          createState("Timer." + path + ".Editor.DropDownAstroTexte");
                                          createState("Timer." + path + ".Editor.Device");
                                          createState("Timer." + path + ".Editor.Nummer");
                                          createState("Timer." + path + ".TimerJSON");
                                          createState("Timer." + path + ".Editor.Aktiv");
                                          createState("Timer." + path + ".Editor.Zeit");
                                          createState("Timer." + path + ".Editor.Cron");
                                          createState("Timer." + path + ".Editor.TageVIS");
                                          createState("Timer." + path + ".Editor.CronTage");
                                          createState("Timer." + path + ".Editor.WTagMo");
                                          createState("Timer." + path + ".Editor.WTagDi");
                                          createState("Timer." + path + ".Editor.WTagMi");
                                          createState("Timer." + path + ".Editor.WTagDo");
                                          createState("Timer." + path + ".Editor.WTagFr");
                                          createState("Timer." + path + ".Editor.WTagSa");
                                          createState("Timer." + path + ".Editor.WTagSo");
                                          createState("Timer." + path + ".Editor.Std");
                                          createState("Timer." + path + ".Editor.Min");
                                          createState("Timer." + path + ".Editor.Sollwert");
                                          createState("Timer." + path + ".Editor.SollwertDropDown");
                                          createState("Timer." + path + ".Editor.Random");
                                          createState("Timer." + path + ".Editor.RandPM");
                                          createState("Timer." + path + ".Editor.Offset");
                                          createState("Timer." + path + ".Editor.OffsetPM");
                                          createState("Timer." + path + ".Editor.RememberTimer");
                                          createState("Timer." + path + ".Editor.ConditionKeyDropDown");
                                          createState("Timer." + path + ".Editor.Condition");
                                          createState("Timer." + path + ".Editor.ConditionsNr");
                                          createState("Timer." + path + ".Editor.Condition1");
                                          createState("Timer." + path + ".Editor.Cond1State");
                                          createState("Timer." + path + ".Editor.Cond1Comp");
                                          createState("Timer." + path + ".Editor.Cond1Value");
                                          createState("Timer." + path + ".Editor.Cond1Result");
                                          createState("Timer." + path + ".Editor.Condition2");
                                          createState("Timer." + path + ".Editor.Cond2State");
                                          createState("Timer." + path + ".Editor.Cond2Comp");
                                          createState("Timer." + path + ".Editor.Cond2Value");
                                          createState("Timer." + path + ".Editor.Cond2Result");
                                          createState("Timer." + path + ".Editor.Condition3");
                                          createState("Timer." + path + ".Editor.Cond3State");
                                          createState("Timer." + path + ".Editor.Cond3Comp");
                                          createState("Timer." + path + ".Editor.Cond3Value");
                                          createState("Timer." + path + ".Editor.Cond3Result");
                                          

                                          Jeweils die Zeile mit "Result"

                                          Im Edit-View bei den Bedingungen als Hintergrundfarbe dann

                                          {w:javascript.0.Timer.Devices.Editor.Cond1Result; w == "true" ? "#00AA00" : "#AA0000"} 
                                          

                                          eintragen ("Cond1Result" entsprechend ändern)

                                          G 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          810

                                          Online

                                          32.4k

                                          Users

                                          81.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe