Gibts es eine Möglichkeit bei einem Device (Homematic Switch) den letzten Schaltpunkt auszulesen?
Postest Du Dein Ergebnis?
Gruß, Uli
Hallo, ich möchte genau dasselbe tun, was Du schon gelöst hast: Steuerung einer Fußbodenheizung mit fhem und HomeMatic. Allerdings: Fußbodenheizung ist noch nicht gelegt und ich bin blutiger fhem-Einsteiger. Kannst Du mir eine Beschreibung deiner Anlage geben (verwendete HomeMatic-Komponenten, Marke der Stellventile, evtl. sogar die entscheidenden Scriptteile)?
Ich habe mich etwas näher mit deinem Code beschäftigt und nun eine Verständnisfrage: Du kannst doch direkt die Ausgabe von time_str2num(ReadingsTimestamp( "heizung","state",0 )) mit dem time von Perl vergleichen; die haben doch dasselbe Format! Oder hab' ich was übersehen? Um das ganze für mich zu verstehen, habe ich alles in eine *.pl gepackt. Schau's Dir mal an.
-------schnipp: zeit.pl-------------
use Time::Local;
use POSIX;
sub now {
my $FORMAT=$_[0];
my $NOW=timelocal(localtime);
my $y=sprintf("%02d",(localtime($NOW))[5]-100);
my $Y=sprintf("%04d",(localtime($NOW))[5]+1900);
my $m=sprintf("%02d",(localtime($NOW))[4]+1);
my $d=sprintf("%02d",(localtime($NOW))[3]);
my $H=sprintf("%02d",(localtime($NOW))[2]);
my $M=sprintf("%02d",(localtime($NOW))[1]);
my $S=sprintf("%02d",(localtime($NOW))[0]);
$FORMAT =~ s/%y/$y/;
$FORMAT =~ s/%Y/$Y/;
$FORMAT =~ s/%m/$m/;
$FORMAT =~ s/%d/$d/;
$FORMAT =~ s/%H/$H/;
$FORMAT =~ s/%M/$M/;
$FORMAT =~ s/%S/$S/;
return $FORMAT;
print s/%y/$y/;
}
sub nowdate {
return now("%Y-%m-%d %H:%M:%S");
}
sub time_str2num($) {
my ($str) = @_;
my @a = split("[- :]", $str);
return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1);
}
print "\ntime: ".time;
print "\nlocaltime: ".localtime(time);
print "\ntimelocal: ".timelocal(localtime(time));
print "\ntimelocal: ".timelocal(localtime);
$jetzt = now;
print "\n\nnow: ".nowdate;
print "\ntadaaa: ".time_str2num(nowdate);
-------schnapp: zeit.pl-------------
D.h.
my $timestamp_last = time_str2num(ReadingsTimestamp( "heizung","state",0 ));;
my $timestamp_diff = time-$timestamp_last;;
if ($timestamp_diff > 604800) {
fhem("set heizung on-for-timer 60");;
}
sollte ausreichen.
Ich hoffe, Du hilfst mir trotz menem "Klugscheißer-Post" weiter ;-)
Vorab vielen Dank
Gruß Stefan