FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hugo am 29 August 2022, 21:02:06

Titel: Hausstatus mit HM-DIS-EP-WM55
Beitrag von: hugo am 29 August 2022, 21:02:06
Hallo,
ich habe einen dummy Hausstatus diesen kann ich kann normal setzen. Die Anzeige wird mit einem DOIF aktualisiert.
Wenn ich jetzt die Tasten des HM-DIS-EP-WM55 mit einem DOIF einbinden möchte läuft der Hausstatus in einer Endlos Schleife.
Wo liegt der Fehler?
DOIF Hausstatus Text Display
Internals:
   DEF        ([HausStatus] == 1)
({fhem("set Dis1.Display displayEP Home,open::")})
DOELSEIF
([HausStatus] == 2)
({fhem("set Dis1.Display displayEP Nacht,closed::")})
DOELSEIF
([HausStatus] == 3)
(fhem{("set Dis1.Display displayEP Away,closed::")\})
DOELSEIF
([HausStatus] == 4)
({fhem("set Dis1.Display displayEP Urlaub,closed::")})
   FUUID      5c8231e6-f33f-07c9-6189-7a4f5b10d85aa054
   MODEL      FHEM
   NAME       di.HausStatus
   NOTIFYDEV  HausStatus,global
   NR         132
   NTFY_ORDER 50-di.HausStatus
   STATE      cmd_1
   TYPE       DOIF
   VERSION    26159 2022-06-19 16:10:29
   eventCount 369
   READINGS:
     2022-08-29 20:55:52   Device          HausStatus
     2022-08-29 20:55:52   cmd             1
     2022-08-29 20:55:52   cmd_event       HausStatus
     2022-08-29 20:55:52   cmd_nr          1
     2022-08-29 20:55:52   e_HausStatus_STATE 1
     2022-08-29 20:46:26   mode            enabled
     2022-08-29 20:55:52   state           cmd_1
   Regex:
     accu:
     collect:
     cond:
       HausStatus:
         0:
           &STATE     ^HausStatus$
         1:
           &STATE     ^HausStatus$
         2:
           &STATE     ^HausStatus$
         3:
           &STATE     ^HausStatus$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'HausStatus','STATE') == 1
     1          ::InternalDoIf($hash,'HausStatus','STATE') == 2
     2          ::InternalDoIf($hash,'HausStatus','STATE') == 3
     3          ::InternalDoIf($hash,'HausStatus','STATE') == 4
   do:
     0:
       0          {fhem("set Dis1.Display displayEP Home,open::")}
     1:
       0          {fhem("set Dis1.Display displayEP Nacht,closed::")}
     2:
       0          fhem{("set Dis1.Display displayEP Away,closed::")\}
     3:
       0          {fhem("set Dis1.Display displayEP Urlaub,closed::")}
     4:
   helper:
     NOTIFYDEV  HausStatus,global
     event      1
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   HausStatus
     timerevent 1
     triggerDev HausStatus
     timerevents:
       1
     timereventsState:
       state: 1
     triggerEvents:
       1
     triggerEventsState:
       state: 1
   internals:
     all         HausStatus:STATE
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   devStateIcon cmd_1:system_fhem cmd_2:scene_sleeping_alternat cmd_3:car cmd_4:scene_visit_guests
   disable    0
   group      A_HOME
   icon       helper_doif
   room       Zentrale


DOIF Display Button
Internals:
   DEF        ([Dis1.Btn01] =~ "Long")
(set HausStatus 2)
DOELSEIF ([Dis1.Btn01] =~ "Short")
(set HausStatus 3)
DOELSEIF ([Dis1.Btn02] =~ "Short")
(set HausStatus 4)
DOELSEIF ([Dis1.Btn02] =~ "Long")
(set HausStatus 1)
   FUUID      5c8231e6-f33f-07c9-8f98-eda3e5c84620347d
   MODEL      FHEM
   NAME       di.Dis1_Btn
   NOTIFYDEV  global
   NR         133
   NTFY_ORDER 50-di.Dis1_Btn
   STATE      deactivated
   TYPE       DOIF
   VERSION    26159 2022-06-19 16:10:29
   disableNotifyFn 1
   eventCount 627
   READINGS:
     2022-08-29 20:55:53   mode            deactivated
     2022-08-29 20:55:53   state           deactivated
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   do:
     0:
   helper:
     NOTIFYDEV  global
   uiState:
   uiTable:
Attributes:
   devStateIcon cmd_1:scene_visit_guests cmd_2:scene_sleeping_alternat cmd_3:car cmd_4:system_fhem
   disable    1
   group      A_HOME
   room       Zentrale


Gruß Josef
Titel: Antw:Hausstatus mit HM-DIS-EP-WM55
Beitrag von: Prof. Dr. Peter Henning am 30 August 2022, 21:14:10
Tipp: YAAHM verwenden.

LG

pah
Titel: Antw:Hausstatus mit HM-DIS-EP-WM55
Beitrag von: rabehd am 30 August 2022, 21:35:07
Ein Dummy kann nicht in einer Endlosschleife laufen. 

Das erste DOIF ist eine Katastrophe. So programmiert man nicht.

Warum 2 DOIF? Das was Du hier zeigst geht in einem DOIF.
Titel: Antw:Hausstatus mit HM-DIS-EP-WM55
Beitrag von: hugo am 31 August 2022, 20:05:25
@rabehd
ZitatEin Dummy kann nicht in einer Endlosschleife laufen.
Das ist richtig, da habe ich mich falsch ausgedrückt Das DOIF läuft in der Endlosschleife.
ZitatDas erste DOIF ist eine Katastrophe. So programmiert man nicht.
Wenn ich das DOIF ändere auf (set Dis1.Display displayEP Nacht,closed::) ohne Fhem erhalte ich einen Fehler "closed::: Unknown command closed::, try help."

Eine Änderung des DOIF in nur eins, sprint der Status kurz in den Neuen und dann wieder in den alten Zustand zurück.

([HausStatus] == 1)
(set Dis1.Display displayEP Home,open::)
DOELSEIF
([HausStatus] == 2)
(set Dis1.Display displayEP Nacht,ok::)
DOELSEIF
([HausStatus] == 3)
({fhem("set Dis1.Display displayEP Away,off::")})
DOELSEIF
([HausStatus] == 4)
(set Dis1.Display displayEP Urlaub,closed::)
DOELSEIF
(([Dis1.Btn02] =~ "Long"))
(set HausStatus 1; set Dis1.Display displayEP Urlaub,closed::)DOELSEIF
(([Dis1.Btn02] =~ "Short"))
(set HausStatus 2; set Dis1.Display displayEP Home,open::)

S
Titel: Antw:Hausstatus mit HM-DIS-EP-WM55
Beitrag von: Otto123 am 31 August 2022, 21:01:46
Hi,

gleiches Thema, siehe hier: https://forum.fhem.de/index.php/topic,128934.msg1232931.html#msg1232931 ;)

Gruß Otto
Titel: Antw:Hausstatus mit HM-DIS-EP-WM55
Beitrag von: hugo am 01 September 2022, 20:18:44
@Otto123
Danke für die Info, dass hat das Problem mit den Icon gelöst.

Jetzt habe ich das DOIF folgender masen geändert.
([HausStatus] == 1)
((set Dis1.Display displayEP Home,open::))
DOELSEIF
([HausStatus] == 2)
((set Dis1.Display displayEP Nacht,ok::))
DOELSEIF
([HausStatus] == 3)
({fhem("set Dis1.Display displayEP Away,off::")})
DOELSEIF
([HausStatus] == 4)
((set Dis1.Display displayEP Urlaub,closed::))
DOELSEIF
([Dis1.Btn02] =~ "Long")
( (set Dis1.Display displayEP xHome,open::), set HausStatus 1)
DOELSEIF
([Dis1.Btn02] =~ "Short")
((set Dis1.Display displayEP xUrlaub,closed::), set HausStatus 4)

Damit kann ich mit den Buttons auf dem HM-DIS-eP-WM55 den Status ändern und die Anzeige wird auch aktualisiert. Allerdings funktioniert jetzt das umschalten des Hausstatus mit "set Hausstatus 1" oder andern Status nur in der Weise, dass der Status sich auf den neuen Status ändert und dann wieder zurück auf den alten geht.
Habe keine Ahnung warum das so ist.
Titel: Antw:Hausstatus mit HM-DIS-EP-WM55
Beitrag von: Otto123 am 01 September 2022, 22:08:03
Das hier ist mMn unnütz:
({fhem("set Dis1.Display displayEP Away,off::")})
einfacher
((set Dis1.Display displayEP Away,off::))

Dein Problem solltest Du Dir im Eventmonitor anschauen?!

Sowas [Dis1.Btn02] =~ "Short" reagiert auf jedes Short im STATE des Gerätes - wer weiß was da so durchrauscht :) wahrscheinlich musst Du den Trigger schärfer machen ;)

Gruß Otto