ESP8266, S20, sonoff- bidirektionale Verbindung

Begonnen von chq, 02 Juni 2018, 10:56:27

Vorheriges Thema - Nächstes Thema

chq

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
So einfach wie möglich, so kompliziert wie nötig

Gear

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.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

chq

#2
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
So einfach wie möglich, so kompliziert wie nötig

Gear

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
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

chq

#4
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
So einfach wie möglich, so kompliziert wie nötig

Gear

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
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

chq

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
So einfach wie möglich, so kompliziert wie nötig

Gear

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. :)
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

kadettilac89

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.


Gear

Hallo kadettilac89,

das list hat er oben im 3. Post drin, zumindest vom ESP Device.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

kadettilac89

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

Gear

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
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

kadettilac89

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.

Gear

Ich habe auf meinen S20 (und allen anderen SONOFFs) Tasmota drauf.
Nutze ESPEasy nur auf meinen selbstbau Geräten. :)

Hauptsache ihm ist geholfen. =D
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

chq

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
So einfach wie möglich, so kompliziert wie nötig