vorschlag ergänzung SetExtensions

Begonnen von justme1968, 08 Mai 2016, 12:55:41

Vorheriges Thema - Nächstes Thema

justme1968

anbei ein vorschlag der die SetExtensions um die folgenden dinge erweitert:

- abbrechen eines laufenden SE times -> nötig wenn z.b. über die SE mit on-for-timer eingeschaltet wird und danach noch mal per 'normalem' on. der interne SE timer läuft weiter und schaltet trotzdem nach dem timeout aus. das abbrechen muss im jeweiligen modul selber passieren wenn der device zustand ohne SE geändert wird. im hue modul habe ich schon seit langem ein RemoveInternalTimer("SE $name on-for-timer"); drin. das greift aber zum einen nur bei on-for-timer und ausserdem weiss das modul ja eigentlich nicht wie der timer heisst.

- beim starten von on-for-timer und off-for-timer wird intern der zeitpunkt und die dauer im jeweiligen device gespeichert. das hilft wenn man z.b. das devStateIcon entsprechend darstellen oder einen ablaufenden timer im frontend realisiert will. bei den devices die über die SE gehen ist anders als bei FS20 die dauer nicht am event für state sichtbar.


noch offen: sollten die SE das -for-timer auch in state schreiben? das hat aber vielleicht unerwünschte seiteneffekte.


vielleicht wäre es sinnvoll die gleichen internen helper auch aus allen modulen zu füllen die on-for-timer direkt im device lösen. z.b. FS20 und HM. FS20 geht zur zeit zwar durch parsen von state, HM geht glaube ich überhaupt nicht da auch beim schalten aus fhem der timeout nirgends steht (das es beim schalten an fhem vorbei nicht geht ist klar).

dann könnte man z.b. die oben angesprochenen timer geräte unabhängig lösen.

PS: gibt es einen grund dafür das beim list die gross/klein schreibung der hash keys verändert wird? das stört beim debuggen und copy&paste ziemlich :(
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Vorschlag angenommen, nur {helper} habe ich entfernt.

Zitatnoch offen: sollten die SE das -for-timer auch in state schreiben?
Bin auch unsicher.

Zitatvielleicht wäre es sinnvoll die gleichen internen helper auch aus allen modulen zu füllen die on-for-timer direkt im device lösen
Bin deiner Ansicht. Welche Module koennen das? FS20/CUL_HM:ja, ZWave/FBDECT:nein, den Rest weiss ich nicht :)

Zitatgibt es einen grund dafür das beim list die gross/klein schreibung der hash keys verändert wird?
Ich fand das mal schoen. Bin unsicher, ob ich das immer noch so finde. :)

rapster

Zitat von: justme1968 am 08 Mai 2016, 12:55:41HM geht glaube ich überhaupt nicht da auch beim schalten aus fhem der timeout nirgends steht (das es beim schalten an fhem vorbei nicht geht ist klar).

Das Reading 'timedOn' wird auf 'running' gesetzt bei on-for-timer, oder ist das nicht das was du meinst?

Gruß
Claudiu

justme1968

#3
@rudi:
Zitatnur {helper} habe ich entfernt
das dachte ich mir schon :)

FS20 wäre schön baust du das ein oder soll ich mal schauen?

HM auch. aber ich glaube martin mag nicht.

POKEYS, TRX_LIGHT, PW_Circle, KNX und EIB scheinen alle eine eigene on-for-timer implementierung zu haben. das wäre also noch kanditaten

alle anderen scheinen über SE zu gehen. da müsste man nur den SetExtensionsCancel aufruf einbauen.


@rapster: ja. das weiss ich. aber die dauer ist nirgend wo zu sehen. selbst wenn sie bekannt war ist sie bei hm nachträglich nicht mehr zu sehen. und genau so wie bei fs20 auch aus dem event nicht direkt ablesen wenn eventMap verwendet wird.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

anbei ein vorschlag für einen patch der das TIMED_OnOff internal für FS20 einbaut sobald follow-on-for-timer gesetzt ist.

ich kann aber den teil testen der aus einem fhem set kommt, nicht über parse da ich keinen passenden sender habe.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Habs eingecheckt.


FS20 "offline" zu testen ist wg. der FHZ-Erbe etwas tricky:

IODev loglevel auf 5, und gesendetes Befehl notieren.
2016.05.12 10:21:12.494 5: SW: Fhhhhbbccaa
hhhh: Housecode
bb: button
cc: command
aa: argument (Optional)

Nachricht injizieren:
{ Dispatch($defs{CUL}, "810b04f70101a001hhhhbb00ccaa", undef) }

justme1968

es hat sich noch ein tippfehler eingeschlichen:Index: SetExtensions.pm
===================================================================
--- SetExtensions.pm (revision 11508)
+++ SetExtensions.pm (working copy)
@@ -12,7 +12,7 @@
SetExtensionsCancel($)
{
   my ($hash) = @_;
-  $hash = $defs{$hash} if( ref($hash) ne 'ARRAY' );
+  $hash = $defs{$hash} if( ref($hash) ne 'HASH' );

   return undef if( !$hash );
   my $name = $hash->{NAME};


fehlermeldung von hier: https://forum.fhem.de/index.php/topic,53746.msg453924.html#msg453924.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig