Hallo, ich bräuchte eure Hilfe. Ich habe Espeasy mit Display und einem Schalter in mein FHEM implementiert. An das Display schicke ich diverse Daten wie Temp, Feuchtigkeit, Baro usw.., das klappt ohne Probleme. Das einzige Problem ist der Schalter, der eigentlich auch funktioniert aber nicht so wie ich mir es ausgedacht habe.
Der Schalter soll den Homematic HM-LC-Sw1PBU-FM steuern. Das Ganze soll wie ein Wechselschalter funktionieren, spricht: wird der Homematic angeschaltet soll der EASPeasy in der Lage sein ihm auszuschalten und umgekehrt.
Zunächst dachte ich, dass mit einem einfachen notify für on bzw. off ist das Vorhaben zu realisieren, leider nein. Man kann den Homematic ausmachen aber der Espeasy bekommt das leider nicht mit und umgekehrt daher nach dem aktualisieren geht der Homematic wieder an. Das Ganze wird noch witziger sobald man ein notify für on und off einstellt, dann hat man eine schöne schleife (dumm).
Ich habe verschiedene Einsätze wie Rules, die in Forum gezeigt wurden durchprobiert. Ich kann leider jetzt nicht alles aufzählen.
Kann mir jemand einen entscheidenden Tipp geben? Anscheinend bin ich zu dämlich dafür oder verstehe ich das Espeasy nicht wirklich. Anbei meine Konfigs sowohl Espeasy als auch auf der FHEM Seite.
Danke im Voraus
Peter
Hallo,
schwer zu verstehen was Du gemacht hast und was Du willst. Falls Du uns Infos geben willst, dann bitte keine Bilder sondern lists.
https://forum.fhem.de/index.php/topic,71806.0.html
Dein ESP Schalter ist ein Sensor der seinen Zustand an FHEM liefert?
Du willst:
Wenn Dieser ON dann HM-LC-Sw1PBU-FM ON?
Wenn Dieser OFF dann HM-LC-Sw1PBU-FM OFF?
Dieser ESP Schalter soll den Zustand wie der HM-LC-Sw1PBU-FM annehmen?
Gruß Otto
Hallo,
danke für deine schnelle Antwort.
"Du willst":
Wenn Dieser ON dann HM-LC-Sw1PBU-FM ON?-->ja
Wenn Dieser OFF dann HM-LC-Sw1PBU-FM OFF?-->ja
ich möchte einfach mit dem Esp Schalter den HM-LC-Sw1PBU-FM steuern.
Sorry für die Screenshots. Ich verfolge dieses Forum seit Jahren, bin aber nie auf die Idee gekommen selber eine Frage zu stelle.
Hier die List der Devices (ESP kann ich schlecht listen):
1. Angelegter ESP Schalter in FHEM
Internals:
DEF 192.168.8.42 80 ESPBridge OLED_Switch_2
ESPBridge_MSGCNT 8761
ESPBridge_TIME 2019-02-03 22:02:54
ESP_BUILD 20103
ESP_BUILD_GIT mega-20190121
ESP_BUILD_NOTES - Mega
ESP_NODE_TYPE_ID ESP Easy Mega
ESP_SLEEP 0
ESP_UNIT 2
ESP_VERSION 2
FUUID 5c4dfebc-f33f-0cfa-1641-c61809fa372b8d2a
HOST 192.168.8.42
IDENT OLED_Switch_2
INTERVAL 300
IODev ESPBridge
LASTInputDev ESPBridge
MAX_CMD_DURATION 1
MSGCNT 8761
NAME ESPEasy_OLED_Switch_2
NOTIFYDEV global
NR 923
NTFY_ORDER 50-ESPEasy_OLED_Switch_2
PORT 80
STATE off
SUBTYPE device
TYPE ESPEasy
VERSION 2.16
READINGS:
2019-02-03 22:02:54 Switch off
2019-02-03 21:58:28 presence present
2019-02-03 22:02:54 state off
helper:
fpc 1549219027.54121
pm:
Encode 1
JSON 1
received:
Switch 1549227774.70772
sec:
admpwd
Attributes:
IODev ESPBridge
Interval 300
eventMap /gpio 0 on:on/gpio 0 off:off/gpio 0
group ESPEasy Device
presenceCheck 1
readingSwitchText 1
room ESPEasy
setState 3
stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Switch","")}
userReadings state {ReadingsVal($name,"Switch","") }
2. HM-LC-Sw1PBU-FM
Internals:
DEF 296227
FUUID 5c4dfeba-f33f-0cfa-88cc-a4a032692ae5abb9
HMLAN1_MSGCNT 6
HMLAN1_RAWMSG E296227,0000,1FA94705,FF,FFD3,59A4102962272BAB0D0601C800
HMLAN1_RSSI -45
HMLAN1_TIME 2019-02-03 21:55:38
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 6
NAME Arbeitszimme_Lampe
NOTIFYDEV global
NR 877
NTFY_ORDER 50-Arbeitszimme_Lampe
STATE off
TYPE CUL_HM
lastMsg No:59 - t:10 s:296227 d:2BAB0D 0601C800
peerList self01,self02,
protLastRcv 2019-02-03 21:55:38
protRcv 5 last_at:2019-02-03 21:55:38
protSnd 6 last_at:2019-02-03 21:55:38
protState CMDs_done
rssi_HMLAN1 cnt:1 min:-44 max:-44 avg:-44 lst:-44
rssi_at_HMLAN1 cnt:6 min:-48 max:-43 avg:-45.5 lst:-45
READINGS:
2019-02-02 19:08:50 CommandAccepted yes
2019-01-28 18:23:02 D-firmware 2.8
2019-01-28 18:23:02 D-serialNr LEQ0279003
2019-01-31 20:54:56 PairedTo 0x2BAB0D
2019-01-31 20:54:56 R-pairCentral 0x2BAB0D
2019-01-31 20:54:57 R-powerUpAction off
2019-01-31 20:54:58 R-self01-lgActionType jmpToTarget
2019-01-31 20:54:58 R-self01-shActionType jmpToTarget
2019-01-31 20:54:59 R-self02-lgActionType jmpToTarget
2019-01-31 20:54:59 R-self02-shActionType jmpToTarget
2019-01-31 20:54:57 R-sign off
2019-01-31 20:54:55 RegL_00. 00:00 02:81 0A:2B 0B:AB 0C:0D 15:FF 18:00
2019-01-31 20:54:56 RegL_01. 00:00 08:00 30:06 56:00 57:24
2019-01-31 20:54:58 RegL_03.self01 00:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:14 0C:63 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:64 8C:66
2019-01-31 20:54:59 RegL_03.self02 00:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:14 0C:63 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:13 8C:33
2019-02-03 21:55:38 deviceMsg off (to VCCU)
2019-02-03 21:55:38 level 0
2019-02-02 19:08:30 levelMissed desired:0
2019-02-03 21:55:38 pct 0
2019-02-03 19:36:58 peerList self01,self02,
2019-02-03 21:55:38 recentStateType info
2019-02-03 21:55:38 state off
2019-02-03 21:55:38 timedOn off
helper:
HM_CMDNR 89
cSnd ,012BAB0D296227010E
mId 0069
regLst ,0,1,3p
rxType 1
supp_Pair_Rep 0
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +296227,00,01,00
nextSend 1549227339.0027
rxt 0
vccu VCCU
p:
296227
00
01
00
prefIO:
HMLAN1
mRssi:
mNo 59
io:
HMLAN1:
-37
-37
prt:
bErr 0
sProc 0
rspWait:
q:
qReqConf
qReqStat
role:
chn 1
dev 1
prs 1
rpt:
IO HMLAN1
flg A
ts 1549227338.91326
ack:
HASH(0x4649508)
5980022BAB0D29622700
rssi:
HMLAN1:
avg -44
cnt 1
lst -44
max -44
min -44
at_HMLAN1:
avg -45.5
cnt 6
lst -45
max -43
min -48
tmpl:
Attributes:
IODev HMLAN1
IOgrp VCCU:HMLAN1
autoReadReg 4_reqStatus
expert 2_raw
firmware 2.8
model HM-LC-Sw1PBU-FM
param levelInverse
peerIDs 00000000,29622701,29622702,
room Arbeitszimmer,CUL_HM
serialNr LEQ0279003
subType switch
webCmd statusRequest:toggle:on:off
Hi,
ich habe mal sowas gemacht, Aktor1 und Aktor2 schalten immer synchron, egal welcher von beiden geschaltet wird:
defmod nty_Aktor1 notify Aktor2:(on|off) set Aktor1:FILTER=STATE!=$EVENT $EVENT
defmod nty_Aktor2 notify Aktor1:(on|off) set Aktor2:FILTER=STATE!=$EVENT $EVENT
Die eine Richtung könnte also so gehen, wenn Deine Events stimmen:
defmod nty_Aktor1 notify ESPEasy_OLED_Switch_2:(on|off) set Arbeitszimme_Lampe:FILTER=STATE!=$EVENT $EVENT
Du musst das mit dem Eventmonitor prüfen.
Wenn das geht kannst Du die zweite Richtung analog übernehmen.
Gruß Otto
defmod nty_Aktor1 notify ESPEasy_OLED_Switch_2:(on|off) set Arbeitszimme_Lampe toggle
Ich würde das so machen, wenn sich der Status am Schalter (nicht Taster)Esp ändert , schicke ein Toggle (geht bei HM)an den Actor
@Hary Das wird doch aber dann leicht asynchron/undefiniert ?
'n Ahmd,
toggle würde ich auch nicht nehmen wegen der Ansynchronität.
@Otto: Welche zweite Richtung? Dein zweites angepasstes Notify verarbeitet doch schon beide Zustände des ESPeasy. Eine umgekehrte Richtung (HM -> ESPeasy) ist doch gar nicht gewünscht?
@Pfriemler Ich bin mir da nicht sicher, ich habe es anders verstanden:
ZitatDer Schalter soll den Homematic HM-LC-Sw1PBU-FM steuern. Das Ganze soll wie ein Wechselschalter funktionieren, spricht: wird der Homematic angeschaltet soll der EASPeasy in der Lage sein ihm auszuschalten und umgekehrt.
Ich hatte es so verstanden, dass er den HM Aktor vom Esp mit einem Schalter schalten will, also bei Statusänderung des ESP Schalters ein toggle auf den HM Aktor. fertig
Zitatspricht: wird der Homematic angeschaltet soll der EASPeasy in der Lage sein ihm auszuschalten und umgekehrt.
Moin,
na dann haben wir drei jeder was anderes verstanden - mal sehen was wirklich gemeint war ;D
Ich bin noch nicht sicher was der ESP Schalter wirklich ist. Ein Sensor-Schalter oder ein Aktor-Schalter?
nd mit dem Begriff "Wechselschaltung" war ich mir auch etwas unsicher....
Gruß Otto
Zitat von: pepe_11 am 03 Februar 2019, 22:16:05
Wenn Dieser ON dann HM-LC-Sw1PBU-FM ON?-->ja
Wenn Dieser OFF dann HM-LC-Sw1PBU-FM OFF?-->ja
ich möchte einfach mit dem Esp Schalter den HM-LC-Sw1PBU-FM steuern.
Das liest sich eben wieder anders ... :)
Hallo, danke euch. ich werde eure Vorschläge heute Abend implementieren und Berichte das Ergebnis.
Gesendet von meinem ANE-LX1 mit Tapatalk
Zitat von: Pfriemler am 04 Februar 2019, 10:27:58
Das liest sich eben wieder anders ... :)
Am esp ist ein microschalter mit gpio 0 verbunden, der durch betätigen entweder den Status 0 oder 1 annehmen kann.
Gesendet von meinem ANE-LX1 mit Tapatalk
Zitat von: pepe_11 am 04 Februar 2019, 12:04:44
Am esp ist ein microschalter mit gpio 0 verbunden, der durch betätigen entweder den Status 0 oder 1 annehmen kann.
Gesendet von meinem ANE-LX1 mit Tapatalk
Schalter oder Taster ?
Zitat von: Otto123 am 04 Februar 2019, 12:12:57
Schalter oder Taster ?
Taster
Gesendet von meinem ANE-LX1 mit Tapatalk
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
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
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?
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
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
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.
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
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
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
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.
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!
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.