Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Treppenlicht: Timer + Dauerlicht?

NEWS

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

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

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

Treppenlicht: Timer + Dauerlicht?

Geplant Angeheftet Gesperrt Verschoben Hardware
shelly
27 Beiträge 6 Kommentatoren 3.9k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • 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 Online
    da_WoodyD Online
    da_Woody
    schrieb am zuletzt editiert von
    #21

    @Dark-Angel 👍 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 Antwort Letzte Antwort
    0
    • Dark AngelD Offline
      Dark AngelD Offline
      Dark Angel
      schrieb am zuletzt editiert von
      #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. 😡

      da_WoodyD 1 Antwort Letzte Antwort
      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. 😡

        da_WoodyD Online
        da_WoodyD Online
        da_Woody
        schrieb am zuletzt editiert von
        #23

        @Dark-Angel biglol.gif

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

        1 Antwort Letzte Antwort
        0
        • Dark AngelD Offline
          Dark AngelD Offline
          Dark Angel
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
              0
              • Cornelius GötzelC Offline
                Cornelius GötzelC Offline
                Cornelius Götzel
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                391

                Online

                32.4k

                Benutzer

                81.4k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe