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);
}