Migration mqtt 1 => mqtt 2.5

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Migration mqtt 1 => mqtt 2.5

Beitrag von int5749 »

Hallo zusammen,

ich habe den Bericht über Konfiguration für die Sonoff Switche gelesen, aber ich komme trotzdem nicht weiter :roll:

Es wurde Zeit, mqtt zu migrieren und da der bei mir dahinter liegende Service noch andere Probleme hat, wollte ich von scratch starten.
*.cfg von der 1er Version gesichert und in der Konfig gelöscht und dann mqtt 1 de-installiert
mqtt 2 installiert und ich möchte die Konfiguration über meine *.things erstellen.

Code: Alles auswählen

Bridge  mqtt:broker:xxx MQTT [ host="192.168.123.123", secure=true, clientID="xxxClientID", username="MQTT_xxx", password="GanzGeheim " ]
{
	Thing mqtt:topic:shaun "Landroid Shaun" @"MQTT" {                         
	Channels:
		Type string : Mower_StatusDescription	"Status [%s]"		[ stateTopic="statusDescription" ]
		Type switch : Mower_Start				""				[ commandTopic="start/set" ]
		Type switch : Mower_Home				""			[ commandTopic="stop/set" ]
    }
}
Jedoch startet diese Bridge nicht :twisted:
21:48:55.488 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'mqtt:broker:xxxMQTT' changed from OFFLINE (COMMUNICATION_ERROR): io.netty.channel.AbstractChanne
l$AnnotatedConnectException: Connection refused: no further information: /192.168.123.123:8883 to OFFLINE
21:48:55.503 [INFO ] [o.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to '192.168.123.123' with clientid xxxClientID
21:48:56.628 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'mqtt:broker:xxxMQTT' changed from OFFLINE to OFFLINE (COMMUNICATION_ERROR): io.netty.channel.Abs
tractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.123.123:8883
Im Hintergrund läuft noch eine Moquitto Instanz als Service

Beim Thing wird der folgende Fehler angezeigt, den ich nicht nachvollziehen kann :(
Provide a thing type ID and a thing ID in this format:
<thingTypeId> <thingId>
Ich hoffe ihr habt hier einen Tipp :?:
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von int5749 »

Ich habe die Vermutung, dass es am User/Passwort liegt, aber wie sage in OH, dass es den externen Mosquitto Broker nutzen soll?
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von udo1toni »

Deine Bridge ist nicht korrekt konfiguriert. Du hast das Label nicht in Anführungszeichen gesetzt.
Das Thing ist auch nicht korrekt (obwohl es gegenteilige Erfahrungen gibt...) Sieh mal hier:
https://github.com/openhab/openhab-addo ... xamples.md Da ist das Beispiel für die (fast vollständige) Konfiguration per *.things Datei (das Label steht bei der ersten Version nicht mit drin).

Wenn alle Parameter korrekt sind, muss die Verbindung dann zustande kommen.

Seltsamerweise scheint das Binding zu versuchen, auf Port 8883 zu kommunizieren, statt auf 1883. 1883 ist der default Port, und Du hast ihn leut Konfiguration nicht auf etwas anderes gesetzt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von int5749 »

Hallo zusammen,

mqtt scheint nun zu laufen, derzeit kämpfe ich mit meiner Konfiguration für den Mähroboter.

Zugriff über eine Bridge funktioniert bereit (dank diverser Unterstützung) und ich kann die Werte auslesen. Dazu habe ich einen Channel in der PaperUI erstellt und mehrere Items mit passender JSON Abfrage mit diesem verlinkt. Nun möchte ich dies in eine Items überführen.

1) Kann ich über *.items und *.things einem Channel mehrere Items zurdnen? Oder müsste ich mehrere Channel erstellen?
2) Es gibt in der JSON Konfig 3 Dateien (items, links und things). Wie könnte ich dies nun in meine Files-Konfiguration umstellen??

Viele Grüße

Jörg
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von udo1toni »

Wenn Du über Textdateien konfigurieren willst, musst Du nur eine mqtt.things (die kann natürlich auch einen anderen Namen haben...) mit mqtt Bridge und zugehörigen Things anlegen und eine mqtt.items (wie bei *.things) mit den zugehörigen Items. Die Verknüpfung der Items zu den entsprechenden Channels erfolgt über die *.items Datei, statt des Bindings mit Konfiguration wird halt der jeweilige Channel eingetragen.
Man kann mehrere Items mit dem selben Channel verlinken, allerdings wäre die Frage, warum man das tun sollte.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von int5749 »

udo1toni hat geschrieben: 11. Mär 2020 22:46 Wenn Du über Textdateien konfigurieren willst, musst Du nur eine mqtt.things (die kann natürlich auch einen anderen Namen haben...) mit mqtt Bridge und zugehörigen Things anlegen und eine mqtt.items (wie bei *.things) mit den zugehörigen Items. Die Verknüpfung der Items zu den entsprechenden Channels erfolgt über die *.items Datei, statt des Bindings mit Konfiguration wird halt der jeweilige Channel eingetragen.
Man kann mehrere Items mit dem selben Channel verlinken, allerdings wäre die Frage, warum man das tun sollte.
Weil der eine Channel alle notwendigen Informationen in einem JSON String liefert. Die items müssten dann dann den jeweiligen JSON Pfad abfragen. HIer scheitere ich gerade an der definition der items :-/
Bridge und Channel laufen bereits, ich kann auch einen Channel pro JSON anlegen, aber das sollte ja nicht nötig sein.

Wie sähe denn ein Beispiel Item für MQTT 2 aus, in dem der JSON Path mit angegeben wird?
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von udo1toni »

Ah. Es kommt darauf an, ob es nur um die Anzeige geht, oder Du die Information auch weiterverarbeiten willst. Falls Ersteres zutrifft, nutzt Du nur ein Item, setzt aber verschiedene Label ein. Bei mir z.B.:

Code: Alles auswählen

Default item=SonoffT12Tele label="SOnOff T2 FS [JSONPATH($.Wifi.RSSI):%s%%]"
Default item=SonoffT12Tele label="SOnOff T2 MAC [JSONPATH($.Wifi.BSSId):%s]"
Default item=SonoffT12Tele label="SOnOff T2 Uptime [JSONPATH($.Uptime):%s]"
Es handelt sich nur um ein Item, es werden aber drei verschiedene Werte angezeigt.
Man kann innerhalb einer Rule die Action transfrom() verwenden, um die entsprechenden Werte zu extrahieren, oder man legt eben tatsächlich mehrere Channel mit identischem stateTopic aber unterschiedlichen Transformations an, damit die Daten direkt in getrennten Items landen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von int5749 »

Hallo Udo,
danke, dies hat geholfen (wie so häufig) :)

Ich sehe oben bei Deinem Beispiel, dass Du auch die Feldstärke (WiFi) mit darstellst.
Ich wollte dies für meinen Roboter ebenfalls nutzen, jedoch liefert dieser einen negativen Wert mit

Code: Alles auswählen

Number Mower_Wifi_Signal	"WiFi-Signal: [SCALE(rssi.scale):%s dBm]"			<qualityofservice>
In der rssi.scale habe ich 100 auf die 4 verfügbaren Werte aufgteilt, der erste lautet bis 25 = 1
Somit bin ich mit -78% (derzeitiger Wert) deutlich unter 25, aber eigentlich sollte es sicher schon eine 4 sein.

Ich habe überlegt, in der transform auch negative Werte anzugeben, aber finde dies unsauber?
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von udo1toni »

Warum? dBm werden als negative Werte angegeben, das stimmt schon.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Migration mqtt 1 => mqtt 2.5

Beitrag von int5749 »

Hmm, ich habe die nun mit einer Scale umgerechnet und es wird mir in der Sitemap dann auch 1 als Wert angezeigt, bei einer Feldstärke von -73, welche vom Item kommt. Das Icon hat aber alle 4 Balken, weil ja der Wert vom Item kommt.

Derzeit setze ich den Wert über eine Regel, anstatt einen eigenen Channel dafür zu nehmen.

Wie müsste ich denn diese Regel anpassen, damit der Scale Wert im Item landet??

Item

Code: Alles auswählen

Number Mower_Wifi_Signal	"WiFi-Signal: [SCALE(rssi.scale):%s dBm]"			<qualityofservice>
Regel

Code: Alles auswählen

rule "Convert JSON to Item Type Number"
when
	Item Mower_Json changed
then
	val json = Mower_Json.state.toString
	Mower_Batterie.postUpdate( transform("JSONPATH", "$.dat.bt.p", json) )
	Mower_BatVolt.postUpdate( transform("JSONPATH", "$.dat.bt.v", json) )
	Mower_BatTemp.postUpdate( transform("JSONPATH", "$.dat.bt.t", json) )
	Mower_Wifi_Signal.postUpdate( transform("JSONPATH", "$.dat.rsi", json) )
	Mower_Travel.postUpdate( transform("JSONPATH", "$.dat.st.d", json) )
	Mower_WT.postUpdate( transform("JSONPATH", "$.dat.st.wt", json) )
	Mower_WT_Blade.postUpdate( transform("JSONPATH", "$.dat.st.b", json) )
end
Oder ginge dies über einen eigenen Channel einfacher?

Generell die Frage: Was "belastet" ein System weniger? Einen zusätzlichen Channel oder eine Rule??
Macht bei meinem kleinen System wahrscheinlich keinen Unterschied, aber so generell ;-)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Antworten