MQTT2_DEVICE readingList: Verschiedene topics schreiben in das selbe reading

Begonnen von McElch, 16 Januar 2021, 17:09:34

Vorheriges Thema - Nächstes Thema

McElch

Hallo, ich möchte die Spannung meiner Autobatterien auch im fhem überwachen. Da ich bereits diverse Tasmota-Steckdosen mit MQTT2 im Einsatz habe, möchte ich dafür MQTT2 benutzen. Das Auto meldet an einen externen Broker (CloudMQTT).

Ich habe erfolgreich einen MQTT2_CLIENT eingerichtet und mit CloudMQTT verbunden. Dieser hat wenn ich das richtig verstanden habe per autocreate ein MQTT2_DEVICE angelegt. Im Attribut "readingList" tauchen dort auch alle drei Batterien richtig auf:

defmod MQTT2_CMQTT MQTT2_DEVICE CMQTT
attr MQTT2_CMQTT IODev CMQTT
attr MQTT2_CMQTT readingList CMQTT:Transit_3/status/LWT:.* LWT\
CMQTT:Transit_3/Batterie3/Spannung:.* Spannung\
CMQTT:Transit_2/Batterie2/Spannung:.* Spannung\
CMQTT:Transit_2/status/LWT:.* LWT\
CMQTT:Transit_1/status/LWT:.* LWT\
CMQTT:Transit_1/Batterie1/Spannung:.* Spannung
attr MQTT2_CMQTT room MQTT2_DEVICE

setstate MQTT2_CMQTT 2021-01-16 16:43:31 LWT Connected
setstate MQTT2_CMQTT 2021-01-16 16:43:46 Spannung 12.76



Als readings habe ich aber nur je 1x LWT (was ich nicht brauche) und Spannung, und dort erscheint immer der Wert der Batterie, die zuletzt etwas gesendet hat. So wie hier oben eben zB Spannung 12.76, was die Starterbatterie ist. In ein paar Minuten steht dann dort der Wert einer anderen Batterie, sobald diese einen gesendet hat.

Wie kann ich das dahingehend ändern, dass ich readings für alle drei Batterien habe, also zB

Batterie1: 12,76
Batterie2: 12.56
Batterie3: 12.32

Sicher ist das hier im Forum schon irgendwo erklärt, ich finde es nur nicht in der Vielzahl der Informationen! Vielen Dank im Voraus für einen Schubs in die richtige Richtung!

Beta-User

Na ja, wenn man MQTT2_CLIENT mit autocreate nutzt, sollte man sich über zwei Dinge Gedanken machen:
- Wie bekommt man da Einzeldevices, wo man welche haben will (anstatt des "Sammeldevices") und
- wie verhindert man, dass man die "set"-Zweige auch noch abonniert?

Hinweise findet man im Wiki zu MQTT2_CLIENT.

Hier würde ich schlicht neue Devices für jedes der drei Basistopics anlegen (am einfachste die RAW-def nehmen und damit drei Kopien erstellen mit je eigenem Namen). Oder eben die Readings nummerieren/unterschiedlich benennen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

McElch

Vielen Dank für die mal wieder superschnelle und zielführende Hilfe!

Ich bin dem Vorschlag der drei Einzelgeräte gefolgt, die ich ausgehend von dem autocreated device per Kopie erzeugt habe. Dann jeweils die zwei anderen Batterien rausgelöscht aus der jeweiligen readingList. Jetzt habe ich drei einzelne Geräte, die die drei Batterien bzw. deren Spannungen repräsentieren.

Das autocreate habe ich bei dem IODev wieder deaktiviert. Problem gelöst!  :)