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. Hardware
  4. Treppenlicht: Timer + Dauerlicht?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.0k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Treppenlicht: Timer + Dauerlicht?

Scheduled Pinned Locked Moved Hardware
shelly
27 Posts 6 Posters 4.2k Views 4 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.
  • Dark AngelD Offline
    Dark AngelD Offline
    Dark Angel
    wrote on last edited by Dark Angel
    #14

    Nachdem das Testprojekt mit dem LongPress ja so gut mit den Hauseigenen Möglichkeiten funktioniert, stellt sich mir die Frage: Wie soll das Ursprungsprojekt realisiert werden, wenn beim Testprojekt schon solche Mängel offenbart wurden?
    Die Vorgabe/Ziel lautet nach wie vor:
    LongPress = Licht dauerhaft einschalten
    ShortPress = Licht mit Timer einschalten / Licht ausschalten, selbst nachdem es mit LongPress eingeschalten wurde.

    AsgothianA da_WoodyD 2 Replies Last reply
    0
    • Dark AngelD Dark Angel

      Nachdem das Testprojekt mit dem LongPress ja so gut mit den Hauseigenen Möglichkeiten funktioniert, stellt sich mir die Frage: Wie soll das Ursprungsprojekt realisiert werden, wenn beim Testprojekt schon solche Mängel offenbart wurden?
      Die Vorgabe/Ziel lautet nach wie vor:
      LongPress = Licht dauerhaft einschalten
      ShortPress = Licht mit Timer einschalten / Licht ausschalten, selbst nachdem es mit LongPress eingeschalten wurde.

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      wrote on last edited by
      #15

      @Dark-Angel
      Da ist eine einfache analyse notwendig:

      Mach ein Skript welches bei short_press und long_press Events einen Eintrag im log hinterlässt.

      Dann löse in zufälliger Folge short_press und Long_press Events aus und vergleiche das mit dem log.

      Ich gehe davon aus das der long_press nicht immer sauber erkannt wird und sowohl Short als auch Long press Events auslöst.

      Wenn das so ist muss das dein Skript abfangen.

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      1 Reply Last reply
      1
      • Dark AngelD Dark Angel

        Nachdem das Testprojekt mit dem LongPress ja so gut mit den Hauseigenen Möglichkeiten funktioniert, stellt sich mir die Frage: Wie soll das Ursprungsprojekt realisiert werden, wenn beim Testprojekt schon solche Mängel offenbart wurden?
        Die Vorgabe/Ziel lautet nach wie vor:
        LongPress = Licht dauerhaft einschalten
        ShortPress = Licht mit Timer einschalten / Licht ausschalten, selbst nachdem es mit LongPress eingeschalten wurde.

        da_WoodyD Offline
        da_WoodyD Offline
        da_Woody
        wrote on last edited by
        #16

        @Dark-Angel kann es sein, das das mit der frei einstellbaren longpushtime erkennung zusammen hängt?

        gruß vom Woody
        HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

        Dark AngelD 1 Reply Last reply
        0
        • da_WoodyD da_Woody

          @Dark-Angel kann es sein, das das mit der frei einstellbaren longpushtime erkennung zusammen hängt?

          Dark AngelD Offline
          Dark AngelD Offline
          Dark Angel
          wrote on last edited by
          #17

          @da_Woody, glaube ich nicht.
          Werde es aber heute noch prüfen. Da kommt der Shelly 2.5 auf dem Testtisch...

          1 Reply Last reply
          1
          • Dark AngelD Offline
            Dark AngelD Offline
            Dark Angel
            wrote on last edited by Dark Angel
            #18

            Dank der Hilfe eines Facebook Users ist das Problem mit der Shortpress: "Timer an"/Aus, Longpress: Dauerlicht gelöst.
            1c9da8c4-f61d-4767-ab01-fde546a00dc5-grafik.png

            Falls jemand doch eine Idee hat, wie Timer gesetzt werden kann, ohne die URL Dafür zu "missbrauchen" würde mir das sogar noch besser gefallen :joy:

            P.S. Eine Kleinigkeit ärgert mich doch noch etwas: Nachdem das Licht dauerhaft AN ist und wieder ausgeschaltet wird, muss ich erst per shortpress einschalten und dann wieder ausschalten, sonst ist der nächste longpress wieder mit Timer versehen. :cry:

            P.P.S:
            Mit der richtigen logischen Reihenfolge funktioniert es zu 100% so wie gewünscht.
            11101679-d3fb-4111-94fb-d047f2d8560a-grafik.png

            da_WoodyD 1 Reply Last reply
            0
            • Dark AngelD Dark Angel

              Dank der Hilfe eines Facebook Users ist das Problem mit der Shortpress: "Timer an"/Aus, Longpress: Dauerlicht gelöst.
              1c9da8c4-f61d-4767-ab01-fde546a00dc5-grafik.png

              Falls jemand doch eine Idee hat, wie Timer gesetzt werden kann, ohne die URL Dafür zu "missbrauchen" würde mir das sogar noch besser gefallen :joy:

              P.S. Eine Kleinigkeit ärgert mich doch noch etwas: Nachdem das Licht dauerhaft AN ist und wieder ausgeschaltet wird, muss ich erst per shortpress einschalten und dann wieder ausschalten, sonst ist der nächste longpress wieder mit Timer versehen. :cry:

              P.P.S:
              Mit der richtigen logischen Reihenfolge funktioniert es zu 100% so wie gewünscht.
              11101679-d3fb-4111-94fb-d047f2d8560a-grafik.png

              da_WoodyD Offline
              da_WoodyD Offline
              da_Woody
              wrote on last edited by
              #19

              @Dark-Angel und wenn du glaubst es geht nicht mehr, kommt von wo ne lösung her! ;)
              könntest du das als export reinstellen, ich bin bei blockly sogar zu dämlich das nachzubauen... :face_with_head_bandage:

              gruß vom Woody
              HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

              Dark AngelD 1 Reply Last reply
              0
              • da_WoodyD da_Woody

                @Dark-Angel und wenn du glaubst es geht nicht mehr, kommt von wo ne lösung her! ;)
                könntest du das als export reinstellen, ich bin bei blockly sogar zu dämlich das nachzubauen... :face_with_head_bandage:

                Dark AngelD Offline
                Dark AngelD Offline
                Dark Angel
                wrote on last edited by Dark Angel
                #20

                @da_Woody, aus der Beschreibung "Wenn Licht bereits ein" habe ich noch schnell "Wenn Licht aus" gemacht, denn es beschreibt ja auch richtig die darauf folgende Funktion, ansonsten ist alles wie auf dem Bild oben:

                // Kurz
                on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.EventCount"/*Event Counter*/, change: "gt"}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  // Wenn Licht aus
                  if (getState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch").val == false) {
                    // Schalte für 5 Minuten ein
                    try {
                      require("request")('http://192.168.213.205/relay/0?timer=300&turn=on').on("error", function (e) {console.error(e);});
                    } catch (e) { console.error(e); }
                  } else {
                    // Schalte aus
                    try {
                      require("request")('http://192.168.213.205/relay/0?turn=off').on("error", function (e) {console.error(e);});
                    } catch (e) { console.error(e); }
                  }
                });
                // Lang
                on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, val: true}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                });
                
                da_WoodyD 1 Reply Last reply
                0
                • Dark AngelD Dark Angel

                  @da_Woody, aus der Beschreibung "Wenn Licht bereits ein" habe ich noch schnell "Wenn Licht aus" gemacht, denn es beschreibt ja auch richtig die darauf folgende Funktion, ansonsten ist alles wie auf dem Bild oben:

                  // Kurz
                  on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.EventCount"/*Event Counter*/, change: "gt"}, function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    // Wenn Licht aus
                    if (getState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch").val == false) {
                      // Schalte für 5 Minuten ein
                      try {
                        require("request")('http://192.168.213.205/relay/0?timer=300&turn=on').on("error", function (e) {console.error(e);});
                      } catch (e) { console.error(e); }
                    } else {
                      // Schalte aus
                      try {
                        require("request")('http://192.168.213.205/relay/0?turn=off').on("error", function (e) {console.error(e);});
                      } catch (e) { console.error(e); }
                    }
                  });
                  // Lang
                  on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, val: true}, function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                  });
                  
                  da_WoodyD Offline
                  da_WoodyD Offline
                  da_Woody
                  wrote on last edited by
                  #21

                  @Dark-Angel :+1: danke dir! bin grad dabei das ganglicht zu shellyfizieren, da kommt mir das gerade recht! ;)

                  gruß vom Woody
                  HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                  1 Reply Last reply
                  0
                  • Dark AngelD Offline
                    Dark AngelD Offline
                    Dark Angel
                    wrote on last edited by
                    #22

                    Ich werde noch wahnsinnig.
                    Was gestern Abend noch 100% richtig funktioniert hat ist heute, als ich es wieder mit dem Strom verbunden habe für die Katz...
                    Licht geht beim ShortPress wie gewünscht nach AN und nach Zeit X wieder aus, LongPress dagegen schaltet das Licht nicht dauerhaft AN. Das Licht geht nach Zeit X wieder aus. :rage:

                    da_WoodyD 1 Reply Last reply
                    0
                    • Dark AngelD Dark Angel

                      Ich werde noch wahnsinnig.
                      Was gestern Abend noch 100% richtig funktioniert hat ist heute, als ich es wieder mit dem Strom verbunden habe für die Katz...
                      Licht geht beim ShortPress wie gewünscht nach AN und nach Zeit X wieder aus, LongPress dagegen schaltet das Licht nicht dauerhaft AN. Das Licht geht nach Zeit X wieder aus. :rage:

                      da_WoodyD Offline
                      da_WoodyD Offline
                      da_Woody
                      wrote on last edited by
                      #23

                      @Dark-Angel biglol.gif

                      gruß vom Woody
                      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                      1 Reply Last reply
                      0
                      • Dark AngelD Offline
                        Dark AngelD Offline
                        Dark Angel
                        wrote on last edited by
                        #24

                        Also, es muss definitiv ein Übertragungsfehler von ioBroker sein.
                        Ich habe das ganze sogar ganz ohne den Shelly-Timer umgesetzt, am Ende kommt aber trotzdem das gleiche raus.
                        Kann es sein, dass Blockly die Scripte irgendwie in einer Art Schleife (loop) abspielt?

                        var timeout, timeout2;
                        
                        
                        // Kurz
                        on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.EventCount"/*Event Counter*/, change: "gt"}, function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          // Wenn Licht aus
                          if (getState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch").val == false) {
                            // Schalte für 5 Minuten ein
                            on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, val: false}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                              timeout2 = setTimeout(function () {
                                setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, false);
                              }, 5000);
                            });
                          } else {
                            // Schalte aus
                            setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, false);
                          }
                        });
                        // Lang
                        on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, val: true}, function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                          timeout = setTimeout(function () {
                            setState("shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, false, true);
                          }, 3000);
                        });
                        

                        Ist zwar 'ne Weile her, dass ich mich mit Scripte auseinander setzen musste, aber für mein Verständnis sollte doch das ganze so ablaufen:
                        Wenn das Licht aus ist:
                        Prüfe, ob LongPress auf false steht und wenn das so ist, schalte den Switch auf true, warte 5 Sekunden und schalte ihn dann wieder auf false
                        Wenn das Licht doch an ist, dann schalte Switch auf false
                        Als nächstes wird geprüft, ob LongPress auf true steht und wenn ja, wird der Switch auf true gesetzt und nach 3 Sekunden den LongPress wieder auf false.
                        Ende im Gelende
                        Oder habe ich die Logik des Scripts mit meine eigene Wunschlogik verwechselt?

                        paul53P 1 Reply Last reply
                        0
                        • Dark AngelD Dark Angel

                          Also, es muss definitiv ein Übertragungsfehler von ioBroker sein.
                          Ich habe das ganze sogar ganz ohne den Shelly-Timer umgesetzt, am Ende kommt aber trotzdem das gleiche raus.
                          Kann es sein, dass Blockly die Scripte irgendwie in einer Art Schleife (loop) abspielt?

                          var timeout, timeout2;
                          
                          
                          // Kurz
                          on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.EventCount"/*Event Counter*/, change: "gt"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            // Wenn Licht aus
                            if (getState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch").val == false) {
                              // Schalte für 5 Minuten ein
                              on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, val: false}, function (obj) {
                                var value = obj.state.val;
                                var oldValue = obj.oldState.val;
                                setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                                timeout2 = setTimeout(function () {
                                  setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, false);
                                }, 5000);
                              });
                            } else {
                              // Schalte aus
                              setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, false);
                            }
                          });
                          // Lang
                          on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, val: true}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                            timeout = setTimeout(function () {
                              setState("shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, false, true);
                            }, 3000);
                          });
                          

                          Ist zwar 'ne Weile her, dass ich mich mit Scripte auseinander setzen musste, aber für mein Verständnis sollte doch das ganze so ablaufen:
                          Wenn das Licht aus ist:
                          Prüfe, ob LongPress auf false steht und wenn das so ist, schalte den Switch auf true, warte 5 Sekunden und schalte ihn dann wieder auf false
                          Wenn das Licht doch an ist, dann schalte Switch auf false
                          Als nächstes wird geprüft, ob LongPress auf true steht und wenn ja, wird der Switch auf true gesetzt und nach 3 Sekunden den LongPress wieder auf false.
                          Ende im Gelende
                          Oder habe ich die Logik des Scripts mit meine eigene Wunschlogik verwechselt?

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by paul53
                          #25

                          @Dark-Angel sagte:

                          Kann es sein, dass Blockly die Scripte irgendwie in einer Art Schleife (loop) abspielt?

                          Nein. Dein Problem: Trigger innerhalb eines Triggers.

                          @Dark-Angel sagte in Treppenlicht: Timer + Dauerlicht?:

                          LongPress = Licht dauerhaft einschalten
                          ShortPress = Licht mit Timer einschalten / Licht ausschalten, selbst nachdem es mit LongPress eingeschalten wurde.

                          Versuche es mal so:

                          Blockly_temp.JPG

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          Dark AngelD 1 Reply Last reply
                          0
                          • paul53P paul53

                            @Dark-Angel sagte:

                            Kann es sein, dass Blockly die Scripte irgendwie in einer Art Schleife (loop) abspielt?

                            Nein. Dein Problem: Trigger innerhalb eines Triggers.

                            @Dark-Angel sagte in Treppenlicht: Timer + Dauerlicht?:

                            LongPress = Licht dauerhaft einschalten
                            ShortPress = Licht mit Timer einschalten / Licht ausschalten, selbst nachdem es mit LongPress eingeschalten wurde.

                            Versuche es mal so:

                            Blockly_temp.JPG

                            Dark AngelD Offline
                            Dark AngelD Offline
                            Dark Angel
                            wrote on last edited by Dark Angel
                            #26

                            @paul53, danke für den Hinweis mit dem Trigger.
                            Ich habe es so gelöst (in der Hoffnung, dass es Morgen auch noch funktioniert):
                            1e8a93a8-0cf8-4a1f-a184-70e24b0c4f24-grafik.png

                            var timeout;
                            
                            
                            // Kurz
                            on({id: "shelly.0.SHSW-25#40F520006202#1.Relay0.EventCount"/*Event Counter*/, change: "gt"}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              // Wenn Licht aus
                              if (getState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch").val == false) {
                                // Schalte für 5 Minuten ein
                                if (getState("shelly.0.SHSW-25#40F520006202#1.Relay0.longpush").val == false) {
                                  setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                                  timeout = setTimeout(function () {
                                    setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, false);
                                  }, 5000);
                                } else {
                                  setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, true);
                                  setState("shelly.0.SHSW-25#40F520006202#1.Relay0.longpush"/*Longpush*/, false, true);
                                }
                              } else {
                                // Schalte aus
                                setState("shelly.0.SHSW-25#40F520006202#1.Relay0.Switch"/*Switch*/, false);
                                (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
                              }
                            });
                            

                            Wichtig am Ende des Scripts scheint der timer zu löschen.
                            Ansonsten passiert folgendes: ShortPress = Licht an mit Timer. Wenn ich jetzt wieder ShortPress ausführe, bevor der Timer abgelaufen ist, wird zwar das Licht ausgeschaltet, der Timer läuft aber weiter. Mach ich jetzt ein LongPress, solange der Timer noch läuft, bleibt das Licht so lange AN, bis der Timer abgelaufen ist und geht anschließend wieder aus.
                            Mit dem Timer Stop, bewirkt man, dass ausschalten des Lichts solnge sie im Timer-Modus ist dieser auch wirklich unterbrochen ist.

                            War eine schwierige Geburt, aber das Resultat zählt. Und man lernt noch was dazu!
                            Also: Alle Ziele erreicht...
                            ShortPress: An mit Timer X/Aus
                            LongPress: Dauerlich
                            Das ganze direkt im ioBroker abgebildet, ohne das versenden ext. URLs und die Nutzung des Shellyeigenen Timers.

                            Könnt ruhig schmunzeln, aber ich bin ein bisschen stolz auf mein erstes Blockly Script.

                            1 Reply Last reply
                            0
                            • Cornelius GötzelC Offline
                              Cornelius GötzelC Offline
                              Cornelius Götzel
                              wrote on last edited by
                              #27

                              @premo
                              Ich habe gerade das gleiche anliegen. ich habe einen Shelly 1l (Tasmota 10.01.) mit 2 Tastern am laufen.
                              Die short Press hab ich über Pulsetime am laufen. Nur mit der longpress Pulsetime scheitert es gerade. würde mich über deine Rules freuen.

                              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

                              361

                              Online

                              32.6k

                              Users

                              82.3k

                              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