Regel für Schalter mit Timerfunktion

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

RR727
Beiträge: 9
Registriert: 28. Nov 2023 16:37
Answers: 0

Re: Regel für Schalter mit Timerfunktion

Beitrag von RR727 »

Hallo Udo,

könntest du dir bitte folgende Regel ansehen.
Ich habe versucht, analog zum Mittelwert auch einen Tageswert zu berechnen/anzuzeigen.
Ich befürchte, dass sich das nicht richtig umgesetzt habe, da der Tageswert (seit heute aktiv) nicht kontinuierlich ansteigt.
... könntest du mir bitte helfen:

Item "PVTagesgesamtwert" angelegt, analog zum Mittelwert, folgende Regel erstellt:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Fronius_Symo_Inverter_AC_Power
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "3"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >
        var pvTageswert = (Fronius_Symo_Inverter_AC_Power.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number).floatValue 
        logInfo("pvTageswert", "Tageswert der PV Leistung: {}", pvTageswert) 
        PVTagesgesamtwert.postUpdate(pvTageswert)
    type: script.ScriptAction

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Regel für Schalter mit Timerfunktion

Beitrag von udo1toni »

Ich denke, Du bist da komplett auf dem Holzweg.
Die Leistung ist die in diesem Moment gelieferte Leistung, diese schwankt zwischen 0 und Pmax bzw. Ppeak. Was Du möchtest, ist der Ertrag, also die gelieferte Energie.
Diese Werte musst Du aber nicht über openHAB ermitteln, Fronius stellt sie direkt zur Verfügung.

Meine Fronius sieht in der Konfiguration als Textdatei so aus:

Code: Alles auswählen

Bridge fronius:bridge:bridge "Fronius Bridge" [hostname="192.168.178.99", refreshInterval=30] {
    Thing powerinverter inverter "Fronius Inverter" [deviceId=1]
    Thing meter meter "Fronius Smartmeter" [deviceId=1]
}
Die zugehörigen Items (als Textdatei; alle bei mir möglichen Channel sind aufgelistet):

Code: Alles auswählen

Number:Power               PVInverterdatachannelpac               "Ac power"                      (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelpac",unit="W"}
Number:Power               PVInverterdatachannelpdc               "Dc power"                      (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelpdc",unit="W"}
Number:Power               PVInverterdatachannelpdc2              "Dc power 2"                    (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelpdc2",unit="W"}
Number:Power               PVInverterdatachannelpdc3              "Dc power 3"                    (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelpdc3",unit="W"}
Number:Energy              PVInverterdatachanneldayenergy         "Day energy"                    (gPV,gPVGraf)  ["Measurement","Energy"]     {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneldayenergy",unit="Wh"}
Number:Energy              PVInverterdatachanneltotal             "Total energy"                  (gPV)          ["Measurement","Energy"]     {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneltotal",unit="Wh"}
Number:Energy              PVInverterdatachannelyear              "Year energy"                   (gPV)          ["Measurement","Energy"]     {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelyear",unit="Wh"}
Number:Frequency           PVInverterdatachannelfac               "Ac frequency"                  (gPV)          ["Measurement","Frequency"]  {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelfac",unit="Hz"}
Number:ElectricCurrent     PVInverterdatachanneliac               "Ac current"                    (gPV)          ["Measurement","Current"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneliac",unit="A"}
Number:ElectricCurrent     PVInverterdatachannelidc               "Dc current"                    (gPV)          ["Measurement","Current"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelidc",unit="A"}
Number:ElectricCurrent     PVInverterdatachannelidc2              "Dc current 2"                  (gPV)          ["Measurement","Current"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelidc2",unit="A"}
Number:ElectricCurrent     PVInverterdatachannelidc3              "Dc current 3"                  (gPV)          ["Measurement","Current"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachannelidc3",unit="A"}
Number:ElectricPotential   PVInverterdatachanneluac               "Ac voltage"                    (gPV)          ["Measurement","Voltage"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneluac",unit="V"}
Number:ElectricPotential   PVInverterdatachanneludc               "Dc voltage"                    (gPV)          ["Measurement","Voltage"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneludc",unit="V"}
Number:ElectricPotential   PVInverterdatachanneludc2              "Dc voltage 2"                  (gPV)          ["Measurement","Voltage"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneludc2",unit="V"}
Number:ElectricPotential   PVInverterdatachanneludc3              "Dc voltage 3"                  (gPV)          ["Measurement","Voltage"]    {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneludc3",unit="V"}
Number                     PVInverterdatadevicestatuserrorcode    "Error code"                    (gPV)          ["Status"]                   {channel="fronius:powerinverter:bridge:inverter:inverterdatadevicestatuserrorcode"}
Number                     PVInverterdatadevicestatusstatuscode   "Status code"                   (gPV)          ["Status"]                   {channel="fronius:powerinverter:bridge:inverter:inverterdatadevicestatusstatuscode"}
Number:Power               PVPowerflowchannelpgrid                "Grid power"                    (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:powerflowchannelpgrid",unit="W"}
Number:Power               PVPowerflowchannelpload                "Load power"                    (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:powerflowchannelpload",unit="W"}
Number:Power               PVPowerflowchannelpakku                "Charge / discharge of battery" (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:powerflowchannelpakku",unit="W"}
Number:Power               PVPowerflowchannelppv                  "Current solar yield"           (gPV,gPVGraf)  ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:powerflowchannelppv",unit="W"}
Number:Dimensionless       PVPowerflowautonomy                    "Autonomy"                      (gPV)          ["Measurement","Level"]      {channel="fronius:powerinverter:bridge:inverter:powerflowautonomy",unit="%"}
Number:Dimensionless       PVPowerflowselfconsumption             "Self consumption"              (gPV)          ["Measurement","Level"]      {channel="fronius:powerinverter:bridge:inverter:powerflowselfconsumption",unit="%"}
Number:Power               PVPowerflowinverter1Power              "Power flow (inverter 1)"       (gPV)          ["Measurement","Power"]      {channel="fronius:powerinverter:bridge:inverter:powerflowinverter1power",unit="W"}
Number:Dimensionless       PVPowerflowinverter1Soc                "State of charge (inverter 1)"  (gPV)          ["Measurement","Level"]      {channel="fronius:powerinverter:bridge:inverter:powerflowinverter1soc",unit="%"}

Number                     PVEnable                  "Enabled"               (gPV) ["Measurement"] {channel="fronius:meter:bridge:meter:enable"}
Number                     PVLocation                "Location"              (gPV) ["Measurement"] {channel="fronius:meter:bridge:meter:location"}
Number:ElectricCurrent     PVCurrentacphase1         "Ac current phase 1"    (gPV) ["Measurement","Current"] {channel="fronius:meter:bridge:meter:currentacphase1",unit="A"}
Number:ElectricCurrent     PVCurrentacphase2         "Ac current phase 2"    (gPV) ["Measurement","Current"] {channel="fronius:meter:bridge:meter:currentacphase2",unit="A"}
Number:ElectricCurrent     PVCurrentacphase3         "Ac current phase 3"    (gPV) ["Measurement","Current"] {channel="fronius:meter:bridge:meter:currentacphase3",unit="A"}
Number:ElectricPotential   PVVoltageacphase1         "Ac voltage phase 1"    (gPV) ["Measurement","Voltage"] {channel="fronius:meter:bridge:meter:voltageacphase1",unit="V"}
Number:ElectricPotential   PVVoltageacphase2         "Ac voltage phase 2"    (gPV) ["Measurement","Voltage"] {channel="fronius:meter:bridge:meter:voltageacphase2",unit="V"}
Number:ElectricPotential   PVVoltageacphase3         "Ac voltage phase 3"    (gPV) ["Measurement","Voltage"] {channel="fronius:meter:bridge:meter:voltageacphase3",unit="V"}
Number:Power               PVPowerrealphase1         "Real power phase 1"    (gPV) ["Measurement","Power"] {channel="fronius:meter:bridge:meter:powerrealphase1",unit="W"}
Number:Power               PVPowerrealphase2         "Real power phase 2"    (gPV) ["Measurement","Power"] {channel="fronius:meter:bridge:meter:powerrealphase2",unit="W"}
Number:Power               PVPowerrealphase3         "Real power phase 3"    (gPV) ["Measurement","Power"] {channel="fronius:meter:bridge:meter:powerrealphase3",unit="W"}
Number:Power               PVPowerrealsum            "Real power sum"        (gPV) ["Measurement","Power"] {channel="fronius:meter:bridge:meter:powerrealsum",unit="W"}
Number                     PVPowerfactorphase1       "Power factor phase 1"  (gPV) ["Measurement"] {channel="fronius:meter:bridge:meter:powerfactorphase1"}
Number                     PVPowerfactorphase2       "Power factor phase 2"  (gPV) ["Measurement"] {channel="fronius:meter:bridge:meter:powerfactorphase2"}
Number                     PVPowerfactorphase3       "Power factor phase 3"  (gPV) ["Measurement"] {channel="fronius:meter:bridge:meter:powerfactorphase3"}
Number:Energy              PVEnergyrealsumconsumed   "Real energy consumed"  (gPV) ["Measurement","Energy"] {channel="fronius:meter:bridge:meter:energyrealsumconsumed",unit="Wh"}
Number:Energy              PVEnergyrealsumproduced   "Real energy produced"  (gPV) ["Measurement","Energy"] {channel="fronius:meter:bridge:meter:energyrealsumproduced",unit="Wh"}
An dieser Stelle sind also die Werte PVInverterdatachanneldayenergy, PVInverterdatachanneltotal und PVInverterdatachannelyear interessant.
Natürlich liefern nur die Channel sinnvolle Werte, die auch im Kontext der Anlage eine Bedeutung haben, z.B. habe ich kein SmartMeter von Fronius verbaut, entsprechend funktioniert bei mir lediglich das Item PVPowerrealsum (Rückmeldung des Eigenverbrauchs über S0-Zwischenzähler), aber keine Ampere, Volt, Leistung oder gar Powerfactor pro Phase.

Ich werte zusätzlich noch mein SmartMeter aus (angebunden über Volkszähler.org, liefert den Zählerstand im Sekundentakt), dort bekomme ich also die abgerechnete Energiemenge angezeigt - getrennt nach Bezug und Einspeisung. Da ic hauf ide Kleinunternehmerregelung verzichtet habe muss ich zum Jahresbeginn jeweils die zwei Werte Jahressumme Eigenverbrauch und Jahressumme Einspeisung notieren, um die Steuererklärung ausfüllen zu können.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

RR727
Beiträge: 9
Registriert: 28. Nov 2023 16:37
Answers: 0

Re: Regel für Schalter mit Timerfunktion

Beitrag von RR727 »

... danke!
Ich habe auch den SmartMeter verbaut.
Ich habe mit das Item mal angesehen und auch die von dir hervorgehobenen Channels gefunden.
TotalEnergy und YearEnergy geben Werte aus, DayEnergy leider nicht, zumindest wird mir aktuell 0.00 angezeigt.
Muss dieser irgendwie angetriggert werden, damit der Wert angezeigt wird, oder sollte das normalweise laufen?

Fronius_Symo_Inverter_Day_Energy = 0.00 kWh

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Regel für Schalter mit Timerfunktion

Beitrag von udo1toni »

Das ist eigentlich der Wert, den man auch über die lokale Weboberfläche des Fronius sehen kann, das Binding macht ja nichts anders, als die Daten über die API per http abzuholen.
Möglich wäre ein Problem mit dem Firmwarestand, falls Fronius was an der API geändert haben sollte, was noch nicht im Binding berücksichtigt ist oder auch andersrum was berücksichtigt ist, aber Du nutzt noch eine alte Firmware, wobei das Binding das dann eigentlich berücksichtigen sollte... Und natürlich erscheint es seltsam, dass dann nur der eine Wert fehlt...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

RR727
Beiträge: 9
Registriert: 28. Nov 2023 16:37
Answers: 0

Re: Regel für Schalter mit Timerfunktion

Beitrag von RR727 »

Hallo Udo,
ich habe jetzt seitens Fronius Support eine Antwort erhalten, leider nicht die gewünschte:
"Leider ist die Abfrage der Tages/ und Jahreswerte beim GEN24 über die API nicht möglich.
Bei diesen Abfragen wird immer null ausgegeben.
Sollten Sie die Tagesdaten haben wollen müssten Sie die Totaldaten jeden Tag zur selben Zeit abrufen und den Werten dann die Totaldaten vom Vortag abziehen."

Wäre das mit Openhab grundsätzlich umsetzbar?
Könnte ich bspw. stündlich von 08:00 - 21:00 Uhr Werte speichern, um sie dann mit dem Vortageswert vergleichen und entsprechend die Differenz ausgeben zu können? Somit hätte ich dann zumindest ein stündliches Update zur Stromerzeugung.

Vielen Dank für deine Rückmeldung dazu!

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Regel für Schalter mit Timerfunktion

Beitrag von udo1toni »

Oh, das ist traurig... Aber ja, das geht ganz einfach.

Erst mal: Wenn Du den Channel mit Total mit einem Item verknüpfst, wird openHAB per Default Verhalten diesen Wert bei jeder Änderung persistieren. Das heißt, es stehen schon alle notwendigen Daten zur Verfügung und Du musst hier gar nichts weiter tun.
Für den aktuellen Tag kannst Du dann den Tagesertrag mit dieser Formel bestimmen:

Code: Alles auswählen

val fTotalNow = (Total.state as Number).floatValue
val fTotalMidnight = (Total.historicState(now.with(LocalTime.MIDNIGHT)).state as Number).floatValue
val fErtragTag = fTotalNow - fTotalMidnight
Alternativ auch so:

Code: Alles auswählen

val fErtragTag = (Total.deltaSince(now.with(LocalTime.MIDNIGHT)) as Number).floatValue
Das funktioniert natürlich jeweils nur für den aktuellen Tag.
Sobald der Tageserstrag regelmäßig berechnet und in einem ITem abgelegt wird, wird auch dieses Item automatisch persistiert und steht zur Analyse zur Verfügung, sieht dann z.B. so aus:
Screenshot 2023-12-12 133906.png
Ebenso kann man auch die Wochen- Monats- und Jahressumme bestimmen, man muss lediglich den Startzeitpunkt entsprechend berechnen. Immer vorausgesetzt, es stehen bereits Daten für den gesamten fraglichen Zeitraum zur Verfügung :)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten