[Gelöst] Unterschiedliche Devices aus IObroker => MQTT => FHEM

Begonnen von cb2sela, 28 Oktober 2021, 14:15:21

Vorheriges Thema - Nächstes Thema

cb2sela

Vorgeschichte:
Die Integration des conbee II in FHEM via deconz hat mir nie gefallen und lief nie richtig sauber mit meinen devices.
Die Integration über den nativen zigbee-Adapter in IObroker funktioniert sehr gut und deswegen laufen meine zigbee devices über IObroker. Ich verwende das FHEM-interne MQTT2.

Aufgabenstellung:
Ich möchte die readings und logfiles z.B. der Aqara Temperatursensoren trotzdem in FHEM haben.

Lösungsansatz:
Ich habe in IObroker den MQTT-Client installiert und den Client wiefolgt konfiguriert:
ClientID: iobroker, Prefix for publishing topics: iob

Ein Aqara device habe ich so konfiguriert, dass ich folgende Readings publishe:
zigbee/Kerstin/battery
zigbee/Kerstin/temperature
zigbee/Kerstin/humidity

In FHEM wird mit dem ersten Eintreffen von Werten dann auch schön ein Device MQTT2_iobroker und ein logfile FileLog_MQTT2_iobroker angelegt.

readingList:
iobroker:iob/zigbee/Kerstin/temperature:.* temperature
iobroker:iob/zigbee/Kerstin/humidity:.* humidity
iobroker:iob/zigbee/Kerstin/pressure:.* pressure

Logfile:
2021-10-28_14:07:17 MQTT2_iobroker temperature: 22.7
2021-10-28_14:07:17 MQTT2_iobroker humidity: 57.2
2021-10-28_14:07:17 MQTT2_iobroker pressure: 970

Soweit so gut.

Problem:
Mit diesem Ansatz schreibt ein zweiter Aqara Sensor z.B. im Kinderzimmer aber ins gleiche Device MQTT2_iobroker.
Auch wenn ich dort ein ganz anderes topic verwende. Das Device in FHEM wird anhand der Konfiguration der MQTT-Client-ID in IObroker angelegt. Diese Einstellung ist global und kann nicht pro Device geändert werden.

Wie bekomme ich es also hin, dass unterschiedliche Devices aus IObroker auch unterschiedliche Devices in FHEM anlegen?

Beta-User

Du könntest ein "bridge" Device anlegen (mit passendem "bridgeRegexp"-Attribut), das z.B. jeden "Raum" (Kerstin scheint ein solcher zu sein?) automatisiert in eine eigene MQTT2_DEVICE-Instanz umleitet.

Oder eben hergehen, und das "Großdevice" mit der CID "iobroker" manuell auseinandernehmen (und für die "Teildevices" keine CID vergeben bzw. was anderes wie "iobroker").

Falls dir diese Kurzfassung nicht ausreicht: bitte nachfragen!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

cb2sela

Vielen Dank. Das hat geholfen. Ich bin Deinen Ansatz 1 gefahren, weil ich beim Ansatz 2 gar nicht wusste wer, wie und was  ;)

Für die Nachwelt:
Zunächst habe ich dem Device MQTT2_iobroker das attrtemplate "MQTT2_client_general_bridge"  verpasst.
Anschließend habe ich darin die bridgeRegexp mit zwei weiteren Zeilen angepasst:

iob/zigbee/Kerstin/.*:.* "temp_kerstin"
iob/zigbee/Kinderzimmer/.*:.* "temp_kinderzimmer"


Anschließend shutdown restart und ab nun werden die Messungen in separate Devices und logfiles geschrieben.

Nochmals vielen Dank.

Beta-User

...das geht generischer... (aber dann mit teilweiser Großschreibung):
iob/zigbee/([^/]+)/.*:.* "temp_$1"
Allerdings würde ich überlegen, das noch generischer zu gestalten, aber dafür gibt dein Topic-Pfad zu wenig Infos preis ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files