FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: HoTi am 15 Juni 2015, 15:26:17

Titel: time_str2num nutzen
Beitrag von: HoTi am 15 Juni 2015, 15:26:17
Hallo zusammen,

ich lerne gerade etwas Perl und habe da eine Frage zu time_str2num.

In meinem Code möchte ich die Zeit in eine Variable schreiben und dann später von der aktuellen Zeit subtraieren.

Das bekomme ich aber leider nicht hin. Da steckt ein fehler mit den Variablen.

Hier mal mein bisheriger Code, da wo ich den Fehler vermute ist unterstrichen:

Zitatsub Rollo_Manuell($$$)
{
my ($name,$event,$device) = @_;
my $hash = {};
$hash->{NAME} = $defs{$name};
$hash->{DEVICE} = $defs {$device};
my $t_on;
my $aktpos = ReadingsVal($device,'Pos',0);
my $newpos;
my $dt;
my $einfahrzeit = ReadingsVal($device,'Einfahrzeit',24.7);

if($event =~m/(ein|on).*/)
{
$t_on = time_str2num(ReadingsTimestamp($name,'state',0));
Log(3,"t_on: $t_on");
}
if($event =~m/(aus|off).*/)
{
my $time = time();
#my $dt = $t_on - $time;
$dt = time() - $t_on;
#$time = 0;
#$t_on = 0;
$newpos = $aktpos - (100 * $dt / $einfahrzeit);
Log(3,"time: $time -> event: $event -> diff: $dt -> device: $device -> name: $name -> aktpos: $aktpos -> newpos: $newpos -> einfahrzeit: $einfahrzeit");
}


#$newpos = sprintf("%d",$newpos); # runden
#$newpos = 0 if($newpos < 0);
#$newpos = 100 if($newpos > 100);
#readingsSingleUpdate($name_hash,'Pos',$newpos,0);
#readingsSingleUpdate($name_hash,'state',"Pos $newpos",0);

}