FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: chq am 02 Juni 2018, 10:56:27

Titel: ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: chq am 02 Juni 2018, 10:56:27
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Gear am 02 Juni 2018, 11:30:41
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.
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: chq am 02 Juni 2018, 16:09:19
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Gear am 02 Juni 2018, 16:11:47
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: chq am 02 Juni 2018, 16:20:07
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Gear am 02 Juni 2018, 16:29:21
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: chq am 02 Juni 2018, 16:37:58
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Gear am 02 Juni 2018, 17:04:15
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. :)
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: kadettilac89 am 02 Juni 2018, 19:21:15
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.

Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Gear am 02 Juni 2018, 19:23:22
Hallo kadettilac89,

das list hat er oben im 3. Post drin, zumindest vom ESP Device.
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: kadettilac89 am 02 Juni 2018, 19:49:31
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Gear am 02 Juni 2018, 20:05:01
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: kadettilac89 am 02 Juni 2018, 20:28:04
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.
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Gear am 02 Juni 2018, 20:31:07
Ich habe auf meinen S20 (und allen anderen SONOFFs) Tasmota drauf.
Nutze ESPEasy nur auf meinen selbstbau Geräten. :)

Hauptsache ihm ist geholfen. =D
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: chq am 02 Juni 2018, 21:42:12
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: kadettilac89 am 02 Juni 2018, 22:11:39
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Omega am 03 Juni 2018, 09:24:40
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

Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: chq am 03 Juni 2018, 09:54:07
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.
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: Omega am 03 Juni 2018, 10:40:01
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
Titel: Antw:ESP8266, S20, sonoff- bidirektionale Verbindung
Beitrag von: chq am 03 Juni 2018, 18:32:51
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