Home Assistant: Nulleinspeisung Balkonkraftwerk

Einleitung

Stell dir vor, du könntest jede Kilowattstunde deines Balkonkraftwerks nutzen, ohne auch nur ein bisschen Energie ins Netz einzuspeisen. Genau das ist mir mit einem Setup aus zwei 430W PV-Modulen, verbunden mit einem Zendure HUB1200 Speichersystem und einem AB2000 Speicher, gelungen. Der Schlüssel dazu? Ein cleveres Energiemanagement mittels Home Assistant, das überschüssige Energie nicht nur speichert, sondern auch intelligent steuert.

Mein System nutzt einen Hoymiles Mikrowechselrichter mit 800W Leistung, und der Stromverbrauch wird durch einen Shelly 3EM gemessen, der nahtlos in den Home Assistant integriert ist. Obwohl die Zendure App fortschrittliche Funktionen wie den CT Modus bietet, der den Hausbedarf ermittelt und die Ausgangsleistung entsprechend anpasst, bot sie nicht die Perfektion, die ich suchte. Das führte mich zur Entwicklung meiner eigenen Methode, die ich „Dynamische Nulleinspeisung“ nenne – eine andere Lösung, die über die einfache Idee der Nulleinspeisung hinausgeht. Diese Methode passt die Energieversorgung dynamisch an den tatsächlichen Bedarf an und nutzt die volle Kapazität des Speichers optimal aus, wodurch eine effektive Nulleinspeisung in die Tat umgesetzt wird.

Haftungsausschluss

Die Informationen in diesem Blogbeitrag sind sorgfältig recherchiert, jedoch übernehme ich keine Haftung für die Richtigkeit und Vollständigkeit der Inhalte. Dieser Beitrag stellt keine Werbung dar; die erwähnten Produkte und Technologien nutze ich selbst und empfehle sie basierend auf meinen Erfahrungen ohne finanzielle Anreize.

Funktionsweise der Nulleinspeisung

Die Nulleinspeisung, funktioniert wie ein intelligentes System, das den aktuellen Strombedarf kontinuierlich erfasst und die Ausgangsleistung des Wechselrichters entsprechend anpasst. Durch diese Anpassung wird der Netzbezug auf nahezu Null reduziert. Ich habe die Ausgangsleistung speziell an meine Bedürfnisse angepasst und so konfiguriert, dass sie eine vorgegebene maximale Einspeisegrenze nicht überschreitet. Dieser Ansatz schont nicht nur das Material des Speichers und der Komponenten, sondern berücksichtigt auch den Ladezustand des Speichers, indem der Wechselrichter bei bestimmten SoC-Grenzwerten (State of Charge) gestoppt oder aktiviert wird.

Um das Energiemanagementsystem flexibel zu gestalten, habe ich ein seperates Frontend für das Home Assistant Dashboard erstellt. Dieses Frontend ermöglicht es mir, Parameter einfach einzustellen und einen detaillierten Einblick in den aktuellen Zustand des Systems zu erhalten. Die Benutzeroberfläche ist darauf ausgelegt, eine Visualisierung der Energieflüsse und Systemzustände zu bieten und macht es einfach, Anpassungen vorzunehmen, um die Effizienz und Effektivität des Systems kontinuierlich zu optimieren.

Im folgenden Verlaufsdiagramm werden vier wichtige Datenpunkte meines Energiemanagementsystems dargestellt: der Netzbezug in Orange, die Ausgangsleistung des HMS-800-2T Wechselrichters in Rot, die durch die Nulleinspeisung reguliert wird, die Leistung des HM-300-1T, eines zusätzlichen Balkonkraftwerks, in Weiß und der SoC-Wert (State of Charge) des Speichers in Grün. Die Darstellung umfasst einen Zeitraum von einem Tag.

Das Diagramm zeigt deutlich, wie die Nulleinspeisung mit dem Netzbezug gekoppelt und aktiv geregelt wird. Besonders auffällig ist, wie die Leistung des HMS-800-2T angepasst wird – heruntergeregelt oder sogar abgeschaltet (beispielsweise zwischen 10:30 Uhr und 11:30 Uhr), wenn das kleinere Balkonkraftwerk HM-300-1T genug Energie bereitstellt, um den aktuellen Bedarf zu decken.

Zurzeit ist die maximale Leistungsgrenze auf etwa 128 Watt eingestellt. Es ist ebenfalls zu beobachten, dass das Einspeisen stets einige Watt unterhalb des bezogenen Stroms liegt. Dies ist einerseits auf die Auflösung der Leistungseinstellung des Wechselrichters zurückzuführen – 1% entspricht 8 Watt – und andererseits darauf, dass der eingestellte Leistungswert immer leicht von der tatsächlichen Ausgangsleistung des Wechselrichters abweicht. Dies ist jedoch kein Problem für mich; der Hauptfokus liegt darauf, keinen Überschuss ins Netz zu speisen.

Dieses Zusammenspiel der verschiedenen Energiequellen optimiert den Gesamtenergieverbrauch und reduziert die Abhängigkeit vom öffentlichen Stromnetz, was zu einer effizienteren und kostengünstigeren Energieverwaltung führt.

Verlaufsdiagramm dynamische Grundlastabdeckung

Kein Plug-and-Play System: Bedingungen, Wissen und benötigte Komponenten

Für eine effiziente Umsetzung der dynamischen Nulleinspeisung benötigst du einiges an Technik und Know-how. Hier eine Übersicht der notwendigen Komponenten und Fähigkeiten:

  • PV-Anlage und Speichersystem: Die Grundlage bildet deine Photovoltaikanlage zusammen mit einem leistungsfähigen Speichersystem.
  • Energiezähler für den Hausverbrauch: Geräte wie der Shelly 3EM messen deinen gesamten Hausverbrauch.
  • Energiezähler nach dem Wechselrichter: Zum Beispiel der Shelly Plus PM Mini, der den Energiefluss direkt nach dem Wechselrichter erfasst.
  • openDTU zur Steuerung des Wechselrichters: Ein wichtiger Bestandteil zur Kommunikation und Steuerung deines Wechselrichters.
  • Home Assistant und NodeRed: Diese Plattformen ermöglichen es dir, das gesamte System zu programmieren und zu überwachen.
  • Programmierkenntnisse in JavaScript, YAML und Markdown: Diese Skills helfen dir, die notwendigen Skripte und Konfigurationen zu erstellen und ggf. anzupassen.
  • MQTT-Zugang zum Zendure Broker: Notwendig, um aktuelle Daten wie den SoC-Stand zu beziehen.
  • Freude am Basteln, Forschen und Testen: Ohne diese Begeisterung wird es schwer, die Herausforderungen zu meistern.

Dieses Setup ist kein einfaches Plug-and-Play System. Es erfordert sowohl software- als auch hardwareseitig einen gewissen Aufwand zur Datenbeschaffung. Beispielsweise musst du den MQTT Broker von Zendure integrieren, um Zugriff auf die Daten des Zendure SolarFlows HUB1200 zu erhalten und den Ladezustand des Speichers zu erfassen. Eine gute Anleitung dazu findest du hier: Anleitung zum Einbinden des Zendure SolarFlow Superbase in Home Assistant. Auch das Bauen einer openDTU ist erforderlich, um mit dem Wechselrichter kommunizieren zu können und die Leistung variabel anzupassen. Hierfür gibt es bereits fertige und kostengünstige Bausätze im Netz, wodurch sich der Zusammenbau einer openDTU in Grenzen hält.

Benötigte Entitäten und Helfer im Home Assistant

Um das System der Nulleinspeisung effizient zu steuern, benötigst du eine Reihe von Entitäten und Helfern in Home Assistant. Diese dienen als Grundlage für die Berechnungen, die zur Anpassung der Energieflüsse erforderlich sind.

Bitte beachte, dass die Namen der Entitäten und Helfer, die ich für mein System verwendet habe, spezifisch für meine Konfiguration sind. In deinem eigenen Home Assistant Setup kannst und solltest du die Namen der Entitäten und Helfer entsprechend deinen Präferenzen und Anforderungen anpassen.

Hier ist eine Liste der spezifischen Helfer, die ich für mein Setup verwendet habe:

Helfer:

  1. Ausschaltschwelle Wechselrichter (%): Bestimmt den SoC-Wert (State of Charge), bei dem der Wechselrichter abschalten soll, um die Batterie zu schonen.
  2. Einschaltschwelle Wechselrichter (%): Legt fest, bei welchem SoC-Wert der Wechselrichter wieder aktiviert wird, um die Energieversorgung zu gewährleisten.
  3. Maximale Ausgangsleistung Wechselrichter (W): Definiert die Höchstleistung, die der Wechselrichter ausgeben darf (z. B. 800W für den HMS-800-2T).
  4. Maximale Ausgangsleistung (%) bei SoC 100 %: Gibt an, wie hoch die Ausgangsleistung des Wechselrichters sein darf, wenn der Speicher voll geladen ist.
  5. Maximale Leistung Nulleinspeisung Wechselrichter (%): Definiert den oberen Leistungsbereich, der für die Anpassung der Grundlast zur Verfügung steht.
  6. Minimale Leistung Nulleinspeisung Wechselrichter (%): Bestimmt den unteren Leistungsbereich, der zur Anpassung der Grundlast genutzt werden kann.
  7. Statische Ausgangsleistung Wechselrichter (%): Die feste Ausgangsleistung des Wechselrichters, wenn die Nulleinspeisung deaktiviert ist.
  8. Status Nulleinspeisung: Schalter zum Aktivieren (1) oder Deaktivieren (0) der Nulleinspeisung.
  9. Trigger Nulleinspeisung: Ein zeitlicher Trigger, der bestimmt, wie oft die Berechnungen zur Anpassung der Ausgangsleistung stattfinden sollen (z. B. alle 60 Sekunden).

Entitäten:

Leistungsentitäten:

  1. Netto Stromverbrauch: Dies ist der Stromverbrauch, der aktuell in der Wohnung benötigt wird und setzt sich aus der generierten PV-Leistung und dem Verbrauch durch die Haushaltsgeräte zusammen.
  2. Brutto Stromverbrauch: Dies entspricht der Strommenge, die aus dem öffentlichen Netz bezogen wird.
  3. Wechselrichterleistungen: Diese Entität erfasst die Leistungen von einer oder zwei PV-Anlagen.
  4. Gesamtleistung weiterer Erzeugungsanlagen: Beispielsweise die Leistung einer weiteren PV-Anlage.

    Diese Entitäten habe ich in der configuration.yaml angelegt, um die Leistungswerte zu berechnen.

Entitäten zur Überwachung und Steuerung der Hardware:

  1. Status der OpenDTU: Zeigt an, ob die DTU online oder offline ist.
  2. Status Batterie: Liefert den aktuellen Ladezustand des Speichers.
  3. Status Wechselrichter Produktion: Gibt an, ob der Wechselrichter gerade Strom produziert.
  4. Status Wechselrichter Erreichbarkeit: Zeigt an, ob der Wechselrichter erreichbar ist (AN oder AUS).
  5. Restart Inverter: Für den Neustart des Wechselrichters.
  6. Leistungslimit Inverter: Zum Setzen der berechneten prozentualen Ausgangsleistung des Wechselrichters.
  7. Inverter An: und
  8. Inverter Aus: Diese Schalter dienen zum Ein- und Ausschalten des Wechselrichters.

    Diese Entitäten sendet oder empfängt die OpenDTU über das Nachrichtenprotokoll MQTT.

Parameter- und Informationskarte im Home Assistant

Parameter- und Informationskarte im Home Assistant

Um die Steuerung der Nulleinspeisung in deinem Home Assistant zu verwalten, ist es sinnvoll, spezielle Karten im Dashboard einzurichten. Diese Karten ermöglichen es dir, schnell und einfach die notwendigen Parameter anzupassen und wichtige Systeminformationen zu überblicken, ohne tief in die Systemkonfiguration eintauchen zu müssen. Dies spart Zeit und ermöglicht eine effiziente Verwaltung deines Energiemanagementsystems.

Parameterkarte

Die Parameterkarte habe ich in einem separaten Tab des Home Assistant Dashboards eingerichtet. Diese interaktive Karte ermöglicht es dir, die Parameter, die der Algorithmus für die Berechnung benötigt, bequem anzupassen.

Bei aktivierter Nulleinspeisung werden die Parameter für das dynamische Nulleinspeisen angezeigt, wird diese deaktiviert, so kann nur eine statische Ausgangsleistung des Wechselrichters einngestellt werden.

Informationskarte

Direkt unter der Parameterkarte befindet sich die Informationskarte, die wichtige Daten wie Leistungswerte und den Status der OpenDTU oder des Wechselrichters anzeigt. Dies bietet dir einen schnellen Überblick über den aktuellen Zustand deines Systems.

Notwendige Frontend-Erweiterungen

Um diese Karten zu erstellen, benötigst du ein paar kleine Frontend-Erweiterungen, die du über den HACS-Store beziehen kannst:

  • card-mod: Ermöglicht dir, das Aussehen deiner Karten individuell anzupassen.
  • Number Box: Erlaubt die Anzeige von Nummern in einer benutzerfreundlichen Box, ideal für die Einstellung von Parametern.

YAML Code für die Parameter- und Infokarte

Hier ist ein Beispiel des YAML-Codes, den ich verwendet habe, um die Karte für meine Konfiguration zu erstellen. Du kannst diesen gerne kopieren, solltest aber die verschiedenen Entitätsnamen durch deine ersetzen.

NodeRed: Nulleinspeisung automatisieren

Home Assistant bietet zwar ein leistungsstarkes Automatisierungspaket, das für die meisten Anwendungsfälle ausreichend ist, aber bei sehr komplexen Logiken und spezifischen Berechnungen stößt es an seine Grenzen. Für solche Fälle bevorzuge ich NodeRed. Die Visualisierung von Funktionen durch das Verdrahtungsprinzip macht Prozesse übersichtlich und leicht nachvollziehbar. NodeRed lässt sich direkt über den Add-On Store in Home Assistant installieren, was die Integration enorm erleichtert.

Im Zentrum meiner Logiksteuerung in NodeRed steht der Flow, der die Leistungsparameter für den Wechselrichter steuert.

Funktionsdiagramm des Node-Red-Flows zur Steuerung des Wechselrichters in einem Solaranlagen-Management-System. Es zeigt die Verbindungen zwischen verschiedenen Knoten, die Datenverarbeitung, Ereignissteuerung und die logische Verknüpfung zur Optimierung der Energieverwaltung.

Der Flow beginnt mit dem Auslesen der relevanten Entitäten durch den „get entities“ Node, welcher Statusmeldungen, Leistungswerte, Ereignisse und Parameter erfasst. Diese Daten werden mittels eines Timers regelmäßig abgerufen und zunächst in einem „join“ Node gesammelt. Die so aggregierten Daten werden anschließend in einem „function“ Node formatiert, der sie in ein verarbeitbares Array umwandelt. Ein weiterer „function“ Node nimmt sich dieser formatierten Daten an, berechnet den neuen Leistungswert des Wechselrichters und steuert dessen Aktivierung sowie Deaktivierung.

Ein optionaler Trigger sorgt zusätzlich dafür, dass der Wechselrichter einmal täglich – üblicherweise nachts – neu gestartet wird. Dieses Vorgehen habe ich implementiert, nachdem ich feststellte, dass der Wechselrichter nach einigen Tagen keine Verbindung mehr zur openDTU aufbaute; ein täglicher Neustart hat dieses Kommunikationsproblem effektiv behoben.

Funktionsplan Steuerlogik Nulleinspeisung

Funktionsplan Nulleinspeisung NodeRed Flow

NodeRed Flow im JSON-Format

Meinen aktuellen NodeRed-Flow kannst du dir hier kopieren und bei dir im NodeRed importieren.
Wichtig: Beachte bitte die Hinweise und Kommentare im Flow. Für einen funktionsfähigen Flow solltest du die Entitätsnamen durch deine ersetzen.

Entwicklungsstatus, Probleme und weitere Pläne

Mein Ansatz zur Dynamischen Nulleinspeisung befindet sich noch in einer frühen Entwicklungsphase und ist daher recht unerprobt. Derzeit arbeite ich intensiv daran, die Langzeitstabilität des Systems sicherzustellen. Die Herausforderungen sind vielfältig und stark abhängig von den spezifischen Systemkomponenten sowie der Fähigkeit des Herstellers, Daten kontinuierlich und zuverlässig bereitzustellen.

Stand heute gibt es Probleme mit der Hardware-Software-Konstellation des Zendure-Systems in Verbindung mit dem Bypass-Modus oder dem automatischen Tiefenentladen des Speichersystems zu Kalibrierungszwecken. Diese Abhängigkeiten sorgen, wenn auch nur sehr selten, für Probleme mit der Nulleinspeisungslogik. Ich hoffe, dass die Entwickler bei Zendure diese Probleme zeitnah beheben, denn dieses System ist aus meiner persönlichen Sicht ein sehr qualitatives, leistungsstarkes System.

Ein weiterer wichtiger Punkt meiner Entwicklungsarbeit ist die Optimierung der Nulleinspeisung. Ich bin dabei, die optimalen Grenzwerte zu ermitteln, um den Akku vollständig auszunutzen, ohne mit einem halbvollen Speicher in die nächsten Sonnenstunden am folgenden Tag zu starten. Zukünftig plane ich, dieses Problem durch die Integration weiterer Parameter, wie beispielsweise ein Solarforecast für die Produktion des nächsten Tages, zu adressieren.

Zusammenfassung

Zum Abschluss möchte ich euch für euer Interesse an meinem Projekt der Dynamischen Nulleinspeisung danken. Dieses System, obwohl es bereits in einer funktionierenden Form vorliegt, befindet sich noch in einer frühen Phase und wird stetig weiterentwickelt, um seine Zuverlässigkeit und Effektivität zu verbessern.

Nobody’s perfect! Ich ermutige euch, aktiv an der Diskussion teilzunehmen und eure Erfahrungen, Fragen oder Probleme im Kommentarbereich zu teilen. Euer direktes Feedback ist ungemein wertvoll und hilft mir, praxisnahe Anpassungen vorzunehmen und die Anwendung weiter zu optimieren.

Vielen Dank für eure Aufmerksamkeit und das Mitverfolgen der Entwicklungen.

6 Gedanken zu „Home Assistant: Nulleinspeisung Balkonkraftwerk“

  1. Hallo Martin,
    Komme leider nicht weiter,da keine Ahnung und Erfahrung da ist,sorry
    ChatGPT sagt:Um das Problem zu finden, könntest du folgende Schritte ausführen:
    Überprüfe deine gesamte YAML-Konfigurationsdatei und suche nach allen Referenzen zu input_number.trigger_nulleinspeisung. Stelle sicher, dass es korrekt geschrieben ist und keine Tippfehler enthält.
    Suche nach der Definition von input_number.trigger_nulleinspeisung in deiner Konfiguration. Stelle sicher, dass das entsprechende input_number-Entity korrekt definiert ist.
    1. Fehler:Missing:’input_number.trigger_nulleinspeisung‘,TemplateSyntaxError: Unexpected end of template. Jinja was looking for the following tags: ‚endif‘. The innermost block that needs to be closed is ‚if‘.
    ChatGP sagt auch:Überprüfe auch andere Stellen in deiner YAML-Datei, die den Jinja2-Syntax verwenden, insbesondere if-Anweisungen und überprüfe, ob sie korrekt geschlossen sind.Führe eine schrittweise Überprüfung durch, indem du Teile deiner YAML-Datei entfernst oder auskommentierst und dann prüfst, ob der Fehler weiterhin auftritt. Auf diese Weise kannst du den Abschnitt isolieren, der das Problem verursacht.Überprüfe die Protokolldateien deiner Home Assistant-Instanz auf weitere Fehlermeldungen oder Hinweise, die dir bei der Fehlersuche helfen könnten.

    2.Fehler:
    Custom element doesn’t exist: input_boolean_card.
    type: custom:input_boolean_card
    entity: input_boolean.status_nulleinspeisung
    name: Status Nulleinspeisung
    ChatGP hat die Yaml geändert die du oben angeboten hast,der Grund war : entity: input_boolean.status_nulleinspeisung
    Yaml Datei mit meinen Daten(2x HM 800 & openDTU,Sonnenseite beide „WEST“,ferner hast du eine Idee woran es liegen könnte
    das der Mqtt die Zendure Daten anzeigt,sie aber überhaupt nicht im Home Assistant angezeigt werden?4x Modul & Solarflow 2xAB1000,
    type: vertical-stack
    cards:
    – type: markdown
    content: |
    ### Einstellung – Nulleinspeisung
    title: Nulleinstellung
    – type: custom:input_boolean_card
    entity: input_boolean.status_nulleinspeisung
    name: Status Nulleinspeisung
    – type: conditional
    conditions: []
    card:
    type: custom:numberbox-card
    border: true
    entity: input_number.maximale_ausgangsleistung_wechselrichter
    step: 50
    icon: false
    unit: W
    min: 200
    max: 2000
    name: Inverter Typ (max. Leistung)
    delay: 5000
    – type: button
    tap_action:
    action: toggle
    show_state: true
    entity: input_boolean.status_nulleinspeisung
    name: Nulleinspeisung
    – type: conditional
    conditions:
    – condition: state
    entity: input_boolean.status_nulleinspeisung
    state: ‚on‘
    card:
    type: horizontal-stack
    cards:
    – type: markdown
    content: |
    Leistungsbereich Inverter
    – type: horizontal-stack
    cards:
    – type: custom:numberbox-card
    border: true
    entity: input_number.minimale_leistung_nulleinspeisung_wechselrichter
    name: false
    icon: false
    unit: ‚%‘
    min: 1
    max: 100
    step: 1
    max_entity: input_number.maximale_leistung_nulleinspeisung_wechselrichter
    card_mod:
    style: >
    .body { display: block !important } .body::before {
    text-align: center; font-size: 12px; content: „von ({{
    (states(‚input_number.minimale_leistung_nulleinspeisung_wechselrichter‘)
    | int *
    (states(‚input_number.maximale_ausgangsleistung_wechselrichter‘)
    | int / 100)) | int }} W)“; display: block !important }
    – type: custom:numberbox-card
    border: true
    entity: input_number.maximale_leistung_nulleinspeisung_wechselrichter
    name: false
    icon: false
    unit: ‚%‘
    min: 1
    max: 100
    step: 1
    min_entity: input_number.minimale_leistung_nulleinspeisung_wechselrichter
    card_mod:
    style: >
    .body { display: block !important } .body::before {
    text-align: center; font-size: 12px; content: „bis ({{
    (states(‚input_number.maximale_leistung_nulleinspeisung_wechselrichter‘)
    | int *
    (states(‚input_number.maximale_ausgangsleistung_wechselrichter‘)
    | int / 100)) | int }} W)“; display: block !important }
    – type: conditional
    conditions:
    – condition: state
    entity: input_boolean.status_nulleinspeisung
    state: ‚on‘
    card:
    type: horizontal-stack
    cards:
    – type: markdown
    content: |
    Schaltschwelle Inverter
    – type: horizontal-stack
    cards:
    – type: custom:numberbox-card
    border: true
    entity: input_number.ausschaltschwelle_wechselrichter
    name: false
    icon: false
    unit: ‚%‘
    min: 1
    max: 100
    step: 1
    min_entity: input_number.minimale_leistung_nulleinspeisung_wechselrichter
    max_entity: input_number.einschaltschwelle_wechselrichter
    card_mod:
    style: >
    .body { display: block !important } .body::before {
    text-align: center; font-size: 12px; content: „AUS bei SoC“;
    display: block !important }
    – type: custom:numberbox-card
    border: true
    entity: input_number.einschaltschwelle_wechselrichter
    name: false
    icon: false
    unit: ‚%‘
    min: 1
    max: 100
    step: 1
    max_entity: input_number.maximale_leistung_nulleinspeisung_wechselrichter
    min_entity: input_number.ausschaltschwelle_wechselrichter
    card_mod:
    style: >
    .body { display: block !important } .body::before {
    text-align: center; font-size: 12px; content: „EIN bei SoC“;
    display: block !important }
    – type: conditional
    conditions:
    – condition: state
    entity: input_boolean.status_nulleinspeisung
    state: ‚on‘
    card:
    type: horizontal-stack
    cards:
    – type: markdown
    content: |
    Leistung bei SoC 100%
    – type: horizontal-stack
    cards:
    – type: custom:numberbox-card
    border: true
    entity: input_number.maximale_leistung_wenn_soc_100
    name: false
    step: 1
    icon: false
    unit: ‚%‘
    min: 1
    max: 100
    card_mod:
    style: >
    .body { display: block !important } .body::before {
    text-align: center; font-size: 12px; content: „bis ({{
    (states(‚input_number.maximale_leistung_wenn_soc_100‘) | int *
    (states(‚input_number.maximale_ausgangsleistung_wechselrichter‘)
    | int / 100)) | int }} W)“; display: block !important }
    – type: conditional
    conditions: []
    card:
    type: custom:numberbox-card
    border: true
    entity: input_number.trigger_nulleinspeisung
    name: Aktualisiere Ausgangsleistung aller
    step: 10
    icon: false
    unit: s
    min: 10
    max: 600
    – type: markdown
    content: >
    |||

    | :— | :— |

    | ***Leistungswerte*** ||

    | Stromverbrauch: | **{{ states(’sensor.power_consumption‘) |
    default(‚N/A‘) }} W** |

    | Netzbezug: | **{{ states(’sensor.power_current‘) | default(‚N/A‘) }} W**
    |

    | Inverterleistung WEST: | **{{ states(’sensor.power_pv_1′) |
    default(‚N/A‘) }} W** |

    | Inverterleistung WEST: | **{{ states(’sensor.power_pv_2′) |
    default(‚N/A‘) }} W** |

    |||

    | ***Status*** | |

    | {% if is_state(‚input_boolean.status_nulleinspeisung‘, ‚on‘) %} |

    | Nulleinspeisung: | Aktiviert |

    | openDTU erreichbar: | {% if
    is_state(‚binary_sensor.opendtu_958650_status‘, ‚on‘) %}Online{% else %}Offline{%
    endif %} |

    | Inverter Grenzwert: | **{% if
    states(’number.hm_800_limit_persistent_relative‘) | default(‚N/A‘) !=
    ‚N/A‘ %}{{ states(’number.hm_800_limit_persistent_relative‘) | int }} %**
    (**{% if states(’number.hm_800_limit_persistent_absolute‘) |
    default(‚N/A‘) != ‚N/A‘ %}{{
    states(’number.hm_800_limit_persistent_absolute‘) | int }} W{% else
    %}N/A{% endif %}**) |

    | Inverter produzierend: | {% if
    is_state(‚binary_sensor.hm_800_producing‘, ‚on‘) %}An{% else %}Aus{% endif %} |

    | Inverter erreichbar: | {% if is_state(‚binary_sensor.hm_800_reachable‘,
    ‚on‘) %}An{% else %}Aus{% endif %} |

    | SoC Speicher: | **{% if
    states(’sensor.solarflow_solarflow_electriclevel‘) | default(‚N/A‘) !=
    ‚N/A‘ %}{{ states(’sensor.solarflow_solarflow_electriclevel‘) | int }}{%
    else %}N/A{% endif %} %** ({% if
    states(’sensor.solarflow_solarflow_electriclevel‘) | default(‚N/A‘) !=
    ‚N/A‘ %}{% if states(’sensor.solarflow_pv_system_packstate‘) == ‚0‘
    %}Standby{% elif states(’sensor.solarflow_pv_system_packstate‘) == ‚1‘
    %}Lädt{% elif states(’sensor.solarflow_pv_system_packstate‘) == ‚2‘
    %}Entlädt{% else %}Unbekannter Status{% endif %}{% endif %}) |

    | {% else %} |

    | Nulleinspeisung: | Deaktiviert |

    | openDTU erreichbar: | {% if
    is_state(‚binary_sensor.opendtu_958650_status‘, ‚on‘) %}Online{% else %}Offline{%
    endif %} |

    | Inverter Grenzwert: | **{% if
    states(’number.hm_800_limit_persistent_relative‘) | default(‚N/A‘) !=
    ‚N/A‘ %}{{ states(’number.hm_800_limit_persistent_relative‘) | int }} %**
    (**{% if states(’number.hm_800_limit_persistent_absolute‘) |
    default(‚N/A‘) != ‚N/A‘ %}{{
    states(’number.hm_800_limit_persistent_absolute‘) | int }} W{% else
    %}N/A{% endif %}**) |

    | Inverter produzierend: | {% if
    is_state(‚binary_sensor.hm_800_producing‘, ‚on‘) %}An{% else %}Aus{% endif %} |

    | Inverter erreichbar: | {% if is_state(‚binary_sensor.hm_800_reachable‘,
    ‚on‘) %}An{% else %}Aus{% endif %} |

    | SoC Speicher: | **{% if
    states(’sensor.solarflow_solarflow_electriclevel‘) | default(‚N/A‘) !=
    ‚N/A‘ %}{{ states(’sensor.solarflow_solarflow_electriclevel‘) | int }}{%
    else %}N/A{% endif %} %** ({% if
    states(’sensor.solarflow_solarflow_electriclevel‘) | default(‚N/A‘) !=
    ‚N/A‘ %}{% if states(’sensor.solarflow_pv_system_packstate‘) == ‚0‘
    %}Standby{% elif states(’sensor.solarflow_pv_system_packstate‘) == ‚1‘
    %}Lädt{% elif states(’sensor.solarflow_pv_system_packstate‘) == ‚2‘
    %}Entlädt{% else %}Unbekannter Status{% endif %}{% endif %}) |

    | {% endif %} |

    :

    Antworten
  2. Wenn die Zeit und die Lust da ist könntes du mir bitte mitteilen wo diese ID im einzelnen her kommen.Da ich es versuche 1 zu 1 um zusetzen.

    Die ID mit Frage woher kommen die ???
    – id: „5cf6489d8647b69b“ von ?
    – id: „5739c3f29a1ea937“ von ?
    – – id: „deaadefc156e85aa“ von ?
    – „a66ee53700d3b369“ von ?
    – id: „2a0d4e251064647e“ von ?
    – „43543a987662b3e9“ von ?
    – – id: „0c751d1f7106fbac“ von ?
    : „fb0d40e8.e8f66“ von ?
    – id: „43543a987662b3e9“ von ?
    – „2a0d4e251064647e“ von ?
    – „a26c4f5925b4b643“ von ?
    – „ad417c320b10bec2“ von ?
    – id: „fad7c9c2783c3c71“ von ?
    – id: „32b1de89d46895e9“ von ?
    : „fb0d40e8.e8f66“ von ?
    – id: „aefb0da329db14a4“ von ?
    : „fb0d40e8.e8f66“ von ?
    – id: „474344884a02867c“ von ?
    : „fb0d40e8.e8f66“ von ?
    – id: „deaadefc156e85aa“ von ?
    – id: „f04101965e727af7“ von ?
    – „fad7c9c2783c3c71“ von ?
    – id: „57723b0bd889f0a7“ von ?

    Antworten
    • Die IDs werden von NodeRed beim Erstellen von Nodes automatisch erstellt.
      Ich habe den Beitrag aktualisiert. Du kannst jetzt den JSON-Flow über die Symbolleiste kopieren und in NodeRed importieren.

      VG Martin

      Antworten
  3. Hallo,
    hier die Node Red in Json Format laut ChatGP:
    [
    {
    „id“: „5cf6489d8647b69b“,
    „type“: „group“,
    „name“: „Nulleinspeisung V1.0 04/2024“,
    „style“: {
    „label“: true
    },
    „nodes“: [
    {
    „id“: „5739c3f29a1ea937“,
    „type“: „inject“,
    „name“: „Trigger Inverter Neustart“,
    „props“: [
    {
    „p“: „payload“
    }
    ],
    „repeat“: „“,
    „crontab“: „00 00 * * *“,
    „once“: false,
    „onceDelay“: „6“,
    „topic“: „“,
    „payload“: „“,
    „payloadType“: „date“,
    „x“: 1210,
    „y“: 720,
    „wires“: [
    [
    {
    „id“: „deaadefc156e85aa“,
    „type“: „link out“,
    „name“: „Event Data“,
    „mode“: „link“,
    „links“: [
    „a66ee53700d3b369“
    ]
    }
    ]
    ]
    },
    {
    „id“: „2a0d4e251064647e“,
    „type“: „link in“,
    „name“: „Event Trigger“,
    „links“: [
    „43543a987662b3e9“
    ],
    „x“: 105,
    „y“: 800,
    „wires“: [
    [
    {
    „id“: „0c751d1f7106fbac“,
    „type“: „ha-get-entities“,
    „name“: „Status openDTU“,
    „server“: „fb0d40e8.e8f66“,
    „version“: 1,
    „rules“: [
    {
    „property“: „entity_id“,
    „logic“: „includes“,
    „value“: „binary_sensor.opendtu_168e58_status“,
    „valueType“: „str“
    }
    ],
    „outputType“: „split“,
    „outputEmptyResults“: false,
    „outputLocationType“: „msg“,
    „outputLocation“: „payload“,
    „outputResultsCount“: 1
    }
    ]
    ]
    },
    {
    „id“: „43543a987662b3e9“,
    „type“: „link out“,
    „name“: „Event Trigger“,
    „mode“: „link“,
    „links“: [
    „2a0d4e251064647e“,
    „a26c4f5925b4b643“,
    „ad417c320b10bec2“
    ],
    „x“: 565,
    „y“: 700
    },
    {
    „id“: „fad7c9c2783c3c71“,
    „type“: „group“,
    „name“: „Parameter“,
    „style“: {
    „label“: true
    },
    „nodes“: [
    {
    „id“: „32b1de89d46895e9“,
    „type“: „ha-get-entities“,
    „name“: „Minimale Leistung Nulleinspeisung Wechselrichter“,
    „server“: „fb0d40e8.e8f66“,
    „version“: 1,
    „rules“: [
    {
    „property“: „entity_id“,
    „logic“: „includes“,
    „value“: „input_number.minimale_leistung_nulleinspeisung_wechselrichter“,
    „valueType“: „str“
    }
    ],
    „outputType“: „split“,
    „outputEmptyResults“: false,
    „outputLocationType“: „msg“,
    „outputLocation“: „payload“,
    „outputResultsCount“: 1,
    „x“: 370,
    „y“: 1420
    },
    {
    „id“: „aefb0da329db14a4“,
    „type“: „ha-get-entities“,
    „name“: „Ausschaltschwelle Inverter „,
    „server“: „fb0d40e8.e8f66“,
    „version“: 1,
    „rules“: [
    {
    „property“: „entity_id“,
    „logic“: „includes“,
    „value“: „input_number.ausschaltschwelle_wechselrichter“,
    „valueType“: „str“
    }
    ],
    „outputType“: „split“,
    „outputEmptyResults“: false,
    „outputLocationType“: „msg“,
    „outputLocation“: „payload“,
    „outputResultsCount“: 1,
    „x“: 350,
    „y“: 1480
    },
    {
    „id“: „474344884a02867c“,
    „type“: „ha-get-entities“,
    „name“: „Maximale Leistung Nulleinspeisung Wechselrichter“,
    „server“: „fb0d40e8.e8f66“,
    „version“: 1,
    „rules“: [
    {
    „property“: „entity_id“,
    „logic“: „includes“,
    „value“: „input_number.maximale_leistung_nulleinspeisung_wechselrichter“,
    „valueType“: „str“
    }
    ],
    „outputType“: „split“,
    „outputEmptyResults“: false,
    „outputLocationType“: „msg“,
    „outputLocation“: „payload“,
    „outputResultsCount“: 1,
    „x“: 370,
    „y“: 1360
    }
    ]
    },
    {
    „id“: „deaadefc156e85aa“,
    „type“: „link out“,
    „name“: „Event Data“,
    „mode“: „link“,
    „links“: [
    „2a0d4e251064647e“,
    „43543a987662b3e9“
    ],
    „x“: 1375,
    „y“: 720
    },
    {
    „id“: „f04101965e727af7“,
    „type“: „link out“,
    „name“: „Event Data“,
    „mode“: „link“,
    „links“: [
    „2a0d4e251064647e“,
    „43543a987662b3e9“,
    „fad7c9c2783c3c71“
    ],
    „x“: 615,
    „y“: 1400
    },
    {
    „id“: „57723b0bd889f0a7“,
    „type“: „link out“,
    „name“: „Event Data“,
    „mode“: „link“,
    „links“: [
    „2a0d4e251064647e“,
    „43543a987662b3e9“
    ],
    „x“: 430,
    „y“: 760
    },
    {
    „id“: „fb0d40e8e8f66“,
    „type“: „server“,
    „name“: „Home Assistant“,
    „version“: 1,
    „legacy“: false,
    „addon“: false,
    „rejectUnauthorizedCerts“: true,
    „ha_boolean“: „y|yes|true|on|home|open“,
    „connectionDelay“: true,
    „cacheJson“: true,
    „x“: 110,
    „y“: 580,
    „wires“: []
    }
    ],
    „wires“: []
    }
    ]

    Mfg
    Peter

    Antworten

Schreibe einen Kommentar

Cookie Consent mit Real Cookie Banner