Ankündigung

Einklappen
Keine Ankündigung bisher.

Virtuelle Sanduhr für Sauna

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Virtuelle Sanduhr für Sauna

    Hallo,

    ich möchte für meine Sauna eine virtuelle Sanduhr einbauen.
    Ich hätte mir eine logik überlegt, welche mit einem Taster getriggert wird und nach 10,15 und 20 Minuten das licht kurz flacker lässt.

    Ich habe mittels der SuFu den befehl autotimer und sh.item.timer() gefunden, jedoch habe ich nun das Problem, dass jeder Timer den vorigen wieder auflöst.

    Code:
    if((sh.Welness.Sauna.Heizung() is True) or (sh.Welness.Infrarot.Heizung() is True)):
      sh.Licht.Buero.Sauna.Innen.EinAus.time(600, 0) //nach 10min aus und wieder einschalten
      sh.Licht.Buero.Sauna.Innen.EinAus.time(602, 1)
      sh.Licht.Buero.Sauna.Innen.EinAus.time(900, 0) //nach 15min aus und wieder einschalten
      sh.Licht.Buero.Sauna.Innen.EinAus.time(900, 1)
      sh.Licht.Buero.Sauna.Innen.EinAus.time(7200, 0) //Damit die Beleuchtung nicht ewig an bleibt!
    Gibt es dafür irgendeine schönen Lösungsansatz?

    #2
    Hat wirklich keiner eine Idee wie ich das anstellen könnte?
    Es muss doch irgendeine möglichkeit geben, ein Objekt in verschiedenen Zeiten schlaten zu lassen oder???

    Kommentar


      #3
      In diesem Falle eine Logik die jeden Timer nur sehr kurz hält. Da fehlen Dir noch etliche Parameter, was soll nach 20 Minuten geschehen? Reset/alle 5 Minuten flackern?

      Das Denken kann dir da keiner Abnehmen. Im großen und ganzen:

      Trigger startet Logik
      Logik wartet 10 Minuten (autotimer 600 Sekunden)
      Logik lässt Licht flackern (autotimer 2 Sekunden)
      Logik wartet 5 Minuten (autotimer 300 Sekunden)
      Logik lässt Licht flackern (autotimer 2 Sekunden)
      Logik wartet 5 Minuten (autotimer 300 Sekunden)
      Logik lässt Licht flackern (autotimer 2 Sekunden)

      Am einfachsten: Du erstellst irgendwelche Hilfsvariablen/items die Du in der Logik prüfst oder machst das gleich mit datetime.

      Am wichtigsten: Einen kostenlosen 18h-Service für fertige Logiken gibt es hier auch nicht. Also lass den Freiwilligen hier Zeit! Ansonsten nehmen wir finanzielle Angebote für Aufwandsentschädigungen gern per PM an .

      Gruß Mirko
      Umgezogen? Ja! ... Fertig? Nein!
      Baustelle 2.0 !

      Kommentar


        #4
        Es tut mir leid wenn das falsch rüber gekommen ist.
        Mir ist schon klar dass mir keiner eine fertige Logik anbietet, wollte nur einen ansatz haben damit ich dann rumprobieren kann.

        Wenn ich das auf deine vorgeschlagene Art löse, blockiere ich doch die ganze Zeit ein Thread oder?
        Nach den 20 Minuten muss nichts mehr geschehen. Es wäre nur schön, wenn bei jedem neuen Triggern der logik die timer wieder neu gesetzt werden...

        Kommentar


          #5
          Ungetestet könnte sowas funktionieren:

          Code:
          trigger_item = sh.Sauna.Start
          switch_item = sh.Licht.Buero.Sauna.Innen.EinAus
          timer_item = sh.Licht.Buero.Sauna.Innen.EinAus.timer
          
          
          if trigger['value'] == True and timer_item() == 0:
          	# Timer aktivieren
          	switch.item(TRUE)
          	# rufe diese Logik in 10 Minuten noch einmal auf und setze timer_item auf 10
          	timer.item(10)
                  logic.trigger(dt=sh.now() + datetime.timedelta(seconds=600))
                  logger.info('Recall in 10 Minuten.')
          
          
          if timer_item() == 10:
          	# 1 x Blinken mit sleep
          	switch.item(0)
          	time.sleep(1)
          	switch.item(1)
          	
          	# rufe diese Logik in 5 Minuten noch einmal auf und setze timer_item auf 15
          	timer.item(15)
                  logic.trigger(dt=sh.now() + datetime.timedelta(seconds=300))
                  logger.info('Recall in 5 Minuten.')
          
          if timer_item() == 15:
          	# 2 x Blinken mit sleep
          	switch.item(0)
          	time.sleep(1)
          	switch.item(1)
          	time.sleep(1)
          	switch.item(0)
          	time.sleep(1)
          	switch.item(1)
          
          	# rufe diese Logik in 5 Minuten noch einmal auf und setze timer_item auf 20
          	timer.item(20)
                  logic.trigger(dt=sh.now() + datetime.timedelta(seconds=300))
                  logger.info('Recall in 5 Minuten.')
          
          if timer_item() == 20:
          	# 3 x Blinken mit sleep
          	switch.item(0)
          	time.sleep(1)
          	switch.item(1)
          	time.sleep(1)
          	switch.item(0)
          	time.sleep(1)
          	switch.item(1)
          	time.sleep(1)
          	switch.item(0)
          	time.sleep(1)
          	switch.item(1)
          
          	# setze timer_item auf 0
          	timer.item(0)
                  logger.info('Zeit um.')
          Die Logik entsprechend konfigurieren das Sie von einem item getriggert wird.
          In der Logik noch
          trigger_item = sh.Sauna.Start (Taster)
          switch_item = sh.Licht.Buero.Sauna.Innen.EinAus (Licht)
          timer_item = sh.Licht.Buero.Sauna.Innen.EinAus.timer (Hilfsitem, type=num)
          entsprechend der Realität anpassen.

          Wie gesagt, ungetestet und ohne Syntax-Highlights im Windows Editor, in dieser Richtung sollte es jedoch funktionieren.

          Ich weiß dass man das sicherlich auch mit weniger Code-Zeilen realisieren kann, aber gerade bei Logiken finde ich es wichtig dass man die auch nach Monaten/Jahren noch versteht.
          Umgezogen? Ja! ... Fertig? Nein!
          Baustelle 2.0 !

          Kommentar


            #6
            Herzlichen Dank mal für den Ansatz.
            Ich versteh den code noch nicht ganz aber ich werd mir das heute Abend mal in ruhe ansehen und ausprobieren.

            Wenn ich eine fertige Lösung habe werde ich diese Natürlich hier teilen....

            Kommentar


              #7
              Und gehts?
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar

              Lädt...
              X