Probleme bei MQTT und Sonoff Tasmota

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Benutzeravatar
leupy
Beiträge: 78
Registriert: 21. Nov 2018 19:43
Wohnort: Saarlouis

Probleme bei MQTT und Sonoff Tasmota

Beitrag von leupy »

Hallo erst mal.
Ich bin neu was Open Hab betrifft.
Ich habe FEHM auf einem RSPI laufen mit diversen Sonoff aktoren und wollte umsteigen auf OpenHAb.
MQTT und Open Hab ist auf einem Win 10 Rechner installiert,
Über MQQT.fx kann ich eine Test Sonoff Basic steuern.
Aber irgend ein Problem hab ich zwischen Open Hab 2 und MQTT
Config MQTT wurde Angepasst.
Habe ich die Möglichkeit die Verbindung zu testen oder die Ausgehenden Befehle von Open Hab mir anzuschauen ?
Oder muss ich bei Windows Rechte vergeben ?

// Item File
Switch TV "test" {mqtt=">[broker:/cmnd/TV/POWER:command:ON:1],>[broker:/cmnd/TV/POWER:command:OFF:0]"}

MQTT config
broker.url=tcp://192.168.120.10:1883
broker.user=XXXXX
broker.pwd=XXXXX

Ich bin für jede Hilfe Dankbar :D
Saarländer
Raspberry Pi 3 & 4 openHAB3.3
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

Stefan Otten
Beiträge: 73
Registriert: 11. Nov 2018 06:51

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von Stefan Otten »

Hallo,

du sendest beide Kommandos (ON, OFF) auf einmal.
Ich habe das so gelöst:

Code: Alles auswählen

Switch  Sauna_Ofen_an       "Ofen"  {mqtt="<[mosquitto:sauna/ofen:state:default], >[mosquitto:sauna/ofen:command:*:${command}]"}
${command} ist der "Container" für On/Off.

In MQTT.fx würde ich dann per Subscribe folgendes Abonnieren:
cmnd/#
Damit Empfängst Du erstmal alle Nachrichten unter cmnd

Hoffe das Hilft.....


Grüße

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von udo1toni »

Also, weil ich an der Stelle immer pingelig bin...

Es heißt openHAB (allgemein) oder openHAB2 (um die Hauptversion zu benennen) oder gerne auch OH2 (wenn man schreibfaul ist und der Begriff ständig wieder auftaucht) aber niemals (!) OpenHab oder gar Open Hab oder irgendeine andere Schreibweise... ;)

Die Konfiguration des mqtt Bindings sollte in der Datei mqtt.cfg gespeichert sein... ;)

Dein konkretes Problem dürfte aber sein, dass Du das Topic falsch gesetzt hast.
Sonoffs mit Tasmota Firmware nutzen default die Form %prefix%/%topic%/ (ich habe das bei mir geändert in %topic%/%prefix%/, aber das ist Geschmacksache).
Der Punkt ist, dass da zu Beginn kein Slash steht, und in openHAB darf dementsprechend auch kein Slash stehen. Die korrekte Item Definition sollte also vermutlich so aussehen:

Code: Alles auswählen

Switch TV "test" { mqtt=">[broker:cmnd/TV/POWER:command:*:default]" }
oder wahlweise (mit Rückmeldung)

Code: Alles auswählen

Switch TV "test" { mqtt="<[broker:cmnd/TV/POWER:command:*:default],<[broker:stat/TV/POWER:state:default]",autoupdate="false" }
Je nach Firmwarestand kann es auch sein, dass Du zumindest in der Rückmeldung POWER1 verwenden musst (auch wenn es sich beim Sonoff Basic um eine einkanalige Version handelt!)
Sonoff reagiert sowohl auf 1/0 als auch auf ON/OFF, wobei letzteres nicht case sensitive ist. es wird immer ein ON/OFF zurückgeliefert, so dass man auch beim Empfang des Status auf Umwandlung verzichten kann.
Der Zusatz autoupdate="false" bewirkt, dass das Item seinen Status nur ändert, wenn eine Statusänderung empfangen wurde oder der Status aktiv gesetzt wurde (durch TV.postUpdate(ON/OFF)).
Normales Verhalten von openHAB ist, dass ein sendCommand() oder auch das Betätigen einer Schaltfläche in der UI automatisch ein postUpdate() nach sich zieht. openHAB würde also selbst den Status setzen und nicht auf Antwort des Device warten.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

tophab
Beiträge: 63
Registriert: 28. Okt 2018 18:53

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von tophab »

Update:
An anderem PC jetzt 2x neu geflasht, jetzt leuchtet die LED dauerhaft (flashen also erfolgreich).

Was ist nicht verstehe:
Ich hatte zuvor in der user_config.h die IP Adresse geändert, neu compiliert, übertragen.
Am Router zuvor das alte Gerät/Device entfernt und Router neu gestartet.
Jetzt sehe ich am Router, das der sonoff sich immer noch mit der alten IP Adresse meldet, warum?

Muss vor einem flashen der sonoff "resettet" werden?
Ein erfolgreiches drauf-flashen sollte doch alles überschreiben?

Und die instabile Verbindung (ping oder die Oberfäche) ist nach wie vor ...

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von udo1toni »

Wenn Du die Einstellungen über die user_config.h anpasst musst Du ein paar Dinge beachten. Zum einen musst Du sicherstellen, dass nicht die user_config_override.h gelesen wird. Zum anderen musst Du CFG_HOLDER hochzählen, damit die Daten mit geflasht werden.

Es sollte aber kein Problem sein, die IP auch nachträglich zu ändern (also über die Web-GUI). Zwar wird der Sonoff bei einem Firmwareupdate eventuell mit der falschen IP starten, aber man muss ja nicht ständig neue Firmware flashen, und eventuell denkt man beim nächsten Flashen daran, die korrekten Daten einzutragen und CFG_HOLDER hochzuzählen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
leupy
Beiträge: 78
Registriert: 21. Nov 2018 19:43
Wohnort: Saarlouis

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von leupy »

Hallo noch mal,
ich habe alle eure Hilfen umgesetzt und auch die vorgeschlagene Kommandozeile mit Rückmeldung in mein Item File Kopiert.
Leider tut sich über OH2 immer noch nichts wenn ich den Switch betätige

Auch im MQTT.fx wird nichts angezeigt nachdem ich den cmnd/# eingegeben habe über FX lässt sich der Sonoff nach wie vor schalten.
Muss ich an dem Binding außer der config irgendwas noch einstellen ?

Ich hab jetzt das ganze mit meinem MQTT der auf dem raspberry läuft versucht auch ohne Erfolg hab die Config angepasst > Über MQQT.fx und Raspery lässt sich der Sonoff steuern aber über OH2 nicht :-(
Irgend was stimmt nicht mit meiner Verbindung zwischen OH2 und MQTT glaub ich mal.

:?:
Saarländer
Raspberry Pi 3 & 4 openHAB3.3
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

Stefan Otten
Beiträge: 73
Registriert: 11. Nov 2018 06:51

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von Stefan Otten »

Welchen MQTT Server nutzt Du denn?
Mir kommt in Deiner Config "broker.url...." etc. etwas komisch vor.
Kenne das bislang nur mit:
mosquitto.url=tcp://192.168.100.40:1883

Vergleiche doch nochmal genau mit den Config Werten in MQTT.


Grüße

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von udo1toni »

Den in openHAB verwendeten Brokernamen kann man frei wählen, es ist auch möglich, mehrere Broker parallel zu nutzen. Wichtig ist nur, überall den gleichen Brokernamen zu nutzen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

BlueMonk
Beiträge: 2
Registriert: 25. Nov 2019 12:28

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von BlueMonk »

Guten Abend und schönen 1. Advent,

nachdem ich vor einigen Wochen in einer Zeitschrift von den Teckin SP22 Steckern gelesen habe und das man die "China Cloud" umgehen kann, habe mir nun auch eine Raspberry (3+) gegönnt und dachte, "machste mal".

Ich hab nun schon erfolgreich einige Stecker auf die Tasmota 7.1.0 Firmware gehievt.

Über die OpenHab2 - PaperUI habe ich auch schon hinbekommen das die Steckdosen geschaltet werden können, nachdem ich die Addons "MQTT Binding 2.4.0 und "Embedded MQTT Broker 2.4.0" installiert hatte.

Danach habe ich für mein Tablet das HabPanel aufgesetzt und ersteinmal benutzt.

Jetzt wollte ich doch gerne weitere Werte aus den Steckern bekommen, da mir das ganze etwas "langweilig" war.
Nun habe ich schon einige Texte und noch mehr Videos gesehen, die viel Sagen, mich aber nicht so richtig weiterführen. (ich stehe also auf dem Schlauch!)

Ich würde gerne viel mehr mit VS Code arbeiten, aber auch hier bin ich ein Neuling (der gesamten Thematik).

Für meine kleine Wohnung habe ich jetzt eine *.Items und eine *.sitemap Datei erstellt.

daheim.items

Code: Alles auswählen

// Gruppen
Group Wohnung 	// Gruppe Wohnung

Group Wohnzimmer	"Wohnzimmer"	<sofa>	(Wohnung)
Group Schlafzimmer	"Schlafzimmer"	<bedroom>		(Wohnung)
Group Buero      	"Büro"	        <office>	(Wohnung)
Group Flur	    	"Flur"	      	<corridor>		(Wohnung)
Group Kueche	   	"Küche"	        <kitchen>      (Wohnung)

/*Licht*/
Switch WohzimmerGeraete	    "Geräte Wohnzimmer"              	    (Wohnzimmer)
Switch Stehlampe           	"Stehlampe"	                <light>     (Wohnzimmer)
Switch CouchLampeL         	"Couchlampe links"          <light>    	(Wohnzimmer)
Switch CouchLampeR      	"Couchlampe rechts"	        <light>     (Wohnzimmer)
Switch Staubsauger	        "Staubsauger"       	                (Schlafzimmer)
Switch Laserdrucker     	"Laserdrucker"                        	(Buero)
Switch Astronaut        	"Astronaut"	                <light>     (Flur)
Switch Rakete	            "Rakete"                    <light>    	(Schlafzimmer)
daheim.sitemap

Code: Alles auswählen

sitemap Daheim label="Daheim"
{
  Frame {
	Group item=Wohnung	label="Daheim"	icon="smiley"
        }
}
Nun würde ich gerne die ganzen MQTT befehle per Hand über VS Code einpflegen, allerdings bekomme ich es nicht zum laufen. Zur Zeit habe ich die angelegtem itmes wieder über die PaperUI eingebunden, da sonst natürlich garnichts gehen würde.

Zum testen hatte ich einen Neuen Stecker "Stecker03" eingebunden:

Code: Alles auswählen

Switch Stecker03 "Stecker03" <light>     (Wohnzimmer) {mqtt=">[192.168.0.199:/cmnd/Stecker03/POWER:command:ON:1],>[192.168.0.199:/cmnd/Stecker03/POWER:command:OFF:0]"}
aber das ist wohl Käse, da sich einfach garnichts tut. Kann ich einfach die IP von meinem Raspberry eintragen? (die Addons laufen ja auch darüber?)

Was mache ich falsch?

Ich bin auch noch am lesen, aber irgendwie bin ich echt überfordert, weiß garnicht wo, nach was ich suchen soll.

Vielleicht gibt es einen kleinen Hinweis, wo ich anfangen muss?



DANKE!

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Probleme bei MQTT und Sonoff Tasmota

Beitrag von udo1toni »

Gern genommenes Missverständnis. :)

Es gibt inzwischen etliche Bindings, die sowohl in einer OH1-Version als auch in einer OH2-Version zur Verfügung stehen, die meisten davon lassen sich auch in beiden Versionen unter OH2 nutzen. Die grundlegenden Unterschiede: Version 2 wird immer über Things definiert. Version 2 bietet oft (aber nicht immer) Autodiscovery. Items, die mit einem Version 2 Binding verlinkt werden, werden über einen channel verlinkt ({ channel="..." }).

Deine Notation lautet { mqtt=".." } womit eindeutig das Version 1 Binding gemeint ist.

Du kannst Things auch mittels Textdateien definieren, solltest dies aber, zumindest pro Binding, nur entweder so oder so tun (also entweder alles, was mqtt spricht komplett über Paper UI oder komplett über Text), einfach, um nicht durcheinander zu kommen. Things, die über Text definiert sind, tauchen genauso in Paper UI auf, wie die über Paper UI angelegten, der einzige Unterschied besteht darin, dass sie nicht bearbeitbar sind (Fehler beim Versuch, die Änderungen zu speichern).

Um ein Thing anzulegen, musst Du eine .things Datei unterhalb des Ordners things erzeugen. Inhalt für mqtt z.B. so:

Code: Alles auswählen

Bridge mqtt:broker:mymqtt "Mosquitto" @ "mqtt" [
    host="192.168.1.10",             // ip oder fqdn des brokers, oft der Rechner selbst, also localhost oder 127.0.0.1
    port=1883,
    clientID="openHAB2",             // eindeutige ID des Clients (jeder Client muss zwingend eine eigene ID verwenden)
    lwtTopic="openHAB2/system/LWT",  // last will topic
    lwtMessage="offline"             // last will message
 ] {
     Thing topic sonoffT1_1 "sonoff T1 1" @ "mqtt" {                        // ein Device
        Channels: // verschiedene Channel
            Type number : pos "Position" [ stateTopic= "sonoff_t1/stat/SHUTTER1", commandTopic="sonoff_t1/cmnd/shutterposition1" ]
            Type string : tele "Tele" [ stateTopic= "sonoff_t1/tele/STATE" ]
            Type string : lwt "LWT" [ stateTopic="sonoff_t1/tele/LWT" ]
      }
}
Daraus ergeben sich direkt die Items:

Code: Alles auswählen

Number   SonoffT11Pos    "Position"  (Gmqtt2Pos)  {channel="mqtt:topic:mymqtt:sonoffT1_1:pos"}
String   SonoffT11Tele   "Tele"      (Gmqtt2Tele)  {channel="mqtt:topic:mymqtt:sonoffT1_1:tele"}
String SonoffT11lwt "Lwt"  (Gmqtt2LWT) {channel="mqtt:topic:mymqtt:sonoffT1_1:lwt"}
Die Dokumentation dazu findet man bei mqtt leider nicht direkt, sondern ausschließlich über github, da David Graeff da eigene Ansichten zu hat - er möchte xtend nicht unterstützen. In openHAB3 wird xtend aber ohnehin vermutlich nicht mehr genutzt, dann wird eine andere Beschreibung vonnöten sein. Sei's drum... Hier ein Link ;) https://github.com/openhab/openhab2-add ... xamples.md zum mqtt generic thing und ein weiterer https://github.com/openhab/openhab2-add ... xamples.md speziell zur Bridge (ist aber auch im ersten Link in Grundzügen erläutert).

Eine per Paper UI angelegte Bridge lässt sich auch aus der Textkonfiguration heraus nutzen, aber nur in der Form 2 (siehe 1. Link), nicht so, wie ich es oben als Code eingefügt habe. Umgekehrt taucht eine per Text angelegte Bridge auch in Paper UI auf und lässt sich dort auswählen, wenn man ein Thing erzeugt. Aber wie obern erwähnt, sollte man das der Übersichtlichkeit wegen besser nicht tun - allenfalls, um "mal schnell" was auszuprobieren (aber danach sorgfältig aufräumen nicht vergessen).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten