WDS100 O C6 Rain 1h 24h Summe bilden

Begonnen von maxx8888, 02 Juli 2013, 21:40:10

Vorheriges Thema - Nächstes Thema

Sven

Zitat von: Frank S. am 25 September 2013, 14:43:55
Moin.

Auf eine ähnliche Weise berechne ich nun auch die Sonnenscheindauer der letzten Stunden.

Hier gibt es die Problematik, dass der Zähler nur bis 255 zählt. Daher kommt der Überlauf mehrmals am Tag. Daraus habe ich eine weitere Funktion in 99_MyUtils erstellt. Diese addiert die Differenzen zwischen den einzelnen Schritten, wenn ein Überlauf ist, dann wird 256 dazu addiert.

##########################################################
# mySunshine
# Die sonnenscheindauer aus LogFiles über einen beliebigen Zeitraum
sub
mySunshine($$$)
{
my ($offset,$logfile,$cspec) = @_;
my $period_s = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time-$offset);
my $period_e = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime;
my $oll = $attr{global}{verbose};
$attr{global}{verbose} = 0;
my @logdata = split("
", fhem("get $logfile - - $period_s $period_e $cspec"));
$attr{global}{verbose} = $oll;
my ($cnt, $akt, $last, $diff, $sum) = (0)x5;
foreach (@logdata){
  my @line = split(" ", $_);
  if(defined $line[1] && "$line[1]" ne ""){
   $cnt += 1;
    if ($cnt == 1) {
     $last = $line[1];
    }
    else {
     $last = $akt;
    }
   $akt = $line[1];
   $diff = $akt - $last;

   if ($diff < 0) {
     $diff += 256;
   }
   $sum += $diff;

  }
}

Log 4, ("myDiff: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, Akt.: $akt, Last: $last, Diff: $diff, Sum: $sum");
return $sum;
}


In fhem.cfg dann folgender Aufruf mit Speicherung der Sonnenscheindauer des letzten Tages.

## Sonnenscheindauer pro Tag
define SonnenscheinLastTag dummy
define Sonnenschein24h dummy

define SonnenscheinNotify notify Wetterstation:sunshine.* {\
         my $last24sunshine = mySunshine("86400", "FileLog_Wetterstation", "18:::");;\
         fhem("set Sonnenschein24h $last24sunshine") \
}

define SonnenscheinOffsetReset at *23:58:00 {\
                 my $last24sunshine = mySunshine("86400", "FileLog_Wetterstation", "18:::");;\
         fhem("set SonnenscheinLastTag $last24sunshine");;\
}

define FileLog_SonnenscheinTag FileLog /var/InternerSpeicher/fhem/log/SonnenscheinTag-%Y.log SonnenscheinLastTag
attr FileLog_SonnenscheinTag logtype text
attr FileLog_SonnenscheinTag room CUL_HM


Eine Frage zum Abschluss, welche Einheit hat der Wert sunshine?

Schöne Grüße
Frank S.

Hallo,

ich möchte gerne diesen Post nochmal aufgreifen. Ich habe eine KS550 und bin nun auch über die Sonnenschein-Dauer-Problematik gestolpert (Rundlauf der Minuten von 0-255) . Allerdings habe ich bei mir alles auf DBlog laufen. Da greift diese Funktion doch nicht, oder? Wenn nicht, wo ist denn ggf. eine Änderung zuzunehmen, damit ich diese dann nutzen kann?

Hoffe, dass mir jemand helfen kann!

Lieben Gruß
Sven
Beaglebone mit FHEM auf MySQL, KS550 in Kombi mit WS550, zahlreiche S300TH, HM100TH und diverse FS20-Aktoren

mi.ke

[quote author=Thomas Kregelin link=topic=13626.msg94761#msg94761 date=1379277493]
  my $last1hours = myDiff("3600", "FileLog_OC3", "10:::");;\
  my $last3hours = myDiff("10800", "FileLog_OC3", "10:::");;\
  my $last24hours = myDiff("86400", "FileLog_OC3", "10:::");;\



Oh Mann, ich raff's net.

Kann mir bitte jemand erklären, für was genau die 10::: steht?
Ich versuche seit Stunden einem TFA_30.3148 auf Basis dieses Snippets
seine Daten zu entlocken.

Ich steh echt auf'm Schlauch . . .

Könnte mich bitte jemand erhellen ?!?

Thx

MI/KE
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

fruit

#17
I have a couple of additional Rain items if anyone is interested
define Rain_Avg average WeatherStation:rain.*
define FileLog_avgLog FileLog ./log/average-%Y.log WeatherStation:.*(_day|_month).*

define RainLast28Days dummy
define RainThisYear dummy

define at_Rain28Days at *00:30 {\
my $last28days = myDiff("2419200", "FileLog_avgLog", "4:WeatherStation.rain_max_day::");;\
fhem("set RainLast28Days $last28days");;\
}

define at_RainThisYear at *00:35 {\
my ( $sec, $min, $hour, $day, $month, $year, $wday, $yday, $isdst ) = localtime;;\
my @start = ( $year, 1, 1 );;\
my @end = ( $year, $month + 1, $day );;\
my $diff_days = Delta_Days( @start, @end );;\
# Log 3, "diff_days: $diff_days";;\
my $rainthisyear = myDiff( $diff_days * 86400, "FileLog_avgLog", "4:WeatherStation.rain_max_day::" );;\
fhem("set RainThisYear $rainthisyear");;\
}


Edit: to answer your question, as no-one else has, see http://www.fhemwiki.de/wiki/Creating_Plots Data Extraction
I thought there was a German version too but can't find it
Feel free to follow up in German if you prefer