Fronius Binding - zusätzliche Daten?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

jb79
Beiträge: 7
Registriert: 29. Sep 2019 15:29

Fronius Binding - zusätzliche Daten?

Beitrag von jb79 »

Hallo,

habe das Fronius Binding laufen, das von meinen zwei Fronius Wechselrichtern (1x Symo Hybrid 5.0-3S mit Akku und Fronius Smartmeter, sowie 1x Symo 3.0-3S) die Daten ließt und ausgibt. Soweit, so gut, das läuft recht problemlos.

Jetzt hab ich noch so ein kleines Projekt mit einem Eigenbau-Speicher, das nachts den Eigenbedarf teilweise über einen kleinen zusätzlichen Wechselrichter aus einem Akku einspeist. Der Wechselrichter hängt hinter einem zweiten Fronius Smartmeter und scheint im Fronius Solarweb auch auf.

Würde jetzt gerne auch die Daten von diesem zweiten Smartmeter (eigentlich reicht mir die Summenleistung dort) in Openhab haben, da sonst die Werte, die mir angezeigt werden eigentlich Mist sind, weil eben diese knapp 300W nicht berücksichtigt werden wenn der WR rennt. Das Fronius Binding liefert diverse Werte (auch vom Akku) nur eben hat es wohl keine direkte Möglichkeit die Daten zusätzlicher Smartmeter anzuzeigen, nur der primäre wird im Falle des Symo Hybrid berücksichtigt bei den Leistungswerten.

Hier mal die API Ausgabe vom Symo Hybrid (/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System), wo die beiden Smartmeter über Modbus dran hängen. Konkret wäre vom Smartmeter mit der Nummer 1 (der 0-er ist der am Netzübergabepunkt) die "PowerReal_P_Sum" interessant (ziemlich weit unten, 294.36W). Gibts eine Möglichkeit, die auch über das Fronius Binding zu bekommen oder müßte man das dafür eigenhändig umschreiben?

Code: Alles auswählen

	
{
   "Body" : {
      "Data" : {
         "0" : {
            "Current_AC_Phase_1" : 0.95499999999999996,
            "Current_AC_Phase_2" : 0.60999999999999999,
            "Current_AC_Phase_3" : 1.4710000000000001,
            "Details" : {
               "Manufacturer" : "Fronius",
               "Model" : "Smart Meter 63A",
               "Serial" : "18160769"
            },
            "Enable" : 1,
            "EnergyReactive_VArAC_Sum_Consumed" : 24192100,
            "EnergyReactive_VArAC_Sum_Produced" : 22746740,
            "EnergyReal_WAC_Minus_Absolute" : 15558709,
            "EnergyReal_WAC_Plus_Absolute" : 9942289,
            "EnergyReal_WAC_Sum_Consumed" : 9942289,
            "EnergyReal_WAC_Sum_Produced" : 15558709,
            "Frequency_Phase_Average" : 50,
            "Meter_Location_Current" : 0,
            "PowerApparent_S_Phase_1" : 222.99249999999998,
            "PowerApparent_S_Phase_2" : 142.00800000000001,
            "PowerApparent_S_Phase_3" : 346.4205,
            "PowerApparent_S_Sum" : 272,
            "PowerFactor_Phase_1" : 0.72999999999999998,
            "PowerFactor_Phase_2" : 0.90000000000000002,
            "PowerFactor_Phase_3" : -0.91000000000000003,
            "PowerFactor_Sum" : -0.059999999999999998,
            "PowerReactive_Q_Phase_1" : -126.59,
            "PowerReactive_Q_Phase_2" : -40.799999999999997,
            "PowerReactive_Q_Phase_3" : -104.01000000000001,
            "PowerReactive_Q_Sum" : -271.39999999999998,
            "PowerReal_P_Phase_1" : 137.71000000000001,
            "PowerReal_P_Phase_2" : 84.370000000000005,
            "PowerReal_P_Phase_3" : -240.41999999999999,
            "PowerReal_P_Sum" : -18.34,
            "TimeStamp" : 1600210526,
            "Visible" : 1,
            "Voltage_AC_PhaseToPhase_12" : 403.80000000000001,
            "Voltage_AC_PhaseToPhase_23" : 405.60000000000002,
            "Voltage_AC_PhaseToPhase_31" : 406.19999999999999,
            "Voltage_AC_Phase_1" : 233.5,
            "Voltage_AC_Phase_2" : 232.80000000000001,
            "Voltage_AC_Phase_3" : 235.5
         },
         "1" : {
            "Current_AC_Phase_1" : 0.02,
            "Current_AC_Phase_2" : 0.025999999999999999,
            "Current_AC_Phase_3" : 1.637,
            "Details" : {
               "Manufacturer" : "Fronius",
               "Model" : "Smart Meter 63A",
               "Serial" : "18204329"
            },
            "Enable" : 1,
            "EnergyReactive_VArAC_Sum_Consumed" : 45830,
            "EnergyReactive_VArAC_Sum_Produced" : 47759810,
            "EnergyReal_WAC_Minus_Absolute" : 6249962,
            "EnergyReal_WAC_Plus_Absolute" : 903308,
            "EnergyReal_WAC_Sum_Consumed" : 6249962,
            "EnergyReal_WAC_Sum_Produced" : 903308,
            "Frequency_Phase_Average" : 50,
            "Meter_Location_Current" : 3,
            "PowerApparent_S_Phase_1" : 4.6820000000000004,
            "PowerApparent_S_Phase_2" : 6.0788000000000002,
            "PowerApparent_S_Phase_3" : 387.47789999999998,
            "PowerApparent_S_Sum" : 297,
            "PowerFactor_Phase_1" : 1,
            "PowerFactor_Phase_2" : 1,
            "PowerFactor_Phase_3" : -0.98999999999999999,
            "PowerFactor_Sum" : -0.98999999999999999,
            "PowerReactive_Q_Phase_1" : 0,
            "PowerReactive_Q_Phase_2" : 0,
            "PowerReactive_Q_Phase_3" : -43.020000000000003,
            "PowerReactive_Q_Sum" : -43.020000000000003,
            "PowerReal_P_Phase_1" : -0,
            "PowerReal_P_Phase_2" : -0,
            "PowerReal_P_Phase_3" : 294.36000000000001,
            "PowerReal_P_Sum" : 294.36000000000001,
            "TimeStamp" : 1600210526,
            "Visible" : 1,
            "Voltage_AC_PhaseToPhase_12" : 405.19999999999999,
            "Voltage_AC_PhaseToPhase_23" : 407.5,
            "Voltage_AC_PhaseToPhase_31" : 407.69999999999999,
            "Voltage_AC_Phase_1" : 234.09999999999999,
            "Voltage_AC_Phase_2" : 233.80000000000001,
            "Voltage_AC_Phase_3" : 236.69999999999999
         }
      }
   },
   "Head" : {
      "RequestArguments" : {
         "DeviceClass" : "Meter",
         "Scope" : "System"
      },
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2020-09-16T00:55:26+02:00"
   }
}
lg Jürgen

violine21
Beiträge: 589
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Fronius Binding - zusätzliche Daten?

Beitrag von violine21 »

Hallo,
ich habe auch einen Fronius Symo und einen Fronius-Smartmeter.
Mir ist es nicht gelungen, das Smartmeter über das Binding ein zu binden. Ich mache das per http/JSON.
Auszug aus den Items:

Code: Alles auswählen

Number      Current_L1      "Strom L1 [%.2f A]"            { http="<[froniusrtd:30000:JSONPATH($.Body.Data.Current_AC_Phase_1)]" }
Number      Current_L2      "Strom L2 [%.2f A]"            { http="<[froniusrtd:30000:JSONPATH($.Body.Data.Current_AC_Phase_2)]" }
Number      Current_L3      "Strom L3 [%.2f A]"            { http="<[froniusrtd:30000:JSONPATH($.Body.Data.Current_AC_Phase_3)]" }
Number      PF_L1           "Leistungsfaktor L1 [%.2f]"        { http="<[froniusrtd:30000:JSONPATH($.Body.Data.PowerFactor_Phase_1)]" }
Number      PF_L2           "Leistungsfaktor L2 [%.2f]"        { http="<[froniusrtd:30000:JSONPATH($.Body.Data.PowerFactor_Phase_2)]" }
Number      PF_L3           "Leistungsfaktor L3 [%.2f]"        { http="<[froniusrtd:30000:JSONPATH($.Body.Data.PowerFactor_Phase_3)]" }
Number      PF_sum          "Leistungsfaktor Summe [%.2f]"    { http="<[froniusrtd:30000:JSONPATH($.Body.Data.PowerFactor_Sum)]" }
Number      Energiebezug        "bezogene Energie [%.2f Wh AC]"     { http="<[froniusrtd:30000:JSONPATH($.Body.Data.EnergyReal_WAC_Sum_Consumed)]" }
Number      Energieeinspeisung  "eingespeiste Energie [%.2f Wh AC]" { http="<[froniusrtd:30000:JSONPATH($.Body.Data.EnergyReal_WAC_Sum_Produced)]" }

Nachtrag http-Service:

Code: Alles auswählen

http:froniusrtd.url=http://xxx.xxx.xxx.xxx/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=0&DataCollection=MeterRealtimeData
http:froniusrtd.updateInterval=30000
Bitte die Device-Id beachten!
Zuletzt geändert von violine21 am 17. Sep 2020 17:12, insgesamt 1-mal geändert.

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

Re: Fronius Binding - zusätzliche Daten?

Beitrag von udo1toni »

Genau. Aber nicht vergessen: Zur Itemdefinition gehört in diesem Fall noch ein http Cache mit dem Namen froniusrtd ;)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Fronius Binding - zusätzliche Daten?

Beitrag von shuo »

Hallo zusammen,
ich habe OH3 portiert und habe jetzt Schwierigkeiten mit dem http binding. In der Vergangenheit hatte ich das genau so wie hier beschrieben gelöst.

Ich habe in der UI bereits ein Thing erstellt. Allerdings weiß ich jetzt nicht was für ein Channel ich benötige.

Kann mir jemand sagen wie ich das Channel zu konfigurieren habe, bzw. wie mein Item auszusehen hat?

Zur Info:

Code: Alles auswählen

UID: http:url:froniusrtd
label: HTTP URL Thing
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.18.78/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=MeterRealtimeData
  refresh: 10
  commandMethod: GET
  timeout: 3000
  bufferSize: 2048

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

Re: Fronius Binding - zusätzliche Daten?

Beitrag von udo1toni »

Das sieht doch schon sehr gut aus. Du kannst zum Testen einfach einen String Channel anlegen, oder Du legst Number Channel an und nutzt die jsonpath Transformation, um den passenden Teil der Antwort auszuwählen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Fronius Binding - zusätzliche Daten?

Beitrag von shuo »

Was wäre denn dann meine "state Transformation" bzw. "Command Transformation"?

Irgendwie hab ich das noch nicht wirklich verstanden. Ich dachte das http thing is mein "Platzhalter" und ich kann dann entsprechend in den Items den "Rest" der URL mit angeben...

muss ich jetzt lauter Channels alle Items anlegen?!

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

Re: Fronius Binding - zusätzliche Daten?

Beitrag von udo1toni »

Things bilden die Brücke zwischen Außen und innen.
Items dienen dem Zugriff auf den openHAB Bus.
Wenn Du also etwas außerhalb steuern oder auswerten willst, musst Du dafür Things und Channel verwenden, deren Daten Du mit Items koppeln musst.
Diese Kopplung ist "schon immer" so, es ist lediglich so, dass unter OH1 die Kpplung zwischen Außen und Item über die Item-Definition geschah, während sie in OH3 ausschließlich über Things und Channel läuft. In OH2 gab es beide Varianten, je nachdem, ob das Binding vom Typ 1 oder 2 war.
das http Binding ist offiziell erst mit OH3 auf Typ 2 umgestellt worden, entsprechend musst Du die Konfiguration nun halt anders vornehmen als vorher.

Du kannst aber grundsätzlich zwei unterschiedliche Wege gehen, was Deine Daten von Fronius betrifft.
Weg 1: Du legst für jedes Datum (also die einzelnen Werte, auf die Du zugreifen willst) einen eigenen Channel an und trägst die entsprechenden jsonpath Ausdrücke im Channel ein.
Weg 2: Du legst einen String Channel an, der die gesamte Ausgabe des http Requests enthält. Die jsonpath Kopplung erledigst Du über die Metadaten der Items, alle Items, die die Daten enthalten sollen, werden mit demselben String Channel verlinkt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Fronius Binding - zusätzliche Daten?

Beitrag von shuo »

Danke für die Erklärung. Was ein Thing is war mir bisher eigentlich klar. Aber was hat denn der Channel für eine Aufgabe?

Bezüglich meinem vorhaben:
Ich habe Weg 2 gewählt und es funktionert. Wo werden dienn die erstellen Items gespeichert. Hintergrund: Mein Items liegen alle im OpenHab-conf-Ordner "items". Wenn ich "use an existing Item" auswähle, dann kann ich es auswählen und es funktionert. Aber in der Datei wird nichts "überschrieben"

Quautiputzli
Beiträge: 317
Registriert: 29. Okt 2020 19:53
Answers: 2

Re: Fronius Binding - zusätzliche Daten?

Beitrag von Quautiputzli »

Hi, ich habe es z.B. so, ein Thing mit 9 Channels mit 3 verschiedenen urls:

Code: Alles auswählen

UID: http:url:c_fronius_h
label: Fronius Hybrid
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.2.109/solar_api/v1/
  delay: 0
  stateMethod: GET
  refresh: 60
  commandMethod: GET
  timeout: 15000
  bufferSize: 2048
location: Keller
channels:
  - id: fronius_h_grid
    channelTypeUID: http:number
    label: PV_Grid
    description: ""
    configuration:
      mode: READWRITE
      unit: W
      stateExtension: GetPowerFlowRealtimeData.fcgi?Scope=System
      stateTransformation: JSONPATH:$.Body.Data.Site.P_Grid
  - id: fronius_h_akku_SOC
    channelTypeUID: http:number
    label: Akku SOC
    description: null
    configuration:
      mode: READWRITE
      unit: "%"
      stateExtension: GetStorageRealtimeData.cgi?Scope=System
      stateTransformation: JSONPATH:$.Body.Data.0.Controller.StateOfCharge_Relative
  - id: fronius_h_akku_V
    channelTypeUID: http:number
    label: Akku Spannung
    description: null
    configuration:
      mode: READONLY
      unit: V
      stateExtension: GetStorageRealtimeData.cgi?Scope=System
      stateTransformation: JSONPATH:$.Body.Data.0.Controller.Voltage_DC
  - id: fronius_h_akku_Temp
    channelTypeUID: http:number
    label: Akku Temperatur
    description: null
    configuration:
      mode: READONLY
      unit: °C
      stateExtension: GetStorageRealtimeData.cgi?Scope=System
      stateTransformation: JSONPATH:$.Body.Data.0.Controller.Temperature_Cell
  - id: fronius_h_meter_Z1
    channelTypeUID: http:number
    label: Fronius Zähler Haupt
    description: null
    configuration:
      mode: READWRITE
      unit: W
      stateExtension: GetMeterRealtimeData.cgi?Scope=System
      stateTransformation: JSONPATH:$.Body.Data.0.PowerReal_P_Sum
  - id: fronius_h_meter_Z2
    channelTypeUID: http:number
    label: Fronius Zähler Kaskade
    description: null
    configuration:
      mode: READWRITE
      stateExtension: GetMeterRealtimeData.cgi?Scope=System
      stateTransformation: JSONPATH:$.Body.Data.1.PowerReal_P_Sum
  - id: fronius_h_p_akku
    channelTypeUID: http:number
    label: PV_Akku
    description: ""
    configuration:
      stateExtension: GetPowerFlowRealtimeData.fcgi?Scope=System
      stateTransformation: JSONPATH:$.Body.Data.Site.P_Akku
      unit: W
  - id: fronius_h_p_pv
    channelTypeUID: http:number
    label: PV_Haus
    description: ""
    configuration:
      stateExtension: GetPowerFlowRealtimeData.fcgi?Scope=System
      stateTransformation: JS:p_pv_null.js
      unit: W
      
Servus

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

Re: Fronius Binding - zusätzliche Daten?

Beitrag von udo1toni »

Ein Channel ist genau das, was der Name vermuten lassen kann, es ist ein "Datenkanal". Ein Thing entspricht dem Willen der Entwickler nach einem Gerät *). Ein Gerät kann mehrere (voneinander unabhängige) Eigenschaften haben, z.B. kann ein Gerät mehrere Schaltkanäle haben, mehrere Messwerte liefern usw.
Gewöhnlich wird man für jeden Wert einen eigenen Channel anlegen, aber im Fall der "Datensammlung", die als JSON Objekt zur Verfügung steht, kann man auch das Objekt als Channel betrachten und die Trennung der einzelen Werte auch hinter dem Channel vornehmen.

*) Bei Bussystemen wie mqtt oder knx kann man von der Regel abweichen, pro physischem Gerät ein Thing anzulegen. Gedacht ist das Modell aber als strenge Abbildung der Hardware, also pro physischem Gerät genau ein Thing.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten