Hallo,
ich habe einen Noah2000 ,daran angeschlossen 4 Solarpaneele, hinter dem Noah einen Growatt 800 Wechselrichter. Läuft bisher einwandfrei, auch die Einbindung in Home Assistant. Nun bin ich seit geraumer Zeit auf der Suche nach einer Möglichkeit, den Status „Batterie zuerst“ & „Verbraucher zuerst“ - den man in der App einstellen kann - irgendwo auszulesen. Hat das jemand hinbekommen? Ich habe die offizielle Integration von HA zur Growatt Datenauslesung installiert, nur leider finde ich dort keinen passenden Parameter.
Kurzes Update, vielleicht kann mir einer damit helfen. Habe herausgefunden, das per MQTT folgendes übertragen wird:
Und da steht auch der „work mode“ - wie bekomme ich den als Entität in Home Assistant?
Hi, ich habe genau dazu hier gestern schon einmal dazu geschrieben. Deine Daten liegen im json Format vor, daher kannst du dort dann die gewünschten Werte herausziehen. Lese mal bitte in diesem Link dazu:
Liefert der MQTT Explorer alle Werte die ich brauche? Und wo erstelle ich das ?? Gibt es irgendwo eine Anleitung/Video dazu?
Sieht in deinem Screenshot so aus, dass du alle wichtigen Daten bekommst.
Hast du dir den Link einmal durchgelesen?
Die Mqtt-Sensoren müssen in der configuration.yaml erstellt werden (das geht soweit ich weiß noch nicht über Helfer in der UI). Der Mqtt-Explorer ist nur für deine Übersicht, hat aber nicht direkt etwas mit Home Assistant zu tun. In HA musst du dir dafür den (mqtt) mosquitto broker installieren (über HACS), diesen konfigurieren und im Anschluss kannst du die Daten vom Noah an den mosquitto broker weiterreichen.
Wie sieht dein linke Seite im Mqtt-Explorer, aus also dort wo die Topic aufgeführt wird. Du ha jetzt nur die json von der rechten Seite im Explorer gezeigt.
Deine Topic lautet demnach noah2mqtt/0PVP6H6ZR23MT00X8
.
Diese trägst du entsprechend ein.
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
Darunter kannst du dann über den Text/Namen den gewünschten Wert aus der json herausziehen.
value_template: "{{ value_json.solar_w }}"
Ich habe mal die Konfiguration für dich erstellt. So sollte das ausschauen:
mqtt:
sensor:
- name: "Solar Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "solar_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.solar_w }}"
device_class: power
- name: "Output Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "output_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.output_w }}"
device_class: power
- name: "State of Charge"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "battery_soc"
unit_of_measurement: "%"
value_template: "{{ value_json.soc }}"
device_class: battery
- name: "Charge Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "charge_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.charge_w }}"
device_class: power
- name: "Discharge Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "discharge_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.discharge_w }}"
device_class: power
- name: "Generation Today"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "generation_today_kwh"
unit_of_measurement: "kWh"
value_template: "{{ value_json.generation_today_kwh }}"
device_class: energy
state_class: total_increasing
- name: "Generation Total"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "generation_total_kwh"
unit_of_measurement: "kWh"
value_template: "{{ value_json.generation_total_kwh }}"
device_class: energy
state_class: total_increasing
- name: "Battery Status"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "battery_status"
value_template: "{{ value_json.status }}"
Diese Sensoren legst du in deiner configuration.yaml an, z.B. mit dem File-Explorer oder Visual Code Studio. Danach nur noch HA einmal neustarten und dann solltest du die gewünschten Werte in HA intergriert haben. In den Entwicklerwerkzeugen unter Zustände oder unter Geräte nach den gerade neu erstellten Entitäten suchen und schauen, ob Daten korrekt geliefert werden.
Also erstmal Respekt - in so kurzer Zeit die ganzen Werte…Wahnsinn. Ich habe festgestellt, das mir ja eigentlich nur ein Wert fehlt: „work mode“ - den finde ich in deinen Texten auch nicht. Kann ich den auch einzeln in der configuration.yaml einsetzen:
mqtt:
sensor:
- name: "Lade Priorität Noah2000"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "work_mode"
value_template: "{{ value_json.status }}"
Wo muss das rein in der configuration.yaml!!
Danke, ist ja relativ schnell gemacht, einfach einen Sensor erstellt und dann entsprechend mit deinen Namen die nachfolgenden Sensoren kopiert und die etnsprechenden device_classes vergeben. Müsste eigentlich so passen.
Einfügen kannst du die Sensoren an einer beliebigen Stelle in der config.yaml. Ich habe die mqtt Sensoren bei mir gleich am Anfang eingebunden.
Stimmt, den work_mode habe ich nicht mit aufgenommen, kannst du aber wie bei den anderen einfach ergänzen (auch einzeln möglich).
- name: "Work Mode"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "battery_work_mode"
value_template: "{{ value_json.work_mode }}"
icon: mdi:cog
Hier nochmal der komplette Code mit work_mode ergänzt.
mqtt:
sensor:
- name: "Solar Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "solar_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.solar_w }}"
device_class: power
- name: "Output Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "output_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.output_w }}"
device_class: power
- name: "State of Charge"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "battery_soc"
unit_of_measurement: "%"
value_template: "{{ value_json.soc }}"
device_class: battery
- name: "Charge Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "charge_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.charge_w }}"
device_class: power
- name: "Discharge Power"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "discharge_power_w"
unit_of_measurement: "W"
value_template: "{{ value_json.discharge_w }}"
device_class: power
- name: "Generation Today"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "generation_today_kwh"
unit_of_measurement: "kWh"
value_template: "{{ value_json.generation_today_kwh }}"
device_class: energy
state_class: total_increasing
- name: "Generation Total"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "generation_total_kwh"
unit_of_measurement: "kWh"
value_template: "{{ value_json.generation_total_kwh }}"
device_class: energy
state_class: total_increasing
- name: "Battery Status"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "battery_status"
value_template: "{{ value_json.status }}"
- name: "Work Mode"
state_topic: "noah2mqtt/0PVP6H6ZR23MT00X8"
unique_id: "battery_work_mode"
value_template: "{{ value_json.work_mode }}"
icon: mdi:cog
@jayjojayson : muss die unique ID nicht nur „work_mode“ heissen statt „battery_work_mode“ ??
Moin, die kannst du benennen wie du möchtest. Die braucht man, um später in der UI die Konfiguration vornehmen zu können, ansonsten ist das gesperrt. Hat aber keinen Einfluss auf die übermittelten Daten.
Ich hatte gedacht das bezieht sich auf die Bezeichnung von MQTT…dann werde ich den Text mal in die Configuration.yaml werfen
Danke…
Nein für die Bezeichnung aus der MQTT json wird neben der Topic diese Passage verwendet:
value_template: "{{ value_json.work_mode }}"
Hier ist dann Bezeichnung work_mode
genauso wie in deiner json zu benennen.
Also immer Topic → Bezeichnung/Name json-Wert
Viel Erfolg beim testen
Ich habe noch eine Frage: kann ich ,mit einem Helfer zum Beispiel,die Ausgabe einer Entität anpassen? In meinem Fall ist die Ausgabe im Original: load First und battery First - die würde ich gern anders benennen.
Hi, dann hast du es soweit mit MQTT hinbekommen?
Ja du kannst die Ausgabe anpassen mit einem Template-Helfer. Den kannst du in der UI oder direkt in der configuration.yaml erstellen.
So würde er für die config.yaml aussehen.
template:
- sensor:
- name: "Betriebsmodus auslesen"
state: >
{% if states('sensor.work_mode') == 'load First' %}
Last zuerst
{% elif states('sensor.work_mode') == 'battery First' %}
Batterie zuerst
{% else %}
{{ states('sensor.work_mode') }}
{% endif %}
Diesen Teil müsstest du im Helfer als Template angeben, wenn du dir einen Helfer über die UI erstellst.
{% if states('sensor.work_mode') == 'load First' %}
Last zuerst
{% elif states('sensor.work_mode') == 'battery First' %}
Batterie zuerst
{% else %}
{{ states('sensor.work_mode') }}
{% endif %}
Der Sensor work_mode sollte ja der richtige Sensor sein, wenn nicht musst du den auch anpassen.
@jayjojayson : hab heute die Daten in die configuration.yaml eingefügt - hab den Sensor auch gefunden - zeigte allerdings „unbekannt“…hab schon an mir gezweifelt, bis ich die Seriennummern verglichen habe: die sind unterschiedlich. Hab sie dann gegen meine ausgetauscht - läuft jetzt!!!
Vielen Dank nochmal. Jetzt mache ich mich an die Helfer…
@jayjojayson : Helfer funktionieren auch, habe allerdings zwischen load und firts ein „_“ eingefügt, in MQTT heissen die zumindest so.
Vielen,vielen Dank nochmals…
Das nächste Projekt ist die Nulleinspeisung, hab da einige Anleitungen zu gefunden.
Gerne, gerne, dann hast du jetzt alle notwendigen Daten zusammen, um die Nulleinspeisung anzugehen.