Hauptmenü

Zeitabhänges Notify

Begonnen von zernima, 13 Oktober 2015, 15:27:34

Vorheriges Thema - Nächstes Thema

zernima

Hallo,

ich versuche schon seit geraumer Zeit ein zeitabhängiges Notify zu erstellen. Aber ich verzweifle irgendwie immer am Syntax.

Meine Definition in der fhem.cfg lautet wie folgt

define Zuhause notify HomeStatus:Zuhause  {\
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());;\
  my $hm = sprintf("%%02d:%%02d", $hour, $min);;\
      if ($hm > "08:00" && $hm < "22:00") {\
      fhem("set FHT.Wohnzimmer desired-temp 23;;set Tablet screenBrightness 200;;set Pushover1 msg 'Hallo' 'Hallo Zuhause Temperatur auf 23 Grad gesetzt' '' 0 ''");;\
    }\
    elsif ($hm gt "22:01" && $hm lt "23:59") {\
      fhem("set FHT.Wohnzimmer desired-temp 17;;set Tablet screenBrightness 200;;set Pushover1 msg '' 'Hallo Spät zu Hause Temperatur auf 17 Grad gesetzt' '' 0 ''");;\
    }\
    else {\
      fhem("set FHT.Wohnzimmer desired-temp 17;;set Tablet screenBrightness 200;;set Pushover1 msg 'Zuhause' 'Wikkomen Zuhause Temperatur auf 17 Grad gesetzt' '' 0 ''");;\
    }\
  }\


ich bekomme aber dauernd folgende Fehlermeldung......

2015.10.12 23:25:46 1: PERL WARNING: Argument "08:00" isn't numeric in numeric gt (>) at (eval 22063) line 4.
2015.10.12 23:25:46 3: eval: {
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
  my $hm = sprintf("%02d:%02d", $hour, $min);
      if ($hm > "08:00" && $hm < "22:00") {
      fhem("set FHT.Wohnzimmer desired-temp 23;set Tablet screenBrightness 200;set Pushover1 msg 'Hallo' 'Hallo Zuhause Temperatur auf 23 Grad gesetzt' '' 0 ''");
    }
    elsif ($hm gt "22:01" && $hm lt "23:59") {
      fhem("set FHT.Wohnzimmer desired-temp 17;set Tablet screenBrightness 200;set Pushover1 msg '' 'Hallo Spät zu Hause Temperatur auf 17 Grad gesetzt' '' 0 ''");
    }
    else {
      fhem("set FHT.Wohnzimmer desired-temp 17;set Tablet screenBrightness 200;set Pushover1 msg 'Zuhause' 'Wikkomen Zuhause Temperatur auf 17 Grad gesetzt' '' 0 ''");
    }
  }


Was mach ich falsch oder besser gefragt....Wie kann ich es richtig machen  ;D

Zur Erklärung:

Ich will das wenn mein Homestatus auf Zuhause gesetzt wird , je nach Uhrzeit eine andere Funktion ausgeführt wird. Es soll halt nicht so sein das wenn ich um 2 Uhr nachts heim komme die Heizung angeht oder der Fernseher angeschaltet wird.

Vielen Dank

marvin78

Stringvergleich geht in Perl anders, als der Vergleich von numerischen Werten (ge, gt, lt, lt ...)

Die Zeitvariablen stehen in einem notify in fhem zur Verfügung. Diese musst du nicht extra deklarieren (siehe Perl Specials in der commandref).

In deinem Fall würde es wohl ein

HomeStatus:Zuhause  {
    if ($hour > 8 && $hour < 22) {
      fhem("set FHT.Wohnzimmer desired-temp 23;set Tablet screenBrightness 200;set Pushover1 msg 'Hallo' 'Hallo Zuhause Temperatur auf 23 Grad gesetzt' '' 0 ''");
    }
    elsif ($hour >= 22 && $hour <= 23) {
      fhem("set FHT.Wohnzimmer desired-temp 17;set Tablet screenBrightness 200;set Pushover1 msg '' 'Hallo Spät zu Hause Temperatur auf 17 Grad gesetzt' '' 0 ''");
    }
    else {
      fhem("set FHT.Wohnzimmer desired-temp 17;set Tablet screenBrightness 200;set Pushover1 msg 'Zuhause' 'Wikkomen Zuhause Temperatur auf 17 Grad gesetzt' '' 0 ''");
    }
  }


tun. Code ist für den DEF Bereich des notifys

zernima

Suuuuuper Vielen Dank!!!

Werde ich gleich testen.

marvin78

Aber bitte auch nachvollziehen. ;)

(ein paar Grundlagen zu Perl, perl specials in der commandref, Einsteiger-PDF lesen)

zernima

Werde ich auf jeden Fall machen.

Ich hab es auch schon mal so versucht. aber nicht hinbekommen.

Ich melde mich auch auf jeden Fall ob es klappt.

Danke schonmal. :)