Entprellter Taster bzw on-for-time für Schalter wie zB HM-LC-Sw1PBU-FM

Begonnen von styx-tdo, 26 August 2014, 23:28:06

Vorheriges Thema - Nächstes Thema

styx-tdo

Das Problem: Der Sw1 ist ohne Sonderfirmware ein Schaltaktor. Wenn man jetzt ein Treppenlicht, Klolicht o.ä. per notify implementieren will, geht das nicht:
das ON-Event triggert das NOTIFY, das setzt dann das on-for-time - leider generiert es dabei auch wieder ein notify -> der HMLAN macht eine DOS-Attacke und geht in OVERLOAD. Ungut.

Lösungsvorschlag für zB Klolicht:

define klostatus dummy
define KloLicht notify LichtKlo:on { \
my $dummy = Value("klostatus");;\
#my $state;;\
if ($dummy +5 < time()) {\
  fhem "set LichtKlo on-for-timer 60";;\
  fhem "set klostatus ".time();;\
  #sleep 1;;\
  #$state = Value("LichtKlo");;\
  #log 1,"Licht timer an - status $state, dummy $dummy. time:".time();;\
#}else{\
  #log 1,"Klolicht NOOP  - status $state, dummy $dummy.time:".time();;\
}\
}


Erklärung:
Wir mißbrauchen einen Dummy als "Timer".
Beim initialen Aktivieren wird der Dummy auf time() - die aktuelle Zeit als Unix-Zeitstempel (Sekunden seit.. 1980 oder so) gesetzt.
Beim 2. Notify vergleicht der Code den Wert von dummy mit time, wenn dummy das letzte Mal vor weniger als 5s gefrückt wurde, wird keine Aktion ausgeführt.

lg

----
ANMERKUNG: Das betrifft wirklich nur Leute, die den o.a. Switch (der den Schalter nur intern zugänglich macht und bei dem man das nicht trennen kann) verwenden wollen (weil er günstig ist) und damit auch das Licht schalten. FHem kriegt da nämlich nur das ON-Event, hat aber keine Ahnung von wem..
normalerweise hat man:
Schalter:on notify set licht1 on-for-time
in dem Fall wärs aber ein:
Schalter:on notify set schalter on-for-time  -> und das rennt in ne Endlosschleife..

micomat

Sorry, ich stehe grad auf dem Schlauch.
Ich hab der Optik wegen einen HM-LC-Sw1PBU-FM nur als "Sender" eingebaut, sprich ohne angeschlossenen Verbraucher. Ich schalte damit per Notify andere Geraete und das funktioniert bislang einwandfrei.

Gruß
Markus
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

Bennemannc

Hallo,

wie schaltest Du den Actor denn, über den Internen Schalter oder über Fhem (andere Schaltsensoren).
Bei anderen Schaltsensoren kann man eventMap nutzen und "/on:on-for-timer xxx/ setzen. Dann wird aus einem On automatisch ein on for timer.
Wenn direkt geschaltet wird, gibt es ein Register im Device, mit dem man die Zeit einstellen kann. Das müsste "timedOn" sein. Eventuell muss Expert auf 2_full gestellt werden.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

justme1968

mit dem timedOn reading kann man auch in fhem unterscheiden ob fhem gerade ein on oder ein in-for-timer gesendet hat.

wenn bei dir lampe und schaltet zwei getrennte aktoren sind verstehe ich aber das problem nicht. du hast doch dann auch in fhem zwei devices. das eine schaltet das andere aber nie umgekehrt. versteck den schalter und verwende in fhem nur die lampe.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

micomat

ich schalte per druck auf den schalter :D
und das notify schaltet dann entsprechend die anderen geraete. funktioniert einwandfrei... das einzige was ich speziell gemacht hab, ist den kurzen tastendruck deaktiviert, sodass der schalter nur auf long reagiert.
das der aktor im schalter entsprechend schaltet ist mir in dem fall eigentlich wurschd ;)
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

styx-tdo

Zitat von: micomat am 27 August 2014, 12:28:06
das der aktor im schalter entsprechend schaltet ist mir in dem fall eigentlich wurschd ;)
jo, das ist Variante B. Aber nicht jedeR will sich nen Schalter und zusätzlich nen Schaltaktor zulegen.. ;)
Meine Lösung hilft dabei, denk ich.

btw: Das mit EventMap hat so auch nicht geklappt, warum auch immer..
und er stellt komischerweise im WebIF auch net auf on-for-timer, sondern auf "on".. Licht geht aber sauber aus ;)

Bonus: Neuer Druck auf den Schalter startet den Counter neu.