FHEM > Automatisierung

at mit in Subroutine berechneter Zeit füllen

(1/5) > >>

MisterEltako:
Hi!

Ich möchte aus fhem.cfg Parameter an eine Subroutine in myUtils.pm übergeben, eine Zeitdifferenz dortberechnen und wieder an Fhem zur Definition eines at-Kommandos übergeben (ähnlich sunset...).

Habe schon verschiedenes probiert, aber es kommt immer: Wrong timespec oder perlcode...

define Test at{Offset("sunset", "00:10:00, 17:00:00, 21:00:00)} set Rollladen on


myUtils.pm:
sub Offset($$$$){
my $Zeitstring = ReadingsVal("Local_Wetter",$Methode,"nv");
if ($Zeitstring eq "nv") {return "Fehler bei der Wetterabfrage...$Zeitstring"};
my @Summand = split(/:/, $Summand);
my @Array_wetter = split(/:/, $Zeitstring);
my $Sekunden_wetter = pop(@Array_wetter) + pop(@Summand);
my $Minuten_wetter = pop(@Array_wetter) + pop(@Summand);
my $Stunden_wetter = pop(@Array_wetter) + pop(@Summand);
Log 3, "$Stunden_wetter, $Minuten_wetter, $Sekunden_wetter";
$Zeitstring = sprintf("%02d:%02d:%02d", $Stunden_wetter, $Minuten_wetter, $Sekunden_wetter);
if ($Zeitstring lt $Zeit_min) {$Zeitstring = $Zeit_min}
if ($Zeitstring gt $Zeit_max) {$Zeitstring = $Zeit_max}
Log 3,"Offset-Routine liefert: $Zeitstring";
my ($Psec,$Pmin,$Phour,$Pmday,$Pmonth,$Pyear,$Pwday,$Pyday,$Pisdst) = localtime($Zeitstring); return sprintf("%02d:%02d:%02d", $Phour, $Pmin, $Psec);
}

Mache ich was falsch? Geht das überhaupt?

MfG, MisterEltako.

UliM:

--- Zitat von: MisterEltako schrieb am Mo, 04 März 2013 18:16 ---


--- Code: ---sub Offset($$$$){
my $Zeitstring = ReadingsVal("Local_Wetter",$Methode,"nv");
--- Ende Code ---


--- Ende Zitat ---

Hi,
fehlt da nicht die Übernahme der Parameter?  Also sowas wie

--- Code: ---my ($Methose, $Summand, $x, $y) = @_;
--- Ende Code ---

=8-)

Dietmar63:
= localtime($Zeitstring); funktioniert nicht auf strings sondern auf sekunden seit dem 1.1.1970 ( time() ).

Logge mal bitte "sprintf("%02d:%02d:%02d", $Phour, $Pmin, $Psec);"
In diesem Wert muss etwas vernünftiges stehen - dann hast Du gewonnen.

Dietmar63:
"Fehler bei der Wetterabfrage...$Zeitstring" wird ggf. an at weitergegeben.

Dietmar63:
$Zeitstring müsste doch schon das richtige Format habe.

Die Wandlung über localtime ist nicht notwendig.

Wenn doch, dann mit split oder substr.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln