Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Dimmwert mit Zeitsteuerung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Dimmwert mit Zeitsteuerung

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

      Hallo zusammen,

      ich habe derzeit einen Homematic-Dimmer an dem 4 Wandtaster per Direktverknüpfung angelegt sind.

      Besteht die Möglichkeit mittels Script folgendes zu realisieren:

      1.) Wenn Uhrzeit zwischen 01:00 Uhr und 05:00 Uhr morgens dann bei Tastendruck nur auf 10% Helligkeit einschalten

      2.) Wenn 1 nicht zutrifft auf 100% Helligkeit einschalten

      Habt Ihr da eine Idee oder gar einen Code-Schnipsel zu?

      Besteht die Möglichkeit das ohne jedesmal on… für jeden Taster zu nutzen?

      1 Reply Last reply Reply Quote 0
      • htrecksler
        htrecksler Forum Testing last edited by

        Ich weiß leider nicht ob die Direktverknüpfung hinderlich ist, aber ansonsten geht das über ein Script.

        Ich selbst nutze die CCU nur als Gerätepool. Programme oder Direktverknüpfungen hab ich dort nicht. die gesamt Logik mach ioBroker.

        Vom Prinzip her brauchst du ein Script was auf den (oder die) Taster subscribt (on….)

        Dann musst du die aktuelle Zeit gegen dein Zeitfenster prüfen und entsprechend den Dimmwert setzen.

        Für die Prüfung gegen das Zeitfenster gibt es hier im Forum Beispiele. Such einfach mal nach "inRange"

        Hier z. B. http://forum.iobroker.net/viewtopic.php … nge#p45419

        Diese Funktion nutze ich derzeit als Funktion in einem globalen Script.

        Ich übergebe der Funktion 2 Zeitwerte im Format HH:MM und erhalte ein True oder false zurück je nach dem ob im Zeitbereich oder nicht.

        function nowIsBetween(min, max){
        var now = new Date();
        minDate = new Date((now.getMonth() + 1) + " " + now.getDate() + ", " + now.getFullYear() + " " + min + ":00");
        maxDate = new Date((now.getMonth() + 1) + " " + now.getDate() + ", " + now.getFullYear() + " " + max + ":00");
        if(now.getTime() < minDate.getTime()) return false;
        if(now.getTime() > maxDate.getTime()) return false;
        return true;
        }
        
        
        1 Reply Last reply Reply Quote 0
        • Peoples
          Peoples last edited by

          Hi,

          ob du da die Direktverknüpfungen beibehalten kannst bezweifle ich, da du ja eigentlich die Aktion bedingt durch die Uhrzeit ändern möchtest.

          Und ob das ohne das on geht kann ich nicht sagen, dennoch hier mal eine Idee die ich jedoch nicht getestet habe:

          function LichtSchalten(){
              if(compareTime("01:00", "05:00", "between")) {
                  setState("hm-rpc.0.NEQxxxxxx.1.LEVEL", 10);
              }
              else{
                  setState("hm-rpc.0.NEQxxxxxx.1.LEVEL", 100);
              }
          }
          
          on("Taster1", function(){ LichtSchalten(); });
          on("Taster2", function(){ LichtSchalten(); });
          on("Taster3", function(){ LichtSchalten(); });
          on("Taster4", function(){ LichtSchalten(); });
          
          

          Hoffe es klappt

          Gruß

          Peoples

          Edit da war jemand schneller 😄

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            Da ich leider nicht den Dimmer weiß, weiß ich auch nicht, ob mein geplanter Hinweis auf virtuelle Kanäle helfen würde.

            Dein Vorhaben ist nämlich DAS Paradebeispiel für virtuelle Kanäle.

            Und das alles auf der CCU. Ohne Skripte.

            Gruß

            Rainer

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

              Es handelt sich um den Homematic UP LED Dimmer.

              Wenn ich jetzt aber von Direktverknüpfung auf Script komplett umsteige, wie realisiere ich denn das Dimmen per Langem Tastendruck?

              1 Reply Last reply Reply Quote 0
              • D
                dwm last edited by

                Die für mich entscheidende Frage wäre, ob Du ohne den Taster das Licht in dem Raum noch bedienen kannst.

                Sprich: Was passiert, wenn die CCU und/oder der IOBroker mal so für ein paar Tage … abrauchen?

                Soll in den besten Familien ja schon vorgekommen sein.

                Deswegen sind bei mir alle "Komfortfunktionen" in der Zwischenzeit auf dem IOBroker realisiert, aber absolute Basics wie "Licht ein/ausschalten" funktioniert entweder mit dem Taster direkt am Aktor oder über Direktverknüpfungen.

                Entsprechend find ich da den Tipp gut, mal in die virtuellen Kanäle reinzugraben, damit könnt das klappen.

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

                  Hallo zusammen,

                  also das Schalten mittels Tastendruck kurz und dem festen Dimmwert in der definierten Zeitspanne funktioniert schon mal perfekt.

                  Allerdings kann ich nicht über langen Tastendruck hoch bzw. unter dimmen.

                  Geht das dimmen per Script überhaupt?

                  Hier mal mein Script:

                  function DimmerEinAus_Licht_Flur_OG(){
                      if (getState("hm-rpc.0.NEQ1101060.1.LEVEL").val > 0) {
                          setState("hm-rpc.0.NEQ1101060.1.LEVEL", 0);
                      } 
                      else
                      if(compareTime("01:00", "05:00", "between")) {
                          setState("hm-rpc.0.NEQ1101060.1.LEVEL", 10);
                      }
                      else{
                          setState("hm-rpc.0.NEQ1101060.1.LEVEL", 100);
                      }
                  }
                  
                  function DimmerHochDimmen_Licht_Flur_OG(){
                      var timer = null;
                      var level = getState("hm-rpc.0.NEQ1101060.1.LEVEL").val;
                      if(level) {
                          level = level + 5;
                          if (level < 0) level = 0;
                          setState("hm-rpc.0.NEQ1101060.1.LEVEL", level);
                      }
                      if(timer && level === 0) clearInterval(timer);
                  }
                  
                  function DimmerRunterDimmen_Licht_Flur_OG(){
                      var timer = null;
                      var level = getState("hm-rpc.0.NEQ1101060.1.LEVEL").val;
                      if(level) {
                          level = level - 5;
                          if (level < 0) level = 0;
                          setState("hm-rpc.0.NEQ1101060.1.LEVEL", level);
                      }
                      if(timer && level === 0) clearInterval(timer);
                  }
                  
                  on({id: "hm-rpc.0.NEQ0890388.1.PRESS_SHORT", valNe: 2}, function() {DimmerEinAus_Licht_Flur_OG();});
                  on({id: "hm-rpc.0.NEQ0890388.2.PRESS_SHORT", valNe: 2}, function() {DimmerEinAus_Licht_Flur_OG();});
                  on({id: "hm-rpc.0.NEQ0890388.1.PRESS_LONG", valNe: 2}, function() {DimmerHochDimmen_Licht_Flur_OG();});
                  on({id: "hm-rpc.0.NEQ0890388.2.PRESS_LONG", valNe: 2}, function() {DimmerHochDimmen_Licht_Flur_OG();});
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    Das hoch/runterdimmen per Langen tastendruk legt man doch in der Verknüpfung per ccu fest anstaat Script ?

                    –-----------------------

                    Send from mobile device

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

                      Ja aber wenn ich hier wieder eine Direktverknüpfung erstelle, greift die Zetsteuerung ja nicht mehr 😞

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        @SchuetzeSchulz:

                        Hier mal mein Script: `
                        Du hast zwar Timer deklariert, verwendest sie aber nicht. Vesuche es mal so:

                        var level = getState("hm-rpc.0.NEQ1101060.1.LEVEL").val;
                        var timer = null;
                        
                        function setDimmer() {
                            setState("hm-rpc.0.NEQ1101060.1.LEVEL", level);
                        }
                        
                        function DimmerEinAus_Licht_Flur_OG(){
                            if (level > 0) level = 0;
                            else if(compareTime("01:00", "05:00", "between")) level = 10;
                                   else level = 100;
                            setDimmer();
                        }
                        
                        function DimmerHochDimmen_Licht_Flur_OG() {
                            timer = setInterval(function() {
                                if(level < 100) {
                                    level = level + 5;
                                    if (level > 100) level = 100;
                                    setDimmer();
                                }
                                else if(timer) clearInterval(timer);
                            }, 500);  
                        }
                        
                        function DimmerRunterDimmen_Licht_Flur_OG() {
                            timer = setInterval(function() {
                                if(level) {
                                    level = level - 5;
                                    if (level < 0) level = 0;
                                    setDimmer();
                                }
                                else if(timer) clearInterval(timer);
                            }, 500);
                        }
                        
                        function DimmerStop_Licht_Flur_OG() {
                            if(timer) clearInterval(timer);
                        }
                        
                        on({id: "hm-rpc.0.NEQ0890388.1.PRESS_SHORT", valNe: 2}, DimmerEinAus_Licht_Flur_OG);
                        on({id: "hm-rpc.0.NEQ0890388.2.PRESS_SHORT", valNe: 2}, DimmerStop_Licht_Flur_OG);
                        on({id: "hm-rpc.0.NEQ0890388.1.PRESS_LONG", valNe: 2}, DimmerHochDimmen_Licht_Flur_OG);
                        on({id: "hm-rpc.0.NEQ0890388.2.PRESS_LONG", valNe: 2}, DimmerRunterDimmen_Licht_Flur_OG);
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • S
                          SchuetzeSchulz last edited by

                          Hmm, das scheint leider nicht zu funktionieren. ioBroker schmiert ab mit folgenden Log Einträgen:

                          hm-rpc.0	2017-07-03 18:52:03.959	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:03.959	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:52:03.959	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:03.959	error	binrpc -> setValue ["1","LEVEL",0.95] FLOAT
                          hm-rpc.0	2017-07-03 18:52:03.444	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:03.444	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:52:03.092	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:03.092	error	binrpc -> setValue ["1","LEVEL",0.95] FLOAT
                          hm-rpc.0	2017-07-03 18:52:02.936	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:02.936	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:52:02.583	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:02.583	error	binrpc -> setValue ["1","LEVEL",0.95] FLOAT
                          hm-rpc.0	2017-07-03 18:52:02.432	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:02.432	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:52:01.935	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:01.935	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:52:01.919	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:01.919	error	binrpc -> setValue ["1","LEVEL",0.95] FLOAT
                          hm-rpc.0	2017-07-03 18:52:01.404	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:01.404	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:52:01.388	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:01.388	error	binrpc -> setValue ["1","LEVEL",0.95] FLOAT
                          hm-rpc.0	2017-07-03 18:52:00.873	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:00.873	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:52:00.544	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:00.544	error	binrpc -> setValue ["1","LEVEL",0.95] FLOAT
                          hm-rpc.0	2017-07-03 18:52:00.388	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:52:00.370	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:51:59.837	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:51:59.837	error	binrpc -> setValue ["1","LEVEL",1] FLOAT
                          hm-rpc.0	2017-07-03 18:51:59.837	error	Error: You are sending too fast
                          hm-rpc.0	2017-07-03 18:51:59.837	error	binrpc -> setValue ["1","LEVEL",0.95] FLOAT 
                          
                          

                          Noch ne Idee dazu? Bin ich denn der einzige der über einen Taster via Script einen LED Dimmer dimmen will?

                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 last edited by

                            Der ständige Wechsel zwischen 0.95 und 1 sieht danach aus, als würde gleichzeitig hoch- und runtergedimmt. Dann sollte man vielleicht 2 unterschiedliche Timer Hoch und Runter verwenden ?

                            Wenn man den Bereich von 0…100 % in 5 % Schritten durchläuft, muss 20 mal gesendet werden. Damit überschreitet man schnell den Duty cycle.

                            Besser ist sicher eine Direkverknüpfung. Für das Einschalten lässt sich bestimmt eine Lösung finden, die den Dimmwert (10 % / 100 %) per ioBroker korrigiert.

                            on({id: "hm-rpc.0.NEQ1101060.1.LEVEL", valGt: 0, oldVal: 0}, function() {
                                var level = 100;
                                if(compareTime("01:00", "05:00", "between")) level = 10;
                                setState("hm-rpc.0.NEQ1101060.1.LEVEL", level);
                            });
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 last edited by

                              Wird bei einer Direktverknüfung nicht mit einer Taste (PRESS_SHORT) eingeschaltet (lt. Bedienungsanleitung - ich habe keine HM-Dimmer) ? Dann sollte man diese zum Triggern der Übersteuerung nehmen.

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

                                Habe jetzt wieder Direktverknüpfungen eingerichtet und die Zeitsteuerung wie folgt im Script:

                                on({id: "hm-rpc.0.NEQ0890388.2.PRESS_SHORT", change: "any"}, function() 
                                {
                                    var level = 100;
                                    if (compareTime("18:00", "05:00", 'between'))
                                        level = 10;
                                    setState("hm-rpc.0.NEQ1101060.1.LEVEL", level);
                                });
                                
                                

                                Problem ist jetzt allerdings, dass er bei kurzem Tastendruck kurz auf Level 100 geht (die LEDs also mit voller Lichtstärke brennen) und dann

                                erst auf Level 10 stellt.

                                Die Zeitsteuerung ist für nachts für die Flurbeleuchtung gedacht, damit man nicht gleich geblendet wird. Daher die Idee…

                                Nur so funktioniert das leider nicht. Ich vermute die Direktverknüpfung hat hier Vorrang?

                                Das wäre jetzt die erste unlösbare Aufgabe für ioBroker die ich kenne... 🙂

                                Bin für weitere Ratschläge offen.

                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 last edited by

                                  @SchuetzeSchulz:

                                  Ich vermute die Direktverknüpfung hat hier Vorrang? `
                                  Sie ist schneller. Hast Du vielleicht noch eine dritte Taste, um das Problem zu lösen ?

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

                                    Leider nicht 😞

                                    1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 last edited by

                                      Kann man beim Dimmer nicht einstellen (evtl. bei der Direktverknüpfung), dass der Standardwert beim Einschalten 10 % beträgt ? In dem Fall würde er außerhalb der Zeit von 1:00 bis 5:00 Uhr erst auf 10 % gehen und kurz darauf durch das ioBroker-Programm auf 100 %.

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

                                        Halo Paul,

                                        erstmal vielen Dank für Deine Hilfe.

                                        Habe das jetzt erstmal so gelöst dass der Dimmer 10% als Standardwert hat und nur via Script abhängig von der Zeit auf 100% geschaltet wird oder eher bei 10% geblieben wird.

                                        Das ist zwar unschön, weil die Beleuchtung jetzt auf 10% angeht, dann für ca. 1 Sekunde da bleibt und dann auf 100% geht (wenn die Zeitspanne für dauerhaft-100% noch nicht ereicht ist), aber es tut erstmal was es soll.

                                        Ich werde mal bezüglich des LED Dimmers einen neuen Thread erstellen, evtl. stimmt da ja was allgemein nicht.

                                        Ich meine, wenn ich eh den Umweg über CCU-Direktverknüpfungen gehen muss find ich das blöd…

                                        1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 last edited by

                                          @SchuetzeSchulz:

                                          Das ist zwar unschön, weil die Beleuchtung jetzt auf 10% angeht, dann für ca. 1 Sekunde da bleibt und dann auf 100% geht `
                                          Aber gegenüber der Variante, in der Nacht erst einmal geblendet zu werden, sicherlich das kleinere Übel.

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            dwm last edited by

                                            Ohne es jetzt getestet zu haben …

                                            Wenn Du nur den Einschalt Press Short aus der Direktverknüpfung raus nimmst?

                                            Man kann da mit den Expertensetting ziemlich viel machen.

                                            https://homematic-forum.de/forum/viewtopic.php?t=7508

                                            Ich würd den SHORT_ACTION_TYPE da einfach mal auf inactive stellen.

                                            Theoretisch hast Du dann für die langen Tastendrücke die Direktverknüpfung und die kurzen steuerst Du mit IOBroker.

                                            Hätte Charme ...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            815
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            25
                                            3121
                                            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