lumapu / ahoy

Various tools, examples, and documentation for communicating with Hoymiles microinverters
https://ahoydtu.de
Other
947 stars 222 forks source link

[Bug] Warning in Home Assistant because of MQTT entity naming guideline #1066

Closed CantConAnHonestJohn closed 1 year ago

CantConAnHonestJohn commented 1 year ago

Platform

ESP32

Assembly

I did the assebly by myself

nRF24L01+ Module

nRF24L01+ plus

Antenna

external antenna

Power Stabilization

nothing

Connection picture

Version

0.6.9

Github Hash

I don't know

Build & Flash Method

AhoyDTU Webinstaller

Setup

Debug Serial Log output

No response

Error description

Is anyone else with multiple inverters in ahoy seeing the corresponding warning in Home Assistant to this article: https://developers.home-assistant.io/blog/2023-057-21-change-naming-mqtt-entities/

princuser commented 1 year ago

I got the same message. I've ESP8266 Board with version 0.6.9. From Home Assistant version 2024.2.0 it is no longer supported (see https://developers.home-assistant.io/blog/2023-057-21-change-naming-mqtt-entities/). ![Uploading Screenshot_20230803_000813_Home Assistant.jpg…]()

rmayergfx commented 1 year ago

it´s also on the single inverter setup with 0.7.21. @lumapu how to fix? https://developers.home-assistant.io/blog/2023-057-21-change-naming-mqtt-entities/ grafik

lumapu commented 1 year ago

ich kann das ganze noch nicht ganz verstehen, skizziere aber mal was ich meine Verstanden zu haben: Homeassistant hätte gerne, dass die Entitäten generisch benannt sind und nicht nach dem Gerät. Das würde im Screenshot Beispiel bedeuten, dass es nicht sensor.tsun_m800_ch2_yieldtotal heißt, sondern sensor.inverter_ch2_yieldtotal. Was ich nicht verstehe, wie Homeassistant dann auf einen spezifischen Wechselrichter zugreifen will, da ja die Entitäten nicht mehr eindeutig sind.

Das hier habe ich noch gefunden, allerdings ist auch das Beispiel hier sehr dürftig. Hat einer von euch ein Beispiel eines anderen Geräts für mich - zB. Sonoff / Shelly oä.? https://developers.home-assistant.io/blog/2022/07/10/entity_naming/

Neelixx commented 1 year ago

Hier noch ein Beispiel für einen HM-600: Liste der betroffenen Entitäten:

sensor.hm600_p_ac
sensor.hm600_temp
sensor.hm600_ch2_p_dc
sensor.hm600_ch1_u_dc
sensor.hm600_efficiency
sensor.hm600_ch1_p_dc
sensor.hm600_yieldday
sensor.hm600_ch2_u_dc
sensor.hm600_q_ac
sensor.hm600_ch2_yieldtotal
sensor.hm600_pf_ac
sensor.hm600_alarm_mes_id
sensor.hm600_ch1_i_dc
sensor.hm600_ch1_yieldday
sensor.hm600_ch1_yieldtotal
sensor.hm600_ch2_i_dc
sensor.hm600_i_ac
sensor.hm600_ch2_irradiation
sensor.hm600_u_ac
sensor.hm600_yieldtotal
sensor.hm600_ch1_irradiation
sensor.hm600_ch2_yieldday
sensor.hm600_p_dc
sensor.hm600_f_ac

Mehr erfahren: https://developers.home-assistant.io/blog/2023-057-21-change-naming-mqtt-entities/

nexulm commented 1 year ago

Hallo, bei mir "natürlich" das selbe Verhalten. Meine Lösung/Workaround sieht wie folgt aus: Einstellungen => Geräte & Dienste => Entitäten

Nun die entsprechende(n) Entität(en) raussuchen, z.B. bei mir sensor.hm1500_ch3_p_dc Vorher: image 1) Zahnrad => Einstellungen image 2) Namensfeld editieren (hier: miniPV vorangestellt) image

Nachher: image

Wenn nun HA neu gestartet wird ist die Fehlermeldung in HA für diese Entität weg. Selbe Vorgehensweise für alle anderen erkannten Entitäten. Voila. Ist für mich nicht unbedingt ein Ahoy bug!?! Lässt sich zumindest sehr einfach beheben. Eine TOPIC Änderung - wenn dies denn in meinen Fall helfen würde - habe ich ausgeschlossen, da dann wieder alle Abhängigkeiten inkl. Berechnungen, Automatiserungen, ... überprüft werden müssten.

rmayergfx commented 1 year ago

Die Meldung vom Home Assistant Team ist doch eindeutig:

Bitte informiere den Betreuer der Softwareanwendung, die die betroffenen Entitäten bereitstellt, um dieses Problem zu beheben.

Ich habe es gerade nochmals bei mir geprüft, und ich muss feststellen, das nur die Entitäten betroffen sind, die automatisch ausgelesen wurden. z.B. sensor.tsun_m800_ch1_irradiation

grafik

Da ich diesen Wert überhaupt nicht aktiv überwache hat er auch keinen Namen von mir bekommen.

Und jetzt wird es spannend, denn ich hatte schon einmal in einem anderen Thread gefragt woher MQTT die Info TSUN bezieht. Das ist irgendwo in der Firmware codiert, denn mein Topic ist "M800" grafik

Der Name jedoch TSUN_M800 grafik

Ganz seltsam finde ich das hier: grafik Den TSUN hat nichts mit Hoymiles zu tun.

Ich denke das ist es, was die Entwickler von Home Assistant bemängeln, da es je nach Geräteklasse dann zu doppelten Einträgen kommen kann. Zum Vergleich ein manuell von mir in der mqtt.yaml angelegter Sensor: grafik Ich denke es würde schon reichen wenn man den Unterstrich entfernt, damit sind die Namen nicht mehr identisch....

nexulm commented 1 year ago

ich kann das ganze noch nicht ganz verstehen, skizziere aber mal was ich meine Verstanden zu haben: Homeassistant hätte gerne, dass die Entitäten generisch benannt sind und nicht nach dem Gerät. Das würde im Screenshot Beispiel bedeuten, dass es nicht sensor.tsun_m800_ch2_yieldtotal heißt, sondern sensor.inverter_ch2_yieldtotal. Was ich nicht verstehe, wie Homeassistant dann auf einen spezifischen Wechselrichter zugreifen will, da ja die Entitäten nicht mehr eindeutig sind.

Das hier habe ich noch gefunden, allerdings ist auch das Beispiel hier sehr dürftig. Hat einer von euch ein Beispiel eines anderen Geräts für mich - zB. Sonoff / Shelly oä.? https://developers.home-assistant.io/blog/2022/07/10/entity_naming/

Beim Shelly 3EM sieht es bei mir so aus: image

Beim Tasmota SM dann so: image

Hilft das?

rmayergfx commented 1 year ago

Hier gibt es ein Topic dazu: https://community.home-assistant.io/t/psa-mqtt-name-changes-in-2023-8/598099

The change states that MQTT should not provide the device name in the entity names that are attached to the device. So if your upstream MQTT provider is supplying a device name inside the entity name, they should stop providing that information. They should only provide the device name to the device, not the entity.

Daher gibt es auch bei mir nur das Problem mit automatisch erstellten Entitäten. grafik

nexulm commented 1 year ago

...und hier noch hier eine Quelle wie der Bugfix im EMS-ESP32 Projekt erfolgreich gelöst wurde. https://github.com/emsesp/EMS-ESP32/issues/1035

Hiermit habe ich nun eine Entität weniger, die auffällt. Bin zuversichtlich, dass mit dem nächsten Ahoy-Update dies auch für alle Entitäten aus der DTU der Fall sein wird. ;-)

lumapu commented 1 year ago

bitte mit neuer Version prüfen, ob ich es richtig verstanden habe

nexulm commented 1 year ago

Danke dir für diesen mega schnellen Bugfix. Leider funktioniert er bei mir leider nicht wie gehofft. Nach DTU Update v0.7.22 und HomeAssistant Neustart erhalte ich noch immer zahlreiche fehlerhaften Entitäten als Fehler. :-( Die Änderung hat noch nicht gegriffen!?! Oder muss hier noch der MQTT broker (mosquitto) neugestartet werden oder etwas anderes (Stichwort: cache)?

image
lumapu commented 1 year ago

hast du vorher die alten Daten gelöscht? Sieht irgendwie noch nicht geändert bei dir aus, so sollte es jetzt sein:

{
    "name": "CH1_YieldDay",
    "stat_t": "esp32/HMS2000.1/ch1/YieldDay",
    "unit_of_meas": "Wh",
    "uniq_id": "123456789012_ch1_YieldDay",
    "dev": {
        "name": "HMS2000.1",
        "ids": "123456789012",
        "mdl": "HMS2000.1",
        "cu": "http://10.20.3.40",
        "mf": "Hoymiles"
    },
    "dev_cla": "energy",
    "stat_cla": "total_increasing"
}
nexulm commented 1 year ago

Du hast natürlich Recht. :-( Der Bugfix funktioniert. :-) Ich vermisse allerdings nach löschen und neu hinzufügen die Gesamt "nicht" ChX Werte aus der Übersicht:

image
lumapu commented 1 year ago

die sollten auch da sein, allerdings als eigenes Gerät mit deinem Ahoy-DTU Namen

Edit: freut mich und danke für den sofortigen Test

Screenshot_2023-08-04-19-36-32-24_3aea4af51f236e4932235fdada7d1643.jpg

nexulm commented 1 year ago

Genau dieses eigene Geräte hatte ich auch gelöscht, ist jetzt aber im ersten Schritt nicht neuangelegt worden. Reboot der DTU oder HomeAssistant hat auch noch nicht gefruchtet. Woran könnte das dann noch liegen? Starten den MQTT Broker nochmal neu, wobei es sich dabei eher "dummes" rumprobieren handelt. Edit: Neustart des Broker hat nichts gebracht. Entfernen des MQTT Gerätes aus HA und neu hinzufügen leider auch nichts. Das Gerät fehlt weiterhin!?!

lumapu commented 1 year ago

hast du in Ahoy im den Einstellungen unter MqTT auf send gedrückt?

rmayergfx commented 1 year ago

Der Workaround funktioniert, aber damit verliert man leider auch bei allen Sensoren die Historie!

lumapu commented 1 year ago

hmm. Gibt es bessere Vorschläge? Ich denke HA hat hier inkompatible Änderungen gemacht.

nexulm commented 1 year ago

hast du in Ahoy im den Einstellungen unter MqTT auf send gedrückt?

Ja, mehrfach. Es wurde weder ein weiteres Device Ahoy-DTU wie ich es früher (vor dem löschen) hatte noch die fehlenden Werte aufgenommen. ABER Verrückt ist, dass ich ein Downgrade auf v0.7.21 gemacht habe, wieder auf "send" gedrückt habe und siehe da, es wurde zwar weiterhin kein weiteres Device Ahoy-DTU angelegt, aber die übergeordneten Werte Yield Day, ... wurden wieder (diesmal auf dem vorhanden Device) mitgesendet. Nach dem Update auf v0.7.22 habe ich nun alle wieder alle Werte ohne die Namens-Fehlermeldungen. Perfekt. :-)

nexulm commented 1 year ago

Der Workaround funktioniert, aber damit verliert man leider auch bei allen Sensoren die Historie!

Sieht bei mir aber plausibel aus, nur kurze Unterbrechung (kaum wahrnehmbar) zwischen 19:15 und 19:45 Uhr beim Update der DTU und der Reboots.

image image

Beim letzten Screenshot sieht man auch schön die fehlenden Werte von Yield Day und Power P_DC ab ca. 19:10 Uhr. Die anderen Werte werden brav auch mit v0.7.22 erfasst und visualisiert.

nexulm commented 1 year ago

Der Bug kann aus meiner Sicht geschlossen werden. Mit v0.7.23 habe ich wieder alle Werte verfügbar. MQTT AhoyDTU löschen und einmalig "send" in der Weboberfläche unter MQTT hat bei mir wieder alle Entitäten hergestellt. Nach einem HA Reboot sind dann auch die Warnungen bezgl. MQTT entity naming guideline Geschichte. :-) Vielen Dank für den schnellen Bugfix vom Bugfix. ;-) Auch ist die History OK. Als Beispiel der Hauptkanal, der mit v0.7.22 gestern Abend nach Update nicht ging und mit v0.7.23 mit Update von heute morgen wieder unauffällig funktioniert. :-)

image

Demgegenüber noch ein exemplarische Screenshot aus Ch1 wo die Werte immer (nur durch Updates/Resets kurzzeitig unterbrochen) mit v0.7.22 und v0.7.23 weiter erfasst werden.

image