76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

DS_Starter

Genau.
Wenn natürlich das DWD Device seinen Zyklus vor dem SolarForecast Zyklus ausführt, dann merkt man nichts.
Aber das ist eher unwahrscheinlich weil ich ca. 3 Sekunden nach einer vollen Stunde immer einen initialen Lauf starten. D.h. das DWD hätte ein Fenster von 2 Sekunden, kann natürlich klappen, nichts ist unmöglich.

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Bozan

Ich habe einen Fronius Symo Gen 24 Plus zusammenn mit einer BYD-Box im Einsatz und lese die Daten einmal mit dem Modul 98_Fronius von MWinkler:
PV_Wechselrichter pv=PowerFlow_Site_P_PV:W etotal=PowerFlow_Site_E_Total:W capacity=8000

Die Wertze für die Batterie hole ich mit 98_ModbusAttr.pm:
BYD_Batterie pin=BatteryChargeWatt:W pout=BatteryDischargeWatt:W intotal=Summe_Ladung:kWh outtotal=Summe_Entladung:kWh cap=5120 charge=BatteryChargePercent

BatteryChargeWatt: obj-h40324-reading
BatteryDischargeWatt: obj-h40344-reading
Summe_Ladung: obj-h40325-reading
Summe_Entladung: obj-h40345-reading

Hoffe, das ist soweit verständlich?!

Vermutlich müsste ich dann ein Reading generieren aus PowerFlow_Site_P_PV +  Leistung in die Batterie - Leistung aus der Batterie?

VG,

Bozan

DS_Starter

ZitatVermutlich müsste ich dann ein Reading generieren aus PowerFlow_Site_P_PV +  Leistung in die Batterie - Leistung aus der Batterie?
Ja, genau. Du müsstest an dieser Stelle einen vorhandenen Batterieanteil eliminieren.
Bin auch der Meinung dass es bereits Fronius Symo-User bei SolarForecast gibt und wir das Thema mit diesem WR schon beleuchtet hatten.
Vllt. meldet sich jemand mit seinem Lösungsweg.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

TheTrumpeter

Zitat von: TheTrumpeter am 14 Februar 2024, 08:26:40
Zitat von: DS_Starter am 06 Februar 2024, 22:41:03Gäbe es ein größeres Interesse daran die API von Geosphere Austria in das Modul einzubinden?
Ich bin mir unsicher ob die Daten in der gelieferten Form in die Modularchitektur passen und welche Zeit ich zur Integration benötigen würde.
Ich habe mich vor knapp 2 Wochen schonmal bisschen damit beschäftigt und versucht die unterschiedlichen Daten-Namen zwischen DWD und Geosphere zuzuordnen.
Wenn das noch aktuell ist würd' ich ab nächster Woche wieder draufschauen können.
Hier mal ein Mapping der Werte von DWD zu GeoSphere (links DWD, rechts GeoSphere):
TTT => t2m
Neff => tcc
R101 => rr_acc, aber akkumuliert
ww => nicht verfügbar
SunUp/SunSet/SunRise => nicht verfügbar


Wenn ich es richtig sehe, verwendest Du für die Prognose nur "Rad1h" vom DWD ("Absolute Globalstrahlung"). Das müsste mit "grad" von GeoSphere ("Surface downwelling shortwave is the sum of direct and diffuse solar radiation incident on the surface, and is sometimes called global radiation") abzudecken sein, allerdings sind die Werte in der Prognose immer akkumuliert, d.h. es müsste die Differenz gebildet werden, siehe z.B. die aktuelle Vorhersage für Wien Innere Stadt https://dataset.api.hub.geosphere.at/v1/timeseries/forecast/nwp-v1-1h-2500m?parameters=grad&lat_lon=48.206248%2C16.367569

Der Aufruf ist unter Angabe der Koordinaten in obigem Link möglich, optional kann Startzeit sowie Offset angegeben werden. Eine Aktualisierung der Prognose findet lt. https://data.hub.geosphere.at/dataset/nwp-v1-1h-2500m alle 3h statt.

Doku: https://data.hub.geosphere.at/dataset/nwp-v1-1h-2500m
Hier können die APIs ausprobiert werden. Da müssen nur die Parameter eingetragen werden, der Aufruf sowie das Ergebnis werden dann interaktiv angezeigt: https://dataset.api.hub.geosphere.at/v1/openapi-docs


Hier beispielsweise die Vorhersage für Wien Innere Stadt mit allen der DWD entsprechenden Paraemter von oben: 
Auszuprobieren hier: https://dataset.api.hub.geosphere.at/v1/openapi-docs#/forecast/Timeseries_Forecast_timeseries_forecast__resource_id__get unter Angabe der entsprechenden Parameter, bzw. Direktaufruf: https://dataset.api.hub.geosphere.at/v1/timeseries/forecast/nwp-v1-1h-2500m?parameters=t2m&parameters=grad&parameters=tcc&parameters=rr_acc&lat_lon=48.206248%2C16.367569&forecast_offset=0&output_format=geojson
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

DS_Starter

Oh da warst du fleißig, vielen Dank für die Vorbereitung  :)
Da muß ich wohl tatsächlich bald mal starten mit dieser API.  ;)

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

stefanru

Ja ich habe Fronius mit BYD, habe 2 WR.
Da muss man etwas tricksen ich denke ich hole mir den Wert anders.
Habe das schonmal hier geschrieben aber wird natürlich schwierig zu finden.

Ich habe noch ein Dummy zwischendrin, deshalb kann ich es nicht direkt mappen.
Habe gerade nicht die Zeit das aufzubereiten aber hier meine Settings im Solarforecast Modul:
currentBatteryDev BatteryDummy pin=-pout pout=total_pac:W intotal=intotal:kWh outtotal=outtotal:kWh charge=chargestatus
currentInverterDev InverterDummy pv=PowerFlow_PV:W etotal=Energy_Total_PV:kWh capacity=24800
currentMeterDev EnergyMeterDummy gcon=Bezug_Wirkleistung:W contotal=Bezug_Wirkleistung_Zaehler:kWh gfeedin=Einspeisung_Wirkleistung:W feedtotal=Einspeisung_Wirkleistung_Zaehler:kWh

Und dazu die Befüllung der dummys:
Symo:PowerFlow_Site_P_PV:.* {

# Forecast Invertererzeugung InverterDummy
fhem "setreading InverterDummy Today_PVforecast ".ReadingsNum("Forecast","Today_PVforecast",0);;
fhem "setreading InverterDummy Next4h_PVforecast ".ReadingsNum("Forecast","NextHours_Sum04_PVforecast",0);;
fhem "setreading InverterDummy Today_PVreal ".ReadingsNum("Forecast","Today_PVreal",0);;

my $PVTotal = ReadingsNum("PV_Runge","User_Produced_PV",0) + ReadingsNum("Symo","User_Produced_PV",0);;
my $Total = (ReadingsNum("PV_Runge","PowerFlow_Inverters_1_E_Total",0) + ReadingsNum("Symo","PowerFlow_Inverters_1_E_Total",0)) /1000;;
fhem "setreading InverterDummy Energy_Total_Real ".($Total);;

# Invertererzeugung InverterDummy
my $Solar = ReadingsNum("PV_Runge","PowerFlow_Site_P_PV",0) + ReadingsNum("Symo","PowerFlow_Site_P_PV",0);;
if ($Solar > 6)
{fhem "setreading InverterDummy Energy_Total_PV ".($PVTotal)}
else
{$Solar = 0}
fhem "setreading InverterDummy PowerFlow_PV ".($Solar);;

# Inverter calc load
my $Grid = ReadingsNum("PV_Runge","PowerFlow_Site_P_Grid",0);;
my $Akku = ReadingsNum("PV_Runge","PowerFlow_Site_P_Akku",0);;
my $Load = $Solar + $Grid + $Akku;;
$Load = ($Load > 0) ? ($Load) : ReadingsNum("InverterDummy","PowerFlow_Load",0);;
fhem "setreading InverterDummy PowerFlow_Load ".($Load);;
fhem "setreading InverterDummy PowerFlow_Grid ".($Grid);;
fhem "setreading InverterDummy PowerFlow_Akku ".($Akku);;

# Batteriestatus BatteryDummy
fhem ("setreading BatteryDummy chargestatus ".ReadingsNum("PV_Runge","PowerFlow_Inverters_1_SOC",0));;
# Batterie-total_pac  BatteryDummy
fhem ("setreading BatteryDummy total_pac ".(ReadingsNum("PV_Runge","PowerFlow_Site_P_Akku",0)));;

my $MaxCharge = sprintf('%.0f', ReadingsNum("BatteryDummy","MaxChargeWatt",0));;
my $MaxDischarge = sprintf('%.0f', ReadingsNum("BatteryDummy","MaxDischargeWatt",0));;
my $MaxString = " ";;

if ($MaxCharge < 12800)
{$MaxString = "$MaxCharge";;}
else
{$MaxString = "-";;}

if ($MaxDischarge < 12800)
{$MaxString = $MaxString ."w / ". $MaxDischarge ."w";;}
else
{$MaxString = $MaxString ."w / -w";;}

fhem "setreading BatteryDummy MaxString ".$MaxString;;

# BatteryIn/Out BatteryDummy
fhem "setreading BatteryDummy intotal ".ReadingsNum("PV_Runge","User_Energy_Bat_in",0);;
fhem "setreading BatteryDummy outtotal ".ReadingsNum("PV_Runge","User_Energy_Bat_out",0);;

# Batterie für Max Lade berechnung
my $BatCapacityMax = ReadingsNum("PV_Runge","Storage_0_Controller_Capacity_Maximum",0);;
my $BatCharge = ReadingsNum("PV_Runge","PowerFlow_Inverters_1_SOC",0);;
my $BatLevelWh = ($BatCapacityMax / 100 * $BatCharge);;
my $PV_Ertrag_heute= ReadingsNum("Forecast","RestOfDayPVforecast",0);;
my $Verbrauch_heute= ReadingsNum("Forecast","RestOfDayConsumptionForecast",0);;
my $PV_Ueberschuss = ($PV_Ertrag_heute - $Verbrauch_heute);;
my $Wh_Bis_100 = ($BatCapacityMax - $BatLevelWh);;
#my $VerbrauchBisMorgen = (($PV_Ueberschuss * -1) + (3864));; #3864 Verbrauch von 0 bis morgends
#my $BatTillNextDay = ($BatLevelWh > $VerbrauchBisMorgen) ? ("reicht (".round(($BatLevelWh-$VerbrauchBisMorgen),0)." W)") : ("reicht nicht (".round(($BatLevelWh-$VerbrauchBisMorgen),0)." W)");;

fhem "setreading BatteryDummy PV_Ueberschuss ".$PV_Ueberschuss;;
fhem "setreading BatteryDummy Wh_Bis_100 ".$Wh_Bis_100;;
fhem "setreading BatteryDummy Uebrig_Wh ".$BatLevelWh;;
#fhem "setreading BatteryDummy VerbrauchBisMorgen ".$VerbrauchBisMorgen;;
#fhem "setreading BatteryDummy AusreichendBisMorgen ".$BatTillNextDay;;

# New forecast based calculation for Rest tilll Sunrise
my $BatLevelRest = $BatCapacityMax / 100 * ($BatCharge - 5);;
my $SunriseSec = time2sec(ReadingsVal("Forecast","Today_SunRise", 0));;
my $TimeSec = time2sec(strftime("%H:%M",localtime));;
my $SecDiffSunrise = $TimeSec - $SunriseSec;;
my $PVRestBisSunrise = ($SecDiffSunrise > 0) ? $PV_Ertrag_heute : 0;;
#my $PVRestBisSunrise = ReadingsNum("Forecast", "RestOfDayPVforecast", 0);;
my $VerbrauchBisSunrise = ReadingsNum("Forecast", "statistic_conForecastTillNextSunrise", 0);;
my $AkkuRestTillSunrise = $BatLevelRest + $PVRestBisSunrise - $VerbrauchBisSunrise;;
fhem "setreading BatteryDummy AkkuRestBisSonnenaufgang ".$AkkuRestTillSunrise;;
my $BatTillNextDayAlexa = ($AkkuRestTillSunrise > 0) ? ("reicht mit ".round(($AkkuRestTillSunrise),0)." W Überschuss") : ("reicht nicht mit ".round(($AkkuRestTillSunrise),0)." W zuwenig");;
fhem "setreading BatteryDummy AusreichendBisMorgenAlexa ".$BatTillNextDayAlexa;;

# Netzbezug EnergyMeterDummy
#my $NetzEinspeisung = ReadingsVal("PV_Runge","PowerFlow_Site_P_Grid",0);;
#my $NetzBezug = ReadingsVal("PV_Runge","PowerFlow_Site_P_Grid",0);;
#$NetzEinspeisung = ($NetzEinspeisung <= 0) ? ($NetzEinspeisung * -1) : 0;;
#$NetzBezug = ($NetzBezug => 0) ? ($NetzBezug) : 0;;
fhem "setreading EnergyMeterDummy Bezug_Wirkleistung ".ReadingsNum("PV_Runge","User_Power_Import",0);;
fhem "setreading EnergyMeterDummy Einspeisung_Wirkleistung ".ReadingsNum("PV_Runge","User_Power_Feedin",0);;
fhem "setreading EnergyMeterDummy Bezug_Wirkleistung_Zaehler ".ReadingsNum("PV_Runge","User_Energy_Import",0);;
fhem "setreading EnergyMeterDummy Einspeisung_Wirkleistung_Zaehler ".ReadingsNum("PV_Runge","User_Energy_Feedin",0);;

#PV_Stats Autarkie and SelfConsuption trigger calculation
fhem "setreading PV_Stats update 1";;
}

Also PowerFlow_PV kommt bei mir aus:
# Invertererzeugung InverterDummy
my $Solar = ReadingsNum("PV_Runge","PowerFlow_Site_P_PV",0) + ReadingsNum("Symo","PowerFlow_Site_P_PV",0);;
if ($Solar > 6)
{fhem "setreading InverterDummy Energy_Total_PV ".($PVTotal)}
else
{$Solar = 0}
fhem "setreading InverterDummy PowerFlow_PV ".($Solar);;

Batterie ziehe ich da nicht ab, war glaube ich nicht nötig.

Gruß,
Stefan



Bozan

Danke, Stefan!
Ist ja schon recht komplex, daher warte ich erst einmal ab, wie ich mit der "simplen" Lösung zurechtkomme.
Ich rechne nun eben wie oben beschrieben die Ladung in die Batterie dazu und ziehe die Entladung ab. Das sieht schon mal nicht so falsch aus. Dennoch passten die Werte heute Nacht nicht komplett, was aber an sich vernachlässigbar wäre.
Ich führe dies auf den Wirkungsgrad zurück, weshalb ich den nun in der Formel berücksichtige. Als Faktor bei der Ladung nehme ich nun 0.9.
Bin mal auf heute Nacht gespannt, dann sollte der "Ertrag" um den Wert Null schwanken, hoffe ich...

VG,
Bozan

stefanru

Hi Bozan,

ich verstehe nicht ganz warum du die Batterie mit rein und raus rechnest.

Der Wert PowerFlow_Site_P_PV beinhaltet keine Batterie Leistung und sollte direkt in pv=PowerFlow_Site_P_PV:W einfließen.
Also ist reine PV Leistung des Wechselrichters.

Das Problem das es bei Fronius gibt ist der Totalwert, also in Solar Forecast der etotal.
Den gibt es so nicht im Wechselrichter.
Ich erzeuge mir diesen am Wechselrichter mit einem UserReading:
User_Produced_PV:PowerFlow_Site_P_PV.* integral {ReadingsVal("$name","PowerFlow_Site_P_PV","0")/3600000},
Dieses Summiert die PowerFlow_Site_P_PV werte in einen Total Wert.

Das ganze ist wahr für alle folgenden 4 Readings, alle sind ausschließlich Werte für Akku, Grid, Load und PV.
PowerFlow_Site_P_Akku
PowerFlow_Site_P_Grid
PowerFlow_Site_P_Load
PowerFlow_Site_P_PV

Ich hoffe das erklärt es etwas.

P.S.:
Am Gen24 ist der PowerFlow_Site_P_PV Nachts leider etwas seltsam und kann bis zu 6 Watt anzeigen, meistens ist es 1 Watt. Der Symo hat das Problem nicht.
Das ist zwar vernachlässigbar, aber dann zeigt die SolarForecast Grafik auch nachts minimale Werte an.
Deshalb benutze ich im Dummy:
# Invertererzeugung InverterDummy
my $Solar = ReadingsNum("PV_Runge","PowerFlow_Site_P_PV",0) + ReadingsNum("Symo","PowerFlow_Site_P_PV",0);;
if ($Solar > 6)
{fhem "setreading InverterDummy Energy_Total_PV ".($PVTotal)}
else
{$Solar = 0}
fhem "setreading InverterDummy PowerFlow_PV ".($Solar);;



Gruß,
Stefan





DS_Starter

#98
@all,

in meinem contrib liegt die aktuelle Entwicklungsversion von 55_DWD_OpenData.
Sie ist mit SolarForecast im Zusammenspiel getestet.
Vorteil der V ist die dynamische Datenaktualisierung sobald ein aktualisiertes Stationfile beim DWD festgestellt wird.

Wer mag ...

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

kask


DS_Starter

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

#101
@all,

morgen früh wird ein SolarForecast Update ausgeliefert.
Was ist neu/geändert:

- "set ... plantConfiguration save" sichert nun auch gesetzte (wichtige) Attribute der Anlage. Attribute werden zwar in der fhem.cfg gespeichert. Dennoch kann ein Verlust oder eine fehlerhafte Einstellung vorkommen.
Dieses Feature erhöht die Sicherheit und den Komfort, z.B. auch nach einem Löschen des Devices und Neuanlage. Mit einem Restore werden die Readings und Attribute, die ja sehr umfangreich (z.B. Consumer) sein können, wiederhergestellt.

- eine LED für die Wetterdaten (Anhang) signalisiert evtl. veraltete Daten.

- Perl Warnungen eliminiert (und hoffentlich keine neuen eingebaut  ;) )

- Code changes und Datenpflege interner Datenspeicher

Bitte führt dieses Update zeitnah aus. Es sind einige Datenpflegeroutinen eingebaut die ich gern zügig wieder entfernen möchte.

Grüße,
Heiko
 
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Guten Morgen,

@stefanru, schau dir mal diesen Beitrag von Jensb im DWD Forum an. Eventuell kannst/solltest du dort eine Info bzgl. deiner Downloadzeit schreiben.

LG
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Ingo298

Hallöchen zusammen.
Wie kann ich diesen schönheitsfehler der von 00:00 bis 09:00 auftritt noch beseitigen

2024.03.03 09:37:51 3: set DBLogging addCacheLine 2024-03-03 009:00:00|Solar_Cast|addlog|newForecast:09|PVforecast|0| : Syntax error in set addCacheLine command.

99_solCast_Utils.pm
package main;

use strict;
use warnings;
use Time::Piece;

sub
solCast_Utils_Initialize($$)
{
  my ($hash) = @_;
}


#
# Forecastwerte aus mySolarForecast in die DB schreiben, um damit ein Plot zu erstellen
#
sub PVForecast_log2()
{
   Log 3, "Aufruf von PVForecast_log2 um ".localtime();
   
   # Alte Einträge erst einmal löschen
   my $timedelete = TimeNow();
   my ($year,$mon,$day,$hour,$min) = $timedelete =~ m/(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):\d\d/;
   
   fhem "set DBRep_PV sqlCmd delete from history where DEVICE = 'Solar_Cast' AND reading like 'PVforecast%' and TIMESTAMP>='".$timedelete."'";
   
   # alle Verhersage Readings des Device durchlaufen
   for(my $i=$hour; $i < 24; $i++)
   {     
      # die Readings mit der Nummerierung richtig zusammen bauen (führende Nullen bei < 10)
      my $reading = ($i < 10) ? "Today_Hour0".$i : "Today_Hour".$i;
       
      #Timestamp für den Forecastwert
      my $timestamp = ($i < 10) ? "$year-$mon-$day 0$i:00:00" : "$year-$mon-$day $i:00:00";
      my $value = ReadingsNum("Solar_Cast",$reading."_PVforecast",0);
       
      # Wert in der Datenbank loggen
      #Log 3, "Logging: $timestamp  newForecast$i  PVforecast:$value";
      fhem "set DBLogging addCacheLine ".$timestamp."|Solar_Cast|addlog|newForecast:".$i."|PVforecast|".$value."|";
   }
}

1;
RPi4 8GB: Bookworm FHEM 6.4, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT;PiVCCU3

SparcWolf

Hallo Heiko,

ich habe Fragen zur "LED für die Wetterdaten":
* Wird bei der Ermittlung des Status berücksichtigt, wie der Aktualisierungsintervall ist?
  Ich habe den Eindruck, dass hier zu früh gewarnt wird.
  Ich muss mit dem RPi3 aktuell noch Mosmix-L verwenden.
* Die Zeitstempel vom DWD scheinen UTC zu sein. Wird das berücksichtigt?
  Um  kurz nach 11 Uhr (Ortszeit) wurden neue Daten mit Zeitstempel 10 Uhr vom DWD bereitgestellt.
  Ich würde mir für den LED "Mouse-Over" einen Hinweis auf UTC wünschen.

Zum Anhang:
Warum wird mir hier ein "i" angezeigt und kein "grüner Punkt"?

Grüße,
  Guido.