FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Manul am 13 Mai 2017, 17:39:19

Titel: [Gelöst] Warum löst dieses notify bei einem FHEM-restart aus?
Beitrag von: Manul am 13 Mai 2017, 17:39:19
Ich habe mir das untenstehende notify gebastelt, um bei einem Alarm an einem meiner Rauchmelder benachrichtigt zu werden. Das scheint auch (zumindest per trigger getestet) zu funktionieren. Allerdings hat eben bei einem shutdown restart das notify ebenfalls ausgelöst. Kann mir wer erlären, warum?

Internals:
   DEF        .*:smoke_detect.* {
  my $alarm = "ALARM!!! [$EVTPART1:alias]: ALARM!!!\n\nTemperaturen:\n\n";

  foreach my $wt (devspec2array(".*_wt_Weather")) {

    $alarm .= AttrVal($wt,"alias_Übersicht",$wt).": ".ReadingsVal($wt,"temperature",undef)."°C\n";

  };

  $alarm .= "Keller: ".ReadingsVal("klima_keller","temperature",undef)."°C";

  fhem("msg push ".$alarm);
}
   NAME       n_Feueralarm
   NR         95
   NTFY_ORDER 50-n_Feueralarm
   REGEXP     .*:smoke_detect.*
   STATE      active
   TYPE       notify
   Readings:
     2017-05-13 17:37:09   state           active
Attributes:
   room       Automatisierung
Titel: Antw:Warum löst dieses notify bei einem FHEM-restart aus?
Beitrag von: KernSani am 13 Mai 2017, 17:52:52
Kannst du mal noch ein list des Rauchmelders dazu hängen? Setzt er beim initialisieren smoke_detect auf off o.ä.?
Titel: Antw:Warum löst dieses notify bei einem FHEM-restart aus?
Beitrag von: dev0 am 13 Mai 2017, 18:34:53
Vmtl. ist die regexp des notify zu weit gefasst.
Titel: Antw:Warum löst dieses notify bei einem FHEM-restart aus?
Beitrag von: Thorsten Pferdekaemper am 13 Mai 2017, 18:44:57
Hi,
leg Dir doch mal ein FileLog mit genau dieser RegEx an. Dann müsstest Du ja sehen, was genau Schuld daran ist.
Gruß,
   Thorsten
Titel: Antw:Warum löst dieses notify bei einem FHEM-restart aus?
Beitrag von: Manul am 13 Mai 2017, 18:57:26
Danke, Ihr hattet beide recht: Der Teamleader der Rauchmelder setzt beim restart ein "smoke_detect: none" ab. Insofern war die regex tatsächlich zu weit gefasst. Ich hab's jetzt wie unten geändert.

@Thorsten: Guter Tip für die Zukunft, in dem Fall hat's mein DbLog für den betroffenen Raum aber getan.

Internals:
   DEF        .*:smoke_detect:(?!\040none).* {
  my $alarm = "ALARM!!! [$EVTPART1:alias]: ALARM!!!\n\nTemperaturen:\n\n";

  foreach my $wt (devspec2array(".*_wt_Weather")) {

    $alarm .= AttrVal($wt,"alias_Übersicht",$wt).": ".ReadingsVal($wt,"temperature",undef)."°C\n";

  };

  $alarm .= "Keller: ".ReadingsVal("klima_keller","temperature",undef)."°C";

  fhem("msg push ".$alarm);
}
   NAME       n_Feueralarm
   NR         95
   NTFY_ORDER 50-n_Feueralarm
   REGEXP     .*:smoke_detect:(?!\040none).*
   STATE      2017-05-13 18:54:47
   TYPE       notify
   Readings:
     2017-05-13 18:54:38   state           active
Attributes:
   room       Automatisierung