NodeMCU & Openhab

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
thedude78
Beiträge: 10
Registriert: 4. Feb 2020 08:19
Answers: 0

NodeMCU & Openhab

Beitrag von thedude78 »

Hallo zusammen,

Und mal wieder stehe ich vor einem kleinen Problem, bei welchem ich eure Hilfe benötigen könnte. Mein derzeitiges Projekt ist die Wiederverwertung einen alten Deckenlampe. Hierzu habe ich mir gedacht einen WS2812b-LED-Stripe und eine NodeMCU zu verwenden und diese mittels MQTT in meine Heimautomatisierung einzubinden.
Witzigerweise ging mir der elektronische Teil dieses Projekts einfacher von der Hand als die Implementierung in Openhab. Hier hänge ich gerade fest und bekomme die beiden Instanzen nicht dazu miteinander zu kommunizieren.
Man muss dazu sagen, dass ich im Breich Openhab bzw. MQTT noch nicht so fit bin.

Das Projekt basiert auf folgendem Link: https://community.openhab.org/t/nodemcu ... deos/39902

Meine editierte Items-Datei sieht folgendermaßen aus:

Code: Alles auswählen

Group:Switch    FLU_LED_GROUP      "Flur LEDs"
Switch          FLU_LED_GROUP_Red            "Flur Red"       (FLU_LED_GROUP)    [ "Switchable" ]
Switch          FLU_LED_GROUP_Blue           "Flur Blue"      (FLU_LED_GROUP)    [ "Switchable" ]
Switch          FLU_LED_GROUP_White          "Flur White"     (FLU_LED_GROUP)    [ "Switchable" ]
Switch          FLU_LED_GROUP_Green          "Flur Green"     (FLU_LED_GROUP)    [ "Switchable" ]

Switch          FLU_LED_DECKE_Power         "Ledstrip Power [%s]"   [ "Switchable" ]  {channel="mqtt:topic:mosquitto:FLU_LED_DECKE:FLU_LED_DECKE_Power"}
String          FLU_LED_DECKE_FX            "Ledstrip FX [MAP(LEDStripEffectJSON_2.map)%s]" 
String          FLU_LED_DECKE               "Ledstrip overall state [%s]"   {channel="mqtt:topic:mosquitto:FLU_LED_DECKE:FLU_LED_DECKE"}
Dimmer          FLU_LED_DECKE_Speed         "Ledstrip Speed" 
Dimmer          FLU_LED_DECKE_Intensity     "Ledstrip Intensity"
Color           FLU_LED_DECKE_Color         "Ledstrip Color"     <rgb>      [ "Switchable" ] 
String          FLU_LED_DECKE_Color_red     "Ledstrip red color [%s]"       {channel="mosquitto:FLU_LED_DECKE:FLU_LED_DECKE_Red"}
String          FLU_LED_DECKE_Color_green   "Ledstrip green color [%s]"     {channel="mosquitto:FLU_LED_DECKE:FLU_LED_DECKE_Green"}
String          FLU_LED_DECKE_Color_blue    "Ledstrip blue color [%s]"      {channel="mosquitto:FLU_LED_DECKE:FLU_LED_DECKE_Blue"}

Switch          prev_FLU_LED_DECKE_Power
String          prev_FLU_LED_DECKE_FX
Dimmer          prev_FLU_LED_DECKE_Speed
Dimmer          prev_FLU_LED_DECKE_Intensity
Color           prev_FLU_LED_DECKE_Color
Sitemap & Rules sind entsprechend angepasst. Nun ist mein Problem vermutlich erher grundliegender Natur, dann meine bisherigen Items (bspw. Sonoff) sehen wie folgt aus:

Code: Alles auswählen

Switch sonoff_basic_switch_1   		"Nespresso"		<poweroutlet> 	{channel="mqtt:topic:mosquitto:sonoff_basic_switch_1:power"}
Number sonoff_basic_switch_1_wifi	"WiFi [%d %%]"      	<wifi>          {channel="mqtt:topic:mosquitto:sonoff_basic_switch_1:rssi"}
Bei diesen Endgeräten habe ich jeweils noch eine Things-Datei mit anlegen müssen, welche die Konfiguration des Brokers, in meinem Fall "mosquitto" beinhaltet. Dies fehlt mir bei in der jetzigen Konstellation. Ich vermute, dass dies damit zusammenhängt, dass meine bisherigen Implementierungen auf einem älteren MQTT-Standard basieren. Dem entsprechend, und weil ich schon davon gelesen habe, habe ich nun über die PaperUI zusätzlich eine Bridge auf den bisherigen Broker angelegt. Nur leider erhalte ich bei Betätigung eines Items über die Basic-UI keine Rückmeldung von mosquitto (getestet mittels MQTTSpy).
Lege ich über die PaperUI ein Generic-Item "Power" an und pflege dort den entsprechenden Channel "/home/FLU_LED_DECKE" so sehe ich die Reaktion über MQTTSpy ("ON", bzw. "OFF"). Nicht jedoch, wenn ich über die normale Sitemap schalte. Hier sehe ich nur die Änderungen im LogViewer.

Vielen Dank schon mal für eure Hilfe.

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

Re: NodeMCU & Openhab

Beitrag von udo1toni »

Also, mqtt...

Der Weg der Kommunikation ist folgender: Jedes Gerät, welches mittels mqtt kommunizieren will, verbindet sich mit einem mqtt Broker (typischerweise mosquitto). Man kann durchaus mehrere Broker einsetzen, aber normalerweise setzt man exakt einen Broker ein. Das bedeutet, man braucht pro Gerät exakt eine Verbindung zu diesem Broker. openHAB macht da keine Ausnahme. In openHAB kann man zwei unterschiedliche Bindings nutzen, um mit mqtt zu arbeiten, das eine ist mqtt1, das andere ist mqtt2. mqtt1 ist alt, mqtt2 ist neu ;) mqtt1 wird mit openHAB3 nicht mehr unterstützt werden, es ist also sinnvoll, mqtt2 zu nutzen.
Da mqtt2 das Things-Modell nutzt, gibt es je Broker-Verbindung eine Bridge. Unterhalb dieser Bridge kann man beliebig viele Things mit jeweils beliebig vielen Channels anlegen. Gewöhnlich wird man pro Device ein Thing anlegen und alle Channel, die dieses Device betreffen, in diesem Thing zusammenfassen (das ist die Idee hinter dem Things-Modell)
Ob Du Bridge und Things über Paper UI oder *.things Datei anlegst, bleibt sich gleich, Du solltest aber möglichst vermeiden, beide Wege zu mischen, weil Du a) Things, die in Paper UI angelegt sind, nicht in der *.things Datei siehst und b) Things, die über eine *.things Datei angelegt sind, zwar in Paper UI siehst, dort aber nicht bearbeiten kannst.

Wenn Du schon mqtt am Laufen hast, brauchst Du also keinesfalls(!) eine zusätzliche Bridge, sondern musst im Gegenteil die notwendigen Things unterhalb der vorhandenen Bridge anlegen. Jeder zu steuernde Kanal muss mit einem Channel repräsentiert werden.
Normalerweise würde man einen RGB-LED Streifen über einen color Channel abbilden, allerdings muss die Gegenseite (also das Device, an dem der Streifen angeschlossen ist) dann HSB als Codierung unterstützen.
Du kannst aber stattdessen auch drei (bzw. in Deinem Fall 4, wegen Weiß) Dimmer Channel anlegen. In den Channeln gibt es jeweils ein stateTopic und ein commandTopic, beide müssen korrekt passend zum Device angelegt sein. Damit Du die Channel bedienen kannst, musst Du die Channel mit Items verlinken.

Es gibt ein paar Dinge, die man über mqtt wissen sollte, beispielsweise kann ein Topic zwar mit einem / anfangen, das ist aber nicht so gedacht. Damit ist er erste Teil des Topics leer. Besser ist es also, als ersten Teil Text zu verwenden. Grundsätzlich sind Topics und Payload "case sensitive", was aber nicht zwangsläufig bedeutet, dass sich alle Mitspieler an diese Regel halten ;)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

thedude78
Beiträge: 10
Registriert: 4. Feb 2020 08:19
Answers: 0

Re: NodeMCU & Openhab

Beitrag von thedude78 »

Hallo udo1toni,

Danke erstmal für die Auskunft. Dann werde ich mal versuchen, ob das mit der entsprechenden Thing-Datei klappt.

Antworten