Seite 1 von 2

SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 30. Apr 2020 17:43
von Stargate1212
Hallo ich kriege es nicht hin einen SONOFF 4CH Pro mit geflashten Tasmota mit MQTT in openHAB 2.5 anzubinden.

Was muß ich machen. Bitte Schritt für Schritt. Ich verzweifle. Gruß Stargate1212

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 30. Apr 2020 21:56
von udo1toni
Es gibt mehrere Möglichkeiten.

Zunächst: Welche Version hast Du geflasht? aktuell ist die 8.2, von der gehe ich jetzt einfach mal aus. Falls es keine zwingenden Gründe für eine andere Version gibt, solltest Du im Zweifel auf die aktuelle Version updaten. Falls Du von einer sehr viel älteren Version kommst und deine Einstellungen behalten willst, musst Du dabei den Updatepfad beachten. Ich persönlich gehe lieber pragmatisch vor, flashe die aktuelle Version und richte anschließend das Gerät komplett neu ein, das ist ja auch in wenigen Schritten erledigt.

mqtt braucht einen sogenannten Broker, der von allen Clients alle publizierten Nachrichten entgegen nimmt und diese an alle Clients verteilt, welche die entsprechenden Topics abonniert haben.

Zunächst musst Du also einen Broker installieren. Nun ist die Frage, welche Plattform Du nutzt ;) und wie Du openHAB installiert hast. Sollte es sich um einen Raspberry mit openHABian handeln, rufst Du openhabian-config auf und suchst im Bereich optional Components (oder so ähnlich...) nach dem mqtt Broker mosquitto. Den installierst Du (und ignorierst gepflegt die Warnung, welche leider in eine falsche Richtung weist).

Solltest Du kein openHABian verwendet haben, kannst Du unter einem aktuellen GNU/Linux oder auch BSD mosquitto mit Bordmitteln installieren, z.B. unter debian/Ubuntu mit sudo apt install mosquitto.

Solltest Du unter Windows unterwegs sein, gibt es sicherlich auch da ein entsprechendes Paket, aber vielleicht ist es dann einfacher, auf den embedded Broker von openHAB, Moquette, zurückzugreifen (zu finden in Paper UI/Addons/Misc/).

ACHTUNG: Entweder Moquette, ODER Mosquitto, nicht beide gleichzeitig installieren!.

Sobald der Broker mal läuft, solltest Du Dich mit einem Tool wie mqtt spy oder mqtt.fx mit dem Broker verbinden können, der Port sollte 1883 sein, die IP-Adresse ist die des Rechners, auf dem der Broker läuft, also gewöhnlich (aber nicht zwingend, es sei denn, Du nutzt Moquette) derselbe Rechner, auf dem auch openHAB läuft.

Wenn Du schon mal mit dem Broker verbunden bist, kannst Du gleich das Topic # abonnieren, das beinhaltet alle Topics, die von Clients gesendet werden.

Nun ist es Zeit, den Sonoff mit dem Broker zu verbinden. Du rufst dazu die Webschnittstelle vom Sonoff auf, gehst auf die Konfigurationsseite, dort auf MQTT und trägst die IP des Brokers ein. Auf der gleichen Seite kannst Du einen User und ein Passwort eintragen, das Passwort musst Du natürlich nur dann eingeben (und nutzen, da gibt es ein Kästchen zum aktivieren), wenn Du tatsächlich in Mosquitto User und Passwort gesetzt hast. Moquette bietet keine Option für Zugriffsbeschränkungen, ein Grund, Mosquitto zu nutzen, wenn möglich.

Weiterhin kannst Du einen Clientnamen setzen (der ist interessant, um auf dem Broker im log die Kommunikation nachzuverfolgen, deshalb sollte er eindeutig, also pro Client unterschiedlich sein)

Dann gibt es noch eine Option, das Topic zu setzen. Damit ist allerdings nur der variable Teil des Topics gemeint, welcher sich von Gerät zu Gerät unterscheiden muss, um die Geräte einzeln steuern zu können. Default sind hier die letzten sechs Hex-Ziffern der Mac-Adresse gesetzt, Du kannst aber jeden beliebigen eindeutigen String verwenden (aber am besten nur Buchstaben und Ziffern, keine Sonderzeichen oder Leerzeichen).
Weiterhin kannst Du das Fulltopic anpassen, welches gewöhnlich auf %prefix%/%topic%/ gesetzt ist. %prefix% ist einer der drei Strings stat, cmnd und tele, je nachdem, was man gerade an Informationen braucht oder steuern möchte. Man kann hier also z.B. dafür sorgen, dass das prefix nach dem topic kommt (was hierarchisch logischer wäre).

Wenn das alles eingetragen ist, speicherst Du die Einstellungen und der Sonoff bootet automatisch.

Anschließend solltest Du im oben eingerichteten Client sofort ein bisschen Aktivitäten sehen, Tasmota meldet sich beim Broker an und gibt viele Informationen aus, hübsch verpackt in JSON.

Damit ist der Sonoff auch über den Client steuerbar. Wenn Du das FullTopic nicht angerührt hast und das Topic z.B. auf Sonoff4CHpro eingestellt hast, dann solltest Du aus dem Client heraus ein Topic publizieren können, und zwar cmnd/Sonoff4CHpr/POWER1 mit dem Payload ON. Nun sollte das erste Relais unmittelbar einschalten. Mit dem Payload OFF sollte es wieder aus gehen. Gleichzeitig sollte auch das Topic stat/Sonoff4CHpr/POWER1 mit jeweils passendem Payload vom Sonoff publiziert werden.

Nun also wieder zurück zu openHAB.

openHAB muss nun als Client mit dem Broker sprechen. dazu musst Du das mqtt Addon installieren. Es spielt hier keine Rolle, ob Du den embedded Broker nutzt oder Mosquitto, das hat nichts miteinander zu tun.
Sobald das mqtt Addon installiert ist, richtest Du den mqtt Broker ein (bitte nicht mit dem System Broker verwechseln, der spielt hier keine Rolle). Dabei gibst Du die gleichen Daten an wie schon beim Sonoff. Natürlich bekommt openHAB eine eigene ClientID. der Broker sollte umgehend ONLINE angezeigt werden. Sollte es hier zu einem Communication Error kommen, musst Du auf Suche gehen, was Du falsch eingestellt hast. Der Fehler kann aber nur an der Bridge liegen (die Verbindung zum Broker), da wir ja schon vorher erfolgreich mit dem Broker kommunizieren konnten.

Hat bis hierher alles geklappt, legst Du ein generic mqtt Thing an. Dies repräsentiert in openHAB den kompletten Sonoff 4CH Pro. Achte darauf, dass dieses Thing auch der Bridge zugeordnet ist (das ist die Verbindung zum Broker).
Nun legst Du in diesem Thing einen Channel an. Dieser Channel repräsentiert ein Relais. Es gibt zwei wesentliche Konfigurationsparameter, das stateTopic und das commandTopic. das stateTopic lautet in unserem Beispiel stat/Sonoff4CHpr/POWER1, das commandTopic lautet passend cmnd/Sonoff4CHpr/POWER1.
Weitere Parameter sollten unnötig sein.
Nun legst Du drei weitere Channel an, die für die drei anderen Relais sind. Sie unterscheiden sich nur durch das letzte Zeichen des Topics, also statt 1 eine 2, 3 bzw. 4.
Es gibt noch ein paar andere interessante Topics, z.B. die Empfangsqualität, welche Du unter tele/Sonoff4CHpro/STATUS (? ... bin gerade nicht sicher, das genaue Topic betreffend) zu sehen bekommst. Tasmota sendet in einem festen Zeitabstand (kann man einstellen) Informationen über den Zustand. Dieses Topic bekommst Du im Client zu sehen, wenn Du # abonniert hast. Der Status wird als JSON übergeben, das heißt, um das auswerten zu können, musst Du den JSONPATH Transformation Service installiert haben. weiterhin musst Du zusätzlich zum korrekten stateTopic (ein commandTopic gibt es hier logischerweise nicht) noch eine incomming Transformation eintragen, welche JSONPATH:$.Wifi.RSSI heißen müsste. Geliefert bekommst Du dann eine Zahl von 0 bis 100, wobei die 100 wohl nur erreicht werden wird, wenn Du die Antennen von Sonoff Modul und AccessPoint direkt aneinander hältst. :)

Je nachdem, wie Du openHAB konfiguriert hast - Stichwort Simple Mode - musst Du zum Abschluss noch für jeden Channel ein Item anlegen und mit dem Channel verlinken.

Eine Alternative zur manuellen Konfiguration ist es, in Tasmota die Home Assistant Konvention zu aktivieren (das geht in der Tasmota Konsole mittels SetOption19 1). Dann startest Du sicherheitshalber den Sonoff einmal durch. Anschließend sollte openHAB (eine schon eingerichtete und funktionierende Verbindung zum Broker mal vorausgesetzt) direkt den Sonoff 4CH Pro als Thing per Autodiscovery finden und einrichten. Die Parameter unterscheiden sich dabei stark von den manuell gesetzten und von mir oben beschriebenen.

Ich hoffe, das war kleinteilig genug und Du bist bisher noch nicht an der Bleiwüste verzweifelt...

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 1. Mai 2020 11:17
von Stargate1212
Wow. Das ist ja geil. Vielen Dank, ich bin dir sehr dankbar.

Also ich habe Tasmota 8.2 geflasht, Raspberry mit OpenHAB 2.5 als Image auf SD-Karte geflasht.
Benutze den "MQTT Broker Moquette" + das "MQTT Binding"
Habe deine Anweisungen befolgt und habe nun ein Control womit ich das 1. Relais steuern kann.
Ich würde aber lieber im Editor entsprechende things, item und sitemap bearbeiten wollen.
Kannst du mir diese noch als Beispiel posten?

LG Stargate1212

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 1. Mai 2020 19:40
von udo1toni
Du kannst Bridge, Thing und Channel - genau wie die Items - selbstverständlich auch mittels Textdateien vornehmen.

Ich möchte zuerst dringend zu VisualStudio Code als Editor raten. Im eingebauten Market Place des Editors kann man das openHAB Plugin herunterladen und installieren. Das Plugin muss konfiguriert werden, damit es sich mit dem openHAB Server verbinden kann. Dann bietet VSCode Autocompletion und Fehlererkennung. Das läuft über LSP.

Auf dem (Windows?) Desktop PC verbindest Du die Netzwerkfreigabe openhab-conf vom Raspberry mit einem Laufwerksbuchstaben. UNC-Pfade funktionieren leider nicht sauber.

In VSCode öffnest Du diesen LAufwerksbuchstaben als Arbeitsordner. Du solltest nun den Konfigurationsbaum sehen, insbesondere die Verzeichnisse things, items und sitemaps sind für Dich wichtig.
In things legst Du eine Datei mqtt.things an (Der Name ist eigentlich egal, nur die Endung muss stimmen). Inhalt der Datei ist die Bridge, alle zugehörigen Things und alle Channel. sieht so aus:

Code: Alles auswählen

Bridge mqtt:broker:mymqtt "Moquette" @ "mqtt" [
    host="127.0.0.1",
    port=1883,
    clientID="openHAB2"
 ] {
     Thing topic sonoff4CH_pro "Sonoff 4 CH Pro" @ "mqtt" {
        Channels:
            Type switch : ch1 "Channel 1" [ stateTopic= "stat/sonoff4chpro/POWER1", commandTopic="cmnd/sonoff4chpro/POWER1" ]
            Type switch : ch2 "Channel 2" [ stateTopic= "stat/sonoff4chpro/POWER2", commandTopic="cmnd/sonoff4chpro/POWER2" ]
            Type switch : ch3 "Channel 3" [ stateTopic= "stat/sonoff4chpro/POWER3", commandTopic="cmnd/sonoff4chpro/POWER3" ]
            Type switch : ch4 "Channel 4" [ stateTopic= "stat/sonoff4chpro/POWER4", commandTopic="cmnd/sonoff4chpro/POWER4" ]
      }
}
Die Topics musst Du natürlich anpassen.

Im Verzeichnis items legst Du eine Datei mqtt.items an (es gilt das gleiche wie oben; Du kannst auch alle Items in eine Datei packen, wenn Du willst.)

Diese Datei kannst Du automatisch von VSCode füllen lassen. Sobald Du die Bridge mitsamt Thing und Channels angelegt hast, solltest Du auf der linken Seite auf die openHAB-Anzeige umschalten können. Dort solltest Du eine Liste aller Things und Items sehen können (Du musst die Liste allerdings manuell aktualisieren ,mit dem Kreispfeil-Knopf)
Dann klickst Du rechts auf das Thing und wählst aus dem Kontextmenü Create Items from Channels. Wichtig ist natürlich, dass Du zuerst die items-Datei auswählst, damit das Plugin weiß, wo es die Items erzeugen soll.
Du kannst anschließend alles an den Items anpassen, außer natürlich den Channel-Link :)

Sobald Du die Datei speicherst, sind die Items aktiv, das heißt, Du kannst sie wiederum über die openHAB-Anzeige sehen (aktualisieren nicht vergessen).

Auf gleichem Weg kannst Du die Items in die Sitemap einbauen lassen.

Die über Paper UI erstellte Bridge samt Thing solltest Du natürlich zuerst löschen...

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 1. Mai 2020 19:57
von Stargate1212
Vielen lieben Dank.

Hatte den ganzen Tag Zeit rumzufummeln, und habe es gerade eben auch geschafft. Manchmal sieht man den Wald vor lauter Bäumen nicht :lol:

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 15. Jun 2020 17:50
von Tt49
Hallo udo1toni,

vielen Dank für deine ausführliche Anleitung. Damit habe ich es auch hinbekommen. Danke!

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 22. Dez 2020 19:08
von mcdandrew
Ich hänge mich mal an das Thema ran.
Ich möchte mittel einem Sonoff 4Ch einen DC Motor im Hühnerstall ansteuern.
Seit ein paar Jahren läuft das zwar problemlos über einen Raspberry, doch nun soll es endlich in Openhab integriert werden.

Bild

So wie ich das verstehe muss jeweils zum ausfahren --> Relais 1 auf ON und Relais 2 auf OFF geschalten werden.
Zum Einfahren dann Relais 1 auf OFF und Relais 2 auf ON geschalten werden.

Ich würde für beide Relais jeweils ein Item erstellen.
Für die Ansteuerung dann jeweils ein Dummy Item für Öffnen und Schliessen
Die Regel soll wie folgt aussehen...

Code: Alles auswählen

rule "huehnerklappe"
when
	Item switch_huhn_close received command or
	Item switch_huhn_open  received command
then
	//Hühnerstall schließen
	if (switch_huhn_close.state == ON)
	{
		sonoff_4ch_huhn_relais1.sendCommand(ON)
		sonoff_4ch_huhn_relais2.sendCommand(OFF)
	}
	//Hühnerstall öffnen
	else if ((switch_huhn_open.state == ON)
	{
		sonoff_4ch_huhn_relais1.sendCommand(OFF)
		sonoff_4ch_huhn_relais2.sendCommand(ON)
	}
	else
	{
		sonoff_4ch_huhn_relais1.sendCommand(OFF)
		sonoff_4ch_huhn_relais2.sendCommand(OFF)
	}
end
Passt das soweit oder gibt es hier Verbesserungspotenzial :D
Der Interlock Modus wird beim Sonoff 4Ch wohl per Dip Schalter aktiviert, von meinen anderen Sonoffs kenne ich dies über einen Befehl in der Konsole. Kann das jemand so bestätigen?
Damit sollte ich auf jeden Fall auf der sicheren Seite sein, dass die Relais nicht gleichzeitig angesteuert werden.

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 22. Dez 2020 22:02
von udo1toni
Soweit ich weiß, kannst Du den Sonoff 4Ch ohne Probleme mit Tasmota flashen. Bei 4 Kanälen kannst Du zwei Interlock-Gruppen erstellen, die dann durchaus beide gleichzeitig genutzt werden können (ohne Einschränkungen!)
Wie die Gruppen gebildet werden, ist in der Tasmota Doku erklärt. Wenn Du die Shutter-Option nutzt, kannst Du in openHAB mit zwei Channels beide Shutter komplett bedienen, mit den Kommandos OPEN, CLOSE und STOP sowie direkten Positionsfahrten von 0 bis 100, Rückmeldung der Position inklusive.

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 23. Dez 2020 11:42
von mcdandrew
Danke für Deine Hinweise....der Hinweis zur Nutzung als Shutter ist goldwert!
Am Ende ist es nichts anderes als ein Rollladen :D

Die Frage bzgl. Interlockgruppen wäre die nächste Frage gewesen. Da ich am Relais 3 eine LED Lampe zur Innenbeleuchtung anschließen wollte, sollte dieses beim Verfahren der Hühnerklappe natürlich nicht abgeschalten werden.

Ich werde mich über Weihnachten mal an das Thema machen...ich denke auf deine Unterstützung werde ich allerdings nochmal zurückkommen ;)

Re: SONOFF 4CH Pro mit MQTT unter openHAB 2.5 anbinden

Verfasst: 24. Dez 2020 02:20
von mcdandrew
Ich habe heute angefangen mit der Erstellung des Things und der entsprechenden Items und bereits eine Verständnisfrage.
Ich habe mich bei der Erstellung an meine sehr gut funktionierenden Rollladen in Verbindung mit Sonoff Dual R2 orientiert. Im Grunde handelt es sich dabei ja auch um zwei Relais.
Was ich nicht so recht verstehe, warum ich nun 2 Channels benötigen soll, beim Dual benötige ich auch nur ein Channel. :?:
Oder hast du dich von der Grafik verwirren lassen??? Entgegen der Grafik habe ich nur einen DC Motor.

Ich habe mal einfach den Thing und Item File angehangen....passt das so?


Thing File

Code: Alles auswählen

Thing mqtt:topic:mqttbroker:sonoff_ch4_huehnerstall "MQTT Thing: Sonoff 4CH Pro R2" (mqtt:broker:mqttbroker) @ "MQTT"  
{
    Channels:
	Type rollershutter : open 	
		[ stateTopic= "stat/sonoff4chpro/SHUTTER1", commandTopic="cmnd/sonoff4chpro/Backlog", on="ShutterOpen1", off="ShutterClose1", 	stop="ShutterStop1" ]
	Type switch : light 
		[ stateTopic= "stat/sonoff4chpro/POWER3", commandTopic="cmnd/sonoff4chpro/POWER3" ]
	Type switch : ch4 
		[ stateTopic= "stat/sonoff4chpro/POWER4", commandTopic="cmnd/sonoff4chpro/POWER4" ]
}
Item-File

Code: Alles auswählen

Rollershutter 	sonoff_ch4_huhn_open	"Hühnerstall [(%d %%)]" <rollershutter> ["Blinds"]{channel="mqtt:topic:mqttbroker:sonoff_ch4_huehnerstall:binds"}
Switch	sonoff_ch4_huhn_light	"Hühnerstall Licht ON/OFF"					{channel="mqtt:topic:mqttbroker:sonoff_ch4_huehnerstall:light" }