Espeasy und Homematic HM-LC-Sw1PBU-FM

Begonnen von pepe_11, 03 Februar 2019, 21:09:46

Vorheriges Thema - Nächstes Thema

Otto123

Ok was ich immer noch nicht verstanden habe, was macht dann der ESP Schalter mit der Taste?
Einmal tasten an
zweites Mal tasten aus?
Oder ein kurzes an/aus?

Der Status on/off von Arbeitszimme_Lampe soll sich ESPEasy_OLED_Switch_2 wiederspiegeln?

Egal, probier die Vorschläge aus und frage wieder  ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

pepe_11

Zitat von: Otto123 am 04 Februar 2019, 12:40:44
Ok was ich immer noch nicht verstanden habe, was macht dann der ESP Schalter mit der Taste?
Einmal tasten an
zweites Mal tasten aus?
Oder ein kurzes an/aus?

Der Status on/off von Arbeitszimme_Lampe soll sich ESPEasy_OLED_Switch_2 wiederspiegeln?

Egal, probier die Vorschläge aus und frage wieder  ;D
ein kurzes an/aus, dann soll die Lampe an bzw. ausgehen.

Gesendet von meinem ANE-LX1 mit Tapatalk


Pfriemler

#17
Also ich habe das so verstanden:
Am ESPeasy ist ein Mikroschalter. Mit diesem kann er den ESPEasy_OLED_Switch_2 ein- und ausschalten durch einen Tastendruck.
Ich nehme mal an, das ist nichts weiter als eine interne Definition, physikalisch wird damit nichts geschaltet.
Ein zweiter Homematic-Aktor (Arbeitszimmer_Lampe) soll diesem Schaltzustand 1:1 folgen.
Der ESP ist praktisch eine Fernbedienung für den Homematic-Aktor.
Der "Schalter" ist nur ein "Nebenprodukt" des Gerätes - eigentlich ist es ja ein Display.
So?
"Ä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 ..."

pepe_11

Zitat von: Pfriemler am 04 Februar 2019, 12:54:36
Also ich habe das so verstanden:
Am ESPeasy ist ein Mikroschalter. Mit diesem kann er den ESPEasy_OLED_Switch_2 ein- und ausschalten durch einen Tastendruck.
Ein zweiter Homematic-Aktor (Arbeitszimmer_Lampe) soll diesem Schaltzustand 1:1 folgen.
Der ESP ist praktisch eine Fernbedienung für den Homematic-Aktor.
So?
Yep, so ist das.

Gesendet von meinem ANE-LX1 mit Tapatalk


pepe_11

Zitat von: pepe_11 am 04 Februar 2019, 12:57:51
Yep, so ist das.

Gesendet von meinem ANE-LX1 mit Tapatalk
Das ganze sieht so aus. Der schwarze Punkt rechts ist der Schalter. (https://uploads.tapatalk-cdn.com/20190204/8259c91ef5edc704881132cc48f402f1.jpg)

Gesendet von meinem ANE-LX1 mit Tapatalk


Pfriemler

Im Prinzip ist dann alles klar - mit Ottos Notify-Vorschlag sollte es funktionieren.
Im ersten Post hast Du aber etwas anderes noch erwähnt (und das sorgte hier für Verwirrung).
ZitatDas Ganze soll wie ein Wechselschalter funktionieren, spricht: wird der Homematic angeschaltet soll der EASPeasy in der Lage sein ihm auszuschalten und umgekehrt.

Nur: Jetzt gibt es noch ein Problem, dass eine Änderung des HM-Aktors zu einer Differenz beim Schaltzustand führt. Das heißt, wurde der HM-Aktor anderweitig geschaltet, bringt der erste Tastendruck den ESP-Switch in die gleiche Position und erst der zweite bringt eine Aktion am Aktor.

Ich sehe, dass es keine Darstellung bezüglich des Schaltzustandes des internen ESP-Switch gibt. Dann ist der interne Schaltzustand aber eigentlich auch egal.
Dann genügt es tatsächlich nur auf jede Zustandsänderung des ESP-Switch hin den Zustand des HM-Aktors zu ändern, d.h. in diesem Fall wäre die Kongruenz egal. Dann nämlich wäre der vor ein paar Beiträgen vorgeschlagene toggle doch wieder das Mittel der Wahl.

"Ä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 ..."

pepe_11

Hallo,

ich habe die beiden Methoden durchprobiert. Das Ergebnis ist leider ernüchternd.
Betätige ich den Schalter am ESP, geht die Lampe an.-->OK
Schalte ich am esp die Lampe an und dann schalte ich sie am HM-LC-Sw1PBU-FM aus, dann wird nach einer Weile die Lampe vom ESP eingeschaltet -->Nicht OK
oder umgekehrt-->ESP-Switches aus, HM-LC-Sw1PBU-FM an= Lampe nach dem Aktualisierungsinterval wieder aus.
Ich denke, dass in Richtung ESP das irgendwie anders funktioniert. Ich werde noch etwas rum experimentieren, wenn die Zeit dafür da ist.
Danke an alle für eure Mühe!

Schöne Grüße
Peter

Otto123

Hallo Peter,

wenn dein ESP ein Taster ist (so wie Du das beschrieben hast) funktioniert so einfach nichts "in Richtung" ESP. Du kannst in dem Fall nicht einfach den Status des HM Schalters zurückschicken.

Du kannst eventuell den Taster vom ESP als Steuerung des HM Schalters nehmen und einen anderen Kanal im ESP als Anzeige für den Schaltzustand des HM Schalters nehmen.

Am Besten ist es, Du schaust Dir beide Geräte im Eventmonitor an und siehst Da was genau passiert.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

pepe_11

Zitat von: Otto123 am 04 Februar 2019, 22:52:35
Hallo Peter,

wenn dein ESP ein Taster ist (so wie Du das beschrieben hast) funktioniert so einfach nichts "in Richtung" ESP. Du kannst in dem Fall nicht einfach den Status des HM Schalters zurückschicken.

Du kannst eventuell den Taster vom ESP als Steuerung des HM Schalters nehmen und einen anderen Kanal im ESP als Anzeige für den Schaltzustand des HM Schalters nehmen.

Am Besten ist es, Du schaust Dir beide Geräte im Eventmonitor an und siehst Da was genau passiert.

Gruß Otto
Hi Otto,
Das habe ich mir schon gedacht, danke für den Hinweis. Ich stelle fest, dass ich das Prinzip mit dem switch nicht verstanden habe. Ich muss die esp Doku nochmal lesen aber die Zeit fehlt leider im Moment. :(


Gesendet von meinem ANE-LX1 mit Tapatalk


Pfriemler

Klar ist: Wenn der ESP-Switch regelmäßig an FHEM sendet und sein Abbild dort aktualisiert wird und ein Event wirft, dann reagieren auch die Notifys darauf. Beim "Follow" wird der HM-Aktor immer dem ESP gleichgezogen. Bei der Variante "Toggle" würde der HM-Aktor sporadisch ein- und ausschalten.
Du musst also verhindern, dass eine zyklsiches Update des ESP-Switch-Status (ohne eine Änderung) in FHEM ein Event wirft. Üblicherweise macht man das im FHEM-Device über das Attribut "event-on-change-reading <reading>" (<reading> meint meist "state", oder allgemein für alle Readings ".*" für alle Readings). Dann wird werden die notifys nur getriggert, wenn sich der Status des ESP-Switch wirklich ändert.
Alternativ kann man die Funktion in ein einfaches DOIF auslagern - mit zwei Zweigen führt das den entsprechenden Befehl auch nur aus, wenn sich die Auslösebedingung ändert.
"Ä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 ..."

pepe_11

Hallo zusammen,

ich habe heute DOIF implementiert und damit scheint es zu funktionieren.
Ich habe eventmap bei dem ESPEasy_OLED_Switch_2 etwas geändert:

eventMap /GPIOtoggle 0

Internals:
   CFGFN     
   DEF        ([ESPEasy_OLED_Switch_2] eq "on") (set Arbeitszimme_Lampe on) DOELSE (set Arbeitszimme_Lampe off)
   FUUID      5c59efec-f33f-0cfa-17e3-911dc1a20cd98fae
   MODEL      FHEM
   NAME       doif_ESPEasy_OLED_Switch_2
   NR         128920
   NTFY_ORDER 50-doif_ESPEasy_OLED_Switch_2
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2019-02-05 22:21:17   Device          ESPEasy_OLED_Switch_2
     2019-02-05 22:20:00   cmd             1
     2019-02-05 22:20:00   cmd_event       ESPEasy_OLED_Switch_2
     2019-02-05 22:20:00   cmd_nr          1
     2019-02-05 22:21:17   e_ESPEasy_OLED_Switch_2_STATE on
     2019-02-05 21:19:56   mode            enabled
     2019-02-05 22:20:00   state           cmd_1
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'ESPEasy_OLED_Switch_2','STATE') eq "on"
   devices:
     0           ESPEasy_OLED_Switch_2
     all         ESPEasy_OLED_Switch_2
   do:
     0:
       0          set Arbeitszimme_Lampe on
     1:
       0          set Arbeitszimme_Lampe off
   helper:
     event      swi: on,on
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   ESPEasy_OLED_Switch_2
     timerevent swi: on,on
     triggerDev ESPEasy_OLED_Switch_2
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: ESPEasy_OLED_Switch_2
       state: cmd_1
     timerevents:
       swi: on
       on
     timereventsState:
       swi: on
       state: on
     triggerEvents:
       swi: on
       on
     triggerEventsState:
       swi: on
       state: on
   internals:
     0           ESPEasy_OLED_Switch_2:STATE
     all         ESPEasy_OLED_Switch_2:STATE
   itimer:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:


@Pfriemler: Danke für den Tipp

Im Grunde ist mir egal, ob der ESP sein Status ändert, wenn der HM geschaltet wird.

Viele Grüße und nochmal vielen Dank an alle!

Pfriemler

#26
Wie gesagt, es bleibt ein Restproblem:
ESP off -> on => HM on (ok)
ESP on -> off => HM off (ok)
Nun: manuell HM on ...
ESP off -> on => HM on (keine Reaktion!)
nun HM manuell off
ESP on -> off => HM off (keine Reaktion!)

Würde mich stören. Abhilfe:
defmod doif_ESPEasy_OLED_Switch_2 DOIF ([ESPEasy_OLED_Switch_2]:"on") (set Arbeitszimme_Lampe toggle)
DOELSEIF ([ESPEasy_OLED_Switch_2]:"off") (set Arbeitszimme_Lampe toggle)

Wichtig: kein do always setzen.
Nun springt bei jeder Zustandsänderung des [ESPEasy_OLED_Switch_2] (Event!) das DOIF in den jeweiligen Zweig und sendet einen Umschaltbefehl.

"Ä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 ..."