mejdan hat geschrieben: 21. Aug 2025 07:51
Sehr geehrter Herr Toni,
Ach, bitte Udo, wir sind hier eigentlich alle beim Du, ob wir uns nun näher kennen oder nicht...
Die Bridge muss so aussehen:
Code: Alles auswählen
Bridge mqtt:broker:MQTT "HauptBroker_MQTT" [
host="localhost",
port=1883,
secure=false,
username="user",
password="mmmeee",
clientID="openhab",
qos=1,
retainMessages=true
] {
Thing topic shellyem3 "Shelly EM3" @ "Shelly Devices"
{
Channels:
Type number : EM_L1_power "Wati" [ stateTopic="shellies/shellyem3/emeter/0/power" ]
Type number : EM_L1_voltage "Voltage" [ stateTopic="shellies/shellyem3/emeter/0/voltage" ]
Type number : EM_L1_current "Current" [ stateTopic="shellies/shellyem3/emeter/0/current" ]
}
// und so weiter...
// letzte Zeilen der Bridge (alle untergeordneten Things sind obendrüber, ab hier nur noch publishTrigger)
Type publishTrigger : terasaplatta_State_Event [ stateTopic="hasp/+/terasaplatta/#", separator="#"]
}
Das sieht etwas komisch aus

ist aber die einzige Variante, wie man die Things als Kinder definieren kann. Alternativ die Things getrennt definieren:
Code: Alles auswählen
Bridge mqtt:broker:MQTT "HauptBroker_MQTT" [
host="localhost",
port=1883,
secure=false,
username="user",
password="mmmeee",
clientID="openhab",
qos=1,
retainMessages=true
] {
Channels:
Type publishTrigger : terasaplatta_State_Event [ stateTopic="hasp/+/terasaplatta/#", separator="#"]
}
// Bridge fertig, deshalb alle nachfolgenden Things als unabhängige Geräte
Thing mqtt:topic:MQTT:shellyem3 "Shelly EM3" @ "Shelly Devices" (mqtt:broker:MQTT)
{
Channels:
Type number : EM_L1_power "Wati" [ stateTopic="shellies/shellyem3/emeter/0/power" ]
Type number : EM_L1_voltage "Voltage" [ stateTopic="shellies/shellyem3/emeter/0/voltage" ]
Type number : EM_L1_current "Current" [ stateTopic="shellies/shellyem3/emeter/0/current" ]
}
// nächstes Thing, unabhängig von der Bridge definiert
Das Schlüsselwort Channels: kann auch entfallen. Die Formatierung (Zeilenumbrüche, Leerzeichen) ist "beliebig", naturgemäß sollte man eine Form wählen, die gut lesbar ist und Zusammenhänge erkennen lässt.
Noch ein kleiner Tipp: die UIDs (ebenso wie die Itemnamen) sollten möglichst kurz gewählt werden. Die Namen sind case-sensitive, im Beispiel wäre z.B. trigger als Channel ausreichend, wenn es mehrere publishTrigger geben solle z.B. triggerTerasaplatta, das ergäbe dann mqtt:broker:MQTT:triggerTerasaplatta als Triggering Channel, was eindeutig genug sein sollte.
Jeder mqtt Channel enthält ankommend einen Status, jeder Trigger löst ein Event aus, beide Begriffe sind also unnötig. Aber nicht jeder mqtt Channel ist vom Typ trigger, das könnte man also eher zur Unterscheidung von anderen Channels verwenden. Allerdings sind alle mqtt Channel, welche nicht unmittelbar zur Bridge gehören automatisch Teil eines anderen Things und somit heißt die UID immer mqtt:topic:<brokername>:<thing>:<channel>, entsprechend könnte man auch gut noch auf den trigger Wortteil verzichten
In der Kürze liegt die Würze, immer dran denken, dass Du die UIDs immer hinschreiben musst, wenn Du Bezug darauf nehmen willst. Du kannst UIDs nicht nachträglich ändern (nun ja, über Textdefinition schon, aber streng genommen löschst Du die UID und erzeugst eine neue), lange UIDs können also schnell nervig sein. So viel Inhalt wie nötig, aber so kurz wie möglich...
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte