FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: moppy am 25 Mai 2016, 13:36:56

Titel: Dummy bauen mit Countdown-Anzeige von 60 Sekunden nach Betätigung
Beitrag von: moppy am 25 Mai 2016, 13:36:56
Hallo zusammen,

mal wieder eine Anfängerfrage von mir:

Ich habe mir einen Dummy gebaut der meinen HM-USB-Adapter in den Pair-Zustand versetzen soll.

define HMUSB_ADD dummy
attr HMUSB_ADD room CUL_HM
attr HMUSB_ADD webCmd 60secPair

define HMUSB_ADDon notify HMUSB_ADD:60secPair set HMUSB hmPairForSec 60


Wie kann ich jetzt einen Timer einbauen der mir einen Countdown von 60 Sekunden abwärts anzeigt, wie lange der HM-USB noch im Pairmodus ist, nachdem ich den Dummy ausgelöst habe?

Grüße, Manu


Titel: Antw:Dummy bauen mit Countdown-Anzeige von 60 Sekunden nach Betätigung
Beitrag von: marvin78 am 25 Mai 2016, 13:38:47
Ein Reading des dummys per at jede Sekunde aktualisieren. Sollte einfach sein. Ein klein wenig Perl wird aber nötig sein.
Titel: Antw:Dummy bauen mit Countdown-Anzeige von 60 Sekunden nach Betätigung
Beitrag von: igami am 25 Mai 2016, 13:44:00
Hab mir sowas mal als Überwachung für eine zu lange Öffnung gebaut:
Ein Dummy

Internals:
   NAME       rolltor
   NR         1104
   STATE      03:00
   TYPE       dummy
   Readings:
     2016-05-18 12:18:56   open-since      180
     2016-05-18 12:18:56   open-since-h    03:00
     2016-05-18 12:18:56   state           closed
Attributes:
   stateFormat open-since-h
   webCmd     open:closed

Ein DOIF

Internals:
   DEF        ([rolltor:"open$"])(
  sleep 0.001; setreading rolltor open-since {([rolltor:open-since] - 1)},
  sleep 0.001; setreading rolltor open-since-h {(sprintf("%02d:%02d",(gmtime([rolltor:open-since] - 1))[1,0]))}
)
DOELSEIF
([rolltor:"closed$"])(
  setreading rolltor open-since 180,
  setreading rolltor open-since-h 03:00
)
DOELSEIF
([rolltor:open-since] == 0)(
  set rolltor sabotage,
  setreading rolltor open-since 180
)
   NAME       rolltor_DOIF
   NR         1105
   NTFY_ORDER 50-rolltor_DOIF
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-05-18 12:18:56   Device          rolltor
     2016-05-18 12:18:56   cmd             2
     2016-05-18 12:18:56   cmd_event       rolltor
     2016-05-18 12:18:56   cmd_nr          2
     2016-05-18 12:18:56   e_rolltor_events closed
     2016-05-18 12:18:56   e_rolltor_open-since 178
     2016-05-18 12:18:56   state           cmd_2
     2016-05-18 12:18:56   wait_timer      no timer
   Condition:
     0          EventDoIf('rolltor',$hash,'open$',1)
     1          EventDoIf('rolltor',$hash,'closed$',1)
     2          ReadingValDoIf($hash,'rolltor','open-since','','',AttrVal($hash->{NAME},'notexist',undef)) == 0
   Devices:
     0           rolltor
     1           rolltor
     2           rolltor
     all         rolltor
   Do:
     0:
       0             sleep 0.001; setreading rolltor open-since {([rolltor:open-since] - 1)},   sleep 0.001; setreading rolltor open-since-h {(sprintf("%02d:%02d",(gmtime([rolltor:open-since] - 1))[1,0]))}
     1:
       0             setreading rolltor open-since 180,   setreading rolltor open-since-h 03:00
     2:
       0             set rolltor sabotage,   setreading rolltor open-since 180
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Itimer:
   Readings:
     2           rolltor:open-since
     all         rolltor:open-since
   Regexp:
     All:
   State:
   Trigger:
     all         rolltor
Attributes:
   repeatcmd  1
Titel: Antw:Dummy bauen mit Countdown-Anzeige von 60 Sekunden nach Betätigung
Beitrag von: moppy am 25 Mai 2016, 14:06:41
super, das probier ich gleich mal aus ;)

dankeschön
Titel: Antw:Dummy bauen mit Countdown-Anzeige von 60 Sekunden nach Betätigung
Beitrag von: frank am 25 Mai 2016, 14:15:14
ZitatWie kann ich jetzt einen Timer einbauen der mir einen Countdown von 60 Sekunden abwärts anzeigt, wie lange der HM-USB noch im Pairmodus ist, nachdem ich den Dummy ausgelöst habe?
hoffentlich vermasselt dir der countdown nicht das timing beim pairen.  ;)
falls dir die zeit zu kurz ist, einfach auf zb 3600s setzen und noch gemütlich einen kaffee kochen.