FHEM Forum

Verschiedenes => Bastelecke => ESP Familie => Thema gestartet von: Gear am 27 April 2018, 00:10:43

Titel: [Gelöst] ESPEasy Relais über MQTT von FHEM aus schalten
Beitrag von: Gear am 27 April 2018, 00:10:43
Guten Abend,

ich wollte ein paar Schalter über MQTT schalten lassen, da mehr wie ein Device auf das Topic lauscht, will da nicht unnötig Traffic erzeugen.

Ich finde, der Weg "ESP > Fhem (via ESPEasy Device) > MQTT > Andere Geräte" ist sehr unnötig.
Würde das gerne so machen "ESP > MQTT > Alle die nen Sub sehen es".

Also ich habe mal zum testen ein MQTT_Device angelegt, hier kann ich lauschen und mir anderen Geräten kann ich auch lauschen.
Nun kann ich aber in dem Fall das Relais nicht aus FHEM schalten, bzw. ich habe keine Ahnung wie ich mit dem ESP auf ein Topic lauschen kann.

MQTT Defice:
defmod WZ.TV MQTT_DEVICE
attr WZ.TV DbLogExclude .*
attr WZ.TV IODev mqtt
attr WZ.TV eventMap 1:ON 0:OFF
attr WZ.TV publishSet ON OFF /SH/W/WZ/MCU/cmnd/Rel1
attr WZ.TV stateFormat state
attr WZ.TV subscribeReading_state /SH/W/WZ/MCU/stat/Rel1
attr WZ.TV webCmd ON:OFF


Das Topic im MQTT Broker vom ESP sieht so aus:
/SH/W/WZ/MCU/stat/Rel1 0
/SH/W/WZ/MCU/stat/Rel1 1


Das Topic im MQTT Broker vom FHEM sieht so aus:
/SH/W/WZ/MCU/cmnd/Rel1 0
/SH/W/WZ/MCU/cmnd/Rel1 1


Im ESP habe ich folgendes unter Controller eingestellt:
Controller Subscribe: /SH/W/WZ/MCU/cmnt/#
Controller Publish: /SH/W/WZ/MCU/stat/%valname%

Der Publish vom ESP geht, wenn ich es per URL den Status ändere, das erkennt FHEM.
Aber der ESP lauscht eben nicht.
Das ich was falsch eingestellt habe, will ich nun auch nicht ausschließen, da ich mit "MQTT > ESPEasy" keine Ahnung habe und auch nicht so füdig geworden bin.
Ich weiß, man kann ein Device anlegen und dort dann bis zu 4 MQTT Topis belauschen, doch dann muss ich mit Rules arbeiten, will ich aber für so etwas nicht zwingend.


Ich hoffe ihr könnt mir helfen!

Grüße
Gear
Titel: Antw:ESPEasy Schalter über MQTT von FHEM aus schalten
Beitrag von: mark79 am 27 April 2018, 11:03:52
Hallo, versuch es mal mit:
attr WZ.TV publishSet 1 0 /SH/W/WZ/MCU/cmnd/Rel1

Damit sollte das schalten gehen. ESPeasy kennt nur 0/1.
Ich würde lieber Tasmota nehmen, da geht on/off und es ist einfacher einzurichten.


Viele Grüße
Mark
Titel: Antw:ESPEasy Relais über MQTT von FHEM aus schalten
Beitrag von: Gear am 27 April 2018, 12:48:43
Hallo @mark79,

ich hatte das wie du es vorgeschlagen hast versucht, geht dennoch nicht.

Über dieses attr wandelt er es um.
attr WZ.TV eventMap 1:ON 0:OFF
Wenn ich ON Drücke wird es als 1 an MQTT übertragen, bei OFF als 0.

Daran liegt es nicht, es muss glaub am ESP selbst liegen, der nicht zu lauschen scheint, bzw. falsch zu lauschen scheint.
Titel: Antw:ESPEasy Relais über MQTT von FHEM aus schalten
Beitrag von: mark79 am 27 April 2018, 14:25:55
Komisch...  ??? bei mir funktioniert das, ich spreche direkt den gpio an (publishSet).
Hier mal als ganzes:

defmod WZ_Lichtschalter MQTT_DEVICE
attr WZ_Lichtschalter DbLogExclude .*
attr WZ_Lichtschalter IODev myBroker
attr WZ_Lichtschalter devStateIcon ON:FS20.on OFF:FS20.off
attr WZ_Lichtschalter eventMap 1:ON 0:OFF
attr WZ_Lichtschalter group Licht
attr WZ_Lichtschalter icon light_ceiling
attr WZ_Lichtschalter publishSet 1 0 /WZ_Lichtschalter/gpio/12
attr WZ_Lichtschalter room 3_Wohnzimmer
attr WZ_Lichtschalter stateFormat state
attr WZ_Lichtschalter subscribeReading_state /WZ_Lichtschalter/Relay/state
attr WZ_Lichtschalter webCmd ON:OFF


MQTT Ausgabe:
/WZ_Lichtschalter/gpio/12 1
/WZ_Lichtschalter/Relay/state 1

/WZ_Lichtschalter/gpio/12 0
/WZ_Lichtschalter/Relay/state 0


Mit dem Device Namen (Relay) in ESPeasy gehts bei mir auch nicht. Habe das gerade ausprobiert:
publishSet 1 0 /WZ_Lichtschalter/cmnd/Relay

EDIT:
Die Controller Settings in ESPeasy stehen bei mir auf OpenHAB MQTT:
Controller Subscribe:   /%sysname%/#
Controller Publish:   /%sysname%/%tskname%/%valname%
Titel: Antw:ESPEasy Relais über MQTT von FHEM aus schalten
Beitrag von: Gear am 27 April 2018, 14:41:23
Ah, okey, dann scheint mein Sub im ESP nicht zu stimmen!
Muss ich nachher mal testen, wenn ich wieder daheim bin.

Vielen Dank, ich glaube, dass dein Post mir da helfen kann.
Mein Sub hatte ich in Verzweiflung dann abgeändert...

Ich habe die Relais erst mal so benannt, da ich vor dem Anschließen noch nicht gewusst habe, was später wie angeschlossen wird.

Ich melde mich, wenn ich das getestet habe.


Danke! =)
Titel: Antw:ESPEasy Relais über MQTT von FHEM aus schalten
Beitrag von: Gear am 27 April 2018, 19:15:54
Oh man, ich hab den Fehler gefunden...

Das man die GPIOs schalten muss, da wäre ich z.B. nie drauf gekommen, man muss aber auch den ESP nach dem einstellen des Contoller (MQTT Sub) neustarten, damit der das Aktiviert... =D

Vielen Dank!!
Titel: Antw:[Gelöst] ESPEasy Relais über MQTT von FHEM aus schalten
Beitrag von: mark79 am 27 April 2018, 20:25:35
Freut mich das es jetzt klappt. :)

ESPeasy ist manchmal zickig und sehr komplex, wenn du keine Rules benötigst, würde ich lieber die Tasmota FW nehmen.
Bei den meisten meiner Sonoffs habe ich diese FW drauf und diese ist viel einfacher einzurichten.

Hier ein List für Tasmota:
defmod WZ_Stehlampe MQTT_DEVICE
attr WZ_Stehlampe DbLogExclude .*
attr WZ_Stehlampe IODev myBroker
attr WZ_Stehlampe WZ_Stehlampe WZ_TV_Abends
attr WZ_Stehlampe devStateIcon ON:FS20.on OFF:FS20.off
attr WZ_Stehlampe group Licht
attr WZ_Stehlampe icon light_floor_lamp
attr WZ_Stehlampe publishSet ON OFF cmnd/4ch/POWER4
attr WZ_Stehlampe room 3_Wohnzimmer
attr WZ_Stehlampe stateFormat state
attr WZ_Stehlampe subscribeReading_state stat/4ch/POWER4
attr WZ_Stehlampe webCmd ON:OFF



Viele Grüße
Mark
Titel: Antw:[Gelöst] ESPEasy Relais über MQTT von FHEM aus schalten
Beitrag von: Gear am 28 April 2018, 14:17:58
Ich hab diverse Dinge dran am MCU, Serielle Geräte und einen Stromzähler via S0.
Und Rules nutze ich auch, aber nicht dafür.