[solved] Verwendung von "localtime" und "strftime" in notify-Definitionen

Begonnen von cbear, 25 Januar 2015, 16:14:02

Vorheriges Thema - Nächstes Thema

cbear

Ihr Lieben,

nachdem ich nun schon lange mitlese, möchte ich aus aktuellen Anlass meine erste eigene Frage stellen:

Es geht um die pulsweitenmodulierte Steuerung von Stellantrieben. Über das PID20-Modul werden Aussteuerungsgrade in % berechnet und als Status des dummys "PWMheat_Bad" ausgegeben. Sind diese Grade >9%, rechne ich sie für eine PWM-Zykluszeit von 10min in Sekunden um, für die der Stellantrieb geöffnet werden sein ("secon"). Nach Ablauf von "secon" sollen die Antriebe wieder schließen. Dafür möchte ich "on-till" verwenden.


define PWMheat_Bad dummy
attr PWMheat_Bad alias Aussteuerungsgrad PWM Bad

define notificationdummy_PWMheat_Bad notify PWMheat_Bad {;;\
my $percentage = Value("PWMheat_Bad");;\
if ($percentage>9) {;;\
        my $secon = ($percentage/100*600);;\
        my $turnoff = (strftime("%H:%M:%S",localtime(time()+$secon)));;\
fhem("set Bad_Heizung on-till $turnoff");;\
} else {;;\
    fhem("set Bad_Heizung off");;\
}}



Wie ich es auch drehe, ich komme ich über die folgenden Errors nicht hinweg. Für das %-Zeichen in "strftime" wird scheinbar immer der Wert von $percentage übernommen, als würde es sich bei den % in "%H:%M:%S" um Platzhalter handeln:

2015.01.25 16:02:38 3: set Bad_Heizung on-till 42H:42M:42S : on-till: Wrong timespec 42H:42M:42S: either HH:MM:SS or {perlcode}
2015.01.25 16:02:38 3: notificationdummy_PWMheat_Bad return value: on-till: Wrong timespec 42H:42M:42S: either HH:MM:SS or {perlcode}


Hat jemand eine Idee? Bestimmt ist es nur ein Anfängerfehler, den ich aber partout nicht entdecke.

stromer-12

Das % muss im notify maskiert werden, verdopple es mal.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

cbear