In FHEM ist ein notify eine Möglichkeit, auf bestimmte Events zu reagieren, die von einem Gerät (z. B. ein Shelly-Aktor) ausgelöst werden. Ein notify wird automatisch ausgeführt, wenn eine definierte Bedingung auftritt – zum Beispiel das Schalten eines Geräts (Aktor ein/aus).


🔧 Funktionsweise von notify in FHEM

Ein notify lauscht auf Ereignisse im Event-System von FHEM. Wenn ein Gerät ein bestimmtes Event auslöst (z. B. state: on), wird das notify ausgelöst und führt den darin angegebenen Befehl aus.

Syntax

perl

define <NAME> notify <TRIGGER> <BEFEHL>

  • <NAME>: Name des Notify-Objekts.
  • <TRIGGER>: Gerät und Event, auf das reagiert werden soll.
  • <BEFEHL>: Der auszuführende FHEM-Befehl.

⚙️ Beispiel: Notify bei Schalten eines Shelly-Aktors

Angenommen, dein Shelly-Gerät heißt Shelly_Wohnzimmer_Licht und du möchtest, dass bei jedem Ein- oder Ausschalten eine Lognachricht geschrieben wird.

Beispiel-Definition

perl

define n_ShellySchaltLog notify Shelly_Wohnzimmer_Licht:.* {

  my $state = ReadingsVal("Shelly_Wohnzimmer_Licht", "state", "undef");

  Log 1, "Shelly Wohnzimmer Licht wurde geschaltet: $state";

}

Erklärung:

  • Shelly_Wohnzimmer_Licht:.* bedeutet: Reagiere auf jedes Event dieses Geräts.
  • ReadingsVal(...) holt den aktuellen Status (on, off, o. ä.).
  • Log 1, ... schreibt ins Logfile mit Loglevel 1 (Info).
  • Du kannst anstelle eines Logeintrags auch andere FHEM-Kommandos einfügen (z. B. ein anderes Gerät schalten).

📌 Beispiel: Aktives Schalten bei Event

Möchtest du z. B. eine Lampe einschalten, wenn der Shelly eingeschaltet wurde:

perl

define n_ShellyOnLampOn notify Shelly_Wohnzimmer_Licht:on set Lampe_Esszimmer on

Wenn Shelly_Wohnzimmer_Licht den Status on meldet, wird Lampe_Esszimmer eingeschaltet.


🔍 Tipps zur Fehlersuche

  • Aktiviere verbose 5 temporär für detailliertes Logging.
  • Schaue mit eventTypes oder inform timer nach, welche Events tatsächlich ankommen.
  • Mit dem Befehl setuuid kannst du ein Notify gezielt identifizieren (für Debugging).