Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Problem] Ansteuerung aller Dimmer im Haus

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Problem] Ansteuerung aller Dimmer im Haus

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

      Hallo zusammen,

      ich versuche alle Dimmer im Haus auszuschalten. Wenn ich das mit einem konkreten Befehl mache, funktioniert das:

      setState("hm-rpc.1.IEQ0208606.3.LEVEL"/*WZ Licht hohe Decke.LEVEL*/,0);
      

      Wenn ich das aber wie folgt mache geht es nicht:

      cacheSelectorState  = $('channel[state.id=.LEVEL](functions=Licht)');
      cacheSelectorState.each(function (id, i) {
          setState(id,0);
      });
      

      Komisch finde ich, dass der Wert im Reiter "Objekte" bei dem Dimmer im Level in rot eingetragen ist.

      Habt ihr einen Tipp für mich?

      Der Flossdorfer

      1 Reply Last reply Reply Quote 0
      • F
        Flossdorfer last edited by

        … noch eine neue Erkenntnis:

        im LOG steht jetzt:

        hm-rpc.1	2017-05-03 19:28:54.131	error	Error: You are sending too fast
        hm-rpc.1	2017-05-03 19:28:54.131	error	binrpc -> setValue ["3","LEVEL",0] FLOAT
        
        
        1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active last edited by

          Ich machs so: Nachts Lichter ausschalten und dabei 3x blinken.

          Klappt bei mir einwandfrei.

          ! // Licht/Dimmer nachts ausschalten und dabei 3x blinken ! function weiter() { ! var cacheSelectorState = $('channel[state.id=*.STATE](functions="Licht")'); var cacheSelectorLevel = $('channel[state.id=*.LEVEL](functions="Licht")'); ! cacheSelectorLevel.each(function (id, i) { var name = getObject(id).common.name; var devicename = name.substring(0, name.indexOf(".LEVEL")); //.level aus Text entfernen var status = getState(id).val; if (status > 0) { // 3 x blinken setState(id, 0); setTimeout(function() { setState(id, status); }, 2000); setTimeout(function() { setState(id, 0); }, 4000); setTimeout(function() { setState(id, status); }, 6000); setTimeout(function() { setState(id, 0); }, 8000); setTimeout(function() { setState(id, status); }, 10000); setTimeout(function() { setState(id, 0); }, 12000); } }); ! cacheSelectorState.each(function (id, i) { var name = getObject(id).common.name; var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen var status = getState(id).val; if (status > 0) { // 3 x blinken setState(id, false); setTimeout(function() { setState(id, true); }, 2000); setTimeout(function() { setState(id, false); }, 4000); setTimeout(function() { setState(id, true); }, 6000); setTimeout(function() { setState(id, false); }, 8000); setTimeout(function() { setState(id, true); }, 10000); setTimeout(function() { setState(id, false); }, 12000); } }); ! } ! schedule("0 1,3,5,23 * * *", function () { weiter(); }); !

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Delay integrieren in deiner Funktion ?

            ioBroker und ein Script schafft es teils in Millisekunden zu feuern das wird wohl ein bisschen zu viel laut Log….

            Edit: nochwas, ich empfehle dir noch eine states Abfrage einzubauen.

            Dimmer die ausstehem brauchst du ja nicht den Wert 0 zu setzen.

            Dein System und duty cycle werden dir dankbar sein 😉

            Sent from my iPhone using Tapatalk

            1 Reply Last reply Reply Quote 0
            • F
              Flossdorfer last edited by

              Danke schon einmal für die guten Tips.

              Ich bin der Sache auf der Spur: Wenn ich das LOG lösche, funktioniert es ein paar mal, dann kommt der Fehler wieder. Beim nächsten LOG löschen wieder kein Fehler.

              Kann ioBroker die LOG Datei nicht schnell genug schreiben? Was kann man dagegen tun?

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                @Flossdorfer:

                Danke schon einmal für die guten Tips.

                Ich bin der Sache auf der Spur: Wenn ich das LOG lösche, funktioniert es ein paar mal, dann kommt der Fehler wieder. Beim nächsten LOG löschen wieder kein Fehler.

                Kann ioBroker die LOG Datei nicht schnell genug schreiben? Was kann man dagegen tun? `

                Hmm, also ich denke mal nicht das es an den log von iObroker liegt, die meldung wuerd ja durch den adapter generiert ! ( siehe "hm-rpc.1 ").

                Daher tippe ich mal darauf das die commandos zu schnell hintereinander gesendet werden, demnach sollte ein delay von z.b. 100ms schon eine loesungsrichung sein.

                (und 100ms merkt man nicht :))

                Poste mal bitte mehr logdaten, bin gespannt wie schnell er probiert update zu senden.

                Wen deine schleife dafuer sorgt das die commandos hientereinander gesendet werden und da liegen nu ein par millisecunden zwischen ist das deutlich overkill fuer ein system.

                Greetz,

                Dutch

                PS: Dir is bekannt wie du einen delay einbauen kannst ?

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

                  Ich würde es mit kurzer Verzögerung (200 ms) zwischen den Sendebefehlen versuchen:

                  cacheSelectorState  = $('channel[state.id=.LEVEL](functions=Licht)');
                  cacheSelectorState.each(function (id, i) {
                      if(getState(id).val) setStateDelayed(id, 0, false, 200 * i);
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer last edited by

                    Du könntest probieren, mit den setState-callbacks zu arbeiten. D.h. erst den nächsten Dimmer schalten, wenn der vorherige mit ack=true bestätigt wurde.

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

                      @AlCalzone:

                      erst den nächsten Dimmer schalten, wenn der vorherige mit ack=true bestätigt wurde. `
                      Das kann bei einem Kommunikatiosproblem mit einem Dimmer dazu führen, dass die restlichen Dimmer nicht ausgeschaltet werden.

                      1 Reply Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer last edited by

                        stimmt… hatte ich nicht bedacht!

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        326
                        Online

                        31.6k
                        Users

                        79.5k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        1353
                        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