Stundengenaue Wettervorhersage

Begonnen von tupol, 27 April 2014, 13:33:53

Vorheriges Thema - Nächstes Thema

stephanr


tupol

gute Idee. Werde mal schauen, ob ich das integrieren kann.

jnewton957

#92
Ich habe auch eine kleine readingGroup für das Tageswetter gebaut.

define Tagesvorhersage_0 readingsGroup <Uhrzeit>,<Temperatur>,<Regenwahrscheinlichkeit>,<Regenmenge>,<Wolken>,<Tageshöchsttemperatur> AgroWeather:<%0>,fc0_temp00,fc0_chOfRain00,fc0_rain00,fc0_weatherDay,fc0_tempMax AgroWeather:<%3>,fc0_temp03,fc0_chOfRain03,fc0_rain03,fc0_weatherDay,fc0_tempMax AgroWeather:<%6>,fc0_temp06,fc0_chOfRain06,fc0_rain06,fc0_weatherDay,fc0_tempMax AgroWeather:<%9>,fc0_temp09,fc0_chOfRain09,fc0_rain09,fc0_weatherDay,fc0_tempMax AgroWeather:<%12>,fc0_temp12,fc0_chOfRain12,fc0_rain12,fc0_weatherDay,fc0_tempMax AgroWeather:<%15>,fc0_temp15,fc0_chOfRain15,fc0_rain15,fc0_weatherDay,fc0_tempMax AgroWeather:<%18>,fc0_temp18,fc0_chOfRain18,fc0_rain18,fc0_weatherDay,fc0_tempMax AgroWeather:<%21>,fc0_temp21,fc0_chOfRain21,fc0_rain21,fc0_weatherDay,fc0_tempMax AgroWeather:<%24>,fc1_temp00,fc1_chOfRain00,fc1_rain00,fc0_weatherDay,fc0_tempMax
attr Tagesvorhersage_0 valueIcon {'fc0_weatherDay.stark bewoelkt' => 'weather_cloudy_heavy','fc0_weatherDay.wolkig' => 'weather_cloudy','fc0_weatherDay.Regen' => 'weather_rain','fc0_weatherDay.heiter' => 'weather_sun','fc0_weatherDay.Regenschauer' => 'weather_rain'}
attr Tagesvorhersage_0 valueFormat {'fc0_temp00' => "%.0f °C", 'fc0_temp03' => "%.0f °C", 'fc0_temp06' => "%.0f °C", 'fc0_temp09' => "%.0f °C", 'fc0_temp12' => "%.0f °C", 'fc0_temp12' => "%.0f °C", 'fc0_temp15' => "%.0f °C", 'fc0_temp18' => "%.0f °C", 'fc0_temp21' => "%.0f °C", 'fc1_temp00' => "%.0f °C",'fc0_chOfRain00' => "%.0f %%",'fc0_chOfRain03' => "%.0f %%",'fc0_chOfRain06' => "%.0f %%",'fc0_chOfRain09' => "%.0f %%",'fc0_chOfRain12' => "%.0f %%",'fc0_chOfRain15' => "%.0f %%",'fc0_chOfRain18' => "%.0f %%",'fc0_chOfRain21' => "%.0f %%",'fc1_chOfRain00' => "%.0f %%",'fc0_tempMax' => "%.0f °C"}
attr Tagesvorhersage_0 nameStyle style="font-weight:bold"
attr Tagesvorhersage_0 valueStyle style="text-align:center"
attr Tagesvorhersage_0 alias Tageswetter
attr Tagesvorhersage_0 room 23_Tageswetter


Wenn das noch jemand optimieren möchte - gerne.

Bin noch dran, die icons gegen die Orginalen auszutauschen. Download der ca. 50 icons (wenn man alle haben möchte).
attr Tagesvorhersage_0 valueIcon {'fc0_weatherDay.heiter' => 't2.gif','fc0_weatherDay.wolkig' => 't3.gif','fc0_weatherDay.stark bewoelkt' => 't4.gif','fc0_weatherDay.bedeckt' => 't5.gif','fc0_weatherDay.Regen' => 't7.gif'}


Wenn man es ganz genau machen möcte, müßte man dann z.B. abends die nx.gif icons und tagsüber die tx.gif icons nehmen. Sind dann 14 für Tag und 14 für Nacht.
Coding wird dann recht groß.



FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

cocojambo

Ich habe mich auch mal dran gesetzt und eine Tabelle entworfen, noch ohne Icons, die ich dann für heute, morgen und übermorgen im einem Floorplan angezeigt bekomme. Ich habe mal ein Screenshot angehängt.
Gruß
nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

stephanr

Moin,

ich wollte mir gerade die Werte für das aktuelle Wetter ziehen, aber finde z. B. nicht das Reading für das aktuelle Icon und die gefühlte Temperatur. Werden diese Werte nicht geparst? Danke!

Gruß Stephan

mahowi

Zitat von: jnewton957 am 31 Dezember 2014, 08:19:35
Ich habe auch eine kleine readingGroup für das Tageswetter gebaut.

define Tagesvorhersage_0 readingsGroup <Uhrzeit>,<Temperatur>,<Regenwahrscheinlichkeit>,<Regenmenge>,<Wolken>,<Tageshöchsttemperatur> AgroWeather:<%0>,fc0_temp00,fc0_chOfRain00,fc0_rain00,fc0_weatherDay,fc0_tempMax AgroWeather:<%3>,fc0_temp03,fc0_chOfRain03,fc0_rain03,fc0_weatherDay,fc0_tempMax AgroWeather:<%6>,fc0_temp06,fc0_chOfRain06,fc0_rain06,fc0_weatherDay,fc0_tempMax AgroWeather:<%9>,fc0_temp09,fc0_chOfRain09,fc0_rain09,fc0_weatherDay,fc0_tempMax AgroWeather:<%12>,fc0_temp12,fc0_chOfRain12,fc0_rain12,fc0_weatherDay,fc0_tempMax AgroWeather:<%15>,fc0_temp15,fc0_chOfRain15,fc0_rain15,fc0_weatherDay,fc0_tempMax AgroWeather:<%18>,fc0_temp18,fc0_chOfRain18,fc0_rain18,fc0_weatherDay,fc0_tempMax AgroWeather:<%21>,fc0_temp21,fc0_chOfRain21,fc0_rain21,fc0_weatherDay,fc0_tempMax AgroWeather:<%24>,fc1_temp00,fc1_chOfRain00,fc1_rain00,fc0_weatherDay,fc0_tempMax
attr Tagesvorhersage_0 valueIcon {'fc0_weatherDay.stark bewoelkt' => 'weather_cloudy_heavy','fc0_weatherDay.wolkig' => 'weather_cloudy','fc0_weatherDay.Regen' => 'weather_rain','fc0_weatherDay.heiter' => 'weather_sun','fc0_weatherDay.Regenschauer' => 'weather_rain'}
attr Tagesvorhersage_0 valueFormat {'fc0_temp00' => "%.0f °C", 'fc0_temp03' => "%.0f °C", 'fc0_temp06' => "%.0f °C", 'fc0_temp09' => "%.0f °C", 'fc0_temp12' => "%.0f °C", 'fc0_temp12' => "%.0f °C", 'fc0_temp15' => "%.0f °C", 'fc0_temp18' => "%.0f °C", 'fc0_temp21' => "%.0f °C", 'fc1_temp00' => "%.0f °C",'fc0_chOfRain00' => "%.0f %%",'fc0_chOfRain03' => "%.0f %%",'fc0_chOfRain06' => "%.0f %%",'fc0_chOfRain09' => "%.0f %%",'fc0_chOfRain12' => "%.0f %%",'fc0_chOfRain15' => "%.0f %%",'fc0_chOfRain18' => "%.0f %%",'fc0_chOfRain21' => "%.0f %%",'fc1_chOfRain00' => "%.0f %%",'fc0_tempMax' => "%.0f °C"}
attr Tagesvorhersage_0 nameStyle style="font-weight:bold"
attr Tagesvorhersage_0 valueStyle style="text-align:center"
attr Tagesvorhersage_0 alias Tageswetter
attr Tagesvorhersage_0 room 23_Tageswetter


Wenn das noch jemand optimieren möchte - gerne.

Bin noch dran, die icons gegen die Orginalen auszutauschen. Download der ca. 50 icons (wenn man alle haben möchte).
attr Tagesvorhersage_0 valueIcon {'fc0_weatherDay.heiter' => 't2.gif','fc0_weatherDay.wolkig' => 't3.gif','fc0_weatherDay.stark bewoelkt' => 't4.gif','fc0_weatherDay.bedeckt' => 't5.gif','fc0_weatherDay.Regen' => 't7.gif'}


Wenn man es ganz genau machen möcte, müßte man dann z.B. abends die nx.gif icons und tagsüber die tx.gif icons nehmen. Sind dann 14 für Tag und 14 für Nacht.
Coding wird dann recht groß.

Ich habe jetzt alle 28 Icons heruntergeladen und Deinen Code so angepaßt, daß die entsprechenden Icons angezeigt werden. Dazu wird direkt der Icon-Name aus dem von PROPLANTA ausgelesenen Link genutzt.
define Tagesvorhersage_0 readingsGroup <Uhrzeit>,<Temperatur>,<Regenwahrscheinlichkeit>,<Regenmenge>,<Wolken>,<Tageshöchsttemperatur> Wetter:<%0>,fc0_temp00,fc0_chOfRain00,fc0_rain00,fc0_weatherNightIcon,fc0_tempMax Wetter:<%3>,fc0_temp03,fc0_chOfRain03,fc0_rain03,fc0_weatherNightIcon,fc0_tempMax Wetter:<%6>,fc0_temp06,fc0_chOfRain06,fc0_rain06,fc0_weatherMorningIcon,fc0_tempMax Wetter:<%9>,fc0_temp09,fc0_chOfRain09,fc0_rain09,fc0_weatherMorningIcon,fc0_tempMax Wetter:<%12>,fc0_temp12,fc0_chOfRain12,fc0_rain12,fc0_weatherDayIcon,fc0_tempMax Wetter:<%15>,fc0_temp15,fc0_chOfRain15,fc0_rain15,fc0_weatherDayIcon,fc0_tempMax Wetter:<%18>,fc0_temp18,fc0_chOfRain18,fc0_rain18,fc0_weatherEveningIcon,fc0_tempMax Wetter:<%21>,fc0_temp21,fc0_chOfRain21,fc0_rain21,fc0_weatherEveningIcon,fc0_tempMax Wetter:<%24>,fc1_temp00,fc1_chOfRain00,fc1_rain00,fc0_weatherNightIcon,fc0_tempMax
attr Tagesvorhersage_0 alias Tageswetter
attr Tagesvorhersage_0 group 01_Tageswetter
attr Tagesvorhersage_0 nameStyle style="font-weight:bold"
attr Tagesvorhersage_0 room Wetter,Wohnung
attr Tagesvorhersage_0 valueFormat {'fc0_temp00' => "%.0f °C", 'fc0_temp03' => "%.0f °C", 'fc0_temp06' => "%.0f °C", 'fc0_temp09' => "%.0f °C", 'fc0_temp12' => "%.0f °C", 'fc0_temp12' => "%.0f °C", 'fc0_temp15' => "%.0f °C", 'fc0_temp18' => "%.0f °C", 'fc0_temp21' => "%.0f °C", 'fc1_temp00' => "%.0f °C",'fc0_chOfRain00' => "%.0f %%",'fc0_chOfRain03' => "%.0f %%",'fc0_chOfRain06' => "%.0f %%",'fc0_chOfRain09' => "%.0f %%",'fc0_chOfRain12' => "%.0f %%",'fc0_chOfRain15' => "%.0f %%",'fc0_chOfRain18' => "%.0f %%",'fc0_chOfRain21' => "%.0f %%",'fc1_chOfRain00' => "%.0f %%",'fc0_tempMax' => "%.0f °C",'fc0_rain00' => "%.1f mm",'fc0_rain01' => "%.1f mm",'fc0_rain02' => "%.1f mm",'fc0_rain03' => "%.1f mm",'fc0_rain04' => "%.1f mm",'fc0_rain05' => "%.1f mm",'fc0_rain06' => "%.1f mm",'fc0_rain07' => "%.1f mm",'fc0_rain08' => "%.1f mm",'fc0_rain09' => "%.1f mm",'fc0_rain10' => "%.1f mm",'fc0_rain11' => "%.1f mm",'fc0_rain12' => "%.1f mm",'fc0_rain13' => "%.1f mm",'fc0_rain14' => "%.1f mm",'fc0_rain15' => "%.1f mm",'fc0_rain16' => "%.1f mm",'fc0_rain17' => "%.1f mm",'fc0_rain18' => "%.1f mm",'fc0_rain19' => "%.1f mm",'fc0_rain20' => "%.1f mm",'fc0_rain21' => "%.1f mm",'fc1_rain00' => "%.1f mm"}
attr Tagesvorhersage_0 valueIcon  { if ($READING eq 'fc0_weatherDayIcon' || $READING eq 'fc0_weatherMorningIcon' || $READING eq 'fc0_weatherEveningIcon' || $READING eq 'fc0_weatherNightIcon') {$VALUE=~m/\S+\/(\S+)\.gif/;;$1} }
attr Tagesvorhersage_0 valueStyle style="text-align:center"


Das sieht dann aktuell so aus:
(https://dl.dropboxusercontent.com/u/83276402/ppwetter.png)

Den Code habe ich dem Thread PROPLANTA Icons entnommen und angepaßt.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

cocojambo

@mahowi

Ich habe mal deine Version ausprobiert. geht sehr gut, aber ich würde die Tageshöchsttemperatur vielleicht in einer extra "Tagesdurchschnittstabelle" unterbringen weil die ja in der Tabelle für jede Uhrzeit gleich ist. Aber die Icons fehlen bei mir in der Tabelle, obwohl ich die in opt/fhem/www/images/weather gespeichert habe. Oder liegen die woanders?

Gruß
nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

jnewton957

Zitat von: cocojambo am 09 Januar 2015, 19:31:18
@mahowi

I......
Aber die Icons fehlen bei mir in der Tabelle, obwohl ich die in opt/fhem/www/images/weather gespeichert habe. Oder liegen die woanders?


Hast du die das Unterverzeichnis weather im iconPath definiert ??

define WEB FHEMWEB 8083 global
attr WEB iconPath fhemSVG:openautomation:fhemSVG:default:icons_small:weather


@mahowi : Danke für die Optimierung  :) :) :)
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

cocojambo


Danke, vor lauter Anpassen der Tabelle an meine Gegebenheiten habe ich daran nicht gedacht und und bin auch nicht drauf gekommen. Ich habs einfach vergessen. Eingebaut und es geht. Alles klar.
nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

mahowi

Kann ich die Tabelle noch je nach WEB Device anpassen? Mit WEBphone werden nämlich nur die ersten beiden Spalten angezeigt.

Gesendet von meinem LIFETAB_S831X mit Tapatalk

CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

cocojambo

Ich melde mich auch noch mal. Ich habe das Coding nochmals überarbeitet mal verkürzt (einige Ergänzungen und vor allen Dingen valueFormat angepasst).
Hier mal die Readingsgroup:

define proplanta_heute1 readingsGroup <Uhrzeit>,<Temperatur>,<Ns-Risiko>,<Ns-Menge>,<Bedeckung>,<Wolken> AgroWeather:<00.00&nbspUhr>,fc0_temp00,fc0_chOfRain00,fc0_rain00,fc0_cloud00,fc0_weatherNightIcon AgroWeather:<00.03&nbspUhr>,fc0_temp03,fc0_chOfRain03,fc0_rain03,fc0_cloud03,fc0_weatherNightIcon AgroWeather:<06.00&nbspUhr>,fc0_temp06,fc0_chOfRain06,fc0_rain06,fc0_cloud06,fc0_weatherMorningIcon AgroWeather:<09.00&nbspUhr>,fc0_temp09,fc0_chOfRain09,fc0_rain09,fc0_cloud09,fc0_weatherMorningIcon AgroWeather:<12.00&nbspUhr>,fc0_temp12,fc0_chOfRain12,fc0_rain12,fc0_cloud12,fc0_weatherDayIcon AgroWeather:<15.00&nbspUhr>,fc0_temp15,fc0_chOfRain15,fc0_rain15,fc0_cloud15,fc0_weatherDayIcon AgroWeather:<18.00&nbspUhr>,fc0_temp18,fc0_chOfRain18,fc0_rain18,fc0_cloud18,fc0_weatherEveningIcon AgroWeather:<21.00&nbspUhr>,fc0_temp21,fc0_chOfRain21,fc0_rain21,fc0_cloud21,fc0_weatherEveningIcon AgroWeather:<24.00&nbspUhr>,fc1_temp00,fc1_chOfRain00,fc1_rain00,fc1_cloud00,fc1_weatherNightIcon
attr proplanta_heute1 alias Das&nbspWetter&nbspHeute
attr proplanta_heute1 fp_Wetter 30,130,0,
attr proplanta_heute1 nameStyle style="text-align:left;;color:;;font-weight:bold"
attr proplanta_heute1 nonames 1
attr proplanta_heute1 style style="font-size:14px;;color:black;;background-color:white"
attr proplanta_heute1 valueFormat { return "%.1f&nbsp;;°C" if( $READING =~ m/temp/ );; return "%i&nbsp;;%%" if( $READING =~ m/chOfRain/ );; return "%.1f&nbsp;;mm" if( $READING =~ m/rain/ );; return "%.1f&nbsp;;%%" if ($READING =~ m/cloud/ ) }
attr proplanta_heute1 v { if ($READING eq 'fc0_weatherDayIcon' || $READING eq 'fc0_weatherMorningIcon' || $READING eq 'fc0_weatherEveningIcon' || $READING eq 'fc0_weatherNightIcon') {$VALUE=~m/\S+\/(\S+)\.gif/;;;;$1} }


Das fertige Wetter von heute habe ich mal angehängt. Was mich noch stört, ist der zu große Zeilenabstand. Ich möchte gerne so einen Zeilenabstand wie in den zwei Grafiken daneben vom Wetter morgen und übermorgen.

Weiß jemand wie man den Abstand zwischen den einzelnen Zeilen verkleinern kann, dann wäre es perfekt für mich zu mindest.?

Gruß
Nobbi

FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

mahowi

Ich denke mal, der Abstand liegt an der Größe der Icons.

Gesendet von meinem LIFETAB_S831X mit Tapatalk

CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

cocojambo

Ja das glaube ich auch, aber warum soll man den Abstand nicht trotzdem verkleinern können denn die Icons sind noch weit von einander enfernt. Selbst wenn sie mit ihrem weißen Rand an einaner kämen würde das immer noch den Abstand wesendlich verkleinern. Es müßte doch möglich sein die "Zeilenhöhe" unabhängig der verwendeten Zeichen zu verkeinern bis man an der Stelle ankommt an der die Icons knapp vor dem Berühren sind.

nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

mahowi

Ich vermute, daß man dazu der Tabelle einen anderen Style zuweisen muß. Aber auf Anhieb weiß ich jetzt auch nicht, wie man das in fhem macht.

Gesendet von meinem LIFETAB_S831X mit Tapatalk

CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

frank

#104
hallo,

ich habe gerade eine erste plotfunktion für das logproxy-modul erstellt, womit man die schönen readings von proplanta nun auch mal graphisch betrachten kann. damit können jetzt alle fc-readings grafisch dargestellt werden. beispiele sind im anhang.

wer es versuchen möchte macht folgendes:

1. diese funktion in myutils einfügen.

sub logProxy_proplanta2Plot($$$$;$$) {
my ($device, $fcValue, $from, $to, $fcHour, $expMode) = @_;
    my $regex;
    my @rl;
   
return undef if(!$device);
   
    if($fcValue =~ s/_$//) {
        $regex = "^fc[\\d]+_".$fcValue."[\\d]{2}\$";
    }
    else {
        $regex = "^fc[\\d]+_".$fcValue."\$";
    }
   
    $fcHour = 12 if(!defined $fcHour);
    $expMode = "point" if(!defined $expMode);

if( defined($defs{$device}) ) {
if( $defs{$device}{TYPE} eq "PROPLANTA" ) {
            @rl = sort{
                my ($an) = ($a =~ m/fc(\d+)_.*/);
                my ($bn) = ($b =~ m/fc(\d+)_.*/);
                $an <=> $bn or $a cmp $b;
                }( grep /${regex}/,keys %{$defs{$device}{READINGS}} );
return undef if( !@rl );
} else {
Log3 undef, 2, "logProxy_proplanta2Plot: $device is not a PROPLANTA device";
return undef;
}
}

my $fromsec = SVG_time_to_sec($from);
my $tosec   = SVG_time_to_sec($to);
my $sec = $fromsec;
my ($h,$fcDay,$mday,$mon,$year);
my $timestamp;
   
my $reading;
my $value;
my $prev_value;
my $min = 999999;
my $max = -999999;
my $ret = "";

# while not end of plot range reached
while(($sec < $tosec) && @rl) {
#remember previous value for start of plot range
$prev_value = $value;

$reading = shift @rl;
        ($fcDay) = $reading =~ m/^fc(\d+).*/;
    $h = ($reading =~ m/.*(\d\d)$/)?$1:$fcHour;
$value = ReadingsVal($device,$reading,undef);
       
($mday,$mon,$year) = split('\.',ReadingsVal($device,"fc".$fcDay."_date",undef));
$timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year, $mon, $mday, $h, 0, 0);
$sec = SVG_time_to_sec($timestamp);
       
# skip all values before start of plot range
next if( SVG_time_to_sec($timestamp) < $fromsec );

# add first value at start of plot range
if( !$ret && $prev_value ) {
$min = $prev_value if( $prev_value < $min );
$max = $prev_value if( $prev_value > $max );
$ret .= "$from $prev_value\n";
}

# done if after end of plot range
last if($sec > $tosec);

$min = $value if( $value < $min );
$max = $value if( $value > $max );

# add actual controll point
$ret .= "$timestamp $value\n";

# Log 1, "$timestamp $value -0- $reading";
}
    if(($sec < $tosec) && !@rl && ($expMode eq "day")) {
    $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year, $mon, $mday, 23, 59, 59);
    if(SVG_time_to_sec($timestamp) < $tosec) {
        $ret .= "$timestamp $value\n";
        }
        else {
$ret .= "$to $value\n";
        }
    }
    elsif(($sec > $tosec) && ($expMode eq "day")) {
        $value = $prev_value + ($value - $prev_value)*(86400 + ($tosec - $sec))/86400;
        $ret .= "$to $value\n";
    }
return ($ret,$min,$max,$prev_value);
}


2. im plot editor das logproxymodul auswählen mit option "Func" und folgenden funktionsaufruf einfügen:

logProxy_proplanta2Plot("myProPlant","temp_",$from,$to,12,"day")

dabei ist "myProPlant" der name des proplanta moduls. der 2. parameter gibt den namen der fc-reading-gruppe an, die geplottet werden soll. möglich sind alle reading-gruppen die mit "fc" beginnen und einen plotbaren wert besitzen. also zb "temp", "tempMin", "tempMax", "rain", "chOfRain", "cloud", "sun", "frost", ..... zu unterscheiden sind jetzt "stundenbezogene" readings (zb fc0_rain12), die mit einer zahl enden, und "tagesbezogene" readings (zb fc0_rain), die ohne zahl enden. um stundenbezogene readings anzugeben, muss der gruppenname mit einem zusätzlichen tiefstrich eingesetzt werden (zb rain_). $from und $to einfach so eintragen, wie im beispiel.

nun gibt es auch die möglichkeit für readings ohne uhrzeit die stunde anzugeben, an der der entsprechende wert geplottet wird. zusätzlich lässt sich mit dem letzten parameter das ende des plots bis zum ende des entsprechenden tages "verlängern". dabei wird eine lineare interpolation zum erzeugen des punktes benutzt. dazu den wert "day" als letzten parameter angeben. möchte man keine verlängerung des plots wird "point" benutzt.

3. damit svg immer automatisch ein bestimmtes zeitfenster mit zukunftsanteil darstellt, werden 2 attribute für das svg modul benötigt. zb aktueller tag plus 6 tage in die zukunft wird folgendermassen bestimmt:
attr <svg> fixedrange 7days
attr <svg> fixedoffset 6



über weitere anregungen oder fehlerberichte würde ich mich freuen. ich hoffe ich habe nichts vergessen. viel spass.  :)

edit: kleine korrekturen an der funktion und weiterer plot angehängt. der januar wird nochmal kalt. wie es aussieht.  ???
update: achtung, die eingabe des namens der readinggruppe hat sich geändert, da es bei rain inzwischen tages- und stunden-readings gibt.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html