Hallo,
ich habe eine AhoyDTU am Laufen, die über MQTT mit FHEM kommuniziert. Hat soweit auch immer gut funktioniert. Weil mir ein paar Features gefehlt haben, habe ich heute die AhoyDTU aktualisiert. Seitdem habe ich diese zweimal in FHEM.
Die alte:
Internals:
CID AHOY_DTU
DEF AHOY_DTU
FUUID 640b7af7-f33f-2bd4-77c6-257336e083642ec0
IODev gl.gw.mqttBroker
LASTInputDev gl.gw.mqttBroker
MSGCNT 513755
NAME MQTT2_AHOY_DTU
NR 304
STATE ???
TYPE MQTT2_DEVICE
eventCount 513755
gl.gw.mqttBroker_CONN gl.gw.mqttBroker_192.168.178.50_64405
gl.gw.mqttBroker_MSGCNT 513755
gl.gw.mqttBroker_TIME 2024-12-09 21:35:24
READINGS:
2024-10-10 16:23:08 IODev gl.gw.mqttBroker
2024-12-09 09:47:55 P_AC 53.8
2024-12-09 21:35:24 P_AC_Avg 53.800
2024-12-09 09:47:55 P_DC 56.6
2024-12-09 09:47:55 YieldDay 28
2024-12-09 09:47:55 YieldTotal 3229.8
2023-03-10 19:49:01 attrTemplateVersion 20200812
2024-12-09 08:24:25 available 2
2024-12-09 00:00:11 comm_start 1733726516
2024-12-09 00:00:11 comm_stop 1733759555
2024-12-09 21:18:24 device AHOY-DTU
2024-12-09 00:00:11 dis_night_comm false
2024-12-09 21:35:24 free_heap 12824
2024-12-09 08:24:25 last_success 1733729061
2024-12-09 09:48:33 mqtt not connected
2024-12-09 08:24:25 status 2
2024-12-09 00:00:11 sunrise 1733728316
2024-12-09 00:00:11 sunset 1733757755
2024-12-09 21:35:24 uptime 1029
2024-12-09 21:18:24 version 0.8.140
2024-12-09 09:47:22 wifi_rssi -75
Attributes:
autocreate 1
bridgeRegexp inverter/([^/]+)/ch[0-9]+/.*:.* "inverter_$1"
icon solar
model hoymiles_microinverter_hub_bridge
readingList inverter/version:.* version
inverter/free_heap:.* free_heap
inverter/uptime:.* uptime
inverter/device:.* device
AHOY_DTU:inverter/wifi_rssi:.* wifi_rssi
AHOY_DTU:inverter/SolarGaestehaus/available:.* available
AHOY_DTU:inverter/SolarGaestehaus/last_success:.* last_success
AHOY_DTU:inverter/status:.* status
AHOY_DTU:inverter/mqtt:.* mqtt
AHOY_DTU:inverter/sunrise:.* sunrise
AHOY_DTU:inverter/sunset:.* sunset
AHOY_DTU:inverter/comm_start:.* comm_start
AHOY_DTU:inverter/comm_stop:.* comm_stop
AHOY_DTU:inverter/dis_night_comm:.* dis_night_comm
AHOY_DTU:inverter/total/P_AC:.* P_AC
AHOY_DTU:inverter/total/YieldTotal:.* YieldTotal
AHOY_DTU:inverter/total/YieldDay:.* YieldDay
AHOY_DTU:inverter/total/P_DC:.* P_DC
room GH_Oben,MQTT2_DEVICE
setStateList on off
userReadings P_AC_Avg {movingAverage("MQTT2_AHOY_DTU","P_AC",300)}
Und hier die neue:
Internals:
CFGFN
CID AHOY_DTU_B5E4DA
DEF AHOY_DTU_B5E4DA
FUUID 6756aee9-f33f-ff23-d77e-439e5e2b8071d241
IODev gl.gw.mqttBroker
LASTInputDev gl.gw.mqttBroker
MSGCNT 12688
NAME MQTT2_AHOY_DTU_B5E4DA
NR 86402
STATE ???
TYPE MQTT2_DEVICE
eventCount 12720
gl.gw.mqttBroker_CONN gl.gw.mqttBroker_192.168.178.50_64405
gl.gw.mqttBroker_MSGCNT 12688
gl.gw.mqttBroker_TIME 2024-12-09 21:36:24
READINGS:
2024-12-09 09:48:41 IODev gl.gw.mqttBroker
2024-12-09 16:32:10 MaxPower 279.2
2024-12-09 16:32:10 P_AC 0
2024-12-09 16:32:10 P_DC 1
2024-12-09 16:32:10 YieldDay 608
2024-12-09 16:32:10 YieldTotal 3230.38
2024-12-09 16:47:10 available 0
2024-12-09 09:55:54 bootloader 100
2024-12-09 09:55:54 build_hour_min 1821
2024-12-09 09:55:54 build_month_day 1224
2024-12-09 09:55:54 build_year 2021
2024-12-09 09:56:24 cnt 5
2024-12-09 09:56:25 code 2
2024-12-09 21:18:25 comm_disabled true
2024-12-09 21:18:25 comm_start 1733816578
2024-12-09 21:18:25 comm_stop 1733845947
2024-12-09 21:18:25 dis_night_comm true
2024-12-09 09:56:25 end 1733730648
2024-12-09 16:32:10 fail 5
2024-12-09 09:56:09 grid_profile_code 2560
2024-12-09 09:56:09 grid_profile_version 8193
2024-12-09 21:36:24 heap_frag 11
2024-12-09 21:18:24 ip_addr 192.168.178.50
2024-12-09 16:32:10 last_success 1733758328
2024-12-09 16:32:10 lossDtuRx 1
2024-12-09 16:32:10 lossDtuTx 42
2024-12-09 16:32:10 lossIvRx 2
2024-12-09 16:32:10 lossIvTx 14
2024-12-09 21:18:24 mqtt connected
2024-12-09 16:32:10 no_answer 0
2024-12-09 09:56:09 part 269627392
2024-12-09 16:32:10 retransmits 233
2024-12-09 09:56:25 start 1733730648
2024-12-09 16:47:10 status 0
2024-12-09 09:56:25 str Time calibration
2024-12-09 16:32:10 success 1747
2024-12-09 21:18:25 sunrise 1733814778
2024-12-09 21:18:25 sunset 1733844147
2024-12-09 16:32:10 tx 1752
2024-12-09 09:56:09 version 266
2024-12-09 21:36:24 wifi_rssi -72
Attributes:
readingList AHOY_DTU_B5E4DA:inverter/ip_addr:.* ip_addr
AHOY_DTU_B5E4DA:inverter/wifi_rssi:.* wifi_rssi
AHOY_DTU_B5E4DA:inverter/heap_frag:.* heap_frag
AHOY_DTU_B5E4DA:inverter/mqtt:.* mqtt
AHOY_DTU_B5E4DA:inverter/sunrise:.* sunrise
AHOY_DTU_B5E4DA:inverter/sunset:.* sunset
AHOY_DTU_B5E4DA:inverter/comm_start:.* comm_start
AHOY_DTU_B5E4DA:inverter/comm_stop:.* comm_stop
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/dis_night_comm:.* dis_night_comm
AHOY_DTU_B5E4DA:inverter/comm_disabled:.* comm_disabled
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/radio_stat:.* { json2nameValue($EVENT) }
AHOY_DTU_B5E4DA:inverter/total/P_AC:.* P_AC
AHOY_DTU_B5E4DA:inverter/total/YieldTotal:.* YieldTotal
AHOY_DTU_B5E4DA:inverter/total/YieldDay:.* YieldDay
AHOY_DTU_B5E4DA:inverter/total/P_DC:.* P_DC
AHOY_DTU_B5E4DA:inverter/total/MaxPower:.* MaxPower
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/available:.* available
AHOY_DTU_B5E4DA:inverter/status:.* status
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/last_success:.* last_success
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/firmware:.* { json2nameValue($EVENT) }
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/hardware:.* { json2nameValue($EVENT) }
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/alarm/cnt:.* cnt
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/alarm/0:.* { json2nameValue($EVENT) }
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/alarm/1:.* { json2nameValue($EVENT) }
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/alarm/2:.* { json2nameValue($EVENT) }
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/alarm/3:.* { json2nameValue($EVENT) }
AHOY_DTU_B5E4DA:inverter/SolarGaestehaus/alarm/4:.* { json2nameValue($EVENT) }
room GH_Oben,MQTT2_DEVICE
Ich vermute das ganze ist so entstanden weil nach dem Update neue Werte mit übertragen wurden.
Wie bekomme ich das ganze wieder in einem Device anzeigt. Mein erster Gedanke: ich lösche beide und beim nächsten Update der AhoyDTU wird wieder per autocreate die AhoyDTU mit den aktuellen Readings neu angelegt.
Oder liege ich da falsch?
CID-Prefix aus der readingList löschen.
Siehe auch Wiki (erste Schritte bzw. Praxisbeispiele).
Was meinst du damit? Das "AHOY_DTU_B5E4DA" bzw "AHOY_DTU" in der readingList komplett rauslöschen? Oder nur auf einen einheitlichen Stand bringen?
https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#L%C3%B6schen_der_ClientID_aus_der_readingList_usw.
Nachtrag: Zwischenzeitlich kann Ahoy auch JSON; das würde ich empfehlen einzuschalten (bei Gelegenheit liefere ich noch Code dazu via attrTemplate), das verringert nämlich die Last für FHEM deutlich, so dass die unnötigen updates für dein ungetriggertes userReading auch weniger werden... (besser: trigger setzen!).
Soll ich dann JSON in Ahoy aktivieren? Soll ich das Device dann nochmal komplett neu per autocreate von FHEM anlegen lassen?
Zitat von: teichtaucher am 10 Dezember 2024, 08:47:27Soll ich dann JSON in Ahoy aktivieren? Soll ich das Device dann nochmal komplett neu per autocreate von FHEM anlegen lassen?
Also: JSON ist deutlich effizienter, erfordert aber mehr Arbeit drumrum, und zwar sowohl an der bridge (deine beiden gezeigten Devices, von denen eines überflüssig ist) wie auch an den einzelnen Invertern (du mußt nochmal ein Device haben für deinen Inverter).
Im Moment kann ich dazu nur Bausteinchen liefern, und wenn du dich nicht damit beschäftigst, wirst du immer "komische" Effekte haben.
Hier mal ein "JSON"-Type (4ch-) Inverter (auszugsweise, Zeilenumbrüche bitte selbst nachtragen; die jsonMap erzeugt die bekannten Readings):
attr Inverter_O_Nord jsonMap 1_I_DC:I_DC1 1_P_DC:P_DC1 1_U_DC:U_DC1 1_Irradiation:Irradiation1 1_YieldDay:YieldDay1 1_YieldTotal:YieldTotal1 2_I_DC:I_DC2 2_P_DC:P_DC2 2_U_DC:U_DC2 2_Irradiation:Irradiation2 2_YieldDay:YieldDay2 2_YieldTotal:YieldTotal2 3_I_DC:I_DC3 3_P_DC:P_DC3 3_U_DC:U_DC3 3_Irradiation:Irradiation3 3_YieldDay:YieldDay3 3_YieldTotal:YieldTotal3 4_I_DC:I_DC4 4_P_DC:P_DC4 4_U_DC:U_DC4 4_Irradiation:Irradiation4 4_YieldDay:YieldDay4 4_YieldTotal:YieldTotal4 5_I_DC:I_DC5 5_P_DC:P_DC5 5_U_DC:U_DC5 5_Irradiation:Irradiation5 5_YieldDay:YieldDay5 5_YieldTotal:YieldTotal5 6_I_DC:I_DC6 6_P_DC:P_DC6 6_U_DC:U_DC6 6_Irradiation:Irradiation6 6_YieldDay:YieldDay6 6_YieldTotal:YieldTotal6 1_MaxPower:MaxPower1 2_MaxPower:MaxPower2 3_MaxPower:MaxPower3 4_MaxPower:MaxPower4 5_MaxPower:MaxPower5 6_MaxPower:MaxPower6 Temp:temperature
attr Inverter_O_Nord readingList inverter/O_Nord/available:.* available
....
inverter/O_Nord/alarm/[\d]+:.* { $TOPIC =~ m,alarm/([\d]+),; { "alarm_${1}"=>$EVENT } }
inverter/O_Nord/ch0/MaxTemp:.* MaxTemp
inverter/O_Nord/ch1:.* { json2nameValue($EVENT,'1_',$JSONMAP) }
inverter/O_Nord/ch2:.* { json2nameValue($EVENT,'2_',$JSONMAP) }
inverter/O_Nord/ch3:.* { json2nameValue($EVENT,'3_',$JSONMAP) }
inverter/O_Nord/ch4:.* { json2nameValue($EVENT,'4_',$JSONMAP) }
inverter/O_Nord/ch0:.* { json2nameValue($EVENT,'',$JSONMAP)
Und hier die Bridge (allerdings manuell bereinigt, weiß nicht, ob ich für die letzte Version alles "erwischt" habe):
attr AHOY_DTU readingList inverter/total:.* { json2nameValue($EVENT) }
inverter/uptime:.* uptime
inverter/wifi_rssi:.* wifi_rssi
inverter/free_heap:.* free_heap
inverter/status:.* status
inverter/mqtt:.* mqtt
inverter/version:.* version
inverter/device:.* device
inverter/ip_addr:.* ip_addr
inverter/sunrise:.* sunrise
inverter/sunset:.* sunset
inverter/comm_start:.* comm_start
inverter/comm_stop:.* comm_stop
inverter/comm_disabled:.* comm_disabled
OK, danke. Dann probiere ich mal ein bisschen rum.