FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: slor am 05 April 2017, 16:04:06

Titel: Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 05 April 2017, 16:04:06
Hallo Zusammen,

ich habe heute meinen ersten Sonoff Basic mit der Tasmota Firmware in Betrieb genommen.
Leider hakt es mit der Anbindung an FHEM und/oder meinem Verständnis.

Folgendes ist konfiguriert:

Sonoff Firmware:
MQTT Topic: sonoff/basic_01
Host -> mein MQTT Server

MQTT:
Mosquito 3.1.1 installiert und gestartet
MQTT Broker definiert und verbunden
Name: MQTTBroker

MQTT Device:
Name: Sonoff_Basic_01
IOdev: MQTTBroker

defmod Sonoff_Basic_01 MQTT_DEVICE
attr Sonoff_Basic_01 IODev MQTTBroker
attr Sonoff_Basic_01 devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON
attr Sonoff_Basic_01 icon hue_filled_br30
attr Sonoff_Basic_01 publishSet ON OFF cmnd/sonoff/basic_01/POWER/set
attr Sonoff_Basic_01 room MQTT
attr Sonoff_Basic_01 stateFormat transmission-state
attr Sonoff_Basic_01 subscribeReading_Licht stat/sonoff/basic_01/POWER
attr Sonoff_Basic_01 subscribeReading_Status tele/Sonoff_Basic_01/STATUS
attr Sonoff_Basic_01 subscribeReading_state stat/sonoff/basic_01/POWER/set
attr Sonoff_Basic_01 webCmd ON:OFF

Wenn ich nun versuche zu schalten sehe ich auf der CMD des MQTT Servers folgendes:
Client mosqsub/31060-cubietruc received PUBLISH (d0, q0, r0, m0, 'cmnd/sonoff/basic_01/POWER/set', ... (2 bytes))
cmnd/sonoff/basic_01/POWER/set ON
Client mosqsub/31060-cubietruc received PUBLISH (d0, q0, r0, m0, 'stat/sonoff/basic_01/RESULT', ... (21 bytes))
stat/sonoff/basic_01/RESULT {"Command":"Unknown"}

Auf dem Gerät:
14:59:07 MQTT: stat/sonoff/basic_01/RESULT = {"Command":"Unknown"}
Wo ist der Fehler?
Habe versucht das 1:1 (nur mit anderen Namen) aus dem Wiki nachzubauen. Dort sind die Screenshots anders als der Text etc. Mittlerweile ist mein Beispiel auch angepasst. Ich komme einfach nicht weiter.

Achso, wenn ich auf dem Device selbst schalte, kommt folgendes am MQTT Server an:
stat/sonoff/basic_01/RESULT {"POWER":"OFF"}
Client mosqsub/31060-cubietruc received PUBLISH (d0, q0, r0, m0, 'stat/sonoff/basic_01/POWER', ... (3 bytes))
stat/sonoff/basic_01/POWER OFF
Client mosqsub/31060-cubietruc received PUBLISH (d0, q0, r0, m0, 'stat/sonoff/basic_01/RESULT', ... (14 bytes))
stat/sonoff/basic_01/RESULT {"POWER":"ON"}
Client mosqsub/31060-cubietruc received PUBLISH (d0, q0, r0, m0, 'stat/sonoff/basic_01/POWER', ... (2 bytes))
stat/sonoff/basic_01/POWER ON

Hoffe das langt an Infos.
Btw, kann ich die MQTT Daten irgendwie mit einem Passwort versehen / verschlüsseln?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem probleme
Beitrag von: eisler am 05 April 2017, 16:47:39
Username und Passwort kann für den MQTT Broker angegeben werden, Verschlüsselung gibt es noch nicht.

define <name> MQTT <ip:port> [<username>] [<password>]
Grüße
Stephan
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem probleme
Beitrag von: slor am 05 April 2017, 17:07:12
Danke! Was muss ich am Server selbst einstellen?
Hat da jemand best practices? Soll ich den Mosquito unter einem eigenen user laufen lassen?

Das Thema ist eh zweitrangig. Möchte mein Device erst mal ans laufen bekommen. Dann kann ich immer noch USER und PW einbauen.

Sonst noch jemand Tips zu meinem eigentlichen Problem
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 05 April 2017, 17:34:52
In Punkto Installation / Konfiguration des Mosquitto Servers hab ich was gefunden. Das werd ich bei Gelegenheit umsetzen.
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-the-mosquitto-mqtt-messaging-broker-on-debian-8 (https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-the-mosquitto-mqtt-messaging-broker-on-debian-8)

Evtl. noch ein Punkt für die FAQ.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: Rince am 05 April 2017, 20:01:38
Danke. Hab nen Link auf diesen Thread unter Installation eingefügt. Ist das so ok?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 05 April 2017, 20:46:33
Sehr gut! Danke.
Kann sich einer der MQTT Pros mal meine config ansehen?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: bartman121 am 05 April 2017, 21:03:49
Beim publishSet bitte das letzte set löschen
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 05 April 2017, 21:22:23
hat leider nichts geholfen. Habe das set gelöscht und /set. Ging beides nicht.

Hier einmal das Resultat vom schalten via Fhem mit dem Fehler und direkt am Gerät.

Client mosqsub/9733-cubietruck received PUBLISH (d0, q0, r0, m0, 'cmnd/sonoff/basic_01/POWER', ... (2 bytes))
cmnd/sonoff/basic_01/POWER ON
Client mosqsub/9733-cubietruck received PUBLISH (d0, q0, r0, m0, 'stat/sonoff/basic_01/RESULT', ... (21 bytes))
stat/sonoff/basic_01/RESULT {"Command":"Unknown"}
Client mosqsub/9733-cubietruck received PUBLISH (d0, q0, r0, m0, 'stat/sonoff/basic_01/RESULT', ... (14 bytes))
stat/sonoff/basic_01/RESULT {"POWER":"ON"}
Client mosqsub/9733-cubietruck received PUBLISH (d0, q0, r0, m0, 'stat/sonoff/basic_01/POWER', ... (2 bytes))
stat/sonoff/basic_01/POWER ON

Sonst noch Ideen?

Im Anhang noch zwei Screenshots vom Device.

Im Wiki steht das wie folgt. Das verseht ich nicht so ganz. Und es funktioniert bei mir auch nicht. https://wiki.fhem.de/wiki/Sonoff#MQTT_Server_einrichten (https://wiki.fhem.de/wiki/Sonoff#MQTT_Server_einrichten)

### 2. FHEM Device mit MQTT verbinden ###
define Sonoff_Switch MQTT_DEVICE
attr Sonoff_Switch IODev myBroker
attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON
attr Sonoff_Switch icon hue_filled_br30
attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set
attr Sonoff_Switch room MQTT
attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER
attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR
attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS
attr Sonoff_Switch webCmd ON:OFF
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 06 April 2017, 16:43:45
Ich hab noch ein wenig rumprobiert.
Immerhin bekommt Fehem den Status nun mit, wenn ich am Device selbst schalte. Allerdings kann ich noch immer nicht über Fhem schalten.

Könnte mal bitte jemand eine funktionierende Anleitung für Sonoff Posten? Das im Wiki funktioniert (bei mir) nicht.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 07 April 2017, 10:29:16
Ich habe noch weiter getestet.
Wenn ich auf dem Device selbst den Topic von sonoff/basic_01 auf basic_01 ändere kann ich ihn ohne Probleme schalten.
Habe ich mit dem Topic nun was verwechselt? Darf ich dort keine / einbauen?
Wie baue ich dann die schönen Strukturen mit mehreren / auf?

Wie macht ihr das?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: Rince am 07 April 2017, 11:27:04
Ich habe zwar diverse sonoff Geräte, die sind aber noch verpackt.
Und im Moment eine große ToDo Liste.

Ich brauche noch Zeit, dann bastle ich gerne selbst rum.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 07 April 2017, 13:42:16
So, Rückmeldung aus dem Tasmota Forum.
/ ist im Topic von Sonoff Geräten nicht supported. Also nur den Device Namen eintragen.

Damit ist die Diskussion mit der Namenskonvention in diesem Umfeld wohl erst mal hinfällig.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: Rince am 07 April 2017, 14:51:33
Oh :(
Das ist aber nicht Sinn der Sache.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: Rince am 07 April 2017, 14:59:24
Ah ok,
ich habe den Fehler.
https://github.com/arendst/Sonoff-Tasmota/issues/340
Das ist deine Frage, oder?

Die Antwort ist prinzipiell richtig.
/ ist ein Topic Seperator

Genau genommen ist alles zwischen zwei / / ein Topic. Ich verstehe nur nicht, warum sie nicht einfach den ganzen Topic Tree als String benutzen.

Was brauchst du denn von Tasmota alles?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 07 April 2017, 15:18:30
ich wollte eigentlich nur via Topic die Geräte separieren.
Ich mach das jetzt aber in Fhem, indem ich die Geräte wie die HM Geräte benennen. Z.b. EG_WZ_TH1

Dachte das soll über die Topics in MQTT auf dem Device gemacht werden. z.B. eg/wz/th1

Entweder hab ich das Konzept von MQTT nicht verstanden oder es wird von der Tasmota Firmware nicht umgesetzt.

Ist übriges mein Beitrag.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: Rince am 07 April 2017, 15:26:57
Ich wüßte jetzt nicht, wo bei einem Switch mit ein oder 2 Sensoren der Vorteil liegt, es wirklich getrennt zu behandeln. Aber ich kenne den Code auch nicht.
I.d.R. sollte es in unserem Fall ausreichen, den ganzen Topic Tree als 1 String zu betrachten.

Daher nochmals die Frage, was du mit deinem sonoff möchtest.

Vielleicht ist das so echt schneller den Code selber zu schreiben auf Grundlage von Pf@nnes Framework.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 07 April 2017, 15:41:22
Ich will die Dinger einfach nur schalten können. MQTT ist für mich nur ein "notwendiges übel"
Ich mach jetzt ne ganz flache Hierarchie und angel mir aus dem MQTT String raus was ich brauche.

Ich dachte ich muss da was komplexes mit vielen / aufbauen... aber scheint nicht nötig zu sein :-)

Also sämtliche Logik raus aus MQTT und in Fhem abbilden.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 07 April 2017, 16:44:56
so, hier meine finale (erst mal) version mit der es läuft: (Für Sonoff basic und S20)

define Sonoff_S20_01 MQTT_DEVICE
attr Sonoff_S20_01 IODev MQTTBroker
attr Sonoff_S20_01 devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON Offline:rc_BLUE:OFF
attr Sonoff_S20_01 publishSet On Off cmnd/S20_01/POWER
attr Sonoff_S20_01 subscribeReading_state stat/s20_01/POWER
attr Sonoff_S20_01 subscribeReading_presence tele/s20_01/LWT
attr Sonoff_S20_01 qos at-least-once
attr Sonoff_S20_01 retain 1
attr Sonoff_S20_01 room MQTT
attr Sonoff_S20_01 stateFormat {ReadingsVal($name,"presence","") eq "Offline" ? "Offline" : ReadingsVal($name,"state","")
attr Sonoff_S20_01 webCmd On:Off

devStateIcon, retain, qos, room sind nicht zwingend nötig.
Genauso das SubscribeReading auf LWT. Damit kann man sehen ob das Device noch aktiv mit dem Broker kommuniziert / erreichbar ist. Durch stateFormate und devStateIcon wird das Icon bei nicht Erreichbarkeit blau
IODev wird automatisch hinzugefügt. Es erschließt sich mir nicht warum als Attribut. Hab das mal gelöscht. Kam nicht wieder und hat alles noch funktioniert.

Was mit auch fehlt ist eine clear readings funktion. Vom rumbasteln sind viele Readings da. Die kann ich nicht löschen.

Evlt. könnte man global definieren, dass man überall retain und qos setzen möchte. das spart tipp arbeit.
Auch könnte man evlt. automatisch vom publishset ein subscribe reading auf state erstellen.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: Rince am 07 April 2017, 18:42:37
Deletereading <Gerätename> <ZuLöschendesReading>
Hast du ausprobiert?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 07 April 2017, 19:40:38
Haha, zu einfach... Funzt.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: Rince am 07 April 2017, 20:55:18
Ich hab dein final - Posting in die FAQ aufgenommen :)

Ist ok?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: slor am 08 April 2017, 09:04:29
Klar gern. Habs ja gepostet, damit alle was davon haben.
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: mynameisfu am 09 August 2017, 21:57:18
gude
erst mal danke es funktioniert alles bis auf das ich den Status wechsel farblich angezeigt bekomme. bei mir steht nur :{ReadingsVal(mqtt_Esszimmer_Licht_Decke,"presence","") eq "Offline" ? "Offline" : ReadingsVal(mqtt_Esszimmer_Licht_Decke,"state","")

was hab ich falsch gemacht?
Titel: Antw:Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme
Beitrag von: mynameisfu am 10 August 2017, 00:02:28
Hab eine Klammer vergessen "}"  :o
wie bekomme ich jetzt die Temperaturen angezeigt, fragen über fragen