HM-LC-Sw1PB-FM ontime zeitabhängig setzen

Begonnen von Bkel, 13 Juni 2014, 13:25:49

Vorheriges Thema - Nächstes Thema

Bkel

Hallo,

vielleicht hat jemand einen Tipp für mich.

Ich würde gerne die Einschaltzeit des über den integrierten Taster gesteuerten Aktors von der Tageszeit abhängig machen. Konkret soll tagsüber das Licht im Kinderzimmer nach definierter Zeit wieder ausgehen und nachts eine ganz normale ein/aus-Steuerung möglich sein.

Ich muss jetzt also das Register für den internen Taster irgendwie zeitabhängig modifizieren oder fhem tagsüber nach erkanntem Einschalten und definierter Zeit das Licht wieder löschen lassen.

Was ist da der saubere Weg?

Herzlichen Dank!

Wuppi68

Huh,

nicht ganz so einfach mit der Betriebssicherheit und weiteren Tastendrücken im Interval ...

mein Ansatz:

Tastendruck im Schalter grundsätzlich auf On-For-Timer setzen (Register) (dieses gilt immer)

Für die Zeiten mit DauerOn nimmst Du einen Notify - prüfst die Uhrzeit - und schaltest den Schalter per FHEM auf on- Damit wird dann der Schalter interne Timer auch deaktiviert und alles funktioniert wie gewünscht.

Zusätzlich kannst Du den Schalter auf unterschiedlich laner und kurzer Tastendruck betreiben.

z.B.
Kurz - Licht für 10 Minuten
Lang - Licht Dauer an

Just my 2 Cents

Ralf
FHEM unter Proxmox als VM

Pfriemler

Also wie ich das verstanden habe:
* interne Taster sichtbar machen (intKeyVisib visib)
* shOnTime begrenzen (600 = 10 Minuten)
Erzeugt der Schalter intern überhaupt lange Events mit der Original-Firmware? (Dimmer ja, aber der Schalter?)
und ein Notify, das bei Wechsel des Aktors auf "on" (dort ggf. event-on-change-reading setzen) nachts einen set ~ on absetzt?
Gefällt mir besser als meine Idee :-)
+ ermöglicht lokales Nachtriggern zu jeder Zeit
Ich würde noch ein at setzen, was den Aktor spätestens morgens auf aus setzt (z.B. 2h nach Sonnenaufgang). Sonst könnte ein nachts aktiviertes Licht dauer-an bleiben.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

martinp876

auch schaltaktoren können long können. Einige schalten aber auf "config" wenn man lange drückt - dann kann man kein long, da es ja config/anlernen macht.

Man kann aber inner long programmieren.

Man kann übrigens jeden (in Worten 'jeden') trigger/tastendruck von der Zentrale aus emulieren.

set Actor press short
set Actor press short peerRemoteButton3
set Actor press long peerRemoteButton2

Long ist nur eine message lang - aber löst die "long " prozedur aus. Das könnte (hab ich nicht getestet) auch bei den Schaltaktoren mit der "config" einschränkung gelten.
Du könntest also auf "self-long" programmieren, dass
- wenn licht an, dann warte 10min, dann schalte aus
- wenn licht aus - ignoriere trigger

somit kannst du morgens
at..... set Licht press long

machen. Das Licht sollte, wenn es an ist, nach 10min ausgehen.

Wuppi68

Readings:
     2014-06-13 21:15:05   CommandAccepted yes
     2014-02-25 06:46:32   D-firmware      2.2
     2014-02-25 06:46:32   D-serialNr      KEQ--------
     2014-06-13 21:15:08   PairedTo        --------------
     2014-02-25 06:38:46   R-confBtnTime   255 min
     2014-06-13 21:15:08   R-intKeyVisib   visib
     2014-06-13 21:14:04   R-localResDis   off
     2014-06-13 21:14:04   R-pairCentral   ----------
     2014-06-13 21:15:11   R-self01-lgActionType jmpToTarget
     2014-06-13 21:15:11   R-self01-lgCtDlyOff geLo
     2014-06-13 21:15:11   R-self01-lgCtDlyOn geLo
     2014-06-13 21:15:11   R-self01-lgCtOff geLo
     2014-06-13 21:15:11   R-self01-lgCtOn geLo
     2014-06-13 21:15:11   R-self01-lgCtValHi 100
     2014-06-13 21:15:11   R-self01-lgCtValLo 50
     2014-06-13 21:15:11   R-self01-lgMultiExec on
     2014-06-13 21:15:11   R-self01-lgOffDly 0 s
     2014-06-13 21:15:11   R-self01-lgOffTime 111600 s
     2014-06-13 21:15:11   R-self01-lgOffTimeMode absolut
     2014-06-13 21:15:11   R-self01-lgOnDly 0 s
     2014-06-13 21:15:11   R-self01-lgOnTime 111600 s
     2014-06-13 21:15:11   R-self01-lgOnTimeMode absolut
     2014-06-13 21:15:11   R-self01-lgSwJtDlyOff off
     2014-06-13 21:15:11   R-self01-lgSwJtDlyOn off
     2014-06-13 21:15:11   R-self01-lgSwJtOff off
     2014-06-13 21:15:11   R-self01-lgSwJtOn dlyOff
     2014-06-13 21:15:11   R-self01-shActionType jmpToTarget
     2014-06-13 21:15:11   R-self01-shCtDlyOff geLo
     2014-06-13 21:15:11   R-self01-shCtDlyOn geLo
     2014-06-13 21:15:11   R-self01-shCtOff geLo
     2014-06-13 21:15:11   R-self01-shCtOn geLo
     2014-06-13 21:15:11   R-self01-shCtValHi 100
     2014-06-13 21:15:11   R-self01-shCtValLo 50
     2014-06-13 21:15:11   R-self01-shOffDly 0 s
     2014-06-13 21:15:11   R-self01-shOffTime 111600 s
     2014-06-13 21:15:11   R-self01-shOffTimeMode absolut
     2014-06-13 21:15:11   R-self01-shOnDly 0 s
     2014-06-13 21:15:11   R-self01-shOnTime 111600 s
     2014-06-13 21:15:11   R-self01-shOnTimeMode absolut
     2014-06-13 21:15:11   R-self01-shSwJtDlyOff off
     2014-06-13 21:15:11   R-self01-shSwJtDlyOn off
     2014-06-13 21:15:11   R-self01-shSwJtOff off
     2014-06-13 21:15:11   R-self01-shSwJtOn dlyOff
     2014-06-13 21:15:12   R-self02-lgActionType jmpToTarget
     2014-06-13 21:15:12   R-self02-lgCtDlyOff geLo
     2014-06-13 21:15:12   R-self02-lgCtDlyOn geLo
     2014-06-13 21:15:12   R-self02-lgCtOff geLo
     2014-06-13 21:15:12   R-self02-lgCtOn geLo
     2014-06-13 21:15:12   R-self02-lgCtValHi 100
     2014-06-13 21:15:12   R-self02-lgCtValLo 50
     2014-06-13 21:15:12   R-self02-lgMultiExec on
     2014-06-13 21:15:12   R-self02-lgOffDly 0 s
     2014-06-13 21:15:12   R-self02-lgOffTime 111600 s
     2014-06-13 21:15:12   R-self02-lgOffTimeMode absolut
     2014-06-13 21:15:12   R-self02-lgOnDly 0 s
     2014-06-13 21:15:12   R-self02-lgOnTime 111600 s
     2014-06-13 21:15:12   R-self02-lgOnTimeMode absolut
     2014-06-13 21:15:12   R-self02-lgSwJtDlyOff on
     2014-06-13 21:15:12   R-self02-lgSwJtDlyOn on
     2014-06-13 21:15:12   R-self02-lgSwJtOff dlyOn
     2014-06-13 21:15:12   R-self02-lgSwJtOn on
     2014-06-13 21:15:12   R-self02-shActionType jmpToTarget
     2014-06-13 21:15:12   R-self02-shCtDlyOff geLo
     2014-06-13 21:15:12   R-self02-shCtDlyOn geLo
     2014-06-13 21:15:12   R-self02-shCtOff geLo
     2014-06-13 21:15:12   R-self02-shCtOn geLo
     2014-06-13 21:15:12   R-self02-shCtValHi 100
     2014-06-13 21:15:12   R-self02-shCtValLo 50
     2014-06-13 21:15:12   R-self02-shOffDly 0 s
     2014-06-13 21:15:12   R-self02-shOffTime 111600 s
     2014-06-13 21:15:12   R-self02-shOffTimeMode absolut
     2014-06-13 21:15:12   R-self02-shOnDly 0 s
     2014-06-13 21:15:12   R-self02-shOnTime 3600 s
     2014-06-13 21:15:12   R-self02-shOnTimeMode absolut
     2014-06-13 21:15:12   R-self02-shSwJtDlyOff on
     2014-06-13 21:15:12   R-self02-shSwJtDlyOn on
     2014-06-13 21:15:12   R-self02-shSwJtOff dlyOn
     2014-06-13 21:15:12   R-self02-shSwJtOn on
     2014-06-13 21:14:05   R-sign          off
     2014-02-25 06:38:48   R-statusInfoMinDly 2 s
     2014-02-25 06:38:48   R-statusInfoRandom 1 s
     2014-06-13 21:14:05   R-transmitTryMax 6
     2014-06-13 18:09:56   deviceMsg       off (to hm.lan.1)
     2014-06-13 18:09:56   level           0
     2014-06-13 18:09:56   pct             0
     2014-06-13 21:15:10   peerList        self01,self02,
     2014-06-13 18:09:56   recentStateType info
     2014-06-13 18:09:56   state           off
     2014-06-13 18:09:56   timedOn         off


Ich habe mal meinen Badezimmerschalter gelistet :-)

Kurzer Druck: 1h Stunde Licht an
Langer Druck: Dauer Licht an
für den Notify habe ich diesen Konstrukt: hm.sw.4:on IF ([dummy.Heizung.aktiv] eq "wahr") (set hm.thermo.1.clima desired-temp 21.5)

Du bekommst als Event also nur die Änderung vom Aktor aber NICHT vom Taster
FHEM unter Proxmox als VM

martinp876

das gilt für self02. Self01 schaltet immer dauer an.
eine besser zu lesende Liste erhältst der Register - insbesondere bei meheren peers erhältst du mit HMInfo
get hm register -f <actor>

das Notify müsste auf den Status des Lichts reagieren - der Taster ist nicht sichtbar

Wuppi68

#6
hier noch mal die Register und settings wie Martin es beschrieben hat :-) - Danke Martin

hm.sw.5 type:switch -
list:peer register         :value
   0:      confBtnTime      :255 min
   0:      intKeyVisib      :visib
   0:      localResDis      :off
   0:      localResDis      :off
   0:      pairCentral      :---------
   1:      sign             :on
   1:      statusInfoMinDly :2 s
   1:      statusInfoMinDly :2 s
   1:      statusInfoRandom :1 s
   1:      statusInfoRandom :1 s
   1:      transmitTryMax   :6
   1:      transmitTryMax   :6
                                            self01                          self02
                                lg              sh              lg              sh
ActionType             jmpToTarget     jmpToTarget     jmpToTarget     jmpToTarget
CtDlyOff                      geLo            geLo            geLo            geLo
CtDlyOn                       geLo            geLo            geLo            geLo
CtOff                         geLo            geLo            geLo            geLo
CtOn                          geLo            geLo            geLo            geLo
CtValHi                        100             100             100             100
CtValLo                         50              50              50              50
MultiExec                       on              on
OffDly         [s]               0               0               0               0
OffTime        [s]          111600          111600          111600          111600
OffTimeMode                absolut         absolut         absolut         absolut
OnDly          [s]               0               0               0               0
OnTime         [s]          111600          111600          111600            3600
OnTimeMode                 absolut         absolut         absolut         absolut
SwJtDlyOff                     off             off              on              on
SwJtDlyOn                      off             off              on              on
SwJtOff                        off             off           dlyOn           dlyOn
SwJtOn                      dlyOff          dlyOff              on              on


@Martin: Gibt es schon irgendwo eine genaue Beschreibung für die Jumptables und Conditions? Die genaue Logic von den Teilen ist mir noch nicht ganz klar :-(

----
Tante Edith meinte ich sollte meine Zentralen ID entfernen ;-)
FHEM unter Proxmox als VM

martinp876

jump und condition table ist im einsteigerdoc beschrieben.
jumptable ist die statemachine - oder besser die Sprünge in der statemachine wenn ein entsprechender trigger kommt.
CT ist der Filter, wenn ein Trigger mit Value (brightness vom motion detector, oder fenster-öffnung bei RHS) kommt und der Aktor in einem bestimmten Zustand der statemachine ist. Da kann man gewisse trigger ignorieren lassen. Auch einsteigerdoc

ZitatTante Edith meinte ich sollte meine Zentralen ID entfernen ;-)
die HMIds werden ständig im Klartext durch die Luft gesendet. Jeder, der nahe genug an deinem Haus ist, um kommandos an deine Aktoren zu senden kann diese auch lesen. Hier im Forum sind die meisten eher weiter weg und können nichts senden.
=> die HMID zu schwärzen ist nicht sicherheitsrelevant.
=> schützen solltst du ggf die Seriennummer - aber auch hier ist es eher kein security-problem
=> zu schützen sind IP-adressen (externe) und ggf keys für AES