Einbindung von Sonoff Tasmota funktioniert nicht

Begonnen von jogibär, 16 April 2019, 17:08:40

Vorheriges Thema - Nächstes Thema

jogibär

Frage: Gab es ein Dialogfeld beim Anwenden des tasmota-basic-templates
Es kam ein kleines Fenster in dem meine ich darauf hingewiesen wurde, dass der Name geändert werden soll.

Die bridgeRegexp hat auch das Straussenei identifiziert
das topic in dem tasmota-WebIF heißt auch Straussenei, oder?
NEIN, die Frage ist wie das passiert ist. Die beiden aktiven Tasmotas sind Aquariumpumpe und Aquariumlicht. (siehe Screenshot erster Post)
In meinem FHEM gibt es ein at, das Straussenei_at heißt und eine Homematic-Steckdose schaltet. Diese Steckdose wollte ich durch eine Sonoff S20 ersetzen. Die hatte ich auch geflasht und ins WLAN integriert. Die bekam den Namen Straussenei. Da hat dann aber das Update auf die neueste Tasmote nicht funktioniert und ich habe nix mehr hinbekommen, sodass ich die Steckose vor Wochen das letzte mal unter Spannung hatte. Nur die Fritzbox hat den Eintrag noch.

Ansonsten bitte die RAW vor dem attrTemplate.
Soll ich also alle Geräte löschen und noch mal von vorne anfangen? Oder wie ist das gemeint?

Beta-User

Nur kurz, da mobil:mosquitto kennt das Straussenei auch noch, aber scheinbar die anderen beiden nicht. Fehler erst zwischen sonoff und Broker suchen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo jogibär,

bist du weitergekommen, oder hast du gar dein Problem zufriedenstellend gelöst?

Ich hatte versucht dir anhand eines praktischen Beispiels aufzuzeigen, wie es bei mir funktioniert, mit Erklärungen, Definitionen und Scrernshots. Leider hatte ich mich in der Forumssoftware derart verheddert, so dass mein längerer Beitrag unrettbar verschwunden war.

Wenn du noch Bedarf hast, dann melde dich, ich schreibe dann nochmals alles auf und poste es.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

jogibär

Hallo Gisbert,
danke für die Nachfrage.
Nein, bisher bin ich nicht nennenswert weiter.
Das autocreate hat zwar Geräte angelegt, ich konnte aber weder identifizieren welches der beiden Basic-Geräte
es eigentlich ist, noch schalten die Aktoren aus FHEM heraus.

Alles was funktioniert ist die WLAN-Anbindung und schalten über die Browseroberfläche.
Schöne Ostern.

DasQ

Wieso nutzt man noch mosqitto als Broker, wenn man intern dann mqtt2-Clients verwendet?
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

TomLee

Zitat von: DasQ am 20 April 2019, 20:54:25
Wieso nutzt man noch mosqitto als Broker, wenn man intern dann mqtt2-Clients verwendet?

Meinem Verständnis nach gibts MQTT2_Client nur für den Fall das man "noch" Mosquitto als Broker nutzt.

Gruß

Thomas

jogibär

Wie gesagt, ich versuche seit Wochen die Dinger zum Laufen zu bekommen.
Mosqitto war in den Anleitungen, die ich als erstes versucht habe eben als Broker empfohlen.
Nachdem nix geklappt hat habe ich weitergesucht und Anleitungen gefunden, die Mosqitto verwenden
und dann mit MQTT2_Client arbeiten. Also habe ich das dann versucht.

Ich bin für alternativvorschläge offen. Nur brauche ich wirklich genaue Handlungsanweisungen was genau ich machen soll.

rudolfkoenig

ZitatNur brauche ich wirklich genaue Handlungsanweisungen was genau ich machen soll.

Teil 1: Reset
1. mosquitto stoppen/deinstallieren
2. in FHEM alles mit Typ MQTT.* entfernen (delete TYPE=MQTT.*)
3. im TASMOTA Frontend sicherstellen, dass die MQTT TOPICs nicht veraendert wurden, im Zweifel: Reset Configuration

Teil 2: Anlegen
1. in FHEM mit "define m2s MQTT2_SERVER 1883 global" einen Server anlegen.
2. im TASMOTA Frontend die IP des FHEM Servers eingeben in Configure MQTT / MQTT Host
3. FHEM legt automatisch ein MQTT2_DEVICE an mit dem Namen MQTT2_<TasmotaClientId>, dieses bei Bedarf umbenennen (rename MQTT2_XXX Lampe1)
4. In der Detailansicht der MQTT2_DEVICE erst mit "set Lampe1 attrTemplate ?" ueber den vorhandenen Optionen informieren, und danach z.Bsp. mit "set Lampe1 attrTemplate A_01a_tasmota_basic_state_power1" die Passende setzen.

andies

Ich bin nach wie vor der Meinung, dass das mit diesen grausigen Videos zusammenhängt. Wenn Du mit der Weboberfläche schalten kannst, ist das Gerät in Ordnung und die MQTT-Anbindung funktioniert nicht. Du musst Dich mit der Syntax von MQTT auseinandersetzen und verstehen, wieso das nicht erkannt wird.

Dazu zuerst einmal im Wiki lesen, https://github.com/mqtt/mqtt.github.io/wiki/topic_format und nachfolgende.

Wenn ich die Screenshots bei Dir richtig lese, sind die Topics so eingestellt:
%prefix%/%topic%
Das bedeutet, intern wird zuerst der Kommandobefehl vorangestellt (üblicherweise tele oder stat oder cmnd, nachzulesen hier: https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Overview) und dann das eigentliche topic; üblicherweise der Gerätename und der Befehl ("einschalten") selbst. Die Prozentzeichen zeigen an, dass dabei nicht die Worte prefix oder topic gesendet werden, sondern das, was im Gerät selbst unter den Variablen topic und prefix gespeichert ist. Als prefix verwendet Tasmota, wie geschrieben, cmnd oder stat oder tele. Als topic verwendet tasmota das, was du oben im Gerätenamen eingegeben hast; vermutlich client. Im Zweifel kannst du, wenn Du Mosquitto verwendest, die "Gespräche mithören".

In Deinem FHEM-Gerät musst Du nun prefix und topic entsprechend einstellen, damit FHEM mit dem Gerät und nicht dem Weltall kommuniziert. Dort lese ich als Mqtt:
attr MQTT2_DEVNAME setList off:noArg    cmnd/DEVNAME/POWER1 0\
  on:noArg     cmnd/DEVNAME/POWER1 1\
  toggle:noArg cmnd/DEVNAME/POWER1 2

und DEVNAME ist hier keine Variable, sondern ein String und wird damit nicht in irgendetwas umgewandelt. Das kann also schon mal gar nicht oben passen.

Wenn Du mit der Hand nicht durchkommst, machst Du das, was rudolfkoenig schrieb, während ich hier diesen Roman zusammengepinselt habe.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Gisbert

#24
Hallo jogibär,

ich versuche mich dann mal an einer Beschreibung, was ich gemacht habe, und wie es bei mir funktioniert.
Bevor Einwände kommen, ich nehme nicht für mich in Anspruch, dass ich die beste Lösung benutze, für mich funktioniert sie aber.
Da ich versproche hatte zu helfen, poste ich das, was bei mir funktioniert. Wenn ich noch etwas verbessern kann, dann bin ich dafür immer zu haben.

Ich benutze das MQTT_DEVICE in Fhem, welches die Installation eines MQTT-Brokers auf dem Fhem-Server notwendig macht. Wie das geht, kann man hier nachlesen:
http://blog.wenzlaff.de/?p=6487
Desweiteren habe ich mich dafür entschieden, die MQTT-Kommunikation zu verschlüsseln. Ob das notwendig, sinnvoll oder nur lästig ist, kann ich nicht beurteilen; ich hab's nun mal so gemacht und kann es deshalb auch nur so schildern. Wie das geht, kann man hier nachlesen: http://www.steves-internet-guide.com/mqtt-username-password-example/
In Kürze gibt man folgendes auf dem Fhem-Server ein:
sudo mosquitto_passwd -c passwordfile.txt meinUser
Password: supergeheimespassword

In passwordfile.txt steht dann:
meinUser:irgendeingeschwurbbeltesverschlüsseltespassword

In Fhem habe ich einen MQTT-Broker definiert:
define MyBroker MQTT IP-Fhem-Server:1883 meinUser supergeheimespassword
Die Credentials werden gespeichert und aus der Definition entfernt.
Wenn bis hierher alles richtig funktioniert hat, dann sollte das Device MyBroker den Status "opened" haben.

Jetzt geht es mit dem Sonoff weiter. Da ich noch einen Sonoff Dual übrig hatte, hab ich diesen benutzt, obwohl ich damit nur ein Relais schalte. Wenn deine Anwendung räumlich so gestaltet sind, dass sie mit einem Sonoff Dual zu betreiben sind, wäre das sicher besser als 2 Sonoff Basic einzusetzen. Beide Geräte ziehen in etwa 1.3 Watt, d.h. nach etwa 3-4 Jahren lohnt sich die Anschaffung eines Duals im Vergleich zu bereits vorhandenen 2 Sonoff Basics. Falls du einen Sonoff Dual brauchst, dann sag bitte Bescheid, ich hab noch welche.

Den Sonoff Dual betreibe ich mit Tasmota 6.2.1. Außer dem einen Relais (das 2. Relais wird gar nicht benutzt) habe ich noch Dallas DS18B20-Temperatursensoren an GPIO14 angeschlossen. Der Fachkundige wird jetzt sagen, das geht doch gar nicht, denn GPIO14 ist auf den Sonoff Dual nicht herausgeführt. Ja das stimmt, ich habe eine Litze am GPIO14 am ESP8266 angelötet, damit geht es dann doch.
Die Definitionen in Tasmota, siehe Screenshots: Configure_Modul.jpeg und Configure_MQTT.jpeg. Bitte beachte, dass hier die gleichen Credentials für MQTT eingegeben werden müssen wie bei Linux und in Fhem.

Jetzt geht es weiter mit der Definition eines Devices in Fhem (ich hab alles Unwesentliche weggelassen, was für das Verständnis hier unnötig ist):
define Heizung MQTT_DEVICE
attr Heizung IODev MyBroker
attr Heizung autoSubscribeReadings +/Heizung/+
attr Heizung publishSet_POWER1 ON OFF cmnd/Heizung/POWER1
attr Heizung publishSet_POWER2 ON OFF cmnd/Heizung/POWER2
attr Heizung subscribeReading_INFO1 tele/Heizung/INFO1
attr Heizung subscribeReading_INFO2 tele/Heizung/INFO2
attr Heizung subscribeReading_INFO3 tele/Heizung/INFO3
attr Heizung subscribeReading_LWT tele/Heizung/LWT
attr Heizung subscribeReading_POWER cmnd/Heizung/POWER
attr Heizung subscribeReading_POWER1 cmnd/Heizung/POWER1
attr Heizung subscribeReading_POWER2 stat/Heizung/POWER2
attr Heizung subscribeReading_RESULT stat/Heizung/RESULT
attr Heizung subscribeReading_SENSOR tele/Heizung/SENSOR
attr Heizung subscribeReading_STATE tele/Heizung/STATE
attr Heizung subscribeReading_UPTIME tele/Heizung/UPTIME


Wichtig ist hier das Attribut attr Heizung autoSubscribeReadings +/Heizung/+
Wobei das Device in Fhem nur zufällig (eigentlich beabsichtigt) Heizung heißt. Wichtig ist +/Heizung/+ - damit empfängst du alle Messages, die dein Sonoff sendet, dem du das Topic "Heizung" verpasst hast - siehe auch den Screenshot. Das "+" steht für einen Eintrag in der Baumstruktur von MQTT. Du musst nur das Attribut "autoSubscribeReadings" definieren, die anderen werden dann nach und nach angelegt, sobald etwas in Fhem ankommt.
Das Attribut "publishSet_POWER1" (und 2) wird nicht selbstständig angelegt, d.h. es muss definiert werden !!

Nur falls du auf den Geschmack gekommen bist, und auch Temperaturen messen willst, dann empfiehlt es sich diese Defintion zu ergänzen. Die neueren MQTT-Module machen das anscheinend selbstständig, beim dem Modul MQTT_DEVICE ist es nicht enthalten.
define ej3 expandJSON .*:SENSOR:.{.*}
Damit wird bei allen Devices das Reading "SENSOR" in einzelne Bereiche zerlegt.   Aus diesem Reading:   
SENSOR {"Time":"1970-01-01T00:25:14","DS18B20-1":{"Id":"0000075B2C3E","Temperature":27.1},"DS18B20-2":{"Id":"0216017DA4EE","Temperature":26.9},"TempUnit":"C"}
werden die folgenden Readings angelegt:
DS18B20-1_Id 0000075B2C3E
DS18B20-1_Temperature 27.2
DS18B20-2_Id 0216017DA4EE
DS18B20-2_Temperature 27.1
TempUnit C
Time 1970-01-01T00:30:14


Das Schalten des Relais funktioniert dann mit dem Befehl aus Fhem heraus mit:
set Heizung POWER1 ON
set Heizung POWER1 OFF


Last but not least die App MyMQTT.
Hier trägst du unter Settings die IP des Fhem-Servers ein, auf dem der MQTT-Broker läuft, in meinem Fall dann auch die MQTT Credentials.
Unter Subscribe trägst du das ein, was du gerne empfangen möchtest, also +/Heizung/+
Unter Dashboard siehst du dann die eingegangenen Messages (siehe auch Screenshot).

Wenn es noch Fragen gibt, dann melde dich gerne wieder.
Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

DasQ

#25
warum ihr noch immer auf den viel komplizierteren mosquitto broker abfahrt, bleibt mir ein rätsel.

das ding ist nur achteckig und kompliziert.

der MQTT2-server von @rudolfkoenig, macht die sache so brutal viel einfacher. 8) :o ;D ;)

effektiv 7 anweisung --> https://forum.fhem.de/index.php/topic,99688.msg932037.html#msg932037
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

Gisbert

Zitatwarum ihr noch immer auf den viel komplizierteren mosquitto broker abfahrt, bleibt mir ein rätsel.
Das Rätsel ist einfach zu lösen. Ich hatte mit MQTT_DEVICE angefangen, vermutlich weil es die modernere Variante noch gar nicht gab. Wenn man es denn mal in Benutzung hat, ist jede Änderung zunächst mal komplizierter, und deshalb bin ich bei dem älteren Modul geblieben.
Es gab schon Diskussionen über das für und wider für die diversen Varianten. Ohne mich an Details zu erinnern, hatte ich abgespeichert, bei dem älteren Modul zu bleiben.

Ich werde daran denken, beim nächsten Device das neue Modul auszuprobieren. Geht das im Mischbetrieb mit dem alten Modul, bzw. was muss dabei alles bedacht werden?

Viele​ Grüße ​Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

jogibär

OK, ich habe ja nun einige Hinweise, wie ich verfahren muss.
Wir sind nach Ostern ein paar Tage unterwegs, wenn wir zurück sind werde ich
wieder drangehen.
Ich melde mich sobald ich (hoffentlich) Erfolg hatte.

jogibär

So, ich habe mich dran gemacht und was soll ich sagen:"ES HAT GEKLAPPT"  ;) ;D ;D ;D ;D

Ich habe Mosquitto und alles zu MQTT-Devices rausgeschmissen, danach die Sonoffs zurückgesetzt und neu ins WLAN eingebunden.
Nach Installation von MQTT2_Server war direkt das erste Gerät da und ich kann aus FHEM tatsächlich schalten.

So einfach, wenn man weiß wie es geht.
Ich denke das Problem war wirklich, dass die Anleitung im Video kein Selbstläufer war und jeder Versuch es hinzubiegen die Sache noch verschlimmert hat.
Ich hätte viel früher im Forum fragen sollen. :'(

Danke an alle Helfer!

jogibär

#29
OK, zu früh gefreut.
Das Anbinden des ersten Gerätes ,,Aquariumpumpe" hat funktioniert, das Gerät schaltet.
Ich wollte dann das 2. Gerät hinzufügen. Ich bin identisch zum ersten vorgegangen.
Als ich versucht habe mit

set  Aquariumlicht attrTemplate A_01a_tasmota_basic_state_power1
das Attibut zuzuweisen kam eine Meldung, mit der ich nicht wirklich was anfangen kann.
set Aquariumlicht attrTemplate A_01a_tasmota_basic_state_power1 DEVNAME
Replace
DEVNAME: with the ESP's name in the topic
siehe auch Screenshot

Wie bei der Pumpe erschien eine Glühlampe und on,off.
Beim Schalten passiert nichts und die Glühlampe bekommt wieder ein Ausrufezeichen.
Ich habe es mehrmals versucht, immer gleiches Resultat. Ich habe dann die Pumpe angebunden, funktioniert. Sonoff Pumpe von Spannung getrennt, Sonoff für Licht angeschlossen. Wieder wie oben, schaltet nicht. Wenn ich allerdings die Pumpe schalte, schaltet der Sonoff für das Licht.
Ich bin völlig ratlos, was ich wieder falsch gemacht habe.

defmod Aqariumpumpe MQTT2_DEVICE DVES_8089BE
attr Aqariumpumpe IODev m2s
attr Aqariumpumpe autocreate 0
attr Aqariumpumpe model A_01a_tasmota_basic_state_power1
attr Aqariumpumpe readingList tele/sonoff/LWT:.* LWT\
  tele/sonoff/STATE:.* { json2nameValue($EVENT) }\
  tele/sonoff/SENSOR:.* { json2nameValue($EVENT) }\
  tele/sonoff/INFO.:.* { json2nameValue($EVENT) }\
  stat/sonoff/RESULT:.* { json2nameValue($EVENT) }
attr Aqariumpumpe room MQTT2_DEVICE
attr Aqariumpumpe setList off:noArg    cmnd/sonoff/POWER1 0\
  on:noArg     cmnd/sonoff/POWER1 1\
  toggle:noArg cmnd/sonoff/POWER1 2
attr Aqariumpumpe setStateList on off toggle
attr Aqariumpumpe stateFormat POWER1


defmod Aquariumlicht MQTT2_DEVICE DVES_66C698
attr Aquariumlicht IODev m2s
attr Aquariumlicht autocreate 0
attr Aquariumlicht model A_01a_tasmota_basic_state_power1
attr Aquariumlicht readingList tele/DEVNAME/LWT:.* LWT\
  tele/DEVNAME/STATE:.* { json2nameValue($EVENT) }\
  tele/DEVNAME/SENSOR:.* { json2nameValue($EVENT) }\
  tele/DEVNAME/INFO.:.* { json2nameValue($EVENT) }\
  stat/DEVNAME/RESULT:.* { json2nameValue($EVENT) }
attr Aquariumlicht room MQTT2_DEVICE
attr Aquariumlicht setList off:noArg    cmnd/DEVNAME/POWER1 0\
  on:noArg     cmnd/DEVNAME/POWER1 1\
  toggle:noArg cmnd/DEVNAME/POWER1 2
attr Aquariumlicht setStateList on off toggle
attr Aquariumlicht stateFormat POWER1