Modbus Zugriff für Fronius Symo

Begonnen von Roger, 03 Januar 2016, 19:51:56

Vorheriges Thema - Nächstes Thema

sn0000py

hallo hab noch mal ne Frage
Ich würde gerne ein primitives Lastmanagement einbauen, dazu würde ich den Wert "Power_total__W" einfach häufiger auslesen, wenns geht im 5 Sekunden Intervall. Die restlichen könnten dann auf 60 Sekunden intervall.

Wie mache ich das am besten?

Ein zweites Modbus Device anlegen für nur diesen Wert?


Roger

Hi sn0000py,
am einfachsten mit:
get <name> Power_total__W
über einen at-Befehl aller 5s ausführen.

//Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

sn0000py

jo stimmt warum kompliziert wenns auch einfach geht :D

Habe den Intervall für den Rest auf 60 gestellt, und die 2 Werte werden nu extra im 5 Sekunden Takt  abgeholt.

tamash

#243
Hi Roger!

Zitat von: Roger am 11 November 2019, 18:50:19
habe in ersten Beitrag eine neue Version von 98_Fronius_Modbus_MPPT.pm bereitgestellt.
Da sollte nun die Routine xterTeil($;$$) drin sein  :).

Dank dir vielmals. Ich werd mich gleich ans testen machen

LG
Thomas

Edit: Der Status von String2 ändert sich jetzt genau wie erwartet. Funktioniert daher einwandfrei. Vielen Dank, Roger.

flandste

Danke für das Fronius-Modul, funktioniert ausgezeichnet.

Habe seit einigen Tagen eine BYD-Stromspeicher in Verwendung, den ich auch gerne in FHEM einbinden möchte.

Das funktoniert über den Fronius-WR, dort werden aber keine readings angezeigt.

Die Abfrage mit http://x.x.x.x/solar_api/v1/GetPowerFlowRealtimeData.fcgi

führt zu folgendem Ergebnis:

{
   "Body" : {
      "Data" : {
         "Inverters" : {
            "1" : {
               "Battery_Mode" : "suspended",
               "DT" : 99,
               "E_Day" : 5892,
               "E_Total" : 25119368,
               "E_Year" : 6812709,
               "P" : 0,
               "SOC" : 4.8000001907348633
            }
         },
         "Site" : {
            "BackupMode" : false,
            "BatteryStandby" : true,
            "E_Day" : 5892,
            "E_Total" : 25119368.300000001,
            "E_Year" : 6812709.2000000002,
            "Meter_Location" : "grid",
            "Mode" : "bidirectional",
            "P_Akku" : null,
            "P_Grid" : 470.16000000000003,
            "P_Load" : -470.16000000000003,
            "P_PV" : null,
            "rel_Autonomy" : 0,
            "rel_SelfConsumption" : null
         },
         "Version" : "12"
      }
   },
   "Head" : {
      "RequestArguments" : {},
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2019-12-09T21:34:01+01:00"
   }
}

Wie/wo können diese Werte abgefragt werden - im Fronius_Modbus oder in einem eigen Modul?

Bin in diesem Thema nicht sehr bewandert - bitte um Unterstützung - Besten Dank
Carpe Diem

eurofinder

Moin,

nochmals eine Verständnisfrage von mir.

Wo liegt der Unterschied, ob ich den Fronius WR über
defmod httpmodFronius1 HTTPMOD http://x.x.x.x/solar_api/v1/GetPowerFlowRealtimeData.fcgi 5

oder per

define PV_Fronius_Basis Fronius_Modbus 1 30 X.X.X.X:502 TCP
define PV_Stromzaehler Fronius_Modbus_Meter 240 30 X.X.X.X:502 TCP

Werden in beiden Varianten identische Werte angezeigt oder fehlt da irgendetwas?
Was sind die Vor- und Nachteile der Datenabfragen?

Gruß und frohe Weihnachtstage
eurofinder
RPI3+; Raspbian Buster Lite; RPI-RF-MOD; piVCCU3, HMIP-eTRV-2, HmIP-SWDO, HmIP-SRH, HmIP-STHO, HmIP-SLO

topa_LE

Zitat von: flandste am 09 Dezember 2019, 22:03:25
Wie/wo können diese Werte abgefragt werden - im Fronius_Modbus oder in einem eigen Modul?

Sollte die Api vom Stromspeicher JSON abrufen können, kannst du das darüber abfragen. Ich nutze selbst Solarwatt MyReserve. Dort kann man die Readings sich für FHEM holen. Anbei meine RAW Define, vielleicht hilft es Dir beim Umsetzen:


defmod MR_Solar HTTPMOD http://192.168.178.160/rest/kiwigrid/wizard/devices 10
attr MR_Solar userattr reading10JSON reading10Name reading11JSON reading11Name reading12JSON reading12Name reading13JSON reading13Name reading14JSON reading14Name reading15JSON reading15Name reading16JSON reading16Name reading17JSON reading17Name reading18JSON reading18Name reading19JSON reading19Name reading20JSON reading20Name reading21JSON reading21Name reading22JSON reading22Name reading23JSON reading23Name reading24JSON reading24Name reading25JSON reading25Name reading26JSON reading26Name reading27JSON reading27Name reading28JSON reading28Name reading29JSON reading29Name reading30JSON reading30Name reading31JSON reading31Name reading32JSON reading32Name reading33JSON reading33Name reading40JSON reading40Name reading50JSON reading50Name reading55JSON reading55Name reading60JSON reading60Name reading70JSON reading70Name reading80JSON reading80Name reading85JSON reading85Name reading86JSON reading86Name reading87JSON reading87Name reading88JSON reading88Name reading89JSON reading89Name
attr MR_Solar DbLogExclude .*
attr MR_Solar DbLogInclude Pr_Round,EV_Round,Strombezug_Round,B_Entladung_Round,B_Ladung_Round,Einspeisung_Round,GV,BS,BS_kW,G_Links,G_Rechts
attr MR_Solar alias MR 7.2 kW - Solarwatt
attr MR_Solar enableControlSet 1
attr MR_Solar event-on-change-reading .*
attr MR_Solar group My Reserve Stromspeicher - SOLARWATT
attr MR_Solar icon message_light_intensity
attr MR_Solar reading10JSON result_items_.*_tagValues_WorkACOut_value
attr MR_Solar reading10Name WorkACOut
attr MR_Solar reading11JSON result_items_.*_tagValues_WorkIn_value
attr MR_Solar reading11Name WorkIn
attr MR_Solar reading12JSON result_items_.*_tagValues_PowerIn_value
attr MR_Solar reading12Name PowerIn
attr MR_Solar reading13JSON result_items_.*_tagValues_PriceWorkIn_value
attr MR_Solar reading13Name PriceWorkIn
attr MR_Solar reading14JSON result_items_.*_tagValues_WorkBufferedFromProducers_value
attr MR_Solar reading14Name WorkBufferedFromProducers
attr MR_Solar reading15JSON result_items_.*_tagValues_SettingsNetworkMap_value
attr MR_Solar reading15Name Network
attr MR_Solar reading16JSON result_items_.*_tagValues_WorkConsumedFromProducers_value
attr MR_Solar reading16Name WorkConsumedFromProducers
attr MR_Solar reading17JSON result_items_.*_tagValues_WorkConsumedFromGrid_value
attr MR_Solar reading17Name WorkConsumedFromGrid
attr MR_Solar reading18JSON result_items_.*_tagValues_WorkSelfConsumed_value
attr MR_Solar reading18Name WorkSelfConsumed
attr MR_Solar reading19JSON result_items_.*_tagValues_WorkOutFromStorage_value
attr MR_Solar reading19Name WorkOutFromStorage
attr MR_Solar reading20JSON result_items_.*_tagValues_CurrentBatteryIn_value
attr MR_Solar reading20Name Aktuelle_Batterieaufladung
attr MR_Solar reading21JSON result_items_.*_tagValues_WorkConsumed_value
attr MR_Solar reading21Name WorkConsumed
attr MR_Solar reading22JSON result_items_.*_tagValues_WorkBufferedFromGrid_value
attr MR_Solar reading22Name WorkBufferedFromGrid
attr MR_Solar reading23JSON result_items_.*_tagValues_PowerReleased_value
attr MR_Solar reading23Name PowerReleased
attr MR_Solar reading24JSON result_items_.*_tagValues_PowerSelfSupplied_value
attr MR_Solar reading24Name PowerSelfSupplied
attr MR_Solar reading25JSON result_items_.*_tagValues_PowerOutFromStorage_value
attr MR_Solar reading25Name PowerOutFromStorage
attr MR_Solar reading26JSON result_items_.*_tagValues_WorkOutFromProducers_value
attr MR_Solar reading26Name WorkOutFromProducers
attr MR_Solar reading27JSON result_items_.*_tagValues_WorkConsumedFromStorage_value
attr MR_Solar reading27Name WorkConsumedFromStorage
attr MR_Solar reading28JSON result_items_.*_tagValues_WorkProduced_value
attr MR_Solar reading28Name WorkProduced
attr MR_Solar reading29JSON result_items_.*_tagValues_WorkACIn_value
attr MR_Solar reading29Name WorkACIn
attr MR_Solar reading30JSON result_items_.*_tagValues_PowerBufferedFromProducers_value
attr MR_Solar reading30Name Batterieladung
attr MR_Solar reading31JSON result_items_.*_tagValues_CountBatteryModules_value
attr MR_Solar reading31Name Anzahl_Batterie_Module
attr MR_Solar reading32JSON result_items_.*_tagValues_TemperatureBattery_value
attr MR_Solar reading32Name Batterie_Temperatur
attr MR_Solar reading33JSON result_items_.*_tagValues_VoltageBatteryCellMean_value
attr MR_Solar reading33Name Batterie_Stand_Aktuell
attr MR_Solar reading40JSON result_items_.*_tagValues_PowerConsumedFromStorage_value
attr MR_Solar reading40Name Batterieentladung
attr MR_Solar reading50JSON result_items_.*_tagValues_PowerConsumed_value
attr MR_Solar reading50Name Gesamtverbrauch
attr MR_Solar reading55JSON result_items_.*_tagValues_PowerConsumedFromProducers_value
attr MR_Solar reading55Name Eigenverbrauch
attr MR_Solar reading60JSON result_items_.*_tagValues_PowerConsumedFromGrid_value
attr MR_Solar reading60Name Strombezug
attr MR_Solar reading70JSON result_items_.*_tagValues_PowerProduced_value
attr MR_Solar reading70Name Gesamtproduktion
attr MR_Solar reading80JSON result_items_.*_tagValues_PowerOut_value
attr MR_Solar reading80Name Einspeisung
attr MR_Solar reading85JSON result_items_.*_tagValues_StateOfCharge_value
attr MR_Solar reading85Name Batteriestatus_in_Prozent
attr MR_Solar reading86JSON result_items_.*_tagValues_StateOfHealth_value
attr MR_Solar reading86Name Batterielebenserwartung_in_Prozent
attr MR_Solar reading87JSON result_items_.*_tagValues_FractionCPULoadKernel_value
attr MR_Solar reading87Name CPU_Auslastung_Energymanager
attr MR_Solar reading88JSON result_items_.*_tagValues_IdFirmware_value
attr MR_Solar reading88Name Energymanager_SW_Firmware
attr MR_Solar reading89JSON result_items_.*_tagValues_StateDevice_value
attr MR_Solar reading89Name Status_My_Reserve
attr MR_Solar room 16-HW-Raum
attr MR_Solar stateFormat {return "| PV: <span style='color:#eba15d;;'>".sprintf("%.0f",ReadingsVal($name,"Pr_Round",0))." W</span> | VK: <span style='color:#eba15d;;'>".sprintf("%.0f",ReadingsVal($name,"Einspeisung_Round",0))." W</span> | EV: <span style='color:#eba15d;;'>".sprintf("%.0f",ReadingsVal($name,"EV_Round",0))." W</span> | Entladung: <span style='color:#eba15d;;'>".sprintf("%.1f",ReadingsVal($name,"B_Entladung_Round",0))." W</span> | Status: <span style='color:#eba15d;;'>".sprintf("%.0f",ReadingsVal($name,"Batteriestatus_in_Prozent",0))." %</span> | Ladung: <span style='color:#eba15d;;'>".sprintf("%.0f",ReadingsVal($name,"B_Ladung_Round",0))." W</span> | Netz: <span style='color:#eba15d;;'>".sprintf("%.0f",ReadingsVal($name,"Strombezug_Round",0))." W</span> ";;}
attr MR_Solar userReadings B_Entladung_Round { round( ReadingsVal($name,"Batterieentladung",0),0) }, B_Ladung_Round { round( ReadingsVal($name,"Batterieladung",0),0) }, EV_Round { round( ReadingsVal($name,"Eigenverbrauch",0),0) }, Einspeisung_Round { round( ReadingsVal($name,"Einspeisung-2",0),0) }, Strombezug_Round { round( ReadingsVal($name,"Strombezug",0),0) }, Pr_Round { round( ReadingsVal($name,"Gesamtproduktion",0),0) }, GV { round( ReadingsVal($name,"Gesamtverbrauch",0),0) }, BS { round( ReadingsVal($name,"Batteriestatus_in_Prozent",0),1) }, G_Links { round( ReadingsVal($name,"PowerIn-3",0),1) }, G_Rechts { round( ReadingsVal($name,"PowerIn-1",0),1) }, BS_kW { round( ReadingsVal($name,"Batterie_Stand_Aktuell",0),2) }



DerFranke

#247
Zitat von: eurofinder am 24 Dezember 2019, 15:26:52
Moin,

nochmals eine Verständnisfrage von mir.

Wo liegt der Unterschied, ob ich den Fronius WR über
defmod httpmodFronius1 HTTPMOD http://x.x.x.x/solar_api/v1/GetPowerFlowRealtimeData.fcgi 5

oder per

define PV_Fronius_Basis Fronius_Modbus 1 30 X.X.X.X:502 TCP
define PV_Stromzaehler Fronius_Modbus_Meter 240 30 X.X.X.X:502 TCP

Werden in beiden Varianten identische Werte angezeigt oder fehlt da irgendetwas?
Was sind die Vor- und Nachteile der Datenabfragen?

Gruß und frohe Weihnachtstage
eurofinder

Was mir bei Modbus fehlt: inversePower_P_Load, welches beim HTTPMOD aber auch nicht zuverlässig aktualisiert wird.
Ansonsten überlege ich, wie ich die Last beider Abfragen auf dem Raspi vergleichen soll, um mich dann für eine von beiden zu entscheiden.

EDIT: HTTPMOD scheint am Fronius weniger Last zu erzeugen als Modbus, die Latenz sieht niedriger aus und das  inversePower_P_Load fehlte wegen einer unvollständigen "event-on-update-reading" attr-Definition.

Mumpitz

Hallo zusammen

Wir sind an der Offerteinholung für eine PV Anlage. In einer der Offerten ist auch ein Fronius WR integriert. Wenn er WR abgefragt werden kann, ist den ein SmartMeter ala SolarLog überhaupt noch nötig???

Was bringt mir das SolarLog als Mehrwert?

dmq

An einem Vergleich zwischen dem JSON und Modbus Modul wäre ich auch interessiert. Ich setze das Modbus Modul ein und bin bisher zufrieden (Danke Roger!). Allerdings kommen immer wieder Meldungen wie "zu grosse Abweichung alt/neu" etc. im Log und Werte werden nicht jedesmal aktualisiert - was ja sicherlich mit einer Logik dahinter umgesetzt wurde. Interessant wäre auch, welches der Implementierungen dabei ressourcenschonender und robuster ist, sicherheitstechnisch ist beides nicht perfekt. Bei der langen Nutzung und für mich auch wertvollen Daten, ist auch der Langzeiteinsatz ein wichtiges Qualitätsmerkmal.

Also wenn schon jemand Erfahrungen gemacht hat, dann würde ich mich auch darüber freuen. Ggf. komme ich auch dazu, mal einen Vergleich anzustellen. Dann halte ich euch natürlich auf dem Laufenden.

Danke und Gruss.

dmq

@Mumpitz:

Mit dem Smartmeter kannst Du auch Direktverbräuche messen (Thema Eigenverbrauch). Du misst u.a. die Differenz der Stromproduktion zu dem was direkt verbraucht bzw. eingespeist oder aus dem Netz entnommen wird. Für mich war es eine gute Investition.

Mumpitz

Zitat von: dmq am 02 Mai 2020, 09:31:32
@Mumpitz:

Mit dem Smartmeter kannst Du auch Direktverbräuche messen (Thema Eigenverbrauch). Du misst u.a. die Differenz der Stromproduktion zu dem was direkt verbraucht bzw. eingespeist oder aus dem Netz entnommen wird. Für mich war es eine gute Investition.

Ok das heisst wenn ich ,,nur" den WR Abfrage erhalte ich nur die Daten meiner PV, jedoch nicht die Daten wieviel ich verbrauche (z.B. In der Nacht) und usw? Ist das richtig?

topa_LE

Du liest alle Daten des WR aus die du brauchst, auch EV, Einspeisung etc. - Sowohl mit JSON oder Modbus-Modul. Wenn Du allerdings (wie ich) einen Speicher dazwischen geschaltet hast, werden die Werte etwas "verzerrt". Dann empfehle ich alle Daten per JSON aus dem Stromspeicher auszulesen. Der liefert dir über die API alles was du brauchst.

Falls Defines benötigt werden (als kleine Starthilfe) sag Bescheid ...

dmq

Das ist richtig. Es sei denn Du hast sowieso schon eine brauchbare Einrichtung, die man dafür nehmen kann. Alternativ kannst Du natürlich auch einen günstigeren Zähler verwenden (der dann aber wieder nicht mit ModBus etc. läuft).

Das was topa_LE sagt, kenne ich so nicht, da der Rest des Hauses ja nicht über den WR läuft.

Mumpitz

jetzt habe ich nochmals die Offerte studiert. Darin ist der Fronius Smart Meter enthalten. Der SolarLog als Wahlmöglichkeit. Die Frage ist nun natürlich, was ich nehmen soll. Gibt der Fronius Smart Meter alle Daten her die ich brauche und bekomme diese auch in FHEM?