Sag(te) ich dochZeitfraktur hat geschrieben: So oder so, es funktioniert hier wie vom Threadersteller im ersten Posting beschrieben.
Alchy
Moderator: Co-Administratoren
Sag(te) ich dochZeitfraktur hat geschrieben: So oder so, es funktioniert hier wie vom Threadersteller im ersten Posting beschrieben.
Code: Alles auswählen
load tclrega.so
# Start und Endzeit ermitteln
# ========================================================
set date [clock format [clock seconds] -format {%Y-%m-%d}]
set startHour [clock format [clock seconds] -format {%H}]
set endHour $startHour
set startMinute 0
set endMinute $startMinute
if {[clock format [clock seconds] -format {%M}] == 0} {set startMinute 45}
if {[clock format [clock seconds] -format {%M}] == 0} {set endMinute 0}
if {[clock format [clock seconds] -format {%M}] == 0} {set startHour [expr $startHour - 1]}
if {[clock format [clock seconds] -format {%M}] == 0} {set endHour [expr $startHour + 1]}
if {[clock format [clock seconds] -format {%M}] > 15} {set startMinute 15}
if {[clock format [clock seconds] -format {%M}] > 30} {set startMinute 30}
if {[clock format [clock seconds] -format {%M}] > 45} {set startMinute 45}
if {[clock format [clock seconds] -format {%M}] > 0 && [clock format [clock seconds] -format {%M}] <= 45} {set endMinute [expr $startMinute + 15]}
if {[clock format [clock seconds] -format {%M}] > 45} {set endMinute 0}
if {[clock format [clock seconds] -format {%M}] > 45} {set endHour [expr $startHour + 1]}
if {$startMinute < 10} {set startMinute 0$startMinute}
if {$endMinute < 10} {set endMinute 0$endMinute}
set startTime "$date%20$startHour:$startMinute:00"
set endTime "$date%20$endHour:$endMinute:00"
# SolarEdge API User Daten
# ========================================================
set site <DEINE SITE-ID>
set apiKey <DEIN API-KEY>
# Consumption auslesen
# ========================================================
set url "https://monitoringapi.solaredge.com/site/$site/powerDetails.xml?meters=CONSUMPTION&startTime=$startTime&endTime=$endTime&api_key=$apiKey"
exec /usr/bin/wget --no-check-certificate -q -O /usr/local/addons/solaredge/consumption.xml $url
set f [open "/usr/local/addons/solaredge/consumption.xml"]
set input [read $f]
close $f
# Consumption aus XML Datei auslesen
# ========================================================
regexp "<value>(.*?)</value></meterTelemetry>" $input dummy currentv0;
# Consumption in Variable schreiben
# ========================================================
set rega_cmd ""
append rega_cmd "var w0 = dom.GetObject('SolarEdge-Consumption');"
append rega_cmd "w0.State('$currentv0');"
# Daten an die CCU2 übergeben
# ========================================================
rega_script $rega_cmd
[/quote]
Die Einspeisung berechne ich über ein weiteres Programm und speichere den Wert in eine Systemvariable. Dieses Programm wird mit 5 sec. Verzögerung zum Auslesen der SolarEdge Daten gestartet. Hier das Programm Script:
[quote]
real production = dom.GetObject("SolarEdge-Production").Value();
real consumption = dom.GetObject("SolarEdge-Consumption").Value();
real FeedIn = production - consumption;
if (FeedIn < 0) {FeedIn = 0;}
dom.GetObject("SolarEdge-FeedIn").State(FeedIn);