Hallo,
ich möchte meinen Speicher per MQTT in Fhem einbinden.
Die Verbindung konnte ich auch schon herstellen.
MQTT ist hier aber nicht so umgesetzt, wie ich das erwartet hätte.
Wenn ich z.B. den Payload CD=01 an den Speciher schicke bekomme ich eine Antwort, die folgendermaßen außsieht und in ein reading geschrieben wird:
p1=1,p2=1,w1=132,w2=105,pe=35,vv=142,sv=11,cs=1,cd=3,am=0,o1=0,o2=0,do=100,lv=5,cj=0,kn=784,g1=0,g2=0,b1=0,b2=0,tl=14,th=15,tc=0,tf=0,fc=202303012046,id=5,a0=35,a1=0,a2=0,l0=2,l1=0
Also ganz einfach eine durch Komma seperierte Liste. Wie kann ich die einzelnen Elemente in eigene Readings packen?
Danke und Grüße
druschba
Ungetestet - für die readingList:
{my $ret; for my $element (split m{,}x, $EVENT) {my ($key, $val) = split m{=}x, $element; $ret->{$key}=$val} return $ret;}Theoretischer Einstieg in das Thema ca. hier:
https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#Perl
Ich wuerde danach ueber ein jsonMap (https://fhem.de/commandref_modular.html#MQTT2_DEVICE-attr-jsonMap) nachdenken.
Mich würde davor eigentlich auch interessieren, was man mit solchen Reading-Werten anfangen kann?
Vielleicht muss man nicht nur die Reading-Namen anpassen, sondern auch die Werte (teilweise) mappen?
Na ja, schauen wir mal...
Danke für Eure Antworten.
Die Werte der einzelnen Readings sind gut dokumentiert. Damit kann ich dann den Ladezustand der Batterie etc. protokolieren und davon abhängig Energie entnehmen.
z.B. p1=1 beduetet auf eingang eins wird die batterie geladen, w1=132 Leiszung auf Eingang1 132 Watt.
Danke für Eure Anregung und Hilfe. ich werde mich mal versuchen.
Falls es interessiert hier ein LINK zu den Payloads: https://github.com/noone2k/hm2500pub/wiki/MQTT
Danke und Grüße
druschba
Zitat von: Beta-User am 25 März 2025, 14:36:01{my $ret; for my $element (split m{,}x, $EVENT) {my ($key, $val) = split m{=}x, $element; $ret->{$key}=$val} return $ret;}
Jetzt muss ich doch fragen...
Zu meinen Verständnis
m{,}x mich irritieren die geschweiften Klammern. Diese kenne ich im Regex um die Anzahl der Wiederholungen zu beschränken. Bedeutet das, dass solange gesplittet wird, wie ein Komma vorhanden ist? Ein Split /,/ macht aber doch auch nichts anderes!?
Edit:
Ich beantworte es selbst...
Zitat aus Perldoc:
ZitatDas letzte Beispiel zeigt, dass s/// andere Trennzeichen wie s!!! und s{}{} und sogar verwendet werden können s{}//.
Zweitens, woher weiß FHEM hier den Readingsnamen, bzw. wie wird dieser ermittelt?
Zitat von: frober am 26 März 2025, 07:39:20Zitat von: Beta-User am 25 März 2025, 14:36:01{my $ret; for my $element (split m{,}x, $EVENT) {my ($key, $val) = split m{=}x, $element; $ret->{$key}=$val} return $ret;}
Jetzt muss ich doch fragen...
Zu meinen Verständnis
m{,}x mich irritieren die geschweiften Klammern. Diese kenne ich im Regex um die Anzahl der Wiederholungen zu beschränken. Bedeutet das, dass solange gesplittet wird, wie ein Komma vorhanden ist? Ein Split /,/ macht aber doch auch nichts anderes!?
Edit:
Ich beantworte es selbst...
Zitat aus Perldoc:
ZitatDas letzte Beispiel zeigt, dass s/// andere Trennzeichen wie s!!! und s{}{} und sogar verwendet werden können s{}//.
Zweitens, woher weiß FHEM hier den Readingsnamen, bzw. wie wird dieser ermittelt?
Das "split m{,}x, $EVENT" ist "vorne" einfach eine "compilerfreundlichere" Schreibweise der regex, mit der gesplittet werden soll. Das Ergebnis ist ein Array mit "x=y" Texten.
Die werden dann einfach weiter am "=" gesplittet, der erste Teil gibt den Readingnamen (key des HASH %ret, auf den referenziert wird), der hintere Teil eben den Reading-Wert.
Zitat von: druschba am 25 März 2025, 19:48:47p1=1 beduetet auf eingang eins wird die batterie geladen
Sowas hatte ich schon vermutet, d.h. "eigentlich" willst du am Ende doch zum Teil "Menschenlesbare Text-Reading-Inhalte".
Für sowas ist es m.E. sinnvoll, die ganze Analyse von $EVENT an eine sub auszulagern, die das erledigt. Siehe z.B. (den weiter verlinkten Thread) hier: https://forum.fhem.de/index.php?msg=1109103
Zitat von: Beta-User am 26 März 2025, 08:15:37Die werden dann einfach weiter am "=" gesplittet, der erste Teil gibt den Readingnamen (key des HASH %ret, auf den referenziert wird), der hintere Teil eben den Reading-Wert.
D.h. mit
return $retwird die Referenz
$ret->{$key}=$valanalog
Reading=Wert übergeben.
Danke für die Erläuterung.
Moin,
ich habs so verstanden das m erlaubt einen anderen Delimiter anzugeben wie /.
Das x ist in dem Fall mein ich überflüssig.
Zitat von: TomLee am 26 März 2025, 08:32:54ich habs so verstanden das m erlaubt einen anderen Delimiter anzugeben wie /.
Ja. Wobei bestimmte "Klammern" halt paarig anzugeben sind, es ginge z.B. auch:
m<,>xZitat von: frober am 26 März 2025, 08:30:36wird die Referenz
Nope. Ganz am Ende nach Auswertung aller Paare wird die Referenz auf einen HASH übergeben, der alle so ermittelbaren Paare enthält, und nicht, (so verstehe ich deine Rückmeldung?) nur ein einzelnes "Reading=Wert"-Paar.
PS: Ob das syntaktisch so klappt, habe ich nicht näher geprüft. Das mit den Siegeln (\%{$ret}?!?) ist immer wieder lustig... Von daher würde mich erst mal von @druschba interessieren, ob das (Zwischen-) Ergebnis paßt, ohne das log zu füllen ;D .
Zitat von: Beta-User am 26 März 2025, 08:42:07Nope. Ganz am Ende nach Auswertung aller Paare wird die Referenz auf einen HASH übergeben, der alle so ermittelbaren Paare enthält, und nicht, (so verstehe ich deine Rückmeldung?) nur ein einzelnes "Reading=Wert"-Paar.
Dein Code habe ich soweit schon verstanden.
Durch die for-Schleife werden alle ermittelten "Reading=Wert"-Paare übergeben.
ZitatPS: Ob das syntaktisch so klappt, habe ich nicht näher geprüft.
Ich vermute es klappt, habs aber auch nicht ausprobiert. Hab mich nur so lange damit beschäftigt, bis ich alles verstanden habe.
Muss jetzt los.
Aber eins noch.
Richtiger wäre $ret so anzugeben: my $ret={};
my ($key, $val) = split m{=}x, $element; sollte nur einmal durchlaufen werden, sollte ein = im Wert vorkommen:
my ($key, $val) = split m{=}x, $element,2;
Und dann könnte man noch für einen Ersatzwert sorgen, falls Wert mal leer ist.
Zitat von: TomLee am 26 März 2025, 09:06:14Richtiger wäre $ret so anzugeben: my $ret={};
Wie kommst du darauf?
Mein Verständnis - entsprechend https://perldoc.perl.org/perldata - ist:
ZitatPerl has three built-in data types: scalars, arrays of scalars, and associative arrays of scalars, known as "hashes". A scalar is a single string (of any size, limited only by the available memory), number, or a reference to something
Da es Perl sowieso erlaubt, die Inhalte des hier relevanten SCALAR "$ret" zwischen (den drei genannten) "beliebigen" Variablen-Typen hin- und herzutauschen, muss man nicht erst explizit sagen, dass $ret eine Referenz auf einen HASH sein soll (per geschweifter Klammer).
Das mit der ",2" bei split ist zumindest theoretisch korrekt, in dem gegebenen Beispiel kam es aber genausowenig vor wie der Fall, dass gar kein Wert zugewiesen war. Daher habe ich das nicht weiter verkomplizieren wollen.
Zitat von: frober am 26 März 2025, 08:52:12Durch die for-Schleife werden alle ermittelten "Reading=Wert"-Paare übergeben.
Sprachlich m.E. korrekter: durch die for-Schleife werden alle "Reading=Wert"-Paare in den referenzierten HASH geschrieben.
ZitatWie kommst du darauf?
Richtiger war auf die Schnelle vlt. falsch ausgedrückt. Würde man die geschweiften Klammern mit angeben, wäre es verständlicher/leichter auf Anhieb zu lesen/verstehen. So ist es erstmal nur ne skalare Variable, später ergibt sich das es eine Hashreferenz ist.
Zitat von: TomLee am 26 März 2025, 12:49:05wäre es verständlicher/leichter auf Anhieb zu lesen/verstehen.
Der Schnippsel ist (als one-liner) eh' kaum lesbar ;D .
Und die Aufgabenstellung war insgesamt auch eher von der Art, von der ich angenommen hatte, dass es besser ist, das als Code zu liefern wie als "lies das und das!"-Variante ;) .
Aber es freut mich, dass anscheinend etwas breiteres Interesse an solchen Schnippselchen besteht ;D .
Hallo Forum,
wie kann der MQTT Server, also fehm, den Payload schicken?
Danke
Zitat von: druschba am 25 März 2025, 13:47:03Wenn ich z.B. den Payload CD=01 an den Speciher schicke bekomme ich eine Antwort, die folgendermaßen außsieht und in ein reading geschrieben wird:
Das ist in der Bedienungsanleitung (help MQTT2_SERVER) beschrieben.
https://fhem.de/commandref_modular.html#MQTT2_DEVICE-attr-setList
Danke hat funktioniert
Hallo druschba,
nachdem ich jetzt endlich "das Original" von Marstek habe, möchte ich den auch gerne in Hem einbinden.
Wie genau hast du den eingebunden nachdem du MQTT auf dem Gerät aktiviert hast?
Soweit ich das sehe, muß man den ja regelmäßig selber abfrage, d.h. man erstellt sich ein doif oder at welches einen Befehl per MQTT sendet und bekommt dann die Antwort. Würdest du dein MQTT Device und das Device für die Abfrage hier posten. Sonst muß ich und alle anderen nach mir das Rad neu erfinden wenn wir den Speicher einbinden wollen.
Alex
Alter Thread ich weis,
aber hat jemand inzwischen Bluepalm / Marstek / Saturn / Tronic - b2500(-d) Speicher per MQTT am laufen?
Ich habe gerade das Projekt ESPHome B2500 ( https://tomquist.github.io/esphome-b2500/ )
für meine zwei Marstek B2500-D aufgesetzt, damit bekommt man MQTT Daten ohne die
Marstek App zum FHEM geschickt, aber ich habe definitiv Probleme mit der Auswertung!
Wäre wirklich cool wenn da schon jemand was gebastelt hätte....
Damit (https://tomquist.github.io/hmjs/) MQTT aktivieren und damit (https://github.com/tomquist/hm2mqtt) vernünftige Readings erzeugen lassen.
Das läuft bei mir seit paar Monaten sehr gut.
Gruß
Dan
Ich habe den ESPHome B2500 laufen. Ich will die Marstek App gerne weiter nutzen, weil die Nulleinspeisung (Automodus) mit dem EcoTracker recht gut funktioniert.
Das geht mit der von @DeeSPe beschriebenen Lösung nicht - die sollte man nehmen, wenn man "cloudfrei" arbeiten will.
So sehen meine Readings etc. aus: JSONMAP:
voltage_cells_1 voltage_cell_01
voltage_cells_10 voltage_cell_10
voltage_cells_11 voltage_cell_11
voltage_cells_12 voltage_cell_12
voltage_cells_13 voltage_cell_13
voltage_cells_14 voltage_cell_14
voltage_cells_2 voltage_cell_02
voltage_cells_3 voltage_cell_03
voltage_cells_4 voltage_cell_04
voltage_cells_5 voltage_cell_05
voltage_cells_6 voltage_cell_06
voltage_cells_7 voltage_cell_07
voltage_cells_8 voltage_cell_08
voltage_cells_9 voltage_cell_09
READINGS:
2026-05-26 15:18:20 IODev myMQTT_Server
2026-05-26 23:02:07 active OFF
2026-05-27 06:26:58 active_pv1 ON
2026-05-27 06:26:58 active_pv2 ON
2026-05-26 15:18:41 ble_mac xxxxxxxxxxxx
2026-05-26 15:18:41 ble_ok ON
2026-05-26 15:18:40 board esp32-s3-devkitc-1
2026-05-26 15:18:41 charge_mode SimultaneousChargeAndDischarge
2026-05-27 06:58:48 daily_total_charge_battery 17
2026-05-27 06:58:48 daily_total_charge_load 18
2026-05-27 06:58:48 daily_total_discharge_battery 0
2026-05-27 06:58:48 daily_total_discharge_load 0
2026-05-26 15:51:42 debug ␛[0;33m[W][component:520]: preferences took a long time for an operation (52 ms), max is 30 ms␛[0m
2026-05-26 15:18:41 dod 90.000000
2026-05-11 20:03:01 enabled ON
2026-05-26 15:18:41 enabled_bluetooth ON
2026-05-26 15:18:41 enabled_smartmeter ON
2026-05-27 06:58:48 energy 0.000
2026-05-27 06:58:48 energy_pv 0.028
2026-05-26 15:18:41 fc41d_fw 202409090159
2026-05-26 15:18:40 friendly_name B2500
2026-05-26 15:18:41 fw_version 116
2026-05-26 15:18:41 generation 2
2026-05-12 07:38:15 hour 23
2026-05-26 15:18:41 id 3601115030374d33300a4009
2026-05-26 15:18:40 ip 192.168.178.93
2026-05-27 06:58:49 last_response 2026-05-27T06:58:49
2026-05-26 15:18:40 mac ac276ea86fe8
2026-05-12 07:38:15 minute 59
2026-05-26 15:18:41 mqtt_ok ON
2026-05-26 15:18:41 name B2500
2026-05-26 15:18:40 network wifi
2026-05-26 15:18:40 platform ESP32
2026-05-27 06:58:48 power 0
2026-05-27 06:58:48 power_1 0
2026-05-27 06:58:48 power_2 0
2026-05-27 06:58:48 power_pv 40
2026-05-27 06:58:48 power_pv1 19
2026-05-27 06:58:48 power_pv2 21
2026-05-26 15:18:41 region EU
2026-05-27 06:58:48 remaining_capacity 224
2026-05-27 06:58:48 remaining_percent 10.0
2026-05-27 06:23:23 scene Dusk/Dawn
2026-05-12 07:38:15 second 0
2026-05-26 15:18:41 smartmeter_connected ON
2026-05-27 06:58:49 smartmeter_out 367
2026-05-27 06:58:49 smartmeter_value 199
2026-05-26 15:18:41 status online
2026-05-26 15:18:41 surplus_feed_in ON
2026-05-27 06:58:48 temp1 24
2026-05-27 06:58:48 temp2 24
2026-05-27 06:58:03 time 04:58
2026-05-26 15:18:41 timer_1_enabled OFF
2026-05-26 15:18:41 timer_1_end_hour 21
2026-05-26 15:18:41 timer_1_end_minute 0
2026-05-26 15:18:41 timer_1_end_second 0
2026-05-26 15:18:41 timer_1_power 80.000000
2026-05-26 15:18:41 timer_1_start_hour 6
2026-05-26 15:18:41 timer_1_start_minute 0
2026-05-26 15:18:41 timer_1_start_second 0
2026-05-26 15:18:41 timer_2_enabled OFF
2026-05-26 15:18:41 timer_2_end_hour 23
2026-05-26 15:18:41 timer_2_end_minute 59
2026-05-26 15:18:41 timer_2_end_second 0
2026-05-26 15:18:41 timer_2_power 800.000000
2026-05-26 15:18:41 timer_2_start_hour 21
2026-05-26 15:18:41 timer_2_start_minute 0
2026-05-26 15:18:41 timer_2_start_second 0
2026-05-26 15:18:41 timer_3_enabled OFF
2026-05-26 15:18:41 timer_3_end_hour 6
2026-05-26 15:18:41 timer_3_end_minute 0
2026-05-26 15:18:41 timer_3_end_second 0
2026-05-26 15:18:41 timer_3_power 800.000000
2026-05-26 15:18:41 timer_4_enabled ON
2026-05-26 15:18:41 timer_4_end_hour 23
2026-05-26 15:18:41 timer_4_end_minute 59
2026-05-26 15:18:41 timer_4_end_second 0
2026-05-26 15:18:41 timer_4_power 80.000000
2026-05-26 15:18:41 timer_4_start_hour 0
2026-05-26 15:18:41 timer_4_start_minute 0
2026-05-26 15:18:41 timer_4_start_second 0
2026-05-26 15:18:41 timer_5_enabled OFF
2026-05-26 15:18:41 timer_5_end_hour 23
2026-05-26 15:18:41 timer_5_end_minute 59
2026-05-26 15:18:41 timer_5_end_second 0
2026-05-26 15:18:41 timer_5_power 80.000000
2026-05-26 15:18:41 timer_5_start_hour 0
2026-05-26 15:18:41 timer_5_start_minute 0
2026-05-26 15:18:41 timer_5_start_second 0
2026-05-26 15:18:41 type HMJ-2
2026-05-27 06:58:41 uptime 237.26
2026-05-26 15:18:40 version 2026.3.0
2026-05-27 06:58:48 voltage_avg 3.225429
2026-05-27 06:58:48 voltage_cell_01 3.225000
2026-05-27 06:58:48 voltage_cell_02 3.225000
2026-05-27 06:58:48 voltage_cell_03 3.225000
2026-05-27 06:58:48 voltage_cell_04 3.225000
2026-05-27 06:58:48 voltage_cell_05 3.226000
2026-05-27 06:58:48 voltage_cell_06 3.226000
2026-05-27 06:58:48 voltage_cell_07 3.226000
2026-05-27 06:58:48 voltage_cell_08 3.226000
2026-05-27 06:58:48 voltage_cell_09 3.225000
2026-05-27 06:58:48 voltage_cell_10 3.226000
2026-05-27 06:58:48 voltage_cell_11 3.226000
2026-05-27 06:58:48 voltage_cell_12 3.225000
2026-05-27 06:58:48 voltage_cell_13 3.225000
2026-05-27 06:58:48 voltage_cell_14 3.225000
2026-05-27 06:58:48 voltage_delta 0.001000
2026-05-27 06:58:48 voltage_max 3.226000
2026-05-27 06:58:48 voltage_min 3.225000
2026-05-27 06:58:48 voltage_sum 45.156000
2026-05-26 15:18:41 wifi_ok ON
2026-05-26 15:18:41 wifi_ssid XXXXXXXXXXXXXX
Attributes:
DbLogInclude power.*,energy.*,remaining.*,daily.*
alias Batteriespeicher B2500
event-min-interval remaining.*:300,daily.*:300
event-on-change-reading .*
icon mdt-home-battery-outline
jsonMap voltage_cells_1:voltage_cell_01
voltage_cells_2:voltage_cell_02
voltage_cells_3:voltage_cell_03
voltage_cells_4:voltage_cell_04
voltage_cells_5:voltage_cell_05
voltage_cells_6:voltage_cell_06
voltage_cells_7:voltage_cell_07
voltage_cells_8:voltage_cell_08
voltage_cells_9:voltage_cell_09
voltage_cells_10:voltage_cell_10
voltage_cells_11:voltage_cell_11
voltage_cells_12:voltage_cell_12
voltage_cells_13:voltage_cell_13
voltage_cells_14:voltage_cell_14
readingList b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/debug:.* debug
b2500_ac276ea86fe8:esphome/discover/b2500:.* { json2nameValue($EVENT) }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/last_response:.* last_response
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/type:.* type
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/id:.* id
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/ble_mac:.* ble_mac
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/status:.* status
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/1/start:.* { json2nameValue($EVENT,'timer_1_start_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/2/start:.* { json2nameValue($EVENT,'timer_2_start_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/3/start:.* { json2nameValue($EVENT,'timer_3_start_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/4/start:.* { json2nameValue($EVENT,'timer_4_start_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/5/start:.* { json2nameValue($EVENT,'timer_5_start_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/1/end:.* { json2nameValue($EVENT,'timer_1_end_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/2/end:.* { json2nameValue($EVENT,'timer_2_end_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/3/end:.* { json2nameValue($EVENT,'timer_3_end_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/4/end:.* { json2nameValue($EVENT,'timer_4_end_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/5/end:.* { json2nameValue($EVENT,'timer_5_end_') }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/battery/dod:.* dod
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/1/power:.* timer_1_power
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/2/power:.* timer_2_power
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/3/power:.* timer_3_power
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/4/power:.* timer_4_power
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/5/power:.* timer_5_power
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/bluetooth/enabled:.* enabled_bluetooth
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/smartmeter/enabled:.* enabled_smartmeter
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/surplus_feed_in:.* surplus_feed_in
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/1/enabled:.* timer_1_enabled
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/2/enabled:.* timer_2_enabled
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/3/enabled:.* timer_3_enabled
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/4/enabled:.* timer_4_enabled
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/timer/5/enabled:.* timer_5_enabled
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/battery/charge_mode:.* charge_mode
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/generation:.* generation
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/name:.* name
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/fw_version:.* fw_version
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/time:.* time
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/fc41d_fw:.* fc41d_fw
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/wifi_ssid:.* wifi_ssid
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/scene:.* scene
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/region:.* region
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/battery/cell_voltage:.* { json2nameValue($EVENT,'voltage_',$JSONMAP) }
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/wifi_ok:.* wifi_ok
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/mqtt_ok:.* mqtt_ok
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/pv1/active:.* active_pv1
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/pv2/active:.* active_pv2
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/smartmeter/connected:.* smartmeter_connected
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/ble_ok:.* ble_ok
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/esp32/uptime:.* uptime
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/battery/remaining_percent:.* remaining_percent
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/pv1/power:.* power_pv1
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/pv2/power:.* power_pv2
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/pv/power:.* power_pv
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/power1/power:.* power_1
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/power2/power:.* power_2
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/power/power:.* power
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/battery/remaining_capacity:.* remaining_capacity
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/smartmeter/out:.* smartmeter_out
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/smartmeter/value:.* smartmeter_value
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/temp1:.* temp1
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/device/temp2:.* temp2
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/battery/daily_total_charge:.* daily_total_charge_battery
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/battery/daily_total_discharge:.* daily_total_discharge_battery
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/load/daily_total_charge:.* daily_total_charge_load
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/load/daily_total_discharge:.* daily_total_discharge_load
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/pv/energy:.* energy_pv
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/power/energy:.* energy
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/power1/active:.* active
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/1/power2/active:.* active
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/npw/enabled:.* npw_enabled
b2500_ac276ea86fe8:SmartHome/Photovoltaics/B2500/npw/max_limit:.* npw_max_limit
room Energie und Wasser,System->Protokolle->MQTT
stateFormat {sprintf ("PV Leistung: %3d W - Ausgangsleistung: %3d W - SOC: %3d %%",ReadingsNum("$name","power_pv",0), ReadingsNum("$name","power",0), ReadingsNum("$name","remaining_percent",0))}
Die App funktioniert (über Bluetooth) genau so weiter wie vorher.
Ich habe auch einen EcoTracker und die Batterien benutzen diesen auch wunderbar.
Deshalb reicht mir meine Lösung auch, weil ich nur die Readings auswerten möchte und keine Steuerung über FHEM benötige.
Gruß
Dan
ZitatDie App funktioniert (über Bluetooth) genau so weiter wie vorher.
Das ist richtig - aber nur im Bereich der Bluetooth-Reichweite.