Problem im Zusammenspiel mit MQTT Meldungen von ESPHome

Begonnen von Dieter68, 27 Januar 2022, 10:31:31

Vorheriges Thema - Nächstes Thema

Dieter68

Hallo,

ich habe mir einen Lifepo4 Akku für meine PV-Anlage gebaut der mit einem Daly-Batteriemanagement gesteuert wird.
Dieses BMS gibt die Daten wie Spannung, Strom, Zuständer einzelnen Zellen über RS232 aus. Diese Werte reiche ich an einen ESP8266 weiter der diese dann per WLAN an meinen Fhem per MQTT senden soll.
Auf dem Fhem läuft MQTT2 Client mit autocreate.

Es wird zwar ein Gerät gefunden aber die einzelnen Readings erscheinen nicht in Fhem.

Um das ganze jetzt mal zu überprüfen habe ich mit MQTT.fx die Werte direkt am Broker ausgelesen - hier stimmt alles. Alle Werte werden einzeln angezeigt und stimmen auch.

Ein Beispiel für den Temperaturfühler 1

daly/sensor/temperature_1/state
17

Es wird also richtig die 17Grad übermittelt.

Jetzt habe ich in Fhem unter dem Gerät "MQTT2_daly" folgende readingList

daly:daly/sensor/bms_status/state:.* state
daly:daly/sensor/remaining_capacity/state:.* state
daly:daly/sensor/cells_number/state:.* state
daly:daly/sensor/temperature_1/state:.* state
daly:daly/sensor/temperature_2/state:.* state
daly:daly/sensor/battery_voltage/state:.* state
daly:daly/sensor/battery_current/state:.* state
daly:daly/sensor/battery_level/state:.* state
daly:daly/sensor/max_cell_voltage/state:.* state
daly:daly/sensor/max_cell_voltage_number/state:.* state
daly:daly/sensor/min_cell_voltage/state:.* state
daly:daly/sensor/min_cell_voltage_number/state:.* state
daly:daly/sensor/max_temperature/state:.* state
daly:daly/sensor/max_temperature_probe_number/state:.* state
daly:daly/sensor/min_temperature/state:.* state
daly:daly/sensor/min_temperature_probe_number/state:.* state
daly:daly/rssi:.* rssi
daly:daly/binary_sensor/charging_mos/state:.* state
daly:daly/status:.* status



Dort wird der Eintrag Temperatur 1 zwar angezeigt aber eben nicht als reading.

Ja - jetzt stehe ich auf dem Schlauch.

Wie kann ich das so abändern das ich die Werte auch als reading bekomme?

Es wäre schön wenn Ihr mir hier einen Tipp geben könntet.

Danke und Gruß
Dieter68

Beta-User

Zitat von: Dieter68 am 27 Januar 2022, 10:31:31
Es wird zwar ein Gerät gefunden aber die einzelnen Readings erscheinen nicht in Fhem.
Extra für sowas mal angefangen: https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt

Mal ein Anfang:
daly/sensor/bms_status/state:.* bms_status
daly/sensor/remaining_capacity/state:.* remaining_capacity
daly/sensor/cells_number/state:.* cells_number
[...]
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

Dieter68

Das Wiki hatte ich mir schon durchgelesen nur fehlt mir da der Durchblick.
Aber jetzt habe ich ja einen Anfang.

Danke

aber warum erkennt Fhem das so ohne Änderung nicht?

Wenn ich die Sensoren mit ESPEasy auf dem ESP8266 laufen habe funktioniert das immer völlig ohne Probleme.

Die Readings werden dann immer automatisch angelegt.

Liegt das an verschiedenen Formaten wie eine MQTT Meldung gesendet wird oder was ist der Grund?

Gruß
Dieter68

Beta-User

Zitat von: Dieter68 am 27 Januar 2022, 13:30:26
aber warum erkennt Fhem das so ohne Änderung nicht?
FHEM (MQTT2_DEVICE-autocreate) muss halt "raten", wie eine Info zu verstehen ist, die über einen bisher unbekannten Topic reinkommt.
Es wird z.B. geraten, ob es JSON ist (dann Funktion für's auspacken verwenden), oder ob es "Klartext" ist. Wenn "Klartext", wird noch geschaut, ob es ein "mehrkanaliges" sein könnte (vorher oder am Ende eine Nummer), und das war's dann eben...

Wenn was - wie hier - immer "state" (ohne Nummer) ans Ende schreibt, landet halt alles im gleichen Reading, ohne dass man es hinterher noch unterscheiden könnte. Dann muss der User halt selbst Hand anlegen... (Mann, sind wir verwöhnt :P ::) :-* ).

Zitat
Wenn ich die Sensoren mit ESPEasy auf dem ESP8266 laufen habe funktioniert das immer völlig ohne Probleme.
Die machen es vermutlich auch "ordentlich"...

ZitatDie Readings werden dann immer automatisch angelegt.
Werden sie hier auch...

ZitatLiegt das an verschiedenen Formaten wie eine MQTT Meldung gesendet wird oder was ist der Grund?
Es liegt an der Topic-Struktur...
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

Dieter68

Alles klar ...danke wieder für die Info.

Wenn man in ESPHome die MQTT-Meldung selber quasi per Hand erzeugt funktioniert das auch immer ohne Probleme.

So hatte ich das Problem auch erst mal umschifft.

In dem fertigen Modul für das Daly BMS werden die Meldungen aber quasi im Hintergrund erzeugt also ohne das man da so direkt Zugriff drauf hat und im dem Code wollte ich nichts ändern.

Leider habe ich weder von Pearl noch von C eine Ahnung.

Aber gut Du hast mir sehr geholfen.

Danke und Gruß
Dieter68

Beta-User

Zitat von: Dieter68 am 27 Januar 2022, 13:45:45
Alles klar ...danke wieder für die Info.
Na ja, wenn es für dich jetzt alles klar ist, kannst du auch ein [gelöst] davor machen.

Zitat
Wenn man in ESPHome die MQTT-Meldung selber quasi per Hand erzeugt funktioniert das auch immer ohne Probleme.
Ich kann jedenfalls nicht nachvollziehen, was mir (?) das ggf. sagen soll bzw. mußte erst mal eine Suchmaschine bemühen, um nach https://esphome.io/ zu kommen, was vielleicht beteiligt ist.

ZitatIn dem fertigen Modul für das Daly BMS werden die Meldungen aber quasi im Hintergrund erzeugt also ohne das man da so direkt Zugriff drauf hat und im dem Code wollte ich nichts ändern.

Leider habe ich weder von Pearl noch von C eine Ahnung.
Den Pearl-Katalog habe ich auch schon länger nicht mehr angesehen, in Perl (im FHEM-Umfeld) kann ich mich zwischenzeitlich halbwegs orientieren.

Aus dem gezeigten "Schnippsel" würde ich den Schluss ziehen, dass es durchaus möglich ist, ordentliche Readings in FHEM zu generieren. Entweder in Handarbeit, oder, indem man ggf. die Variable $TOPIC mit auswertet.
Ungetestet etwa so:
daly/sensor/[^/]+/state:.* { $TOPIC =~ m,daly/sensor/([^/]+)/state/,; {$1 => $EVENT} }
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