Hallo,
hat mir jmd. evtl. einen guten Link, der die Erstellung bidirektionaler Verbindungen zwischen ESP8266 und FHEM erklärt?
Es geht mir darum, dass die Status der WLAN-Steckdosen in FHEM auch dann korrekt angezeigt werden sollen, wenn die Babyfingerchen mal wieder an den S20-Tasten rumgespielt haben. ;D
Gruß Chris
Moin Chris,
sprich, du willst in FHEM immer den Status haben, auch wenn direkt am Device ON/OFF gedrückt wird?
Gib mal "list DeviceName" ein und stell das mit Code einfügen (#) rein, damit wir was sehen. :)
Und DeviceName bitte abändern. ;)
Grüße
Gear
edit:
Bitte sag mal ob du ESPEasy oder Tasmota nutzt.
Ja, genau. Folgende Frage stelle ich mir gleich zu Beginn:
Ist es sinniger, wenn der Knopf an der S20 gedrückt wird,
a) den Schaltvorgang des Relais innerhalb der S20 zu "organisieren" und den erfolgreichen Schaltvorgang des Relais an Fhem zu melden, oder
b) das drücken des Knopfes an Fhem zu kommuniziern, damit Fhem dann das Relais dazu veranlasst umzuschalten?
Im Falle von b) würde der Knopf natürlich nicht mehr funktionieren, wenn sich die S20 nicht im Wlan befinden würde.
Bei meinen S20 ist ESPEasy installiert.
Internals:
CFGFN
DEF xxx.xxx.xxx.xxx 80 espBridge ug_Relay
ESP_BUILD 20000
ESP_BUILD_GIT v2.0-20180322
ESP_BUILD_NOTES - Mega
ESP_NODE_TYPE_ID 17: ESP Easy Mega
ESP_SLEEP 0
ESP_UNIT 1
ESP_VERSION 2
HOST xxx.xxx.xxx.xxx
IDENT ug_Relay
INTERVAL 300
IODev espBridge
LASTInputDev espBridge
MSGCNT 68
NAME ug01
NOTIFYDEV global
NR 35
NTFY_ORDER 50-ESPEasy_ug_Relay
PORT 80
STATE absent
SUBTYPE device
TYPE ESPEasy
VERSION 1.39
espBridge_MSGCNT 68
espBridge_TIME 2018-06-02 15:13:56
READINGS:
2018-06-02 15:13:56 Relay off
2018-06-02 11:35:10 State on
2018-06-02 16:06:49 presence absent
2018-06-02 16:06:49 state absent
helper:
fpc 1527880356
pm:
Encode 1
JSON 1
received:
Attributes:
IODev espBridge
Interval 300
group ESPEasy Device
presenceCheck 1
readingSwitchText 1
setState 3
Gruß Chris
Edit: Ach ja, da ich es mit dem o.a. Device nicht hinbekommen habe per webCmd funktionierende Tasten für die Weboberfläche zu erstellen, bin ich den Umweg über einen dummy gegangen:
Internals:
CFGFN
NAME ug01switch
NR 1045
STATE on
TYPE dummy
READINGS:
2018-06-02 16:12:59 state on
Attributes:
fhem_widget_channels [{"allowed_values":["off","on"],"locations":["WIDGET","APP","WGRID"],"controlled_attribute":"STATE"}]
room UG
webCmd on:off
Ich kann dir bei Tasmota und ESPEasy helfen.
Es ist beides machbar, wobei Tasmota angenehmer ist als ESPEasy für SONOFF Geräte.
Wenn du keine Rules nutzt kann ich eher Tasmota empfehlen.
Ansonsten machen wir das man per ESPEasy, ich warte auf deine Antwort. =D
Cool. :)
Da bei der von mir erwähnten Variante a) ja bereits Rules zu setzen wären (wenn ich das richtig durchdacht habe) und ich mir die Wahl zwischen a) und b) (noch) offen lassen möchte, würde ich das Ganze zunächst gerne in ESPEasy angehen wollen.
Gruß Chris
Ich schreib dir gleich mal das zusammen, kann etwas dauern, daic h noch ein paar Sachen nebenbei mache, sry schonmal dafür.
Nun die Frage, du machst das ja über die ESPBridge, du hast nicht zufällig MQTT im einsatz auf deinem FHEM Server?
Ist darüber etwas angenehmer, finde zumindest ich.
Ich nutze gerne die ESPBridge für Sensoren und alles was man schalten kann über MQTT. =D
Eilt nicht. Gut Ding will Weile haben. ;)
Bin Fhem-mäßig erst (von Arduino aus kommend) eingestiegen und las an mehreren Stellen, dass "man" froh sei die ESPEasy-Einbindung nun nicht (mehr) über Moskito und MQTT fahren zu müssen, sondern komfortabel über ein Modul/Softwarebaustein.
Da ich keine Kenntnisse bzgl MQTT und Moskito habe kann ich nicht sagen, was besser und/oder sinnvoller ist.
Gruß Chris
Also ich gehe davon aus, du weißt wie du die Rules machen musst, damit der Tastendruck am S20 das Relais schaltet? (Tasmota musst du nor den S20 Wählen und fertig) =P
Ich nutze für SONOFFs immer Tasmota und alles was ich selber baue, da kommt ESPEasy zum Einsatz.
Mit Tasmota ist es eben nur über MQTT möglich, MQTT ist ansich aber auch nichts, was zu komplex ist, der vermittelt nur die "Nachrichten", bzw ist die Schnittstelle zwischen FHEM und dem Tasmota Device.
Ich würde es über a machen, da wenn der Server mal off ist oder das WLAN nicht da ist, dann kannst du es immernoch schalten.
So, du musst nurnoch den GPIO ändern, also gpio 13 zu dem gpio, der da verwendet wird.
Hab das in meinem System mit einem vorhanden ESP8266 getestet, sollte bei dir hoffentlich gehen.
Ggf. musst du noch attr ug01 stateFormat .... abändern, das ReadingsVal von "State" auf "Relay", musst du testen.
defmod ug01 ESPEasy XXX.XXX.XXX.XXX 80 ESPBridge ug_Relay
attr ug01 IODev ESPBridge
attr ug01 Interval 300
attr ug01 eventMap /gpio 13 1:on/gpio 13 0:off
attr ug01 group ESPEasy Device
attr ug01 presenceCheck 1
attr ug01 readingSwitchText 1
attr ug01 room ESPEasy
attr ug01 setState 3
attr ug01 stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"State","")}
attr ug01 webCmd on:off
Sag bescheid, obs geht oder nicht. :)
Zitat von: chq am 02 Juni 2018, 10:56:27
Es geht mir darum, dass die Status der WLAN-Steckdosen in FHEM auch dann korrekt angezeigt werden sollen, wenn die Babyfingerchen mal wieder an den S20-Tasten rumgespielt haben. ;D
allgemeiner Link aus dem Wiki
https://wiki.fhem.de/wiki/Sonoff#ESPEasy_einstellen
zusätzlich noch ein Blog von Otto
https://heinz-otto.blogspot.com/2017/01/esp8266-in-fhem.html
wenn du damit den STatus nicht in Fhem siehst passt was nicht. In dem Falle mal ein list sowohl von der espbridge als auch von einer S20. Ggf. Screenshots der Config auf der STeckdose selber. Dann kann ich vergleichen.
Hallo kadettilac89,
das list hat er oben im 3. Post drin, zumindest vom ESP Device.
Zitat von: Gear am 02 Juni 2018, 19:23:22
Hallo kadettilac89,
das list hat er oben im 3. Post drin, zumindest vom ESP Device.
Da ist kein STateformat o. ä. drin. So sieht es bei mir aus, und der Status kommt an bzw. wird übertragen.
defmod ESP_S20_1 ESPEasy 192.168.0.205 80 espBridge ESP_S201_S201
attr ESP_S20_1 IODev espBridge
attr ESP_S20_1 Interval 300
attr ESP_S20_1 alias ESP_LED
attr ESP_S20_1 devStateIcon on:ios-on-blue:off off:ios-off:on absent:10px-kreis-rot:statusRequest .*:ios-NACK:check
attr ESP_S20_1 eventMap /gpio 12 on:on/gpio 12 off:off/status gpio 12:check//longpulse 12 on:on-for-timer/longpulse 12 off:off-for-timer/
attr ESP_S20_1 pollGPIOs 12
attr ESP_S20_1 presenceCheck 1
attr ESP_S20_1 readingSwitchText 1
attr ESP_S20_1 stateFormat {ReadingsVal($name,"GPIO12","")}
attr ESP_S20_1 webCmd on:off
Zitat von: kadettilac89 am 02 Juni 2018, 19:49:31
Da ist kein STateformat o. ä. drin. So sieht es bei mir aus, und der Status kommt an bzw. wird übertragen.
Ich hatte ihm hier ein komplettes ESP Device zusammengestellt.
So wie ich das bei mir auch nutze. =D
https://forum.fhem.de/index.php/topic,88324.msg807730.html#msg807730
Zitat von: Gear am 02 Juni 2018, 20:05:01
Ich hatte ihm hier ein komplettes ESP Device zusammengestellt.
So wie ich das bei mir auch nutze. =D
https://forum.fhem.de/index.php/topic,88324.msg807730.html#msg807730
Hinweis, du schaltest GPIO13 in deinem Beispiel obwohl S20 GPIO12 schaltet. Mag sein dass es bei dir auch so funktioniert, setzt aber entsprechende Rule voraus. TE kann ja beide mal testen.
Ich habe auf meinen S20 (und allen anderen SONOFFs) Tasmota drauf.
Nutze ESPEasy nur auf meinen selbstbau Geräten. :)
Hauptsache ihm ist geholfen. =D
Vielen Dank Euch allen für die vielen Infos!
Bin am abarbeiten und hänge momentan an "defmod".
Ich will verstehen, was das macht..
Der jeweils aktuelle Zustand des Relais, wenn an der S20 rumgespielt wird, wird mir bereits von Fhem angezeigt/aktualisiert.
Gruß Chris
Zitat von: chq am 02 Juni 2018, 21:42:12
Bin am abarbeiten und hänge momentan an "defmod".
https://wiki.fhem.de/wiki/Trick_der_Woche#defmod
legt ein device an wenn es noch nicht existiert, ansonsten ändert es ein bestehendes. Ist default wenn man sich in der rawdefinition was ansieht.
Was raw definition ...
https://wiki.fhem.de/wiki/Import_von_Code_Snippets
Ich möchte jetzt den Thread nicht kapern, glaube aber, dass das vom Thema auch hierher passt. Ansonsten bitte ich die Experten, hier https://forum.fhem.de/index.php/topic,87511.0.html (https://forum.fhem.de/index.php/topic,87511.0.html) zu antworten.
Auch mir geht es um die direkte Rückkopplung, ob direkt am Device (bei mir ein Sonoff Touch) geschaltet wurde oder nicht. Ich habe allerdings für dieses Device zum 1. mal Tasmota (5.13.1) geflashed.
In der Regel schalte ich meine Lampe über einen Bewegungsmelder in Verbindung mit einem DOIF immer nur für eine kurze Zeit (on-for-timer) ein.
Wenn ich aber am Löten bin, bewege ich mich manchmal ,,zu wenig" und das Licht geht aus. Dafür würde ich gerne den Touch über ein längeres ,,Drücken" permanent einschalten können. Ich bekomme es aber nicht hin, dass irgendwo ein ,,hold" auftaucht, dass ich dann abfangen und auswerten könnte.
Die verschiedenen SetOptions im Tasmota Wiki habe ich gesehen, komme aber nicht wirklich klar damit. ,,SetOption13 off" alleine reicht nicht. Als MQTT-Anfänger fehlt mir zusätzlich die Vorstellung, was ich auf dieser Ebene zu berücksichtigen hätte.
Hier noch ein List von meinem Device:
Internals:
IODev MyBroker
NAME KG.Flur_2.Deckenlicht
NR 979
STATE OFF
TYPE MQTT_DEVICE
qos *:1
retain *:1
Helper:
DBLOG:
state:
myFHEMdb:
TIME 1528010339.72996
VALUE OFF
myFHEMdb_LT:
TIME 1528010339.75816
VALUE OFF
READINGS:
2018-06-03 09:18:59 state OFF
2018-06-03 09:18:59 transmission-state incoming publish received
message_ids:
publishSets:
:
topic cmnd/KG.Flur_2.Deckenlicht/POWER
values:
on
off
sets:
off
on
subscribe:
stat/KG.Flur_2.Deckenlicht/POWER
subscribeExpr:
^stat\/KG.Flur_2.Deckenlicht\/POWER$
subscribeQos:
stat/KG.Flur_2.Deckenlicht/POWER 0
subscribeReadings:
stat/KG.Flur_2.Deckenlicht/POWER:
cmd
name state
Attributes:
DbLogExclude transmission-state
IODev MyBroker
devStateIcon OFF:FS20.off:on ON:FS20.on:off
icon light_ceiling
publishSet on off cmnd/KG.Flur_2.Deckenlicht/POWER
qos 1
retain 1
room Keller
stateFormat state
subscribeReading_state stat/KG.Flur_2.Deckenlicht/POWER
useSetExtensions 1
webCmd on:off
Bin für jede Unterstützung dankbar
LG
Holger
Guten Morgen,
also ich habe mittlerweile meine S20 so konfiguriert (https://wiki.fhem.de/wiki/Sonoff#ESPEasy_einstellen (https://wiki.fhem.de/wiki/Sonoff#ESPEasy_einstellen)), wie von kadettilac89 hier (https://forum.fhem.de/index.php/topic,88324.msg807765.html#msg807765 (https://forum.fhem.de/index.php/topic,88324.msg807765.html#msg807765))beschrieben.
Der Name der beiden Devices "Key" und "Relay" innerhalb von ESPEasy ist wie in der Anleitung beschrieben beidesmal "PUMP".
Da ich das umgebaut habe, konnte ich nun leider die von Dir vorgeschlagen Attribute nicht mehr so umsetzen, wie von Dir hier (https://forum.fhem.de/index.php/topic,88324.msg807730.html#msg807730 (https://forum.fhem.de/index.php/topic,88324.msg807730.html#msg807730))vorgeschlagen, Gear.
Mein einziges Problem ist nun, dass ich es nicht hinbekomme, dass per webCmd (So macht man das doch, oder?) gezielt das Relay über die Fhem Weboberfläche geschaltet werden kann.
Wenn ich einfach nur webCmd "setze", scheint Fhem nachvollziehbar nicht klar zu sein, was zu schalten ist und gibt eine Fehlermeldung aus.
Wie kann man das denn definieren? Ist hierfür eventMap zuständig?
Gruß Chris
Internals:
CFGFN
DEF XXX.XXX.XXX.XXX 80 espBridge ug_PUMP
ESP_BUILD 20000
ESP_BUILD_GIT v2.0-20180322
ESP_BUILD_NOTES - Mega
ESP_NODE_TYPE_ID 17: ESP Easy Mega
ESP_SLEEP 0
ESP_UNIT 1
ESP_VERSION 2
HOST XXX.XXX.XXX.XXX
IDENT ug_PUMP
INTERVAL 300
IODev espBridge
LASTInputDev espBridge
MSGCNT 33
NAME ESPEasy_ug_PUMP
NOTIFYDEV global
NR 2802
NTFY_ORDER 50-ESPEasy_ug_PUMP
PORT 80
STATE absent
SUBTYPE device
TYPE ESPEasy
VERSION 1.39
espBridge_MSGCNT 33
espBridge_TIME 2018-06-03 09:21:24
READINGS:
2018-06-02 22:17:53 Key off
2018-06-03 09:21:24 Relay off
2018-06-03 09:50:20 presence absent
2018-06-03 09:50:20 state absent
helper:
fpc 1527968061
pm:
Encode 1
JSON 1
received:
Attributes:
IODev espBridge
Interval 300
group ESPEasy Device
presenceCheck 1
readingSwitchText 1
room ESPEasy
setState 3
Edit:
Zitat von: kadettilac89 am 02 Juni 2018, 22:11:39Ist default wenn man sich in der rawdefinition was ansieht.
Diesen Satz verstehe ich leider nicht.
Bei meinem SONOFF Basic habe ich das so gelöst:
Internals:
DEF 192.168.0.51 80 espBridge SONOFF_1
HOST 192.168.0.51
IDENT SONOFF_1
INTERVAL 300
IODev espBridge
LASTInputDev espBridge
MSGCNT 1
NAME ESPEasy_SONOFF_1
NOTIFYDEV global
NR 870
NTFY_ORDER 50-ESPEasy_SONOFF_1
PORT 80
STATE absent
SUBTYPE device
TYPE ESPEasy
VERSION 1.39
WARNING 192.168.0.51: Keine Route zum Zielrechner
espBridge_MSGCNT 1
espBridge_TIME 2018-06-03 10:37:09
Helper:
DBLOG:
presence:
myFHEMdb:
TIME 1528015029.36809
VALUE absent
state:
myFHEMdb:
TIME 1528015026.3005
VALUE off
READINGS:
2017-11-07 22:37:02 Key off
2018-03-19 09:33:30 RSSI -77
2018-04-12 17:59:11 Relay off
2018-03-19 08:57:38 Uptime 53.64
2018-06-03 10:37:09 presence absent
2018-06-01 15:39:01 state opened
helper:
fpc 1527860355.25946
pm:
Encode 1
JSON 1
received:
Attributes:
IODev espBridge
Interval 300
devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off
eventMap /longpulse 12 on:on-for-timer:textField/longpulse 12 off:off-for-timer:textField/gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/statusRequest:status gpio 12/
group ESPEasy Device
icon hue_filled_outlet
presenceCheck 1
readingSwitchText 1
room Arbeitszimmer,ESPEasy
setState 0
stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Relay","")}
webCmd :
LG
Holger
Bzgl. der visuellen Anzeigen der Fhem Weboberfläche scheint nun alles gut zu sein.
Worüber ich mir noch immer nicht sicher bin ist die Frage, welche Zustände ich vom ESP aus in Richtung Fhem schicken lassen soll. Eigentlich kommen nur zwei Varianten in Frage:
a) Nur den Zustand des Relais
b) Den Zustand des Relais und der Taste
Eigentlich müsste es doch reichen, sich den Zustand des Relais schicken zu lassen, oder?
Gruß Chris