[HOMEMODE] HomeCMDcontact und contacts counter

Begonnen von loetmeister, 06 April 2023, 20:29:36

Vorheriges Thema - Nächstes Thema

loetmeister

Hallo,

ich würde gerne auf einem display (LCD) die Anzahl der offenen Fenster anzeigen. Dazu hatte ich im Modul HOMEMODE, welches schon länger für "Fenster offen" Erinnerungsfunktion genutzt wird, das Atribut HomeCMDcontact definiert.
Leider scheint HomeCMDcontact ausgeführt zu werden, bevor contactsWindowsOpen_ct oder die Variable %OPENCT% aktualisiert wird. So interpretiere ich zumindest das Verhalten, dass beide Werte immer falsch sind, bzw. den Status vor dem aktuellen Trigger darstellt. Also das erste Fenster wird geöffnet, OPENCT: 0, das zweite Fenter: OPENCT: 1. Ein Fenster wieder schließen, OPENCT: 2....
Nutze ich die Funktion von "HomeCMDcontact" falsch?

HomeCMDcontact


{
my $open_cnt = ReadingsVal("Home","contactsWindowsOpen_ct",0);
my $hstring = unpack ("H*","Fenster $open_cnt %OPENCT%");
fhem "set HBW_DIS_wz raw 7303$hstring";
}

PS: Hatte contactsWindowsOpen_ct testweise hinzugefügt, da der Wert von %OPENCT% nicht verständlich war...

Gruß,
Thomas

binford6000

Moin loetmeister,
da verhält sich Homemode wie ein notify: Sprich Beim Auslösen des Sensors gilt noch der alte Wert.
Du müsstest also entweder +1 rechnen oder ein at definieren das NACH Auslösen des Sensors die Werte abfragt (zB. über eine Funktion in myUtils).

VG Sebastian

loetmeister

Hi Sebastian,

danke. Hatte gehofft Homemode würde es so verarbeiten das es ohne extra at geht... :)
Habe es mit einem AT im Homemode Attribute so gelöst:
HomeCMDcontact

define atTmp_LCD_update_fenster at +00:00:01 {my $open_cnt = ReadingsVal("Home","contactsOpen_ct",0);;\
my $hstring = unpack("H*","Fenster $open_cnt");;\
fhem("set HBW_DIS_Key_4_HBW7296854 raw 7303$hstring");;}

Gruß