Wechselrichter Hoymiles HM-600 mit FHEM verbinden anstelle mit WLAN Stick DTU-W1

Begonnen von josburg, 25 Mai 2021, 18:03:41

Vorheriges Thema - Nächstes Thema

gent

Wenn ich das Template auswähle wir gefragt, was die BASE_ID ist. Wo finde ich die?

LG
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

thymjan


Beta-User

Nein, der erste Teil des Topics. Beginnt der hier zufällig mit /?
PS: Topic beinhaltet (bei M2Server) nicht den CID-Präfix vor dem Doppelpunkt.
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

gent

Also mein Topic ist
/SmartHome/Energie/Inverter
Beginnt also mit einem /
Mit dem PS gesagten fange ich leider nichts an. Was wäre denn jetzt die korrekt BASE_ID in meinem Fall?

Mit freundlichen Grüßen
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

Beta-User

Falls dein Hoymiles "Inverter" heißt, sollte
/SmartHome/Energie
passen...
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

thymjan

Tut mir leid wenn ich mich bei diesem Thema als DAU outen muss, aber ich habe immer noch große Fragezeichen in den Augen.

Wie wäre denn die richtige Vorgehensweise um die korrekte BASE_ID zu ermitteln?
In welchem Device kann ich diese an welcher Stelle auslesen?
Mittlerweile habe ich ja die Templates schon öfters auf meine Devices angewandt und habe längere ReadingLists.
Ich sehe jetzt gerade den Wald vor lauter Bäumen nicht mehr...

Und: Kann man das nachträglich ändern/korrigieren, wenn die BASE_ID zum Abfrage-Zeitpunkt falsch eingegeben wurde?

Beta-User

Das ist einfach ein " Textbaustein", der eigentlich automatisch ermittelt werden sollte (was wegen dem /nichtklappt) und dann in der readingList etc. eingebaut wird. Da kannst du also auch "iegendwas" angeben und es hinterher ändern.
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

Beta-User

Zitat von: thymjan am 28 August 2022, 21:15:23
Wie wäre denn die richtige Vorgehensweise um die korrekte BASE_ID zu ermitteln?
Eigentlich sollte das automatisch richtig laufen, es wird daher demnächst noch ein kleinere update kommen, das dann hoffentlich auch die Erkennungsprobleme mit dem "/" und tiefer strukturierten Topics wie "/SmartHome/Energie" beseitigen sollte. Das Kürzel BASE_ID verwende ich in den attrTemplate ganz allgemein für den unveränderlichen "ersten Teil" des Topic-Strings.

Wenn du dir die automatisiert erstellten Teile (mit "CID" vor dem Doppelpunkt) in der readingList ansiehst, wird evtl. klarer, dass das bei dir "inverter" ist:
Zitat von: thymjan am 25 August 2022, 18:29:11
Habe jetzt das ahoy update auf 0.5.15 gemacht.
Jetzt sieht das device schon besser aus:

defmod MQTT2_balcony MQTT2_DEVICE balcony
attr MQTT2_balcony IODev mqttBroker
attr MQTT2_balcony autocreate 1
attr MQTT2_balcony bridgeRegexp balcony/([^/]+)/ch[0-9]+/.*:.* "balcony_$1"
attr MQTT2_balcony icon mqtt_bridge_1
attr MQTT2_balcony model hoymiles_microinverter_hub_bridge
attr MQTT2_balcony readingList balcony/version:.* version\
  balcony/free_heap:.* free_heap\
  balcony/uptime:.* uptime\
  balcony/device:.* device\
balcony:inverter/uptime:.* uptime\
balcony:inverter/version:.* version\
balcony:inverter/device:.* device\
balcony:homeassistant/sensor/HM-300/ch1_U_DC/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch1_I_DC/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch1_P_DC/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch1_YieldDay/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch1_YieldTotal/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch1_Irradiation/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_U_AC/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_I_AC/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_P_AC/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_P_ACr/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_Freq/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_Temp/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_ALARM_MES_ID/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_P_DC/config:.* { json2nameValue($EVENT) }\
balcony:homeassistant/sensor/HM-300/ch0_Efficiency/config:.* { json2nameValue($EVENT) }\
balcony:inverter/HM-300/ch0/FWVersion:.* FWVersion\
balcony:inverter/HM-300/ch0/FWBuildYear:.* FWBuildYear\
balcony:inverter/HM-300/ch0/FWBuildMonthDay:.* FWBuildMonthDay\
balcony:inverter/HM-300/ch0/HWPartId:.* HWPartId\
balcony:inverter/HM-300/ch0/PowerLimit:.* PowerLimit
attr MQTT2_balcony room MQTT2_DEVICE,balcony ESP,balcony solar
attr MQTT2_balcony setStateList on off
[...]


Allerdings finde ich ganz und gar nicht, dass "sieht das device schon besser aus" zutrifft:
- "balcony" (wurde warum auch immer als BASE_ID erkannt) ist falsch, denn z.B. was unter dem branch "version" kommt, wird nochmal mit CID-Präfix automatisiert ergänzt. Aber solange das so drinsteht, wird auch attrTemplate immer wieder der Ansicht sein, das sei die BASE_ID => ändern oder diese (falsche) Zeile löschen).
- als Folgefehler paßt auch die bridgeRegexp nicht und die neuen Teile (die letzten paar Zeilen in der readingList) landen im falschen Device*
- die "homeassistant"-Zeilen sind schlicht (für FHEM) überflüssig => weg damit und diese Topics in ignoreRegexp am IO (siehe MQTT2_CLIENT-Wiki-Artikel).

*Nochmal zur Struktur:
Der ESP (mit dem nRF) wird durch ein separates Device repreäsentiert, jeder WR bekommt sein eigenes MQTT2_DEVICE. Das mag man als unnötig empfinden, wenn man nur einen WR hat, aber sobald es mehr sind/werden, ist es zwingend, das so zu machen. Die generelle Struktur entspricht dabei dem, wie das auch bei anderen Lösungen zu finden ist, in denen ein ESP oder sonst ein Dienst Daten empfängt und auswertet.

Die weiteren Topics werden dann noch in das "inverter"-attrTemplate eingebaut, dann müßte insbesondere auch der "Kreis" betr. das "limit" geschlossen werden können (vorausgesetzt, es handelt sich um einen Absolutwert, der da zurückkommt; ggf. müßte man noch % ergänzen, was dann aber weitere Angaben des Users erfordert).
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

thymjan

Nochmal zur BASE_ID:
Die ist doch nicht beliebig, oder? Nach Auswählen des Templates "hoymiles_microinverter_hub_bridge" kommt bei der Abfrage der BASE_ID der Hinweis "as set in esp".
Ist die BASE_ID nun im ahoy-esp der "Device Host Name"/"Device Name" (bei mir jetzt "hoyhub") oder bei den MQTT Einstellungen das Topic (bei mir jetzt "inverter").

Habe als BASE_ID den Device Name "hoyhub" angegeben, ist das richtig?

Habe jetzt zwei einkanalige HM Microinverter (Name HM-300R und HM350L) am laufen.
Es wurden zwei devices dafür angelegt: MQTT2_inverter_HM_300R und MQTT2_inverter_HM_350L
Dort habe ich das Template "hoymiles_microinverter_inverter" jeweils ausgewählt und die Ordnungszahlen 0 und 1 vergeben.

thymjan

Bei einkanaligen Invertern sind keine Indices erforderlich, oder?

Readingslist:

inverter/HM-300R/ch0/U_AC:.* U_AC
  inverter/HM-300R/ch0/I_AC:.* I_AC
  inverter/HM-300R/ch0/P_AC:.* P_AC
  inverter/HM-300R/ch0/Freq:.* Freq
  inverter/HM-300R/ch0/Temp:.* temperature
  inverter/HM-300R/ch0/YieldDay:.* YieldDay
  inverter/HM-300R/ch0/YieldTotal:.* YieldTotal
  inverter/HM-300R/ch1/I_DC:.* I_DC1
  inverter/HM-300R/ch1/P_DC:.* P_DC1
  inverter/HM-300R/ch1/YieldDay:.* YieldDay1
  inverter/HM-300R/ch1/YieldTotal:.* YieldTotal1


folgendes würde ich streichen:
  inverter/HM-300R/ch0/YieldDay:.* YieldDay
  inverter/HM-300R/ch0/YieldTotal:.* YieldTotal


und folgendes abändern:
  inverter/HM-300R/ch1/I_DC:.* I_DC1
  inverter/HM-300R/ch1/P_DC:.* P_DC1
  inverter/HM-300R/ch1/YieldDay:.* YieldDay1
  inverter/HM-300R/ch1/YieldTotal:.* YieldTotal1

Beta-User

...erforderlich eher nicht. Der Gedanke hinter der generelle Indexierung war eher, dass man dann einheitliche Readings hat und z.B. gplot-files einfacher tauschen kann. Dafür könnte man hier aber sowieso mit plotReplace arbeiten und gleich auch die 2- und 4-Kanaligen damit erwischen...

Hmm, mal schauen, streichen kann man die (Summen-) Zeilen (ch0) aber nur, wenn darüber keine Infos kommen. Sonst => {}. => kommt da was?
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

thymjan

ne, die Werte der Summen-Zeilen kommen über ch1.

Im hub-Device laufen auch keine neuen auf.

Beta-User

...vielleicht sollten wir das besser dann klären und entscheiden, wenn wieder die Sonne scheint; mein (nicht direkt vergleichbarer) MI-Code tickt da anders...
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

Beta-User

Sorry, das hier hatte ich gestern übersehen:
Zitat von: thymjan am 04 September 2022, 18:06:39
Nochmal zur BASE_ID:
Die ist doch nicht beliebig, oder? Nach Auswählen des Templates "hoymiles_microinverter_hub_bridge" kommt bei der Abfrage der BASE_ID der Hinweis "as set in esp".
Ist die BASE_ID nun im ahoy-esp der "Device Host Name"/"Device Name" (bei mir jetzt "hoyhub") oder bei den MQTT Einstellungen das Topic (bei mir jetzt "inverter").

Habe als BASE_ID den Device Name "hoyhub" angegeben, ist das richtig?
Nein, es geht um dem Topic.
Allerdings sollte diese Anfrage gar nicht kommen, weil das attrTemplate das automatisch auflösen können sollte - dazu braucht es eigentlich nur den "version"-Eintrag in der readingList. War FHEM (bzw. die attrTemplate-file) aktuell? Wenn ja, würde ich gerne nochmal ein raw-listig sehen wollen (ohne die setstate-Zeilen reicht aus), um das selbst testen zu können. Oder stand da was altes drin bzw. fehlte das "version"?

Zitat
Dort habe ich das Template "hoymiles_microinverter_inverter" jeweils ausgewählt und die Ordnungszahlen 0 und 1 vergeben.
Das paßt soweit, und wenn das Device "neu" ist, kennt FHEM auch die Ordnungszahl noch nicht, daher ist diese Abfrage an der Stelle auch ok und gewollt (wenn nur die Ordnungszahl abgefragt wird und nicht sonst noch was).
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

TheTrumpeter

Sind hier alle auf den MQTT-Zug aufgesprungen oder hat ev. auch schon jemand eine sinnvolle JSON-Konfiguration?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110