Da ich immer wieder danach suche, notiere ich hier einmal die Systemvariablen die FHEM von "Haus aus" zur Verfügung stellt. 

FHEM    Bemerkung
$NAME

Enthält den Namen des Device, dass das Event ausgelöst hat

 
$EVENT

Enthält mit ein Leerzeichen getrennt

  1. Das Reading, dass das Event ausgelöst hat
  2. Den Wert den das Reading enthält

Bsp.:

temperatur: 6

$EVTPART(x) Enthält den durch ein Leerzeichen getrennten Teil des $EVENT 

 Bsp:

$EVENT: temperatur: 6

$EVTPART0: temperatur:
$EVTPART1: 6

$TYPE Enthält den Typ des Device, dass den Event ausgelöst hat (wie im Internals - Type) 

     
 Perl    
 $hour Enthält die Aktuelle Stunde

Funktioniert innerhalb eines Perl Blockes in einem Notify oder at aber nicht in einer Perl-Subroutine. 

Bsp.:

define <Name> notify <Device>:<Reading>:.* {
 if($hour > 12) {
  .
  .
  .
 }
}

 $min Enthält die aktuelle Minute  
 $sec Enthält die aktuelle Sekunde  
 $hms Enthält die aktuelle Zeit im Format HH:MM:SS  
 $month Enthält den aktuellen Monat (1-12)  
 $mday Enthält den Tag des Monats (1-31)  
 $year Enthält das aktuelle Jahr (JJJJ)  
 $yday Enthält den Tag des Jahres (1-365)  
 $wday Tag der Woche (0-6, 0=Sonntag)  
 $we Wochenende (1=ja/0=nein) In einem Notify kann das Wochenende ganz einfach mit if($we) abgefragt werden. 
 $isdst Sommerzeit (1=ja/0=nein)  
 sunrise_abs() Enthält die Zeit des Sonnenaufgangs

Es müssen die Attribute für Latitude und Longitude im Device Global hinterlegt sein.

Bsp.:

attr global latitude 51.380
attr global longitude 12.500

 sunset_abs() Enthält die Zeit des Sonnenuntergangs

Es müssen die Attribute für Latitude und Longitude im Device Global hinterlegt sein.

Bsp.:

attr global latitude 51.380
attr global longitude 12.500

 

In einer Perl Subroutine, wie zum Beispiel in der 99_myUtils.pm, kann die o.g. Variablen nicht so einfach nutzen. Man kann sich aber hier mit einer eigenen Variablenzuweisung behelfen.

my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($now);

Kommentare powered by CComment