<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peterchen89</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peterchen89"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Peterchen89"/>
	<updated>2026-04-11T02:17:52Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_einrichten&amp;diff=12869</id>
		<title>Homebridge einrichten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_einrichten&amp;diff=12869"/>
		<updated>2015-11-12T09:31:18Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* Homebridge installieren */  siehe http://stackoverflow.com/questions/17509669/how-to-install-nodejs-package-from-github-directly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieses HOWTO zeigt die Installation und Erstinbetriebnahme von Homebridge. &lt;br /&gt;
&lt;br /&gt;
Damit kann Siri benutzt werden, um FHEM-Devices zu steuern. So können Devices angesprochen werden, die offiziell HomeKit nicht unterstützen (die Vorgehensweise wurde auf einem Intel NUC mit Ubuntu Server 14.04 LTS und auf einem Raspberry Pi mit Raspian getestet).&lt;br /&gt;
&lt;br /&gt;
Um Homebridge erfolgreich zu installieren, müssen zunächst NPM, NodeJS, Python, g++, MDNS, sowie benötigte Hilfspakete installiert werden:&lt;br /&gt;
&lt;br /&gt;
Der WIKI-Eintrag bezieht sich hauptsächlich auf diese {{Link2Forum|Topic=32652|LinkText=Diskussion im FHEM-Forum}}. Ein Riesendank gilt vor allem {{Link2FU|430|Andre (justme1968)}}.&lt;br /&gt;
&lt;br /&gt;
Eine Sammlung funktionsfähiger Homebridge FHEM Konfiguration können hier gefunden werden http://www.fhemwiki.de/wiki/Hombridge_User_Configs&lt;br /&gt;
Die Sammlung befindet sich noch im Aufbau&lt;br /&gt;
&lt;br /&gt;
== NodeJS installieren ==&lt;br /&gt;
In der Konsole folgende Befehle eingeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
sudo apt-get install build-essential libssl-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
UPDATE: Homebridge funktioniert mit einer kleinen Einschränkung nun auch mit node 4.0.0. Laut&lt;br /&gt;
[https://github.com/cflurin/homebridge-shims/wiki/Minimalist-Homebridge-on-a-Raspberry-Pi Homebridge on a Raspberry Pi] müssen die folgenden Abhängigkeiten (Dependencies) aus der &#039;&#039;&#039;package.json&#039;&#039;&#039; entfernt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;harmonyhubjs-client&amp;quot;: &amp;quot;^1.1.4&amp;quot;,&lt;br /&gt;
&amp;quot;harmonyhubjs-discover&amp;quot;: &amp;quot;git+https://github.com/swissmanu/harmonyhubjs-discover.git&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit es auf einem Raspberry schneller läuft wird darüber hinaus empfohlen auch diese Abhängigkeiten aus der &#039;&#039;&#039;package.json&#039;&#039;&#039; zu entfernen:&lt;br /&gt;
&lt;br /&gt;
Vorher noch ein ein Backup der Datei anlegen &lt;br /&gt;
&amp;lt;pre&amp;gt;cp package.json package.json.bkp oder sudo cp package.json package.json.bkp &amp;lt;/pre&amp;gt;&lt;br /&gt;
Am einfachsten geht das entfernen der Zeilen mit dem Editor vi.&lt;br /&gt;
&amp;lt;!-- Bist Du sicher, dass &amp;quot;vi&amp;quot; das Einfachste ist? Ist nicht auf vielen Linux Systemen &lt;br /&gt;
     mittlerweile auch der &amp;quot;nano&amp;quot; Editor drauf? Der dürfte eigentlich !noch! einfacher sein.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;vi package.json oder sudo vi package.json&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mit dem Cursor vor die entsprechende Zeile gehen und mit zwei mal Taste d (dd tippen) wird die Zeile gelöscht.&lt;br /&gt;
&lt;br /&gt;
Eventuell muss vi mit sudo vi aufgerufen werden, je nach verwendeter Distribution.&lt;br /&gt;
&lt;br /&gt;
Gespeichert wird dann mit folgendem Ablauf: ESC :wq! Enter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;ad2usb&amp;quot;: &amp;quot;git+https://github.com/alistairg/node-ad2usb.git#local&amp;quot;,&lt;br /&gt;
&amp;quot;carwingsjs&amp;quot;: &amp;quot;0.0.x&amp;quot;,&lt;br /&gt;
&amp;quot;chokidar&amp;quot;: &amp;quot;^1.0.5&amp;quot;,&lt;br /&gt;
&amp;quot;eibd&amp;quot;: &amp;quot;^0.3.1&amp;quot;,&lt;br /&gt;
&amp;quot;elkington&amp;quot;: &amp;quot;kevinohara80/elkington&amp;quot;,&lt;br /&gt;
&amp;quot;harmonyhubjs-client&amp;quot;: &amp;quot;^1.1.4&amp;quot;,&lt;br /&gt;
&amp;quot;harmonyhubjs-discover&amp;quot;: &amp;quot;git+https://github.com/swissmanu/harmonyhubjs-discover.git&amp;quot;,&lt;br /&gt;
&amp;quot;lifx-api&amp;quot;: &amp;quot;^1.0.1&amp;quot;,&lt;br /&gt;
&amp;quot;lifx&amp;quot;: &amp;quot;git+https://github.com/magicmonkey/lifxjs.git&amp;quot;,&lt;br /&gt;
&amp;quot;node-hue-api&amp;quot;: &amp;quot;^1.0.5&amp;quot;,&lt;br /&gt;
&amp;quot;node-icontrol&amp;quot;: &amp;quot;^0.1.4&amp;quot;,&lt;br /&gt;
&amp;quot;node-milight-promise&amp;quot;: &amp;quot;0.0.x&amp;quot;,&lt;br /&gt;
&amp;quot;tough-cookie&amp;quot;: &amp;quot;^2.0.0&amp;quot;,&lt;br /&gt;
&amp;quot;sonos&amp;quot;: &amp;quot;0.8.x&amp;quot;,&lt;br /&gt;
&amp;quot;telldus-live&amp;quot;: &amp;quot;0.2.x&amp;quot;,&lt;br /&gt;
&amp;quot;teslams&amp;quot;: &amp;quot;1.0.1&amp;quot;,&lt;br /&gt;
&amp;quot;unofficial-nest-api&amp;quot;: &amp;quot;git+https://github.com/hachidorii/unofficial_nodejs_nest.git#d8d48edc952b049ff6320ef99afa7b2f04cdee98&amp;quot;,&lt;br /&gt;
&amp;quot;wemo&amp;quot;: &amp;quot;0.2.x&amp;quot;,&lt;br /&gt;
&amp;quot;wink-js&amp;quot;: &amp;quot;0.0.5&amp;quot;,&lt;br /&gt;
&amp;quot;komponist&amp;quot; : &amp;quot;0.1.0&amp;quot;,&lt;br /&gt;
&amp;quot;yamaha-nodejs&amp;quot;: &amp;quot;0.4.x&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Konfig file sollte dann wie folgt aussehen: Achtung vor den letzten zwei } am Ende dar kein Komma sein.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;homebridge&amp;quot;,&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;HomeKit support for the impatient&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;0.1.1&amp;quot;,&lt;br /&gt;
  &amp;quot;scripts&amp;quot;: {&lt;br /&gt;
    &amp;quot;start&amp;quot;: &amp;quot;DEBUG=* node app.js || true&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;repository&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;git&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;: &amp;quot;git://github.com/nfarina/homebridge.git&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;license&amp;quot;: &amp;quot;ISC&amp;quot;,&lt;br /&gt;
  &amp;quot;dependencies&amp;quot;: {&lt;br /&gt;
    &amp;quot;async&amp;quot;: &amp;quot;^1.4.2&amp;quot;,&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;0.10.x&amp;quot;,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: &amp;quot;^2.2.0&amp;quot;,&lt;br /&gt;
    &amp;quot;hap-nodejs&amp;quot;: &amp;quot;^0.0.2&amp;quot;,&lt;br /&gt;
    &amp;quot;isy-js&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;mdns&amp;quot;: &amp;quot;^2.2.4&amp;quot;,&lt;br /&gt;
    &amp;quot;netatmo&amp;quot;: &amp;quot;1.3.0&amp;quot;,&lt;br /&gt;
    &amp;quot;node-cache&amp;quot;: &amp;quot;3.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;node-persist&amp;quot;: &amp;quot;0.0.x&amp;quot;,&lt;br /&gt;
    &amp;quot;node-xmpp-client&amp;quot;: &amp;quot;1.0.0-alpha23&amp;quot;,&lt;br /&gt;
    &amp;quot;q&amp;quot;: &amp;quot;1.4.x&amp;quot;,&lt;br /&gt;
    &amp;quot;queue&amp;quot;: &amp;quot;^3.1.0&amp;quot;,&lt;br /&gt;
    &amp;quot;request&amp;quot;: &amp;quot;2.49.x&amp;quot;,&lt;br /&gt;
    &amp;quot;xml2js&amp;quot;: &amp;quot;0.4.x&amp;quot;,&lt;br /&gt;
    &amp;quot;xmldoc&amp;quot;: &amp;quot;0.1.x&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python, g++, MDNS installieren ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install python&lt;br /&gt;
sudo apt-get install g++&lt;br /&gt;
sudo apt-get install libavahi-compat-libdnssd-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge installieren ==&lt;br /&gt;
Die aktuelle Homebridge version wird mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
npm install -g homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
installiert, der FHEM platform shim mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:60%;&amp;quot;&amp;gt;&lt;br /&gt;
npm install -g git+https://github.com/justme-1968/homebridge-fhem.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ERR während der Installation ==&lt;br /&gt;
Bei folgendem Fehler ist das abrufen von Github nicht möglich.&lt;br /&gt;
&amp;lt;pre&amp;gt;npm ERR! git clone --template=/home/hs-server-admin/.npm/_git-remotes/_templates --mirror &lt;br /&gt;
git://github.com/KhaosT/ed25519.git /home/hs-server-admin/.npm/_git-remotes/git-github-com-KhaosT-ed25519-git-d8bdee1d: &lt;br /&gt;
github.com[0: 192.30.252.128]: errno=Die Wartezeit für die Verbindung ist abgelaufen&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fehlerursache konnte hier durch eine aktive Firewall verursacht werden.&lt;br /&gt;
&lt;br /&gt;
== Homebridge konfigurieren ==&lt;br /&gt;
Im Verzeichnis ~/.homebridge/ muss nun noch die config.json erstellt bzw. angepasst werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Homebridge muss nicht, kann aber auf dem selben Server laufen wie FHEM. &lt;br /&gt;
&lt;br /&gt;
Unter &amp;quot;server&amp;quot; muss die IP des FHEM-Servers und unter &amp;quot;port&amp;quot; der benutzte Port des benutzten FHEMWEBS eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Läuft der Homebridge Server auf dem gleichen Rechner wie FHEM, kann die IP 127.0.0.1 benutzt werden.&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Damit nicht alle Devices von Homebridge berücksichtig werden, bietet es sich an, die Devices zu filtern. &lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurden alle Devices, die über Siri steuerbar sein sollen zusätzlich in den ROOM Homekit per FHEM eingerichtet. &lt;br /&gt;
&lt;br /&gt;
Der PIN kann beliebig in dem Format xxx-xx-xxx angepasst werden. Dieser muss nur einmal bei der Einrichtung in iOS eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;bridge&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Homebridge&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot;: &amp;quot;CC:22:3D:E3:CE:30&amp;quot;,&lt;br /&gt;
        &amp;quot;port&amp;quot;: 51826,&lt;br /&gt;
        &amp;quot;pin&amp;quot;: &amp;quot;031-45-154&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;platforms&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;platform&amp;quot;: &amp;quot;FHEM&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;FHEM&amp;quot;,&lt;br /&gt;
            &amp;quot;server&amp;quot;: &amp;quot;192.168.xxx.xxx&amp;quot;,&lt;br /&gt;
            &amp;quot;port&amp;quot;: &amp;quot;8083&amp;quot;,&lt;br /&gt;
            &amp;quot;filter&amp;quot;: &amp;quot;room=Homekit&amp;quot;,&lt;br /&gt;
            &amp;quot;auth&amp;quot;: {&amp;quot;user&amp;quot;: &amp;quot;FhemUser&amp;quot;, &amp;quot;pass&amp;quot;: &amp;quot;XXX&amp;quot;}&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;accessories&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: Für ein FHEM Web Interface mit SSL Zertifikat muss die config wo folgt aussehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;bridge&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Homebridge&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot;: &amp;quot;CC:22:3D:E3:CE:30&amp;quot;,&lt;br /&gt;
        &amp;quot;port&amp;quot;: 51826,&lt;br /&gt;
        &amp;quot;pin&amp;quot;: &amp;quot;031-45-154&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;platforms&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;platform&amp;quot;: &amp;quot;FHEM&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;FHEM&amp;quot;,&lt;br /&gt;
            &amp;quot;server&amp;quot;: &amp;quot;192.168.xxx.xxx&amp;quot;,&lt;br /&gt;
            &amp;quot;port&amp;quot;: &amp;quot;8083&amp;quot;,&lt;br /&gt;
            &amp;quot;filter&amp;quot;: &amp;quot;room=Homekit&amp;quot;,&lt;br /&gt;
            &amp;quot;ssl&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
            &amp;quot;auth&amp;quot;: {&amp;quot;user&amp;quot;: &amp;quot;FhemUser&amp;quot;, &amp;quot;pass&amp;quot;: &amp;quot;XXX&amp;quot;}&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;accessories&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FHEM konfigurieren ==&lt;br /&gt;
Um die Device richtig mit FHEM und Homebridge vertraut zu machen, müssen wir noch unter global etwas ergänzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
attr global userattr genericDeviceType:ignore,switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einfach folgende Zeilen an die bestehenden Attribute anhängen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
genericDeviceType:ignore,switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Einstellungen können auch bei den Einzelnen Devices gemacht werden.&lt;br /&gt;
Beispiel bei einem HM-CC-RT-DN, hier wird der subType thermostat gesetzt.&lt;br /&gt;
Einfach in das Device gehen hier das Attr subtype erstellen und thermostat auswählen.&lt;br /&gt;
&lt;br /&gt;
== Homebridge starten ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hombridge sollte nun laufen.&lt;br /&gt;
Hier kann man die Kommunikation nachverfolgen.&lt;br /&gt;
Abbrechen kann das ganze mit ctrl +c.&lt;br /&gt;
Es sind keine Befehle mehr mit Siri möglich.&lt;br /&gt;
&lt;br /&gt;
Damit Siri auch Befehle ohne ständig offenes Terminal bearbeiten kann, bitten nächsten Punkt beachten.&lt;br /&gt;
&lt;br /&gt;
== Homebridge automatisch starten ==&lt;br /&gt;
Eine Anleitung um die Homebridge automatisch zu starten findet sich &lt;br /&gt;
&lt;br /&gt;
* hier: [https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi] oder&lt;br /&gt;
* [http://www.meintechblog.de/2015/10/mit-siri-und-fhem-das-gesamte-smart-home-per-stimme-steuern/]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Beide Links sind obsoloet da es die app.js nicht mehr gibt&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Alternative Methode&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code einfügen und ggf. den Pfad zu &amp;quot;.homebridge&amp;quot; anpassen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        homebridge -U /home/pi/.homebridge/ &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        homebridge -U /home/pi/.homebridge/ &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
        homebridge -U /home/pi/.homebridge/ &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: /etc/init.d/homebridge {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autostart aktivieren&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann man mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Dienst starten&lt;br /&gt;
&lt;br /&gt;
== FHEM Device Einstellungen ==&lt;br /&gt;
Damit die zu schaltenden Geräte überhaupt in der Homebridge aufgenommen werden muss man sie im Raum Homekit hinzufügen.&lt;br /&gt;
&lt;br /&gt;
Um HM-CC-RT-DN Thermostate steuern zu können, muss folgendes attribute gesetzt werden&lt;br /&gt;
# attr Heizung Subtype thermostat&lt;br /&gt;
Für einen Dummy muss man folgendes machen.&lt;br /&gt;
# attr Dummy genericDeviceType switch&lt;br /&gt;
# attr Dummy setList on off&lt;br /&gt;
&lt;br /&gt;
== HomeKit in iOS einrichten ==&lt;br /&gt;
Um FHEM über Homebridge in iOS nutzen zu können, muss HomeKit eingerichtet werden. &lt;br /&gt;
&lt;br /&gt;
Es gibt verschiedene Apps. Im folgenden wird die App EVE von Elgato empfohlen, die aus dem App-Store geladen werden muss.&lt;br /&gt;
In der App auf:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
Gerät hinzufügen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es sollte ein Gerät mit der Bezeichnung &amp;quot;Homebridge&amp;quot; zur Auswahl erscheinen. Zur Ersteinrichtung auf PIN manuell eingeben gehen und (falls in der config.json nicht geändert):&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
031-45-154&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
eingeben.&lt;br /&gt;
&lt;br /&gt;
Im Anschluss können die Devices nach Belieben in verschiedene Räume zugeteilt werden, sowie Szenen und Bereiche erstellt werden.&lt;br /&gt;
&lt;br /&gt;
== HomeBridge Allgemein ==&lt;br /&gt;
Nach allen Änderungen die in FHEM gemacht werden, welche Homebridge betreffen, muss Homebridge neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Der Neustart ist abhängig davon, wie man Homebridge gestartet hat.&lt;br /&gt;
&lt;br /&gt;
Bitte den entsprechenden Methoden entnehmen.&lt;br /&gt;
&lt;br /&gt;
== Steuerung von MiLight Allgemein ==&lt;br /&gt;
Wie hier im Forum http://forum.fhem.de/index.php/topic,32652.msg351706.html#msg351706 erwähnt, ist es möglich auch MiLight gGeräte per Siri anzusprechen.&lt;br /&gt;
Hierzu muss die config.jason angepasst werden.&lt;br /&gt;
&lt;br /&gt;
1. Es muss die Bridge hinterlegt werden. Beispiel&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;platform&amp;quot;: &amp;quot;MiLight&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;MiLight&amp;quot;,&lt;br /&gt;
            &amp;quot;ip_address&amp;quot;: &amp;quot;192.168.001.033&amp;quot;,&lt;br /&gt;
            &amp;quot;port&amp;quot;: 8899,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;rgbw&amp;quot;,&lt;br /&gt;
            &amp;quot;delay&amp;quot;: 30,&lt;br /&gt;
            &amp;quot;repeat&amp;quot;: 3,&lt;br /&gt;
            &amp;quot;zones&amp;quot;:[&amp;quot;Wohnzimmer Lampen&amp;quot;,&amp;quot;Badezimmer Lampen&amp;quot;,&amp;quot;Büro Lampen&amp;quot;,&amp;quot;Keller Lampen&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Es muss für jedes zu Steuernde Gerät ein Dummy angelegt werden. Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;accessory&amp;quot;: &amp;quot;Http&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Kitchen Lamp&amp;quot;,&lt;br /&gt;
            &amp;quot;on_url&amp;quot;: &amp;quot;https://192.168.1.22:3030/devices/23222/on&amp;quot;,&lt;br /&gt;
            &amp;quot;off_url&amp;quot;: &amp;quot;https://192.168.1.22:3030/devices/23222/off&amp;quot;,&lt;br /&gt;
            &amp;quot;brightness_url&amp;quot;: &amp;quot;https://192.168.1.22:3030/devices/23222/brightness/%b&amp;quot;,&lt;br /&gt;
            &amp;quot;http_method&amp;quot;: &amp;quot;POST&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schalten mit Siri ==&lt;br /&gt;
&#039;&#039;&#039;HolyMoly&#039;&#039;&#039; aus dem FHEM-Forum hat ein paar Beispiele gegeben, wie man Siri dazu bringt Devices zu schalten:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Schalte alle Lampen im Obergeschoss ein.&amp;quot;&lt;br /&gt;
&amp;quot;Schalte Chloes Licht aus.&amp;quot;&lt;br /&gt;
&amp;quot;Dimme das Licht in der Küche.&amp;quot;&lt;br /&gt;
&amp;quot;Dimme das Licht im Esszimmer auf 50 %.&amp;quot;&lt;br /&gt;
&amp;quot;Stelle das Licht in der Küche am hellsten ein.&amp;quot;&lt;br /&gt;
&amp;quot;Stelle die Temperatur im Tahoe-Haus auf 22 °C ein.&amp;quot;&lt;br /&gt;
&amp;quot;Stelle das Thermostat im Erdgeschoss auf 21 °C ein.&lt;br /&gt;
&amp;quot;Schalte den Drucker im Büro ein.&amp;quot;&lt;br /&gt;
&amp;quot;Siri, bereite alles für eine Party vor.&amp;quot;&lt;br /&gt;
&amp;quot;Bereite das Ambiente fürs Abendessen vor.&amp;quot;&lt;br /&gt;
&amp;quot;Aktiviere den Nachtruhemodus.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittlerweile kann Siri auch noch die Lichtfarbe von LEDs ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unterstütze Devices ==&lt;br /&gt;
Das Fhem Plugin von {{Link2FU|430|Andre (justme1968)}} unterstützt folgende Geräte&lt;br /&gt;
&lt;br /&gt;
    switches (devices with set on and set off commands)&lt;br /&gt;
    lights (devices with set on and set off commands)&lt;br /&gt;
    homematc and FS20 dimmers (devices with set on, set off and set dim or set pct commands)&lt;br /&gt;
    HUE, WifiLight, SWAP_0000002200000003 (hue, sat, bri, rgb)&lt;br /&gt;
    homematic, max and pid20 thermostats&lt;br /&gt;
    homematic blinds&lt;br /&gt;
    hommatic, MAX and FHTTK contact sensors (door, window)&lt;br /&gt;
    HM-SEC-WIN, HM-SEC-KEY&lt;br /&gt;
    presence, ROOMMATE&lt;br /&gt;
    SONOS (power, volume)&lt;br /&gt;
    harmony scenes&lt;br /&gt;
    temperaturecw and humidity sensors&lt;br /&gt;
    CO20 air quality sensor&lt;br /&gt;
    probably some more ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hue&amp;diff=12437</id>
		<title>Hue</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hue&amp;diff=12437"/>
		<updated>2015-10-04T10:34:48Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* HUE-Device */  color-icon ist falsch, color-icons ist korrekt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;{{Infobox Modul&lt;br /&gt;
|Name=HUEBridge&lt;br /&gt;
|ModPurpose=Anbindung Bridge des Phillips Hue Lighting System&lt;br /&gt;
|ModType=d&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
|ModCmdRef=HUEBridge&lt;br /&gt;
|ModForumArea=Beleuchtung&lt;br /&gt;
|ModTechName=30_HUEBridge.pm&lt;br /&gt;
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=HUEDevice&lt;br /&gt;
|ModPurpose=Ansteuerung Geräte des Phillips Hue Lighting System über HUEBridge&lt;br /&gt;
|ModType=d&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
|ModCmdRef=HUEDevice&lt;br /&gt;
|ModForumArea=Beleuchtung&lt;br /&gt;
|ModTechName=31_HUEDevice.pm&lt;br /&gt;
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HUE-Bridge ==&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung in fhem ===&lt;br /&gt;
Die Einrichtung ist wirklich einfach. Mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define Wiesollesheißen HUEBridge eu.re.ip.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird die Bridge eingebunden. Dann einfach auf den runden Knopf in der Mitte der Bridge drücken und sie wird von Fhem erkannt. Die drei Lampen des Starterkits werden automatisch erkannt und sind ansteuerbar -&amp;gt; fertig!&lt;br /&gt;
&lt;br /&gt;
WICHTIG: danach in Fhem ein mal die Konfiguration speichern damit der Pairing-Key gesichert wird. Sonst muss bei nächsten Fhem-Neustart das Paring erneut durchgefürt werden.&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Anleitung mit Bildern zudem unter: http://www.meintechblog.de/2014/11/philips-hue-so-klappt-die-integration-in-fhem/&lt;br /&gt;
&lt;br /&gt;
=== Nonblocking ===&lt;br /&gt;
Wenn man möchte, dass die Versuche, die HUEBridge zu kontaktieren, FHEM nicht blockieren, sollte man &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;attr &amp;lt;HUEBridge_Name&amp;gt; httpUtils 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
setzen.&lt;br /&gt;
&lt;br /&gt;
== HUE-Device ==&lt;br /&gt;
Als Gerät können alle Hue und LightLink kompatiblen Modelle verwendet werden. Dies sind zur Zeit (Anfang 2014):&lt;br /&gt;
*HueBulbs (alle drei Modelle) &lt;br /&gt;
*Friends of Hue LightStrips und LivingColors Bloom &lt;br /&gt;
*LivingColors ab gen2&lt;br /&gt;
*LivingColors Bloom und Iris&lt;br /&gt;
*LivingWhites Energiesparlampen&lt;br /&gt;
*LivingWhites Leuchtenadapter&lt;br /&gt;
Diese sind jeweils über eine Bridge (HueDevice) aus steuerbar. Die LivingColors und LivingWhites Geräte sind vorher mit Hilfe einer LivingColors oder LivingWhites Fernbedienung an der Bridge anzulernen.&lt;br /&gt;
=== Grundlagen - Farbmodelle ===&lt;br /&gt;
Ein HueDevice kann per set-Befehl über unterschiedliche Farbmodelle gesteuert werden. In der folgenden Tabelle ist dargestellt, welche Werte-Kombinationen sinnvoll sind:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Farbmodell !! Bestandteile !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| xyY || x- und y-Koordinate im Farbraum, Y ist die Helligkeit || &amp;lt;code&amp;gt; set bulb1 xy 0.4595,0.4105 : bri 220 &amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| hue,sat,bri || Farbwert, Sättigung und Helligkeit || &amp;lt;code&amp;gt; set bulb1 hue 14922 : sat 144 : bri 220 &amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ct || Farbwert über Farbtemperatur || &amp;lt;code&amp;gt; set bulb1 color 2600 &amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rgb || Farbbestandteile rot, grün und blau || &amp;lt;code&amp;gt; set bulb1 rgb FFC698 &amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Zur Regelung der Helligkeit sind die Befehle &#039;&#039;bri&#039;&#039; und &#039;&#039;pct&#039;&#039; gleichwertig. &#039;&#039;bri&#039;&#039; hat den Bereich 0..254, &#039;&#039;pct&#039;&#039; 0..100 .&amp;lt;br&amp;gt;&lt;br /&gt;
Das Modul lässt die Mischung von Angaben aus unterschiedlichen Farbmodellen technisch zu, jedoch sind diese nicht immer sinnvoll.&lt;br /&gt;
&lt;br /&gt;
=== Darstellung im Webfrontend ===&lt;br /&gt;
Wenn man die SVG Icons verwendet ist es sinnvoll, das Attribut color-icons zu setzen. Mit &amp;lt;code&amp;gt;attr HUEDevice1 color-icons 2&amp;lt;/code&amp;gt; werden z.B. die Farben und der Dimmzustand der Lampe als Icon dargestellt.&lt;br /&gt;
Damit das ganze funktioniert, müsst ihr auch noch das &amp;lt;code&amp;gt;attr WEB iconPath fhemSVG:openautomation:default&amp;lt;/code&amp;gt; setzen.&lt;br /&gt;
&lt;br /&gt;
== RaspBee ==&lt;br /&gt;
Das HUEBridge Modul unterstützt in einer beta version auch das RaspBee ZigBee Modul über die zugehörige deCONZ Software und die Wireless Light Control WebApp mit dem REST plugin. Die hierzu erhältlichen Funk-Vorschaltgeräte sind noch nicht getestet sollten aber auch funktionieren.&lt;br /&gt;
&lt;br /&gt;
== HUE auf der Fritzbox ==&lt;br /&gt;
Da auf der FB standardmäßig kein JSON installiert ist, muss dies nachinstalliert werden:  Man lädt das JSON-Paket http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz, packt es aus und kopiert den Inhalt vom &amp;lt;b&amp;gt;lib-Verzeichnis&amp;lt;/b&amp;gt; nach \fhem\lib\perl5\site_perl\5.12.2&lt;br /&gt;
&lt;br /&gt;
== HUE auf der Synology Diskstation ==&lt;br /&gt;
Da auf der DS standardmäßig kein JSON installiert ist, muss dies nachinstalliert werden, die Anleitung dazu {{Link2Forum|Topic=19093|Message=224641|LinkText=hier}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Lichteffektgeräte]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Denon_AV-Receiver&amp;diff=10077</id>
		<title>Denon AV-Receiver</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Denon_AV-Receiver&amp;diff=10077"/>
		<updated>2015-02-14T13:53:41Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: github url gefixt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:DENON_AVR}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Anbindung Denon und Marantz AV-Receiver&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModFTopic=11338&lt;br /&gt;
|ModCmdRef=DENON_AVR&lt;br /&gt;
|ModForumArea=Multimedia&lt;br /&gt;
|ModTechName=71_DENON_AVR.pm&lt;br /&gt;
|ModOwner={{Link2FU|5244|xusader}}&lt;br /&gt;
}}&lt;br /&gt;
== Features / Funktionen ... ==&lt;br /&gt;
&lt;br /&gt;
Für AV-Receiver des Herstellers D&amp;amp;M Holding (Marken Denon und Marantz) gibt es ein Fhem-Modul, welches allerdings aktuell noch nicht offiziell aufgenommen wurde. Es gibt entsprechend auch noch keinen Eintrag in der CommandRef. Dieser Wiki-Eintrag enthält daher das Wichtigste zum Einstieg in die Nutzung.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem ==&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen AVR===&lt;br /&gt;
&lt;br /&gt;
Der zu steuernde AVR sollte so eingestellt sein, dass er auch im Stand-by eine Netzwerkverbindung hat (s. jeweilige Anleitung). Außerdem muss die IP des AVR bekannt sein; hierzu dem AVR entweder direkt oder über den DHCP-Server eine feste IP zuordnen.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
Das Modul von [https://github.com/xusader/fhem-denon/raw/master/FHEM/71_DENON_AVR.pm github] laden, im Modules-Verzeichnis speichern (Rechte beachten!) und durch&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;reload 71_DENON_AVR.pm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in Fhem laden.&lt;br /&gt;
&lt;br /&gt;
===Einrichten===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;define &amp;lt;gewählter_Gerätename&amp;gt; DENON_AVR &amp;lt;IP_des_Gerätes&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel also:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;define Marantz DENON_AVR 192.168.1.22&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Readings===&lt;br /&gt;
&lt;br /&gt;
Zur Nutzung in Fhem können die folgenden Readings (Beispiel) ausgewertet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:500px;&amp;quot;&amp;gt;&lt;br /&gt;
     2015-02-06 13:15:05   input           MPLAY &lt;br /&gt;
     2015-02-06 13:15:05   mute            off &lt;br /&gt;
     2015-02-06 13:50:10   power           =2 &lt;br /&gt;
     2015-02-06 13:16:08   sound           STEREO &lt;br /&gt;
     2015-02-06 13:15:04   state           opened &lt;br /&gt;
     2015-02-06 13:16:08   volume          40 &lt;br /&gt;
     2015-02-06 13:16:08   volumeStraight  -40 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;volumeStraight&amp;lt;/code&amp;gt; entspricht dabei der Lautstärkeangabe in dB.&lt;br /&gt;
&lt;br /&gt;
Das Reading &amp;lt;code&amp;gt;power&amp;lt;/code&amp;gt; scheint gerätespezifisch mehr als an oder aus auszugeben. Bei einem Maratz SR7008 z.B. ist &amp;quot;1&amp;quot; aus, &amp;quot;2&amp;quot; an. Davor steht teilweise &amp;quot;=&amp;quot;, teilweise &amp;quot;r:&amp;quot;, bisher ohne erkennbare Systematik. &lt;br /&gt;
&lt;br /&gt;
===Ein-/Ausschalten===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;set &amp;lt;gewählter_Gerätename&amp;gt; [on|off]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Stumm an/aus===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;set &amp;lt;gewähler_Gerätename&amp;gt; mute [on|off]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quellenwahl===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;set &amp;lt;gewählter_Gerätename&amp;gt; input &amp;lt;Quelle&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Quelle&amp;gt; hängt dabei vom jeweiligen AVR ab. Eine Übersicht über mögliche Quellen sind z.B. in der am Ende dieses Artikels verlinkten Übersicht über Command-Codes für viele Geräte abrufbar.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel für die Quelle &amp;quot;Media Player&amp;quot; bei Marantz:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;set Marantz input MPLAY&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Beim Neustart von Fhem oder beim Einschalten des Stroms für den AVR ist der Status des Moduls &amp;quot;disconnected&amp;quot;. Das lässt sich nur über die Neuinstallation des Moduls oder über ein &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;modify &amp;lt;gewählter_Gerätename&amp;gt; &amp;lt;IP_des_Gerätes&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beheben. Läuft der AVR an einer von Fhem ansteuerbaren Steckdose, lässt sich das für das Einschalten des AVR auch automatisieren, z.B.:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;define Poweron notify FS20Schalter:on sleep 75;;modify &amp;lt;gewählter_Gerätename&amp;gt; &amp;lt;IP&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* {{Link2Forum|Topic=11338}} im Fhem-Forum&lt;br /&gt;
* [http://www.denon.de/ Herstellerseite zur Marke Denon]&lt;br /&gt;
* [http://www.marantz.de/ Herstellerseite zur Marke Marantz]&lt;br /&gt;
* [http://www.awe-europe.com/ir_232.html Seite, auf der die Command-Codes für viele Geräte abrufbar sind]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Unterhaltungselektronik]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_Alarm&amp;diff=9884</id>
		<title>Modul Alarm</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_Alarm&amp;diff=9884"/>
		<updated>2015-02-05T11:39:31Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: Verweise innerhalb der Seite zu internen Verweisen gemacht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschreibt die Konfiguration und Verwendung des Moduls 95_Alarm.pm.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Das Modul &#039;&#039;95_Alarm.pm&#039;&#039; stellt eine komfortable Oberfläche bereit, um per Webinterface bestimmte auslösende Elemente (nachfolgend &#039;Sensoren&#039; genannt) mit bestimmten Aktionen (nachfolgend &#039;Aktoren&#039; genannt) zu verknüpfen - und zwar nur innerhalb bestimmter Zeitfenster sowie an- und abschaltbar (&amp;quot;scharf/armed&amp;quot; bzw. &amp;quot;unscharf/disarmed&amp;quot;). Diese Verknüpfungen werden als &amp;quot;normale&amp;quot; FHEM-Definitionen gespeichert.&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
Damit FHEM-Devices als Aktoren oder Sensoren für die Alarmanlage genutzt werden können, müssen zwei neue globale Attribute eingeführt werden. Dazu muss in der Grundkonfiguration von FHEM die Zeile mit der Definition der nutzerspezifischen Attribute &#039;&#039;userattr&#039;&#039; angepasst werden:&lt;br /&gt;
 attr global userattr &#039;&#039;&#039;alarmDevice alarmSettings&#039;&#039;&#039; devStateIcon devStateStyle ...&#039;&#039;(hier folgen weitere Attribute)&#039;&#039;&lt;br /&gt;
*Soll ein FHEM-Device als Sensor für die Alarmanlage genutzt werden, wird der Wert seines &#039;&#039;alarmDevice&#039;&#039;-Attributes auf &#039;Sensor&#039; gesetzt.&lt;br /&gt;
*Soll ein FHEM-Device als Aktor für die Alarmanlage genutzt werden, wird der Wert seines &#039;&#039;alarmDevice&#039;&#039;-Attributes auf &#039;Actor&#039; gesetzt&lt;br /&gt;
*Das Attribute &#039;&#039;alarmSettings&#039;&#039; wird beim Setzen der Alarme auf der Alarmkonfigurationsseite automatisch befüllt.&lt;br /&gt;
Ferner muss das Modul &#039;&#039;95_Alarm.pm&#039;&#039; im Modulpfad installiert werden, ebenso die JavaScript-Datei &#039;&#039;alarm.js&#039;&#039; in www/pgm2.&lt;br /&gt;
==Definition==&lt;br /&gt;
Die Alarmanlage - hier mit dem Namen &#039;&#039;AAA&#039;&#039; versehen - selbst wird über&lt;br /&gt;
 define AAA Alarm&lt;br /&gt;
 attr AAA room AlarmRoom&lt;br /&gt;
definiert. Zusätzlich soll sie im oberen Menü des Webinterfaces auftauchen, dazu benötigen wir noch (wird normalerweise automatisch mit angelegt):&lt;br /&gt;
 define AAA_weblink weblink htmlCode {Alarm_Html(&amp;quot;AAA&amp;quot;)}&lt;br /&gt;
 attr AAA_weblink room AlarmRoom&lt;br /&gt;
*Der Raum &#039;&#039;AlarmRoom&#039;&#039; ist ein versteckter Raum, der nicht im unteren Menü auftaucht.&lt;br /&gt;
*Es wird ein weiterer Raum benötigt, der in der gegenwärtigen Fassung des Moduls den Namen &#039;&#039;Alarm&#039;&#039; trägt&lt;br /&gt;
&lt;br /&gt;
==Konfiguration==&lt;br /&gt;
Beim Anklicken des Begriffes &#039;&#039;Alarm&#039;&#039; im oberen Menü des Webinterfaces wird die Alarmkonfiguration angezeigt.  &lt;br /&gt;
===Settings===&lt;br /&gt;
Im oberen Bereich sind drei Eingabefelder zu sehen:&lt;br /&gt;
*Arm Delay ist eine Verzögerungszeit, die zwischen dem Scharfschalten des Alarms und der tatsächlichen Wirksamkeit vergeht. Diese Zeit kann beispielsweise genutzt werden, um das Haus ohne Auslösung des Alarms zu verlassen.  &lt;br /&gt;
*Arm Action ist ein FHEM-Befehl, der beim Scharfschalten ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagen lässt &#039;&#039;Alarmanlage scharf geschaltet&#039;&#039;.&lt;br /&gt;
*Disarm Action ist ein FHEM-Befehl, der beim Unscharfschalten ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagen lässt &#039;&#039;Alarmanlage unscharf geschaltet&#039;&#039;.&lt;br /&gt;
*Cancel Action ist ein FHEM-Befehl, der beim Widerrufen eines Alarms ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagen lässt &#039;&#039;Alarm widerrufen&#039;&#039;.&lt;br /&gt;
Als Default sind 8 Alarmlevel möglich, in der Tabelle &#039;Settings&#039; können für jeden Level gesetzt werden:&lt;br /&gt;
*Startzeit und Endzeit des Alarmlevels&lt;br /&gt;
*Eine Nachricht zur Erläuterung des Alarms (Teil 2)&lt;br /&gt;
*Checkbox &#039;&#039;Armed&#039;&#039; = scharf&lt;br /&gt;
*Button &#039;&#039;Cancel&#039;&#039; zum Canceln = Aufheben des Alarms&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_settings.png]]&lt;br /&gt;
&lt;br /&gt;
===Sensors===&lt;br /&gt;
Danach wird die Tabelle der Sensoren angezeigt. Für jeden Sensor kann gesetzt werden:&lt;br /&gt;
*Alarmlevel, die hierdurch ausgelöst werden&lt;br /&gt;
*Ein regulärer Ausdruck, bei dessen Erkennung die Auslösung erfolgt &lt;br /&gt;
*Eine Nachricht zur Erläuterung des Alarms (Teil 1)&lt;br /&gt;
*Ein Selektor, um festzulegen, ob dieser Sensor den Alarm &lt;br /&gt;
**auslöst (=Raise),&lt;br /&gt;
**widerruft (=Cancel),&lt;br /&gt;
**scharf schaltet (=Arm) oder&lt;br /&gt;
**unscharf schaltet (=Disarm).&lt;br /&gt;
&#039;&#039;&#039;Achtung: Es ist zwingend notwendig, dass für einen auszulösenden Alarmlevel auch ein Sensor für den Widerruf (=Cancel) des Alarms definiert wird, ansonsten ignoriert das Modul die Definition dieses Levels.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die insgesamt in den &#039;&#039;STATE&#039;&#039; der Alarmanlage geschriebene Nachricht besteht dann aus&lt;br /&gt;
 (Anzeige der Zustände) (Nachricht Teil 1)&#039; &#039;(Nachricht Teil 2).&lt;br /&gt;
Bitte weiter unten nachlesen, was mit der [[#Anzeige der Zustände|Anzeige der Zustände]] gemeint ist.&lt;br /&gt;
In diesen Nachrichten werden die folgenden Ersetzungen vorgenommen&lt;br /&gt;
* $NAME vird durch den Namen des auslösenden Devices ersetzt&lt;br /&gt;
* $EVENT wird durch den kompletten Event ersetzt&lt;br /&gt;
* $EVTPART1... wird durch den 1. Teilstring des Events gefüllt, etc.&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_sensors.png]]&lt;br /&gt;
&lt;br /&gt;
===Actors===&lt;br /&gt;
Anschließend wird die Tabelle der Aktoren angezeigt. Für jeden Aktor kann gesetzt werden: &lt;br /&gt;
*Alarmlevel, die diesen Aktor starten&lt;br /&gt;
*Ein FHEM-Kommando zum Starten des Aktors&lt;br /&gt;
*Ein FHEM-Kommando zum Stoppen des Aktors&lt;br /&gt;
*Eine Zeitverzögerung  - entweder als Angabe von Sekunden (&amp;lt;60) oder im Format mm:ss&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_actors.png]]&lt;br /&gt;
&lt;br /&gt;
==Einrichten==&lt;br /&gt;
Durch Anklicken des Buttons &#039;&#039;Set Alarms&#039;&#039; werden die &#039;&#039;alarmSettings&#039;&#039;-Attribute befüllt. &lt;br /&gt;
&#039;&#039;&#039;Achtung, Folgendes beachten&#039;&#039;&#039;&lt;br /&gt;
*Es ist zwingend notwendig, dass für einen auszulösenden Alarmlevel auch ein Sensor für den Widerruf (=Cancel) des Alarms definiert wird, ansonsten ignoriert das Modul die Definition dieses Levels.&lt;br /&gt;
*Der Button &#039;&#039;Set Alarms&#039;&#039; wird nur funktionieren, wenn keine [[#Sperrung|Sperrung]] vorliegt, siehe unten.&lt;br /&gt;
*Es empfiehlt sich, danach ein &#039;&#039;Save Config&#039;&#039; auszuführen, damit die Attribute und Notifier permanent sind.&lt;br /&gt;
&lt;br /&gt;
===Anzeige der Zustände===&lt;br /&gt;
Auf Wunsch können die Zustände der Alarmanlage zusammen mit der konkreten Meldung im internal &#039;&#039;STATE&#039;&#039; (bzw. reading &#039;&#039;state&#039;&#039;, beide sind in diesem Modul identisch) angezeigt werden.&lt;br /&gt;
Hierfür gibt es ein Attribut &#039;&#039;statedisplay&#039;&#039; mit den folgenden möglichen Werten, die nachfolgend am Beispiel für den Zustand &amp;quot;Alarm Level 1 ausgelöst&amp;quot; erläutert sind:&lt;br /&gt;
* &#039;&#039;none&#039;&#039; - keine Anzeige&lt;br /&gt;
* &#039;&#039;simple&#039;&#039; - OXOOOOOO&lt;br /&gt;
* &#039;&#039;color&#039;&#039; - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 0 &amp;lt;span style=&amp;quot;width:1ex;color:red&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; 2 3 4 5 6 7&amp;lt;/span&amp;gt;&lt;br /&gt;
* &#039;&#039;table&#039;&#039;&amp;amp;nbsp;-&amp;amp;nbsp;&amp;lt;table&amp;gt;&amp;lt;tr style=&amp;quot;height:1ex&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:red&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Problem ist, dass möglicherweise das internal &#039;&#039;STATE&#039;&#039; an anderer Stelle verwendet werden soll - z.B. beim Versenden von Mails als &lt;br /&gt;
 Value(&#039;AAA&#039;)&lt;br /&gt;
Es macht natürlich keinen Sinn, eine HTML-Tabelle in eine Mail zu packen. Deshalb sollte für die Weiterverarbeitung statt des obigen Code verwendet werden&lt;br /&gt;
 $defs{&#039;AAA&#039;}{READINGS}{&amp;quot;short&amp;quot;}{VAL}&lt;br /&gt;
Dies enthält nur die Meldung, nicht aber die Anzeige aller Zustände. Alternativ kann man auch die Zustandsanzeige durch Wahl des Attributwertes &#039;&#039;none&#039;&#039; komplett abstellen.&lt;br /&gt;
===Sperrung===&lt;br /&gt;
Das Attribut &#039;&#039;lockstate&#039;&#039; muss den Wert &#039;&#039;unlocked&#039;&#039; haben, damit durch Anklicken des Buttons &#039;&#039;Set Alarms&#039;&#039; die &#039;&#039;alarmSettings&#039;&#039;-Attribute befüllt werden können. Das ist in der Regel beim ersten Laden des Moduls &#039;&#039;&#039;nicht&#039;&#039;&#039; der Fall, hierzu muss also das Attribut von Hand auf den richtigen Wert gesetzt werden !&lt;br /&gt;
&lt;br /&gt;
=Sensoren=&lt;br /&gt;
==Rauchalarm==&lt;br /&gt;
&#039;&#039;&#039;Dieser Alarm ist mit Lebensgefahr verbunden und wird deshalb unabhängig von FHEM ausgelöst, und von FHEM nur registriert und mit weiteren Aktoren verbunden&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel werden vernetzte Rauchmelder des Typs [[HM-SEC-SD_Rauchmelder|HM-SEC-SD]] verwendet. Deren Teamleader erhalten das Attribut &#039;&#039;alarmDevice Sensor&#039;&#039;, so dass sie in der Sensorenliste der Alarmanlage auftauchen. Sie lösen den Alarm mit dem höchsten Level aus. Die Realisierung lässt sich aber auch über beliebige andere in FHEM eingebundene Rauchmelder erreichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_smoke.png]]&lt;br /&gt;
&lt;br /&gt;
==Öffnung von Fenstern oder Türen ==&lt;br /&gt;
Dies dient der Überwachung von &#039;&#039;&#039;Zustandsänderungen&#039;&#039;&#039;, ebenso wie zur &#039;&#039;&#039;Überprüfung eines statischen Zustands&#039;&#039;&#039;&lt;br /&gt;
===Szenarien===&lt;br /&gt;
====Kontrollrunde====&lt;br /&gt;
Dieses Alarmszenario (Alarmlevel 4) liegt vor, wenn die Hausbewohner anwesend sind, aber irgendwann zu Bett gehen wollen und vorher noch überprüfen, ob auch alle Türen und das Garagentor geschlossen sind. Sagen wir, beginnend um 22:00 bis 23:59. Man könnte diesen Alarmlevel aber auch durch einen externen Regensensor auslösen, der die Dachfenster auf ihren Öffnungszustand untersucht. Jedenfalls sollte dieser Alarmlevel immer scharf sein.&lt;br /&gt;
&lt;br /&gt;
Durch einen externen Auslöser (sagen wir, beginnend um 22:00 Uhr) wird in periodischen Abständen eine Hilfsroutine gestartet, welche die Zustandsprüfung vornimmt und registriert. Nur wenn diese Registrierung eine Öffnung ergibt, wird der Alarm ausgelöst. Dieser Alarmlevel gehört also zur Kategorie &#039;&#039;Warnung&#039;&#039; und wird deshalb nur eine moderate Signalisierung benötigen - beispielsweise&lt;br /&gt;
*eine Nachricht mit gelbem Hintergrund erscheint auf einem [[Digitaler_Bilderrahmen_mit_lcd4linux|Digitalen Bilderrahmen]]&lt;br /&gt;
*eine Nachricht erscheint auf einem [[1-Wire_Textdisplay]] &lt;br /&gt;
*eine LED geht an auf dem [[1-Wire LED-Statusmonitor]]&lt;br /&gt;
&lt;br /&gt;
====Zutritt====&lt;br /&gt;
Dieses Alarmszenario (Alarmlevel 5) liegt vor, wenn die Hausbewohner anwesend sind, aber vermutlich schlafen gegangen sind. Sagen wir, von 0:00 bis 5:00. &lt;br /&gt;
&lt;br /&gt;
Wenn morgens um 4:00 die Haustür geöffnet wird, handelt es sich entweder um ein spätes Heimkommen eines Hausbewohners von einer Party - oder um einen Einbruchsversuch. Der Partygeher sollte also eine gewisse Warnungszeit bekommen, bevor ein moderater akustischer Aktor (sagen wir, ein Funkgong) losgeht. Dieser Aktor  muss deshalb mit einer Verzögerung eingeschaltet werden, und der Partygeher erhält eine Warnung. Diese Warnung - sagen wir, eine bestimmte Lampe geht an -  informiert ihn, dass er innerhalb von 30 Sekunden einen bestimmten Schalter betätigen muss. Etwa den für genau diese Lampe, um sie auszuschalten. Der Einbrecher kennt diesen Schalter nicht, der moderate Alarm wird also die schlafenden Hausbewohner wecken und ihn abschrecken.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich verfügt dieser Level auch noch über einen Partymodus: Mit diesem kann er für 24 Stunden abgestellt werden, so dass man auch um 3:00 in der Frühe die eigenen Partygäste aus dem Haus lassen kann, ohne ihn auszulösen.&lt;br /&gt;
====Einbruch====&lt;br /&gt;
Dieses Alarmszenario (Alarmlevel 6) liegt vor, wenn die Hausbewohner abwesend sind und diesen Level vorher scharf geschaltet haben - und idealerweise von 0:00 bis 23:59. Jeder Zutritt zu Haus löst diesen Alarm aus, und der akustische Aktor kann durchaus kräftig sein (etwa Einschalten der Rauchmelder für 1 Minute). &lt;br /&gt;
&lt;br /&gt;
Da die Auslösung auch erfolgt, wenn der Hausbesitzer heimkommt, muss der akustische Aktor eine Verzögerung haben und innerhalb dieser einer Warnung gegeben werden, z.B. indem  zunächst eine bestimmte Lampe angeht. Dies informiert ihn, dass er innerhalb von 30 Sekunden einen bestimmten Schalter betätigen muss. Etwa die Kombination, um diesen Alarmlevel unscharf zu schalten. Der Einbrecher kennt diese Kombination nicht, die Beleuchtung wird ihn also zunächst abschrecken und der nachfolgende laute akustische Aktor auch die Nachbarn wecken.&lt;br /&gt;
===Zustandsänderung===&lt;br /&gt;
Dazu werden alle überwachten Fenster- und Türkontakte mit dem Attribut &#039;&#039;alarmDevice Sensor&#039;&#039; versehen, so dass sie in der Sensorenliste der Alarmanlage auftauchen. In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_tf.png]]&lt;br /&gt;
&lt;br /&gt;
===Zustandsprüfung===&lt;br /&gt;
Dies dient der Überprüfung eines &#039;&#039;&#039;statischen Zustands&#039;&#039;&#039;, konkret ob und welche Fenster oder Türen offen sind - z.B. abends, oder bei Regenwetter. Dazu benötigen wir drei &#039;&#039;dummy&#039;&#039; Devices, von denen zwei als &#039;&#039;alarmDevice Sensor&#039;&#039; und einer als &#039;&#039;alarmDevice Actor&#039;&#039; attributiert werden und somit in der Sensoren- bzw. Aktorenliste der Alarmanlage auftauchen. &lt;br /&gt;
&lt;br /&gt;
 define TFOpen.warn dummy&lt;br /&gt;
 attr TFOpen.warn alarmDevice Sensor&lt;br /&gt;
 &#039;&#039;&#039;attr TFOpen.warn alarm4,|TFOpen.warn:.*[TF].*|$EVENT|on&#039;&#039;&#039; (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr TFOpen.warn group windowDetector&lt;br /&gt;
 attr TFOpen.warn room Alarm&lt;br /&gt;
&lt;br /&gt;
 define TFClose.warn dummy&lt;br /&gt;
 attr TFClose.warn alarmDevice Sensor&lt;br /&gt;
 &#039;&#039;&#039;attr TFClose.warn alarmSettings alarm4,|TFClose.warn:yes|Alle zu|off&#039;&#039;&#039; (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr TFClose.warn group windowDetector&lt;br /&gt;
 attr TFClose.warn room Alarm&lt;br /&gt;
&lt;br /&gt;
 define TFOpen.check dummy&lt;br /&gt;
 attr TFOpen.check alarmDevice Actor&lt;br /&gt;
 &#039;&#039;&#039;attr TFOpen.check alarmSettings alarm4,|{HouseOpen()}||10:00&#039;&#039;&#039; (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr TFOpen.check group windowDetector&lt;br /&gt;
 attr TFOpen.check room Alarm&lt;br /&gt;
&lt;br /&gt;
[[Datei:TFAlarm.png|left|thumb|200px|]]Als nächstes muss eine Überwachungsroutine geschrieben werden. Das kann entweder als FHEM-Skript geschehen, oder in der Datei 99_myUtils.pm als perl-Code. Dieses Unterprogramm muss &lt;br /&gt;
*den obigen &#039;&#039;dummy&#039;&#039; TFOpen.warn setzen, und zwar auf den oder die Namen der geöffneten Fenster und Türen oder &amp;quot;none&amp;quot;, wenn keine geöffnet sind.&lt;br /&gt;
*den obigen &#039;&#039;dummy&#039;&#039; TFClose.warn setzen, und zwar auf den Wert &amp;quot;no&amp;quot;, wenn irgendeine geöffnet ist und &amp;quot;yes&amp;quot;, wenn keine geöffnet sind.&lt;br /&gt;
Ein Beispiel für eine solche Überwachungsroutine ist weiter unten zu sehen.&lt;br /&gt;
&lt;br /&gt;
Diese Doppelung ist nötig, weil jeder Sensor nur mit einem notify in den Alarmen auftauchen kann - das dient der Sicherheit gegen Fehlkonfiguration und ist beabsichtigt.&lt;br /&gt;
&lt;br /&gt;
In dem nebenstehenden Flussdiagramm wird der Ablauf dargestellt, der sich mit diesem System ergibt. Dabei wird um 22:00 der erste Test auf ein ordnungsgemäß geschlossenes Haus gestartet - und bis Mitternacht alle 10 Minuten wiederholt. Alternativ könnte man das auch mit einem Regensensor als Erstauslöser koppeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispielcode für eine Überwachungsroutine:&lt;br /&gt;
&lt;br /&gt;
 sub HouseOpen()&lt;br /&gt;
 {&lt;br /&gt;
  my $kfo = 0;&lt;br /&gt;
  my $kfs = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $kto = 0;&lt;br /&gt;
  my $kts = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $str = &amp;quot;&amp;quot;;&lt;br /&gt;
  if( $main::value{&#039;BK.F&#039;} ne &amp;quot;Closed&amp;quot; ){&lt;br /&gt;
    $kfo++;&lt;br /&gt;
    $kfs = &amp;quot;BK/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if( $main::value{&#039;WK.F&#039;} ne &#039;Closed&#039; ){&lt;br /&gt;
    $kfo++;&lt;br /&gt;
    $kfs = $kfs.&amp;quot;WK/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if( $main::value{&#039;VK.T&#039;} ne &amp;quot;Closed&amp;quot; ){&lt;br /&gt;
    $kto++;&lt;br /&gt;
    $kts = &amp;quot;VK/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if( $main::value{&#039;WZ.T&#039;} ne &#039;Closed&#039; ){&lt;br /&gt;
    $kto++;&lt;br /&gt;
    $kts = $kts.&amp;quot;WZ/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
 if( ($kfo &amp;gt;= 1) &amp;amp;&amp;amp; ($kto == 0) ){&lt;br /&gt;
    $kfs = substr($kfs,0,-1);&lt;br /&gt;
    fhem(&amp;quot;define TFOpen.delay at +00:00:30 set TFOpen.warn $kfs Fenster&amp;quot;); &lt;br /&gt;
    fhem(&amp;quot;define TFClose.delay at +00:00:30 set TFClose.warn no&amp;quot;);&lt;br /&gt;
  }elsif( ($kfo == 0) &amp;amp;&amp;amp; ($kto &amp;gt;= 1) ){&lt;br /&gt;
    $kts = substr($kts,0,-1);&lt;br /&gt;
    fhem(&amp;quot;define TFOpen.delay at +00:00:30 set TFOpen.warn $kts Tür&amp;quot;); &lt;br /&gt;
    fhem(&amp;quot;define TFClose.delay at +00:00:30 set TFClose.warn no&amp;quot;);&lt;br /&gt;
  }elsif( ($kfo &amp;gt;= 1) &amp;amp;&amp;amp; ($kto &amp;gt;= 1)){&lt;br /&gt;
     $kts = substr($kts,0,-1);&lt;br /&gt;
     $kfs = substr($kfs,0,-1);&lt;br /&gt;
     $str = &amp;quot;$kts Tür + $kfs Fenster&amp;quot;;&lt;br /&gt;
     fhem(&amp;quot;define TFOpen.delay at +00:00:30 set TFOpen.warn $kts T / $kfs F&amp;quot;);&lt;br /&gt;
     fhem(&amp;quot;define TFClose.delay at +00:00:30 set TFClose.warn no&amp;quot;);&lt;br /&gt;
  }else{&lt;br /&gt;
     fhem(&amp;quot;set TFOpen.warn none&amp;quot;);&lt;br /&gt;
     fhem(&amp;quot;set TFClose.warn yes&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 return $str;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Batterie schwach bei FHEM-Devices==&lt;br /&gt;
Dieser Sensor besteht aus einem &#039;&#039;notify&#039;&#039; und einem &#039;&#039;dummy&#039;&#039;, der bei einer &#039;battery low&#039;-Meldung eines beliebigen FHEM-Device auf dessen Namen gesetzt wird. Der &#039;&#039;dummy&#039;&#039; wird als &#039;&#039;alarmDevice Sensor&#039;&#039; attributiert, so dass er in der Sensorenliste der Alarmanlage auftaucht. &lt;br /&gt;
	&lt;br /&gt;
 define LBatt.N notify .*:[Bb]attery.*[Ll]ow.* set LBatt.warn $NAME&lt;br /&gt;
 attr LBatt.N room Alarm&lt;br /&gt;
 attr LBatt.N group deviceDetector&lt;br /&gt;
&lt;br /&gt;
 define LBatt.warn dummy&lt;br /&gt;
 attr LBatt.warn alarmDevice Sensor&lt;br /&gt;
 attr LBatt.warn room Alarm&lt;br /&gt;
 attr LBatt.warn group deviceDetector&lt;br /&gt;
Auf einen Test, ob gleichzeitig bei anderen FHEM-Devices die Batterie ebenfalls schwach ist, wird hier verzichtet. Für diesen Sensor wird ein eigener Alarmlevel (niedriger Priorität) erzeugt. Bei einem beliebigen &#039;battery low&#039; Event wird somit der STATE der Alarmanlage gesetzt auf &#039;&#039;&#039;Batt. &amp;lt;devicename&amp;gt; schwach&#039;&#039;&#039;. Dieser Alarm muss manuell zurückgesetzt werden (schließlich sollten die Batterien ja erst gewechselt werden...) &lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_lbatt.png]]&lt;br /&gt;
&lt;br /&gt;
=Aktoren=&lt;br /&gt;
==Rauchmelder als Alarmsignal==&lt;br /&gt;
Für Alarme, bei denen es wirklich auf schnelle Reaktionen ankommt, kann man auch Rauchdetektoren verwenden, die über Funk aktivierbar sind. Im Beispiel werden vernetzte Rauchmelder des Typs [[HM-SEC-SD_Rauchmelder|HM-SEC-SD]] verwendet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Es ist sehr empfehlenswert, diesen Alarm auch wieder automatisch auszuschalten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein &#039;&#039;dummy&#039;&#039; erzeugt und mit &#039;&#039;alarmDevice Actor&#039;&#039; attributiert, so dass er in der Aktorenliste auftaucht:&lt;br /&gt;
&lt;br /&gt;
 define SD.alarm dummy&lt;br /&gt;
 attr SD.alarm alarmDevice Actor&lt;br /&gt;
 attr SD.alarm alarmSettings alarm7,|set TH.SD0 alarmOn|set TH.SD0 alarmOff|30&lt;br /&gt;
 attr SD.alarm group alarmActor&lt;br /&gt;
 attr SD.alarm room Alarm &lt;br /&gt;
In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_smokeactor.png]]&lt;br /&gt;
&lt;br /&gt;
==Funk-Türgong / MP3-Türgong als Alarmsignal==&lt;br /&gt;
Hier wird ein FS20-Türgong als akustisches Alarmsignal verwendet.&lt;br /&gt;
&lt;br /&gt;
 define WZ.Gong FS20 &amp;lt;adresse&amp;gt;&lt;br /&gt;
 attr WZ.Gong IODev CUL&lt;br /&gt;
 attr WZ.Gong alarmDevice Actor&lt;br /&gt;
 &#039;&#039;&#039;attr WZ.Gong alarmSettings alarm5,alarm6,|set WZ.Gong on||30&#039;&#039;&#039; (Vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr WZ.Gong group alarmActor&lt;br /&gt;
 attr WZ.Gong room Alarm,Erdgeschoss&lt;br /&gt;
In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_gongactor.png]]&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung eines MP3-Funkgongs (z.B. aus dem Homematic-Programm) kann man auf diesem eine ganze Menge verschiedene MP3-Dateien speichern, die z.B. Stimmenmeldungen &amp;quot;Alarmanlage scharf geschaltet&amp;quot; abgeben. Zur Erstellung dieser Meldungen hat es sich bewährt, einen kostenlosen Online-TTS (Text-to-Speech) Service zu nutzen, z.B. Ivona.&lt;br /&gt;
==Alarmierung per SMS== &lt;br /&gt;
Für Alarme, die man auch im Urlaub auf das Handy bekommen möchte, bedarf es natürlich eines Providers, der eine bestimmte Mailadresse als SMS weiterleitet. Ferner einer FHEM-Konfiguration, die Mails versenden kann. Dann wird ein &#039;&#039;dummy&#039;&#039; erzeugt und mit &#039;&#039;alarmDevice Actor&#039;&#039; attributiert, so dass er in der Aktorenliste auftaucht:&lt;br /&gt;
 define Mail.alarm dummy&lt;br /&gt;
 attr Mail.alarm alarmDevice Actor&lt;br /&gt;
 &#039;&#039;&#039;attr Mail.alarm alarmSettings alarm6,alarm7,|{DebianMail(&amp;lt;mailadresse&amp;gt;,&#039;Alarm&#039;,Value(&#039;AAA&#039;))}||30&#039;&#039;&#039; (automatisch erzeugt)&lt;br /&gt;
 attr Mail.alarm group alarmActor&lt;br /&gt;
 attr Mail.alarm room Alarm&lt;br /&gt;
In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_mailactor.png]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Modul_Alarm&amp;diff=9883</id>
		<title>Diskussion:Modul Alarm</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Modul_Alarm&amp;diff=9883"/>
		<updated>2015-02-05T11:33:01Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: Neuer Abschnitt /* Message Part 1 bei Sensoren nötig?  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Message Part 1 bei Sensoren nötig?  ==&lt;br /&gt;
&lt;br /&gt;
Im Screenshot sind Sensoren mit leerem Message Part 1 Feld abgebildet. In der Konstellation habe ich bei mir im Log den Fehler &amp;quot;[Alarm 6] not raised, alarmSensor ... has wrong settings&amp;quot; bekommen. Nach kurzem durchschauen des Codes habe ich dann noch eine Message ergänzt und konnte das Problem so lösen. &lt;br /&gt;
&lt;br /&gt;
Wenn der Entwickler dem zu zustimmt würde ich gerne die Beschreibung im Text auf &amp;quot;muss&amp;quot; statt &amp;quot;kann&amp;quot; für das Namensfeld ändern und den Screenshot aktualisieren sodass bei allen Sensoren eine Message hinterlegt ist. Ich denke das würde es an der Stelle klarer machen. Einwände? --[[Benutzer:Peterchen89|Peterchen89]] ([[Benutzer Diskussion:Peterchen89|Diskussion]]) 11:33, 5. Feb. 2015 (UTC)&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_Alarm&amp;diff=9882</id>
		<title>Modul Alarm</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_Alarm&amp;diff=9882"/>
		<updated>2015-02-05T11:26:52Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* Definition */ weblink wird automatisch mit angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschreibt die Konfiguration und Verwendung des Moduls 95_Alarm.pm.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Das Modul &#039;&#039;95_Alarm.pm&#039;&#039; stellt eine komfortable Oberfläche bereit, um per Webinterface bestimmte auslösende Elemente (nachfolgend &#039;Sensoren&#039; genannt) mit bestimmten Aktionen (nachfolgend &#039;Aktoren&#039; genannt) zu verknüpfen - und zwar nur innerhalb bestimmter Zeitfenster sowie an- und abschaltbar (&amp;quot;scharf/armed&amp;quot; bzw. &amp;quot;unscharf/disarmed&amp;quot;). Diese Verknüpfungen werden als &amp;quot;normale&amp;quot; FHEM-Definitionen gespeichert.&lt;br /&gt;
==Erste Schritte==&lt;br /&gt;
Damit FHEM-Devices als Aktoren oder Sensoren für die Alarmanlage genutzt werden können, müssen zwei neue globale Attribute eingeführt werden. Dazu muss in der Grundkonfiguration von FHEM die Zeile mit der Definition der nutzerspezifischen Attribute &#039;&#039;userattr&#039;&#039; angepasst werden:&lt;br /&gt;
 attr global userattr &#039;&#039;&#039;alarmDevice alarmSettings&#039;&#039;&#039; devStateIcon devStateStyle ...&#039;&#039;(hier folgen weitere Attribute)&#039;&#039;&lt;br /&gt;
*Soll ein FHEM-Device als Sensor für die Alarmanlage genutzt werden, wird der Wert seines &#039;&#039;alarmDevice&#039;&#039;-Attributes auf &#039;Sensor&#039; gesetzt.&lt;br /&gt;
*Soll ein FHEM-Device als Aktor für die Alarmanlage genutzt werden, wird der Wert seines &#039;&#039;alarmDevice&#039;&#039;-Attributes auf &#039;Actor&#039; gesetzt&lt;br /&gt;
*Das Attribute &#039;&#039;alarmSettings&#039;&#039; wird beim Setzen der Alarme auf der Alarmkonfigurationsseite automatisch befüllt.&lt;br /&gt;
Ferner muss das Modul &#039;&#039;95_Alarm.pm&#039;&#039; im Modulpfad installiert werden, ebenso die JavaScript-Datei &#039;&#039;alarm.js&#039;&#039; in www/pgm2.&lt;br /&gt;
==Definition==&lt;br /&gt;
Die Alarmanlage - hier mit dem Namen &#039;&#039;AAA&#039;&#039; versehen - selbst wird über&lt;br /&gt;
 define AAA Alarm&lt;br /&gt;
 attr AAA room AlarmRoom&lt;br /&gt;
definiert. Zusätzlich soll sie im oberen Menü des Webinterfaces auftauchen, dazu benötigen wir noch (wird normalerweise automatisch mit angelegt):&lt;br /&gt;
 define AAA_weblink weblink htmlCode {Alarm_Html(&amp;quot;AAA&amp;quot;)}&lt;br /&gt;
 attr AAA_weblink room AlarmRoom&lt;br /&gt;
*Der Raum &#039;&#039;AlarmRoom&#039;&#039; ist ein versteckter Raum, der nicht im unteren Menü auftaucht.&lt;br /&gt;
*Es wird ein weiterer Raum benötigt, der in der gegenwärtigen Fassung des Moduls den Namen &#039;&#039;Alarm&#039;&#039; trägt&lt;br /&gt;
&lt;br /&gt;
==Konfiguration==&lt;br /&gt;
Beim Anklicken des Begriffes &#039;&#039;Alarm&#039;&#039; im oberen Menü des Webinterfaces wird die Alarmkonfiguration angezeigt.  &lt;br /&gt;
===Settings===&lt;br /&gt;
Im oberen Bereich sind drei Eingabefelder zu sehen:&lt;br /&gt;
*Arm Delay ist eine Verzögerungszeit, die zwischen dem Scharfschalten des Alarms und der tatsächlichen Wirksamkeit vergeht. Diese Zeit kann beispielsweise genutzt werden, um das Haus ohne Auslösung des Alarms zu verlassen.  &lt;br /&gt;
*Arm Action ist ein FHEM-Befehl, der beim Scharfschalten ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagen lässt &#039;&#039;Alarmanlage scharf geschaltet&#039;&#039;.&lt;br /&gt;
*Disarm Action ist ein FHEM-Befehl, der beim Unscharfschalten ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagen lässt &#039;&#039;Alarmanlage unscharf geschaltet&#039;&#039;.&lt;br /&gt;
*Cancel Action ist ein FHEM-Befehl, der beim Widerrufen eines Alarms ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagen lässt &#039;&#039;Alarm widerrufen&#039;&#039;.&lt;br /&gt;
Als Default sind 8 Alarmlevel möglich, in der Tabelle &#039;Settings&#039; können für jeden Level gesetzt werden:&lt;br /&gt;
*Startzeit und Endzeit des Alarmlevels&lt;br /&gt;
*Eine Nachricht zur Erläuterung des Alarms (Teil 2)&lt;br /&gt;
*Checkbox &#039;&#039;Armed&#039;&#039; = scharf&lt;br /&gt;
*Button &#039;&#039;Cancel&#039;&#039; zum Canceln = Aufheben des Alarms&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_settings.png]]&lt;br /&gt;
&lt;br /&gt;
===Sensors===&lt;br /&gt;
Danach wird die Tabelle der Sensoren angezeigt. Für jeden Sensor kann gesetzt werden:&lt;br /&gt;
*Alarmlevel, die hierdurch ausgelöst werden&lt;br /&gt;
*Ein regulärer Ausdruck, bei dessen Erkennung die Auslösung erfolgt &lt;br /&gt;
*Eine Nachricht zur Erläuterung des Alarms (Teil 1)&lt;br /&gt;
*Ein Selektor, um festzulegen, ob dieser Sensor den Alarm &lt;br /&gt;
**auslöst (=Raise),&lt;br /&gt;
**widerruft (=Cancel),&lt;br /&gt;
**scharf schaltet (=Arm) oder&lt;br /&gt;
**unscharf schaltet (=Disarm).&lt;br /&gt;
&#039;&#039;&#039;Achtung: Es ist zwingend notwendig, dass für einen auszulösenden Alarmlevel auch ein Sensor für den Widerruf (=Cancel) des Alarms definiert wird, ansonsten ignoriert das Modul die Definition dieses Levels.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die insgesamt in den &#039;&#039;STATE&#039;&#039; der Alarmanlage geschriebene Nachricht besteht dann aus&lt;br /&gt;
 (Anzeige der Zustände) (Nachricht Teil 1)&#039; &#039;(Nachricht Teil 2).&lt;br /&gt;
Bitte weiter unten nachlesen, was mit der [http://www.fhemwiki.de/wiki/Modul_Alarmanlage#Anzeige_der_Zust.C3.A4nde Anzeige der Zustände] gemeint ist.&lt;br /&gt;
In diesen Nachrichten werden die folgenden Ersetzungen vorgenommen&lt;br /&gt;
* $NAME vird durch den Namen des auslösenden Devices ersetzt&lt;br /&gt;
* $EVENT wird durch den kompletten Event ersetzt&lt;br /&gt;
* $EVTPART1... wird durch den 1. Teilstring des Events gefüllt, etc.&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_sensors.png]]&lt;br /&gt;
&lt;br /&gt;
===Actors===&lt;br /&gt;
Anschließend wird die Tabelle der Aktoren angezeigt. Für jeden Aktor kann gesetzt werden: &lt;br /&gt;
*Alarmlevel, die diesen Aktor starten&lt;br /&gt;
*Ein FHEM-Kommando zum Starten des Aktors&lt;br /&gt;
*Ein FHEM-Kommando zum Stoppen des Aktors&lt;br /&gt;
*Eine Zeitverzögerung  - entweder als Angabe von Sekunden (&amp;lt;60) oder im Format mm:ss&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_actors.png]]&lt;br /&gt;
&lt;br /&gt;
==Einrichten==&lt;br /&gt;
Durch Anklicken des Buttons &#039;&#039;Set Alarms&#039;&#039; werden die &#039;&#039;alarmSettings&#039;&#039;-Attribute befüllt. &lt;br /&gt;
&#039;&#039;&#039;Achtung, Folgendes beachten&#039;&#039;&#039;&lt;br /&gt;
*Es ist zwingend notwendig, dass für einen auszulösenden Alarmlevel auch ein Sensor für den Widerruf (=Cancel) des Alarms definiert wird, ansonsten ignoriert das Modul die Definition dieses Levels.&lt;br /&gt;
*Der Button &#039;&#039;Set Alarms&#039;&#039; wird nur funktionieren, wenn keine [http://www.fhemwiki.de/wiki/Modul_Alarmanlage#Sperrung Sperrung] vorliegt, siehe unten.&lt;br /&gt;
*Es empfiehlt sich, danach ein &#039;&#039;Save Config&#039;&#039; auszuführen, damit die Attribute und Notifier permanent sind.&lt;br /&gt;
&lt;br /&gt;
===Anzeige der Zustände===&lt;br /&gt;
Auf Wunsch können die Zustände der Alarmanlage zusammen mit der konkreten Meldung im internal &#039;&#039;STATE&#039;&#039; (bzw. reading &#039;&#039;state&#039;&#039;, beide sind in diesem Modul identisch) angezeigt werden.&lt;br /&gt;
Hierfür gibt es ein Attribut &#039;&#039;statedisplay&#039;&#039; mit den folgenden möglichen Werten, die nachfolgend am Beispiel für den Zustand &amp;quot;Alarm Level 1 ausgelöst&amp;quot; erläutert sind:&lt;br /&gt;
* &#039;&#039;none&#039;&#039; - keine Anzeige&lt;br /&gt;
* &#039;&#039;simple&#039;&#039; - OXOOOOOO&lt;br /&gt;
* &#039;&#039;color&#039;&#039; - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 0 &amp;lt;span style=&amp;quot;width:1ex;color:red&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; 2 3 4 5 6 7&amp;lt;/span&amp;gt;&lt;br /&gt;
* &#039;&#039;table&#039;&#039;&amp;amp;nbsp;-&amp;amp;nbsp;&amp;lt;table&amp;gt;&amp;lt;tr style=&amp;quot;height:1ex&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:red&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;td style=&amp;quot;width:1ex;background-color:green&amp;quot;/&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Problem ist, dass möglicherweise das internal &#039;&#039;STATE&#039;&#039; an anderer Stelle verwendet werden soll - z.B. beim Versenden von Mails als &lt;br /&gt;
 Value(&#039;AAA&#039;)&lt;br /&gt;
Es macht natürlich keinen Sinn, eine HTML-Tabelle in eine Mail zu packen. Deshalb sollte für die Weiterverarbeitung statt des obigen Code verwendet werden&lt;br /&gt;
 $defs{&#039;AAA&#039;}{READINGS}{&amp;quot;short&amp;quot;}{VAL}&lt;br /&gt;
Dies enthält nur die Meldung, nicht aber die Anzeige aller Zustände. Alternativ kann man auch die Zustandsanzeige durch Wahl des Attributwertes &#039;&#039;none&#039;&#039; komplett abstellen.&lt;br /&gt;
===Sperrung===&lt;br /&gt;
Das Attribut &#039;&#039;lockstate&#039;&#039; muss den Wert &#039;&#039;unlocked&#039;&#039; haben, damit durch Anklicken des Buttons &#039;&#039;Set Alarms&#039;&#039; die &#039;&#039;alarmSettings&#039;&#039;-Attribute befüllt werden können. Das ist in der Regel beim ersten Laden des Moduls &#039;&#039;&#039;nicht&#039;&#039;&#039; der Fall, hierzu muss also das Attribut von Hand auf den richtigen Wert gesetzt werden !&lt;br /&gt;
&lt;br /&gt;
=Sensoren=&lt;br /&gt;
==Rauchalarm==&lt;br /&gt;
&#039;&#039;&#039;Dieser Alarm ist mit Lebensgefahr verbunden und wird deshalb unabhängig von FHEM ausgelöst, und von FHEM nur registriert und mit weiteren Aktoren verbunden&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel werden vernetzte Rauchmelder des Typs [[HM-SEC-SD_Rauchmelder|HM-SEC-SD]] verwendet. Deren Teamleader erhalten das Attribut &#039;&#039;alarmDevice Sensor&#039;&#039;, so dass sie in der Sensorenliste der Alarmanlage auftauchen. Sie lösen den Alarm mit dem höchsten Level aus. Die Realisierung lässt sich aber auch über beliebige andere in FHEM eingebundene Rauchmelder erreichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_smoke.png]]&lt;br /&gt;
&lt;br /&gt;
==Öffnung von Fenstern oder Türen ==&lt;br /&gt;
Dies dient der Überwachung von &#039;&#039;&#039;Zustandsänderungen&#039;&#039;&#039;, ebenso wie zur &#039;&#039;&#039;Überprüfung eines statischen Zustands&#039;&#039;&#039;&lt;br /&gt;
===Szenarien===&lt;br /&gt;
====Kontrollrunde====&lt;br /&gt;
Dieses Alarmszenario (Alarmlevel 4) liegt vor, wenn die Hausbewohner anwesend sind, aber irgendwann zu Bett gehen wollen und vorher noch überprüfen, ob auch alle Türen und das Garagentor geschlossen sind. Sagen wir, beginnend um 22:00 bis 23:59. Man könnte diesen Alarmlevel aber auch durch einen externen Regensensor auslösen, der die Dachfenster auf ihren Öffnungszustand untersucht. Jedenfalls sollte dieser Alarmlevel immer scharf sein.&lt;br /&gt;
&lt;br /&gt;
Durch einen externen Auslöser (sagen wir, beginnend um 22:00 Uhr) wird in periodischen Abständen eine Hilfsroutine gestartet, welche die Zustandsprüfung vornimmt und registriert. Nur wenn diese Registrierung eine Öffnung ergibt, wird der Alarm ausgelöst. Dieser Alarmlevel gehört also zur Kategorie &#039;&#039;Warnung&#039;&#039; und wird deshalb nur eine moderate Signalisierung benötigen - beispielsweise&lt;br /&gt;
*eine Nachricht mit gelbem Hintergrund erscheint auf einem [[Digitaler_Bilderrahmen_mit_lcd4linux|Digitalen Bilderrahmen]]&lt;br /&gt;
*eine Nachricht erscheint auf einem [[1-Wire_Textdisplay]] &lt;br /&gt;
*eine LED geht an auf dem [[1-Wire LED-Statusmonitor]]&lt;br /&gt;
&lt;br /&gt;
====Zutritt====&lt;br /&gt;
Dieses Alarmszenario (Alarmlevel 5) liegt vor, wenn die Hausbewohner anwesend sind, aber vermutlich schlafen gegangen sind. Sagen wir, von 0:00 bis 5:00. &lt;br /&gt;
&lt;br /&gt;
Wenn morgens um 4:00 die Haustür geöffnet wird, handelt es sich entweder um ein spätes Heimkommen eines Hausbewohners von einer Party - oder um einen Einbruchsversuch. Der Partygeher sollte also eine gewisse Warnungszeit bekommen, bevor ein moderater akustischer Aktor (sagen wir, ein Funkgong) losgeht. Dieser Aktor  muss deshalb mit einer Verzögerung eingeschaltet werden, und der Partygeher erhält eine Warnung. Diese Warnung - sagen wir, eine bestimmte Lampe geht an -  informiert ihn, dass er innerhalb von 30 Sekunden einen bestimmten Schalter betätigen muss. Etwa den für genau diese Lampe, um sie auszuschalten. Der Einbrecher kennt diesen Schalter nicht, der moderate Alarm wird also die schlafenden Hausbewohner wecken und ihn abschrecken.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich verfügt dieser Level auch noch über einen Partymodus: Mit diesem kann er für 24 Stunden abgestellt werden, so dass man auch um 3:00 in der Frühe die eigenen Partygäste aus dem Haus lassen kann, ohne ihn auszulösen.&lt;br /&gt;
====Einbruch====&lt;br /&gt;
Dieses Alarmszenario (Alarmlevel 6) liegt vor, wenn die Hausbewohner abwesend sind und diesen Level vorher scharf geschaltet haben - und idealerweise von 0:00 bis 23:59. Jeder Zutritt zu Haus löst diesen Alarm aus, und der akustische Aktor kann durchaus kräftig sein (etwa Einschalten der Rauchmelder für 1 Minute). &lt;br /&gt;
&lt;br /&gt;
Da die Auslösung auch erfolgt, wenn der Hausbesitzer heimkommt, muss der akustische Aktor eine Verzögerung haben und innerhalb dieser einer Warnung gegeben werden, z.B. indem  zunächst eine bestimmte Lampe angeht. Dies informiert ihn, dass er innerhalb von 30 Sekunden einen bestimmten Schalter betätigen muss. Etwa die Kombination, um diesen Alarmlevel unscharf zu schalten. Der Einbrecher kennt diese Kombination nicht, die Beleuchtung wird ihn also zunächst abschrecken und der nachfolgende laute akustische Aktor auch die Nachbarn wecken.&lt;br /&gt;
===Zustandsänderung===&lt;br /&gt;
Dazu werden alle überwachten Fenster- und Türkontakte mit dem Attribut &#039;&#039;alarmDevice Sensor&#039;&#039; versehen, so dass sie in der Sensorenliste der Alarmanlage auftauchen. In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_tf.png]]&lt;br /&gt;
&lt;br /&gt;
===Zustandsprüfung===&lt;br /&gt;
Dies dient der Überprüfung eines &#039;&#039;&#039;statischen Zustands&#039;&#039;&#039;, konkret ob und welche Fenster oder Türen offen sind - z.B. abends, oder bei Regenwetter. Dazu benötigen wir drei &#039;&#039;dummy&#039;&#039; Devices, von denen zwei als &#039;&#039;alarmDevice Sensor&#039;&#039; und einer als &#039;&#039;alarmDevice Actor&#039;&#039; attributiert werden und somit in der Sensoren- bzw. Aktorenliste der Alarmanlage auftauchen. &lt;br /&gt;
&lt;br /&gt;
 define TFOpen.warn dummy&lt;br /&gt;
 attr TFOpen.warn alarmDevice Sensor&lt;br /&gt;
 &#039;&#039;&#039;attr TFOpen.warn alarm4,|TFOpen.warn:.*[TF].*|$EVENT|on&#039;&#039;&#039; (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr TFOpen.warn group windowDetector&lt;br /&gt;
 attr TFOpen.warn room Alarm&lt;br /&gt;
&lt;br /&gt;
 define TFClose.warn dummy&lt;br /&gt;
 attr TFClose.warn alarmDevice Sensor&lt;br /&gt;
 &#039;&#039;&#039;attr TFClose.warn alarmSettings alarm4,|TFClose.warn:yes|Alle zu|off&#039;&#039;&#039; (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr TFClose.warn group windowDetector&lt;br /&gt;
 attr TFClose.warn room Alarm&lt;br /&gt;
&lt;br /&gt;
 define TFOpen.check dummy&lt;br /&gt;
 attr TFOpen.check alarmDevice Actor&lt;br /&gt;
 &#039;&#039;&#039;attr TFOpen.check alarmSettings alarm4,|{HouseOpen()}||10:00&#039;&#039;&#039; (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr TFOpen.check group windowDetector&lt;br /&gt;
 attr TFOpen.check room Alarm&lt;br /&gt;
&lt;br /&gt;
[[Datei:TFAlarm.png|left|thumb|200px|]]Als nächstes muss eine Überwachungsroutine geschrieben werden. Das kann entweder als FHEM-Skript geschehen, oder in der Datei 99_myUtils.pm als perl-Code. Dieses Unterprogramm muss &lt;br /&gt;
*den obigen &#039;&#039;dummy&#039;&#039; TFOpen.warn setzen, und zwar auf den oder die Namen der geöffneten Fenster und Türen oder &amp;quot;none&amp;quot;, wenn keine geöffnet sind.&lt;br /&gt;
*den obigen &#039;&#039;dummy&#039;&#039; TFClose.warn setzen, und zwar auf den Wert &amp;quot;no&amp;quot;, wenn irgendeine geöffnet ist und &amp;quot;yes&amp;quot;, wenn keine geöffnet sind.&lt;br /&gt;
Ein Beispiel für eine solche Überwachungsroutine ist weiter unten zu sehen.&lt;br /&gt;
&lt;br /&gt;
Diese Doppelung ist nötig, weil jeder Sensor nur mit einem notify in den Alarmen auftauchen kann - das dient der Sicherheit gegen Fehlkonfiguration und ist beabsichtigt.&lt;br /&gt;
&lt;br /&gt;
In dem nebenstehenden Flussdiagramm wird der Ablauf dargestellt, der sich mit diesem System ergibt. Dabei wird um 22:00 der erste Test auf ein ordnungsgemäß geschlossenes Haus gestartet - und bis Mitternacht alle 10 Minuten wiederholt. Alternativ könnte man das auch mit einem Regensensor als Erstauslöser koppeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispielcode für eine Überwachungsroutine:&lt;br /&gt;
&lt;br /&gt;
 sub HouseOpen()&lt;br /&gt;
 {&lt;br /&gt;
  my $kfo = 0;&lt;br /&gt;
  my $kfs = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $kto = 0;&lt;br /&gt;
  my $kts = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $str = &amp;quot;&amp;quot;;&lt;br /&gt;
  if( $main::value{&#039;BK.F&#039;} ne &amp;quot;Closed&amp;quot; ){&lt;br /&gt;
    $kfo++;&lt;br /&gt;
    $kfs = &amp;quot;BK/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if( $main::value{&#039;WK.F&#039;} ne &#039;Closed&#039; ){&lt;br /&gt;
    $kfo++;&lt;br /&gt;
    $kfs = $kfs.&amp;quot;WK/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if( $main::value{&#039;VK.T&#039;} ne &amp;quot;Closed&amp;quot; ){&lt;br /&gt;
    $kto++;&lt;br /&gt;
    $kts = &amp;quot;VK/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if( $main::value{&#039;WZ.T&#039;} ne &#039;Closed&#039; ){&lt;br /&gt;
    $kto++;&lt;br /&gt;
    $kts = $kts.&amp;quot;WZ/&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
 if( ($kfo &amp;gt;= 1) &amp;amp;&amp;amp; ($kto == 0) ){&lt;br /&gt;
    $kfs = substr($kfs,0,-1);&lt;br /&gt;
    fhem(&amp;quot;define TFOpen.delay at +00:00:30 set TFOpen.warn $kfs Fenster&amp;quot;); &lt;br /&gt;
    fhem(&amp;quot;define TFClose.delay at +00:00:30 set TFClose.warn no&amp;quot;);&lt;br /&gt;
  }elsif( ($kfo == 0) &amp;amp;&amp;amp; ($kto &amp;gt;= 1) ){&lt;br /&gt;
    $kts = substr($kts,0,-1);&lt;br /&gt;
    fhem(&amp;quot;define TFOpen.delay at +00:00:30 set TFOpen.warn $kts Tür&amp;quot;); &lt;br /&gt;
    fhem(&amp;quot;define TFClose.delay at +00:00:30 set TFClose.warn no&amp;quot;);&lt;br /&gt;
  }elsif( ($kfo &amp;gt;= 1) &amp;amp;&amp;amp; ($kto &amp;gt;= 1)){&lt;br /&gt;
     $kts = substr($kts,0,-1);&lt;br /&gt;
     $kfs = substr($kfs,0,-1);&lt;br /&gt;
     $str = &amp;quot;$kts Tür + $kfs Fenster&amp;quot;;&lt;br /&gt;
     fhem(&amp;quot;define TFOpen.delay at +00:00:30 set TFOpen.warn $kts T / $kfs F&amp;quot;);&lt;br /&gt;
     fhem(&amp;quot;define TFClose.delay at +00:00:30 set TFClose.warn no&amp;quot;);&lt;br /&gt;
  }else{&lt;br /&gt;
     fhem(&amp;quot;set TFOpen.warn none&amp;quot;);&lt;br /&gt;
     fhem(&amp;quot;set TFClose.warn yes&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 return $str;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Batterie schwach bei FHEM-Devices==&lt;br /&gt;
Dieser Sensor besteht aus einem &#039;&#039;notify&#039;&#039; und einem &#039;&#039;dummy&#039;&#039;, der bei einer &#039;battery low&#039;-Meldung eines beliebigen FHEM-Device auf dessen Namen gesetzt wird. Der &#039;&#039;dummy&#039;&#039; wird als &#039;&#039;alarmDevice Sensor&#039;&#039; attributiert, so dass er in der Sensorenliste der Alarmanlage auftaucht. &lt;br /&gt;
	&lt;br /&gt;
 define LBatt.N notify .*:[Bb]attery.*[Ll]ow.* set LBatt.warn $NAME&lt;br /&gt;
 attr LBatt.N room Alarm&lt;br /&gt;
 attr LBatt.N group deviceDetector&lt;br /&gt;
&lt;br /&gt;
 define LBatt.warn dummy&lt;br /&gt;
 attr LBatt.warn alarmDevice Sensor&lt;br /&gt;
 attr LBatt.warn room Alarm&lt;br /&gt;
 attr LBatt.warn group deviceDetector&lt;br /&gt;
Auf einen Test, ob gleichzeitig bei anderen FHEM-Devices die Batterie ebenfalls schwach ist, wird hier verzichtet. Für diesen Sensor wird ein eigener Alarmlevel (niedriger Priorität) erzeugt. Bei einem beliebigen &#039;battery low&#039; Event wird somit der STATE der Alarmanlage gesetzt auf &#039;&#039;&#039;Batt. &amp;lt;devicename&amp;gt; schwach&#039;&#039;&#039;. Dieser Alarm muss manuell zurückgesetzt werden (schließlich sollten die Batterien ja erst gewechselt werden...) &lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_lbatt.png]]&lt;br /&gt;
&lt;br /&gt;
=Aktoren=&lt;br /&gt;
==Rauchmelder als Alarmsignal==&lt;br /&gt;
Für Alarme, bei denen es wirklich auf schnelle Reaktionen ankommt, kann man auch Rauchdetektoren verwenden, die über Funk aktivierbar sind. Im Beispiel werden vernetzte Rauchmelder des Typs [[HM-SEC-SD_Rauchmelder|HM-SEC-SD]] verwendet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Es ist sehr empfehlenswert, diesen Alarm auch wieder automatisch auszuschalten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dazu wird ein &#039;&#039;dummy&#039;&#039; erzeugt und mit &#039;&#039;alarmDevice Actor&#039;&#039; attributiert, so dass er in der Aktorenliste auftaucht:&lt;br /&gt;
&lt;br /&gt;
 define SD.alarm dummy&lt;br /&gt;
 attr SD.alarm alarmDevice Actor&lt;br /&gt;
 attr SD.alarm alarmSettings alarm7,|set TH.SD0 alarmOn|set TH.SD0 alarmOff|30&lt;br /&gt;
 attr SD.alarm group alarmActor&lt;br /&gt;
 attr SD.alarm room Alarm &lt;br /&gt;
In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_smokeactor.png]]&lt;br /&gt;
&lt;br /&gt;
==Funk-Türgong / MP3-Türgong als Alarmsignal==&lt;br /&gt;
Hier wird ein FS20-Türgong als akustisches Alarmsignal verwendet.&lt;br /&gt;
&lt;br /&gt;
 define WZ.Gong FS20 &amp;lt;adresse&amp;gt;&lt;br /&gt;
 attr WZ.Gong IODev CUL&lt;br /&gt;
 attr WZ.Gong alarmDevice Actor&lt;br /&gt;
 &#039;&#039;&#039;attr WZ.Gong alarmSettings alarm5,alarm6,|set WZ.Gong on||30&#039;&#039;&#039; (Vom Modul 95_Alarm.pm automatisch erzeugt)&lt;br /&gt;
 attr WZ.Gong group alarmActor&lt;br /&gt;
 attr WZ.Gong room Alarm,Erdgeschoss&lt;br /&gt;
In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_gongactor.png]]&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung eines MP3-Funkgongs (z.B. aus dem Homematic-Programm) kann man auf diesem eine ganze Menge verschiedene MP3-Dateien speichern, die z.B. Stimmenmeldungen &amp;quot;Alarmanlage scharf geschaltet&amp;quot; abgeben. Zur Erstellung dieser Meldungen hat es sich bewährt, einen kostenlosen Online-TTS (Text-to-Speech) Service zu nutzen, z.B. Ivona.&lt;br /&gt;
==Alarmierung per SMS== &lt;br /&gt;
Für Alarme, die man auch im Urlaub auf das Handy bekommen möchte, bedarf es natürlich eines Providers, der eine bestimmte Mailadresse als SMS weiterleitet. Ferner einer FHEM-Konfiguration, die Mails versenden kann. Dann wird ein &#039;&#039;dummy&#039;&#039; erzeugt und mit &#039;&#039;alarmDevice Actor&#039;&#039; attributiert, so dass er in der Aktorenliste auftaucht:&lt;br /&gt;
 define Mail.alarm dummy&lt;br /&gt;
 attr Mail.alarm alarmDevice Actor&lt;br /&gt;
 &#039;&#039;&#039;attr Mail.alarm alarmSettings alarm6,alarm7,|{DebianMail(&amp;lt;mailadresse&amp;gt;,&#039;Alarm&#039;,Value(&#039;AAA&#039;))}||30&#039;&#039;&#039; (automatisch erzeugt)&lt;br /&gt;
 attr Mail.alarm group alarmActor&lt;br /&gt;
 attr Mail.alarm room Alarm&lt;br /&gt;
In der Alarmkonfiguration sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:alarm_mailactor.png]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=9785</id>
		<title>Diskussion:HM-CC-RT-DN Funk-Heizkörperthermostat</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat&amp;diff=9785"/>
		<updated>2015-02-02T19:25:36Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo...&lt;br /&gt;
&lt;br /&gt;
Fehlt da nicht in der Perl-Sub Urlaub($$$$$) ein &amp;quot;;&amp;quot; hinter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   #Sendebefehl für ein HM-CC-RT-DN&lt;br /&gt;
   {fhem (&amp;quot;set Kammer controlParty $temp $startDate $startTime $endDate $endTime&amp;quot;)}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
?&lt;br /&gt;
&lt;br /&gt;
Kann es jetzt gerade nicht nachprüfen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Stimmt das mit dem Channel 4 für burstRx noch? Zumindest ich bekomme das nur ausgelesen wenn ich direkt das Device abfrage. Habe fhem aus dem Trunk und Firmware 1.4 auf den Thermostaten. --[[Benutzer:Peterchen89|Peterchen89]] ([[Benutzer Diskussion:Peterchen89|Diskussion]]) 19:25, 2. Feb. 2015 (UTC)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fhem&amp;gt; get kueche_heizung_Clima  reg burstRx&lt;br /&gt;
Value not captured&lt;br /&gt;
fhem&amp;gt;  get kueche_heizung reg burstRx&lt;br /&gt;
on&lt;br /&gt;
fhem&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Icons&amp;diff=8088</id>
		<title>Icons</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Icons&amp;diff=8088"/>
		<updated>2014-10-02T05:08:26Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* Geräten Icons zuweisen */  Beispiel für CMD ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Icons - alles rund um die Icons in Fhem&lt;br /&gt;
= Fhem mit Icons verschönern =&lt;br /&gt;
== Geräten Icons zuweisen ==&lt;br /&gt;
Im FHEMWEB auf Detail-Ansicht des Gerätes gehen, danach in der attr Zeile per dropdown&lt;br /&gt;
# Icon auswählen, um das Icon zu wählen, das standardmäßig links vom Gerät gezeigt wird; alternativ ganz unten auf &#039;&#039;&#039;Select Icon&#039;&#039;&#039; klicken, dann bekommt ihr alle Bilder angezeigt&lt;br /&gt;
# &#039;&#039;&#039;devStateIcon auswählen&#039;&#039;&#039;, um unterschiedliche Schaltzustände mit unterschiedlichen Icons zu versehen; alternativ ganz unten auf &#039;&#039;&#039;Extend devStateIcon&#039;&#039;&#039; klicken, dann bekommt ihr alle Bilder angezeigt und könnt sie dem jeweiligen Schaltzustand zuordnen.&lt;br /&gt;
&lt;br /&gt;
Dabei gilt folgendes:&lt;br /&gt;
* Icon-Dateiname OHNE Dateiendung eingeben&lt;br /&gt;
* wenn es sich bei dem Icon um eine svg-Datei handelt, kann mit @farbe die Farbe beeinflusst werden, z.B. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;attr Geraet devStateIcon an:general_an@green aus:general_aus@red&amp;lt;/code&amp;gt;, &amp;lt;br /&amp;gt; wobei hier die beiden Dateien general_an.svg und general_aus.svg heißen.&lt;br /&gt;
* statt des Standardfarbnamens, kann übrigens auch der 6-stellige Hex-Code übergeben werden (ohne # am Anfang). Den Code könnt ihr z.B. hier bei [http://www.colorpicker.com Colorpicker] generieren&lt;br /&gt;
* Möchte man dass bei Klick auf das Icon auch eine Aktion ausgelöst wird, kann man dies als dritten Parameter mit angeben. Beispiel für einen Wechsel zwischen &amp;quot;arround&amp;quot; und &amp;quot;away&amp;quot;: &amp;lt;code&amp;gt;arround:status_available:away away:status_away_2:arround&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr die Änderungen wie oben beschrieben durchführt, könnt ihr das Ergebnis gleich betrachten. Wenn alles passt, dann noch &#039;&#039;&#039;Save config&#039;&#039;&#039; drücken, dann wird alles fest abgespeichert.&lt;br /&gt;
&lt;br /&gt;
== Größe der Icons verändern ==&lt;br /&gt;
Auch das kein Problem. Öffnet einfach die für Eurer Template (wie sieht fhem bei Euch aus: rechts unten -&amp;gt; Select Style -&amp;gt; das was ihr dort gewählt habt ist Euer Template) zuständige css-Datei. Diese findet ihr im fhem-Verzeichnis unter www/pgm2. Dort fügt ihr einfach folgende Zeile ein und ändert ggf. die Größenangaben.&lt;br /&gt;
&amp;lt;pre&amp;gt;svg { height:32px; width:32px; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mehr Icons zur Auswahl ==&lt;br /&gt;
Grundsätzlich sind bei aktuellen fhem-Installationen die meisten Icons standardmäßig aktiviert. Navigiert doch einfach mal im fhem Verzeichnis in den www Ordner und dort in images. Die Ordner default, openautomation und fhemSVG sind standardmäßig aktiviert, d.h., Icons aus diesen Ordnern werden in fhem angezeigt. Wenn ihr zusätzlich die Icons auch aus den anderen Ordnern (z.B. icons_small) verwenden wollt, dann ergänzt einfach die entsprechende Zeile &amp;quot;WEB iconPath&amp;quot; in der fhem.cfg:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr WEB iconPath fhemSVG:openautomation:default:icons_small&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt, wenn ihr eine ältere fhem-Installation habt und noch nicht die Bilder z.B. aus fhemSVG angezeigt bekommt.&lt;br /&gt;
&lt;br /&gt;
== Weitere Tipps ==&lt;br /&gt;
Weitere Tipps zu Icons finden sich auch auf der Seite [[Slider für HM-Rolladensteuerung anzeigen]].&lt;br /&gt;
&lt;br /&gt;
= Eigene Icons erstellen =&lt;br /&gt;
Falls ihr eigene Icons basteln wollt - sehr gerne. Umso besser, wenn ihr diese dann mit uns teilt. Der passende [http://forum.fhem.de/index.php/topic,12605.0.html Thread im Forum].&lt;br /&gt;
&lt;br /&gt;
== SVG-Icons ==&lt;br /&gt;
Hier einige Tipps zum Erstellen von SVG-Icons. SVGs bieten einige Vorteile:&lt;br /&gt;
* SVGs sind vektorbasiert und somit frei skalierbar&lt;br /&gt;
* SVGs sind, wenn man sie genauer betrachtet, gut lesbarer und veränderbarer Quellcode und können deswegen leicht über css manipuliert werden&lt;br /&gt;
&lt;br /&gt;
Wie geht es nun:&lt;br /&gt;
* [http://inkscape.org/download/?lang=de Inkscape] besorgen (Open Source)&lt;br /&gt;
* Loszeichnen&lt;br /&gt;
&lt;br /&gt;
Jetzt wird es wichtig - fhem ist etwas sensibel, was svgs anbelangt und will diese zudem farblich umgestalten. Daher folgendes unbedingt beachten:&lt;br /&gt;
&lt;br /&gt;
* fhem ersetzt bei allen fill:#000000 und fill=&amp;quot;#000000&amp;quot; die sechs Nullen mit einem Farbcode, wenn dieser mit übergeben wurde (sh. Fhem mit Icons verschönern weiter oben) - das solltet ihr beim zeichnen beachten&lt;br /&gt;
* daher arbeite ich immer so, dass ich beispielsweise Rechtecke/Kreise zeichne und diese dann mit &amp;quot;Kontur in Pfad umwandeln&amp;quot; umwandle -&amp;gt; dann ist das Rechteck transparent, die Linie schwarz (und wird von fhem erstetzt) und alles klappt&lt;br /&gt;
* alle Texte müssen in Pfade umgewandelt werden&lt;br /&gt;
* das gesamte Bild muss als &amp;quot;Normales SVG&amp;quot; gespeichert werden (Standardeinstellung bei Inkscape ist &amp;quot;Inkscape SVG&amp;quot;)&lt;br /&gt;
* letzter wichtiger Tipp: Eine Zeile darf im SVG nicht fehlen, sonst zeigt fhem es nicht an. Wenn ihr Euer SVG in einem Texteditor öffnet (ich empfehle notepad++), schaut in in der &amp;lt;svg&amp;gt;-Definition, ob die Zeile mit viewBox dabei ist. Wenn nicht, dann nach unterem Format ergänzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Created with Inkscape (http://www.inkscape.org/) --&amp;gt;&lt;br /&gt;
&amp;lt;svg&lt;br /&gt;
   version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
   width=&amp;quot;585&amp;quot;&lt;br /&gt;
   height=&amp;quot;585&amp;quot;&lt;br /&gt;
   viewBox=&amp;quot;0 0 585 585&amp;quot;&lt;br /&gt;
   id=&amp;quot;svg2421&amp;quot;&lt;br /&gt;
   sodipodi:docname=&amp;quot;usb-stick.svg&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVG-Icons für das Modul remotecontrol: Schriftvorlage ==&lt;br /&gt;
Wer beispielsweise für das Modul remotecontrol noch andere Beschriftungen braucht, der kann sich diese ganz fix selbst machen. Im Ordner fhem\www\images\fhemSVG findet ihr die Datei rc_templatebutton.svg. Mit der macht ihr folgendes:&lt;br /&gt;
Ganz einfach inkscape runterladen (http://inkscape.org/download/?lang=de), Datei öffnen, auf Text klicken, dann oben in der Leiste auf Text -&amp;gt; Schrift und Text -&amp;gt; Reiter Text, Text ändern. Ggf. Größe/Position anpassen, dann Pfad -&amp;gt; Objekt in Pfad umwandeln, dann Datei -&amp;gt; Speichern unter -&amp;gt; euer name und &amp;quot;Normales SVG&amp;quot; =&amp;gt; FERTIG&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:CUL_HM&amp;diff=8087</id>
		<title>Diskussion:CUL HM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:CUL_HM&amp;diff=8087"/>
		<updated>2014-10-02T04:59:59Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: Neuer Abschnitt /* HMID VCCU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HMID VCCU ==&lt;br /&gt;
&lt;br /&gt;
In den Artikeln zu den Tastern ([[HM-PB-2-WM55_2fach-Funk-Wandtaster]] steht dass die hmId nicht existieren darf. Damit hat es aber bei mir nicht geklappt. Als ich die HMID auf die von mir verwendete gesetzt habe ging alles. War das Zufall, hat sich irgenwas geändert oder war die Information aus den Tasterartikeln einfach falsch? &lt;br /&gt;
&lt;br /&gt;
Wenn der Abschnitt über virtuelle Aktoren hier so passt können wir die Abschnitte aus den Tasterartikeln rausnehmen und hierhin verlinken. --[[Benutzer:Peterchen89|Peterchen89]] ([[Benutzer Diskussion:Peterchen89|Diskussion]]) 04:59, 2. Okt. 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL_HM&amp;diff=8086</id>
		<title>CUL HM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL_HM&amp;diff=8086"/>
		<updated>2014-10-02T04:57:18Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* Anwendungsbeispiele */  virtuellen Aktor erstellen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=HomeMatic Geräte (über CUL oder HMLAN)&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=CUL_HM&lt;br /&gt;
|ModForumArea=HomeMatic&lt;br /&gt;
|ModTechName=10_CUL_HM.pm &lt;br /&gt;
|ModOwner=martinp876 ([http://forum.fhem.de/index.php?action=profile;u=251 Forum] / [[Benutzer Diskussion:Martinp876|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[CUL_HM]] implementiert die Unterstützung für [[HomeMatic]]-Geräte, die über einen [[CUL]] oder &lt;br /&gt;
[[HM-CFG-LAN LAN Konfigurations-Adapter|HMLAN]] angebunden sind.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
HomeMatic [[Interface]]: CUL im HomeMatic Modus oder HMLAN.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
Details in der commandref.&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL_HM &amp;lt;6-digit-hex-code|8-digit-hex-code&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Details in der commandref.&lt;br /&gt;
&lt;br /&gt;
==== Virtuelle CCU (VCCU) ====&lt;br /&gt;
[[Datei:VirtualCCU.png|mini|400px|rechts|Standarddarstellung einer Virtual CCU im Webinterface]]&lt;br /&gt;
Die Definition von (z.B.)&lt;br /&gt;
:&amp;lt;code&amp;gt;define myVCCU CUL_HM 5C0C05&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr myVCCU model CCU-FHEM&amp;lt;/code&amp;gt;&lt;br /&gt;
führt zum Anlegen eines CUL_HM Device &#039;&#039;myVCCU&#039;&#039; als &#039;&#039;&#039;virtuelle CCU&#039;&#039;&#039;. Das Device bekommt (automatisch) ein Attribut &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; mit dem Wert &amp;lt;code&amp;gt;virtual&amp;lt;/code&amp;gt; und wird im [[PGM2|Webinterface]] wie in der Abbildung gezeigt dargestellt. Die einzelnen Elemente bedeuten:&lt;br /&gt;
;myVCCU&lt;br /&gt;
:Name des Device&lt;br /&gt;
;myHMLAN&lt;br /&gt;
:Name(n) des (der) zugeordneten IO Device(s) (mit dem angehängten aktuellen Status, hier &amp;lt;code&amp;gt;:ok&amp;lt;/code&amp;gt;)&lt;br /&gt;
;Schieberegler&lt;br /&gt;
:???&lt;br /&gt;
;&amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;&lt;br /&gt;
:Schaltfläche zum ...???&lt;br /&gt;
&lt;br /&gt;
In den zugeordneten IO Devices wird automatisch(?) ein &#039;&#039;internal value&#039;&#039; mit Namen &amp;lt;code&amp;gt;owner_CCU&amp;lt;/code&amp;gt; und dem Wert &amp;lt;code&amp;gt;myVCCU&amp;lt;/code&amp;gt; angelegt.&lt;br /&gt;
&lt;br /&gt;
Details zum Konzept, den Vorteilen und der Benutzung finden sich derzeit in {{Link2Forum|Topic=23008|LinkText=diesem Forenthread}} und auch {{Link2Forum|Topic=24048|Message=194876|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
{{Todo|Das VCCU-Konzept scheint bedeutend (und komplex) genug, dass eine eigene Wiki-Seite gerechtfertigt wäre. Es muss sie nur noch jemand erstellen...}}&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
=== Virtuellen Aktor erstellen ===&lt;br /&gt;
Ein virtueller Aktor ist nötig, damit Taster wie z.B. der [[HM-PB-6-WM55_6fach-Funk-Wandtaster|6fach-Wandtaster]] oder der [[HM-PB-2-WM55_2fach-Funk-Wandtaster|2fach-Wandtaster]] einen Tastendruck mit grünem Aufleuchten bestätigen. Diese Rückmeldung geben die Taster normalerweise wenn sie den Tastendruck an ihre Peers weitergeben haben. Hat man aber keine Homematic-Peers direkt gekoppelt (also nur die Zentrale gepairt), leuchten die Taster lediglich orange.&lt;br /&gt;
&lt;br /&gt;
Mit einer virtuellen CCU kann man virtuelle Aktoren erstellen, mit denen man die Taster dann peeren kann. Zunächst muss dazu eine virtuelle CCU angelegt werden &amp;lt;code&amp;gt;define virtualCCU CUL_HM XXXXXX&amp;lt;/code&amp;gt;, wobei XXXXXX der hmId des HMLAN-Interfaces entspricht (bzw. dessen was statt HMLAN verwendet wird). Mit &amp;lt;code&amp;gt;attr virtualCCU model CCU-FHEM&amp;lt;/code&amp;gt; gibt man der CCU noch den korrekten Typ. &lt;br /&gt;
Virtuelle Aktoren kann man in der benötigten Anzahl (d.h. Anzahl aller Tasterbuttons) nun mit &amp;lt;code&amp;gt;set virtualCCU virtual X&amp;lt;/code&amp;gt; anlegen, wobei X der benötigten Anzahl virtueller Aktoren entspricht. Danach existieren die virtuellen Aktoren als z.b. &amp;lt;code&amp;gt;virtualCCU_Btn1, virtualCCU_Btn2&amp;lt;/code&amp;gt; usw. in FHEM. &lt;br /&gt;
&lt;br /&gt;
Die Peerings zwischen Tastern und den Buttons stellt man dann folgendermaßen her (CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 und CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 sind jeweils die Buttons des Tasters CUL_HM_HM_PB_2_WM55_1F1xxx):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 peerChan 0 virtualCCU_Btn1 single set&lt;br /&gt;
set CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 peerChan 0 virtualCCU_Btn2 single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach führt man ein &amp;lt;code&amp;gt;set CUL_HM_HM_PB_2_WM55_1F1xxx getConfig&amp;lt;/code&amp;gt; aus und drückt einmal kurz den Anlern-Button des Tasters. Danach sollte der Taster mehrmals kurz orange blinken. &lt;br /&gt;
&lt;br /&gt;
Wenn alles geklappt hat wird nach dem betätigen der Taster in den States von CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_01 bzw. CUL_HM_HM_PB_2_WM55_1F1xxx_Btn_02 ein &amp;quot;(to virtualCCU)&amp;quot; stehen. &lt;br /&gt;
&lt;br /&gt;
Save Config nicht vergessen :-).&lt;br /&gt;
&lt;br /&gt;
==== Tipps ==== &lt;br /&gt;
* Es wäre auch möglich nur einen virtuellen Aktor anzulegen und alle Buttons damit zu peeren.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,23008.msg163510.html Forenthread] zum Thema &#039;&#039;virtuelle CCU&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]] &lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DbLog&amp;diff=8085</id>
		<title>DbLog</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DbLog&amp;diff=8085"/>
		<updated>2014-10-02T04:29:27Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* Links */ + Ergänzung von Link auf Heizleistung_und_Gasverbrauch als Beispiel für SVG aus DbLog&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Todo|Diese Seite muss noch vervollständigt werden. Informationen sind bisher verstreut, hauptsächlich über [[PGM3 dbLog]] und [[Neues Charting Frontend]].}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Modul|&lt;br /&gt;
ModPurpose=Protokolliert Ereignisse in einer Datenbank&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModTechName=93_DbLog.pm&lt;br /&gt;
|ModOwner=Tobias&lt;br /&gt;
}}&lt;br /&gt;
[[DbLog]] protokolliert, im Unterschied zu [[FileLog]], Fhem-Ereignisse in einer Datenbank.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
DbLog wird durch 2 verschiedene Einträge aktiviert/definiert. In einer Datei namens db.conf werden in die Parameter für eine Verbindung zur Datenbank (host, username, password, etc.) hinterlegt. Diese Datei kann in einem beliebigen Verzeichnis angelegt werden. &lt;br /&gt;
Das DbLog Device wird dann in der fhem.cfg definiert mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DbLog &amp;lt;configfilename&amp;gt; &amp;lt;regexp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&amp;lt;configfilename&amp;gt;&#039;&#039; dem Pfad zur zuvor angelegten db.conf entspricht.&lt;br /&gt;
Ein Beispiel hierfür wäre:&lt;br /&gt;
:&amp;lt;code&amp;gt;define logdb DbLog ./db.conf .*:.* &amp;lt;/code&amp;gt;&lt;br /&gt;
Die Angabe von .*:.* bedeutet, dass sämtliche DeviceMessages (Messwerte, Batteriestatus, KeepAlives, etc.) in die Datenbank geschrieben werden. Dies führt u.U. dazu, dass die Datenbank auch mit vielen teils unrelevanten Werten gefüllt wird. Man kann daher die zu loggenden Werte einschränken, indem man genau angibt welche Werte übertragen werden sollen. Die erste Wildcard, also das erste .* entspricht dem in FHEM verwendeten Device-Namen. Die weite Wildcard dem vom Device ausgegebenen, zu loggenden Wert. Separiert werden beiden Angaben durch einen Doppelpunkt. Ein Beispiel um zwar alle definierten Devices zu erfassen, aber nur die Werte Temperatur, Ventilposition und Luftfeuchte in die Datenbank zu schreiben wäre:&lt;br /&gt;
:&amp;lt;code&amp;gt;define myDbLog DbLog ./db.conf .*:(temperature|valveposition|humidity).* &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datenbank ==&lt;br /&gt;
Unterstützte Datenbanksysteme (Auswahl):&lt;br /&gt;
* Sqlite&lt;br /&gt;
* mySQL&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Tabellen ===&lt;br /&gt;
* current&lt;br /&gt;
* history&lt;br /&gt;
&lt;br /&gt;
=== Tabellenlayout ===&lt;br /&gt;
DbLog ist auf eine feste Tabellenstruktur angewiesen. Man muss daher in seiner Datenbank eine Tabelle mit folgenden Spalten anlegen:&lt;br /&gt;
* TIMESTAMP: timestamp of event, e.g. 2007-12-30 21:45:22&lt;br /&gt;
* DEVICE: device name, e.g. Wetterstation&lt;br /&gt;
* TYPE: device type, e.g. KS300&lt;br /&gt;
* EVENT: event specification as full string, e.g. humidity: 71 (%)&lt;br /&gt;
* READING: name of reading extracted from event, e.g. humidity&lt;br /&gt;
* VALUE: actual reading extracted from event, e.g. 71&lt;br /&gt;
* UNIT: unit extracted from event, e.g. %&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[Heizleistung_und_Gasverbrauch|Beispiel das DbLog-Daten für SVG-Plots verwendet]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DOIF&amp;diff=8084</id>
		<title>DOIF</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DOIF&amp;diff=8084"/>
		<updated>2014-10-02T04:23:05Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* Waschmaschine Fertigmeldung */  pre statt code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Do ... if ... &lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=98_DOIF.pm&lt;br /&gt;
|ModOwner=Damian}}&lt;br /&gt;
&lt;br /&gt;
[[DOIF]] ermöglicht, Aktionen (&amp;quot;do&amp;quot;) unter bestimmten Bedingungen (&amp;quot;if&amp;quot;) auszuführen. Bedingungen umfasst auch Konstrukte wie &amp;quot;wenn Zustand x ([[watchdog]]) für y Minuten... (Zeitsteuerung)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Details zu diesem Modul finden sich derzeit nur in {{Link2Forum|Topic=23833|LinkText=diesem Forenthread}}.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Siehe Forum. &lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
Siehe Forum.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Siehe Forum.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
Siehe Forum.&lt;br /&gt;
&lt;br /&gt;
=== Waschmaschine Fertigmeldung ===&lt;br /&gt;
Mit DOIF lässt sich sehr einfach eine Fertigmeldung für die Waschmaschine realisieren. Alles was dazu nötig ist, ist ein Dummy-Device das den aktuellen Betriebszustand der Waschmaschine enthält, ein notify der darauf reagiert und z.b. eine Nachricht via pushover sendet und ein DOIF das die Bedingungen für die Änderung des Betriebszustandes definiert. Im Beispiel unten ist im DOIF eine Schwelle von 5 Watt gesetzt ab der das Dummy-Device auf &amp;quot;on&amp;quot; gesetzt wird. Mittels wait wird für diese erste Bedingung eine Zeit von 60 Sekunden angegeben über die die 5 Watt genutzt werden müssen. Für den &amp;quot;fertig&amp;quot;-Fall wird ein Schwellenwert von 4 Watt angesetzt der für mindestens 300 Sekunden unterschritten werden muss. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define waschmaschine_betrieb dummy&lt;br /&gt;
attr waschmaschine_betrieb event-on-change-reading state&lt;br /&gt;
&lt;br /&gt;
define waschmaschine_DI DOIF ([waschmaschine_Pwr:power]&amp;gt;5) (set waschmaschine_betrieb on) DOELSEIF ([waschmaschine_Pwr:power]&amp;lt;4) (set waschmaschine_betrieb off)&lt;br /&gt;
attr waschmaschine_DI wait 60:300&lt;br /&gt;
&lt;br /&gt;
define waschmaschine_fertig_pushover notify waschmaschine_betrieb:off set pushover msg &#039;Waschmaschine&#039; &#039;Waschmaschine ist jetzt fertig!&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Getestet wurde der Code mit einem [[HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung]]. Dabei ist waschmaschine_Pwr das Device zu Channel 2.&lt;br /&gt;
&lt;br /&gt;
=== On-for-timer simulieren ===&lt;br /&gt;
Die on-for-timer Funktion kann für Geräte, die das nicht von Haus aus unterstützen mit folgenden Definitionen simuliert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define schalter_d dummy&lt;br /&gt;
&lt;br /&gt;
define di_Schalter DOIF ([Bewegungsmelder] eq &amp;quot;motion&amp;quot; )  (set schalter_d on, set schalter_d off)&lt;br /&gt;
attr di_Schalter do always&lt;br /&gt;
&lt;br /&gt;
define di_Licht DOIF ([schalter_d] eq &amp;quot;on&amp;quot;)  (set Licht on) DOELSE  (set Licht off)&lt;br /&gt;
attr di_Licht wait 0:300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details dazu finden sich in {{Link2Forum|Topic=23833|Message=193660|LinkText=diesem Forenbeitrag}}.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man die on-for-timer Funktion durch Verwendung von [[ReadingsProxy|readingsProxy]] simulieren, da readingsProxy-Geräte alle Funktionen der [http://fhem.de/commandref.html#setExtensions setExtension] unterstützen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=23833|LinkText=Forenthread}} zur Entstehung dieses Moduls&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DOIF&amp;diff=8083</id>
		<title>DOIF</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DOIF&amp;diff=8083"/>
		<updated>2014-10-02T04:22:33Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: /* Anwendungsbeispiele */ Waschmaschine beschrieben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Do ... if ... &lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=98_DOIF.pm&lt;br /&gt;
|ModOwner=Damian}}&lt;br /&gt;
&lt;br /&gt;
[[DOIF]] ermöglicht, Aktionen (&amp;quot;do&amp;quot;) unter bestimmten Bedingungen (&amp;quot;if&amp;quot;) auszuführen. Bedingungen umfasst auch Konstrukte wie &amp;quot;wenn Zustand x ([[watchdog]]) für y Minuten... (Zeitsteuerung)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Details zu diesem Modul finden sich derzeit nur in {{Link2Forum|Topic=23833|LinkText=diesem Forenthread}}.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Siehe Forum. &lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
Siehe Forum.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Siehe Forum.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
Siehe Forum.&lt;br /&gt;
&lt;br /&gt;
=== Waschmaschine Fertigmeldung ===&lt;br /&gt;
Mit DOIF lässt sich sehr einfach eine Fertigmeldung für die Waschmaschine realisieren. Alles was dazu nötig ist, ist ein Dummy-Device das den aktuellen Betriebszustand der Waschmaschine enthält, ein notify der darauf reagiert und z.b. eine Nachricht via pushover sendet und ein DOIF das die Bedingungen für die Änderung des Betriebszustandes definiert. Im Beispiel unten ist im DOIF eine Schwelle von 5 Watt gesetzt ab der das Dummy-Device auf &amp;quot;on&amp;quot; gesetzt wird. Mittels wait wird für diese erste Bedingung eine Zeit von 60 Sekunden angegeben über die die 5 Watt genutzt werden müssen. Für den &amp;quot;fertig&amp;quot;-Fall wird ein Schwellenwert von 4 Watt angesetzt der für mindestens 300 Sekunden unterschritten werden muss. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
define waschmaschine_betrieb dummy&lt;br /&gt;
attr waschmaschine_betrieb event-on-change-reading state&lt;br /&gt;
&lt;br /&gt;
define waschmaschine_DI DOIF ([waschmaschine_Pwr:power]&amp;gt;5) (set waschmaschine_betrieb on) DOELSEIF ([waschmaschine_Pwr:power]&amp;lt;4) (set waschmaschine_betrieb off)&lt;br /&gt;
attr waschmaschine_DI wait 60:300&lt;br /&gt;
&lt;br /&gt;
define waschmaschine_fertig_pushover notify waschmaschine_betrieb:off set pushover msg &#039;Waschmaschine&#039; &#039;Waschmaschine ist jetzt fertig!&#039;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Getestet wurde der Code mit einem [[HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung]]. Dabei ist waschmaschine_Pwr das Device zu Channel 2. &lt;br /&gt;
&lt;br /&gt;
=== On-for-timer simulieren ===&lt;br /&gt;
Die on-for-timer Funktion kann für Geräte, die das nicht von Haus aus unterstützen mit folgenden Definitionen simuliert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define schalter_d dummy&lt;br /&gt;
&lt;br /&gt;
define di_Schalter DOIF ([Bewegungsmelder] eq &amp;quot;motion&amp;quot; )  (set schalter_d on, set schalter_d off)&lt;br /&gt;
attr di_Schalter do always&lt;br /&gt;
&lt;br /&gt;
define di_Licht DOIF ([schalter_d] eq &amp;quot;on&amp;quot;)  (set Licht on) DOELSE  (set Licht off)&lt;br /&gt;
attr di_Licht wait 0:300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details dazu finden sich in {{Link2Forum|Topic=23833|Message=193660|LinkText=diesem Forenbeitrag}}.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man die on-for-timer Funktion durch Verwendung von [[ReadingsProxy|readingsProxy]] simulieren, da readingsProxy-Geräte alle Funktionen der [http://fhem.de/commandref.html#setExtensions setExtension] unterstützen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=23833|LinkText=Forenthread}} zur Entstehung dieses Moduls&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=8082</id>
		<title>Anwesenheitserkennung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=8082"/>
		<updated>2014-10-02T04:10:18Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: Anbindung an RESIDENTS beschrieben.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Viele Benutzer führen bereits eine eigene &#039;&#039;&#039;Anwesenheitserkennung&#039;&#039;&#039; durch. Diese basiert in den meisten Fällen auf Ping Checks oder bei FritzBoxen auf dem Befehl &#039;&#039;ctlmgr_ctl&#039;&#039;. Diese Lösungen können aber je nach Aufbau und Funktion FHEM massiv beeinträchtigen. Aufgrund des Aufbaus vom FHEM kann dieses dadurch für mehrere Sekunden zum völligen Stillstand gebracht werden.&lt;br /&gt;
&lt;br /&gt;
In FHEM gibt es mittlerweile mehrere Module, die eine zuverlässige Anwesenheitserkennung bieten, ohne dabei FHEM bei der Ausführung zu beeinträchtigen.&lt;br /&gt;
&lt;br /&gt;
Eine erweiterte Funktion der Anwesenheitserkennung ist die Standortverfolgung, die sich nicht nur auf eine oder sehr wenige mit (eigenem) WLAN versorgte Gebiete beschränkt.&lt;br /&gt;
&lt;br /&gt;
== Vorüberlegungen ==&lt;br /&gt;
Generell gibt es mehrere Ansätze um Anwesenheitserkennung mit Handys/Smartphones durchzuführen.&lt;br /&gt;
&lt;br /&gt;
* via PING Checks im gesamten WLAN&lt;br /&gt;
* Aktivitätsprüfung auf einer FritzBox&lt;br /&gt;
* Bluetooth Checks in der gesamten Wohnung&lt;br /&gt;
* eigene Perl-Funktion&lt;br /&gt;
* aktive Benachrichtigung des Smartphones, ausgelöst z.B. über Geo-Lokation/Geofence&lt;br /&gt;
&lt;br /&gt;
Dabei gilt bei der Auswahl der Art darauf zu achten wie sich das jeweilige Device verhält. Aufgrund der Vielfältigkeit kann man hier keine allgemeine Vorgehensweise empfehlen. Als einfacher Start (zumindest für Nicht-Apfel Telefone) eignet sich die Ping-Überprüfung und die FritzBox-Abfrage sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== Randbedingungen ===&lt;br /&gt;
Es gibt Geräte, die ihr WLAN/Bluetooth auch im Standby ständig an haben und auf Anfragen antworten können (fast alle Android-Geräte). Gerade bei Tests über WLAN kann sich das aber signifikant auf die Akku Leistung auswirken.&lt;br /&gt;
&lt;br /&gt;
Andere Geräte wiederum schalten WLAN im Standby Betrieb aus, um Akkukapazität zu sparen. Bluetooth hingegen bleibt weiterhin aktiviert und kann auf Anfragen reagieren. (iPhone)&lt;br /&gt;
&lt;br /&gt;
Wenn man bei einem iPhone die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert hat, so ist dies auch im Standby jederzeit pingbar, wenn der Recher auf dem iTunes zum synchroniseren läuft auch an ist. Ansonsten ist bei iPhone Geräten nur die Aktivitätsprüfung mit einer FritzBox oder das überwachen der DHCP Lease auf einer Airport Basestation wirklich zuverlässig.&lt;br /&gt;
&lt;br /&gt;
Auch wenn Bluetooth aktiviert ist, so bleiben einige Mobiltelefone erst dann empfangsbereit, wenn sie bereits zu irgend einem Bluetoothgerät gekoppelt wurden. Sind diese Geräte noch nie gekoppelt worden, deaktivieren diese ihren Bluetooth Empfänger beim verlassen des Bluetooth-Menüs im Gerät (iPhone).&lt;br /&gt;
&lt;br /&gt;
Hier gilt es vor allem auszuprobieren, wie stark der Akku durch eine Anwesenheitserkennung belastet wird. Entscheidend ist hier, in welchem Abstand man eine Anwesenheitserkennung durchführt. Viele Abfragen wirken sich stärker auf den Akku aus als wenige. Wenige Abfragen bieten aber keine zuverlässige und zeitnahe Erkennung.&lt;br /&gt;
&lt;br /&gt;
Als Alternative, unabhängig vom WLAN und der Erkennung, ob ein Gerät dort eingebucht ist oder nicht, bzw. unabhängig von Bluetooth kann zumindest bei einem iPhone die seit iOS 7 nochmals stark verbesserte Geo-Lokation (Geofencing) genutzt werden. Die iPhone Apps [http://geofency.com/ Geofency] oder [http://geofancy.com/ Geofancy] werden über das FHEM-Modul GEOFANCY angebunden und übertragen ihren Status immer dann, wenn ein definierter Standort betreten oder verlassen wird. Gekoppelt mit entsprechenden Notify und/oder Watchdog Kommandos ist so ebenfalls eine sehr zuverlässige Anwesenheitserkennung möglich (und das nicht nur für das eigene Zuhause).&lt;br /&gt;
&lt;br /&gt;
== Das PRESENCE Modul ==&lt;br /&gt;
Das PRESENCE Modul bietet für die Anwesenheitserkennung mehrere Varianten an. Diese sind aktuell folgende:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;lan-ping&#039;&#039;&#039; - Das überwachen via PING Checks, die durch den FHEM Server versandt werden.&lt;br /&gt;
* &#039;&#039;&#039;fritzbox&#039;&#039;&#039; - Das überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich)&lt;br /&gt;
* &#039;&#039;&#039;local-bluetooth&#039;&#039;&#039; - Das überwachen via Bluetooth Checks, die vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)&lt;br /&gt;
* &#039;&#039;&#039;lan-bluetooth&#039;&#039;&#039; - Das überwachen von Bluetoothgeräte, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[:Kategorie:Raspberry Pi|Raspberry Pi]]) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.&lt;br /&gt;
* &#039;&#039;&#039;function&#039;&#039;&#039; - Das überwachen mithilfe einer selbst geschrieben Perl-Funktion, die den Anwesenheitsstatus zurück gibt (0 oder 1)&lt;br /&gt;
* &#039;&#039;&#039;shell-script&#039;&#039;&#039; - Das überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
=== Ping-Überwachung von Geräten im WLAN/LAN ===&lt;br /&gt;
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}&lt;br /&gt;
Um ein Gerät via Ping zu überwachen, muss folgende Definition durchgeführt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-ping 192.168.0.30&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird die IP-Addresse 192.168.0.30 alle 30&amp;amp;nbsp;Sekunden geprüft, ob sie erreichbar ist. Wenn sie erreichbar ist, ist der Status &amp;quot;present&amp;quot; (anwesend), ansonsten &amp;quot;absent&amp;quot; (abwesend).&lt;br /&gt;
&lt;br /&gt;
Der Timeout kann verändert werden, indem ein Wert (in Sekunden) an das Define anhängt wird:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-ping 192.168.0.30 &#039;&#039;&#039;60&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun würde das Handy alle 60 Sekunden geprüft werden.&lt;br /&gt;
&lt;br /&gt;
Nur wenn bei einem iPhone/iPad die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert ist, ist es auch im Standby zuverlässig pingbar. Standardmäßig deaktivieren Apple-Geräte ihr WLAN im Standby-Betrieb um die Akkulaufzeit zu verlängern.&lt;br /&gt;
&lt;br /&gt;
=== FritzBox: direktes Abfragen der Aktivität via ctlmgr_ctl ===&lt;br /&gt;
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}&lt;br /&gt;
Eine sehr häufige und auch zuverlässige Methode ist auf einer FritzBox die Abfrage mittels ctlmgr_ctl Befehl. Über diesen lassen sich alle Geräte abfragen ob sie aktiv sind. Ist ein Gerät aktiv, so gilt es als anwesend.&lt;br /&gt;
&lt;br /&gt;
Dieser Modus kann allerdings nur in FHEM Installationen direkt auf einer FritzBox verwendet werden. Des weiteren muss FHEM unter dem User root laufen. Um ein Gerät zu überwachen, wird lediglich der Gerätename benötigt, so wie er unter dem Menüpunkt &amp;quot;Heimnetz&amp;quot; auftaucht. &lt;br /&gt;
&lt;br /&gt;
Die erforderliche Definition:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE fritzbox iPhone-4S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth-Überwachung von Geräten durch den FHEM Server ===&lt;br /&gt;
[[Datei:Bluetooth-Adresse-iPhone.png|thumb|Bluetooth-Adresse eines iPhones]]&lt;br /&gt;
Jenach Aufstellungsort des FHEM Servers kann es sinnvoll sein, eine Bluetooth-Überwachung direkt durch den FHEM Server durchzuführen. Hierbei gilt allerdings zu beachten, dass Bluetooth nicht für große Reichweiten gedacht ist und in den meisten Fällen keine Wände überwinden kann. Das heisst, dass in den meisten Fällen damit nur ein Raum überwacht werden kann.&lt;br /&gt;
&lt;br /&gt;
Je nach Einsatzzweck kann das auch so gewollt sein. Bluetooth USB Sticks, die bereits Bluetooth 4.0 unterstützen, können höhere Reichweiten über Zimmerwände hinaus erreichen. Vorausgesetzt, das Mobilgerät unterstützt Bluetooth 4.0.&lt;br /&gt;
&lt;br /&gt;
Um eine Überwachung per Bluetooth durchführen zu können, benötigt man die Bluetooth-Adresse eines Gerätes. Diese ähnelt vom Aufbau einer MAC-Adresse. Generell wird die Adresse in den Telefon-Informationen bei Smartphones angezeigt.&lt;br /&gt;
&lt;br /&gt;
Um eine Anwesenheitserkennung via Bluetooth durchzuführen, wird folgende Definition in der [[Konfiguration]] benötigt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE local-bluetooth XX:XX:XX:XX:XX:XX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth-Überwachung von Geräten durch verteilte Agenten in der Wohnung (presencd/collectord) ===&lt;br /&gt;
[[Datei:Raspberry-Pi-mit-WLAN-und-Bluetooth-Stick.jpg|thumb|left|Raspberry Pi mit Bluetooth- und WLAN-USB-Stick]]&lt;br /&gt;
Um eine zuverlässige und flächendeckende Bluetooth-Anwesenheitserkennung durchzuführen, ist es unerlässlich, mehrere Bluetooth-Empfänger zu verwenden, die auf mehrere oder alle Räume verteilt sind.&lt;br /&gt;
&lt;br /&gt;
Hierfür bietet sich zum Beispiel ein [[Raspberry Pi]] mit einem Mini-Bluetooth-USB-Stick und evtl. einem WLAN-USB-Stick an. Jeder Raum wird mit solch einem Raspberry ausgestattet und ist im WLAN Netz verfügbar.&lt;br /&gt;
&lt;br /&gt;
Dieses Netz aus Raspberrys wird mit dem presenced (Download-Link ist in der [http://fhem.de/commandref_DE.html#PRESENCE Commandref] zum Modul enthalten) ausgestattet. Es stehen bereits entsprechende Pakete für den Raspberry zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Beide Programme (presenced/collectord) sind Perl-Skripte, die als Daemon im Hintergrund laufen und auf Anfragen via Netzwerk warten. Es wird lediglich eine vollständige Perl-Grundinstallation mit Standardmodulen benötigt. Nach Installation der *.deb Pakete sollten diese noch angewiesen werden, automatisch beim Rechner-Neustart gestartet zu werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo update-rc.d presenced defaults&lt;br /&gt;
sudo update-rc.d collectord defaults&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Benutzung von presenced ist in der [http://fhem.de/commandref_DE.html#PRESENCE Commandref] Beschreibung zum PRESENCE Modul enthalten.&lt;br /&gt;
&lt;br /&gt;
==== Jeden Raum einzeln ansprechen (presenced) ====&lt;br /&gt;
Nun kann zuallererst jeder Raum einzeln angesprochen werden. Dabei ist zu beachten, dass pro Definition in der Konfiguration nur ein Gerät in einem Raum spezifisch überwacht werden kann.&lt;br /&gt;
&lt;br /&gt;
Eine Definition sieht dabei folgendermaßen aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy_Wohnzimmer PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 192.168.0.10:5111&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird nun das Gerät nur im Wohnzimmer (Raspberry mit IP 192.168.0.10) überwacht.&lt;br /&gt;
&lt;br /&gt;
==== Alle Räume gemeinsam ansprechen (collectord) ====&lt;br /&gt;
Um jedoch alle Räume gemeinsam zu verwenden, gibt es den Collector-Daemon. Dieser kennt alle presenced-Installationen im Netzwerk und führt eine koordinierte Suche nach den gewünschten Geräten durch. Sobald ein Gerät in einem Raum erkannt wurde, meldet der collectord den Status einschließlich der Angabe des Raumes, in dem das Gerät erkannt wurde.&lt;br /&gt;
&lt;br /&gt;
Um alle Räume zu kennen, müssen diese mit einem Config-File dem collectord mitgeteilt werden. Dieses sieht folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Schlafzimmer]           # Name des Raumes (wird in FHEM als Reading angezeigt)&lt;br /&gt;
address=192.168.179.31   # IP-Adresse oder Hostname des presenced&lt;br /&gt;
port=5111                # TCP Port, der verwendet werden soll (standardmäßig Port 5111)&lt;br /&gt;
presence_timeout=120     # Prüfinterval, das verwendet werden soll, wenn ein Gerät anwesend ist&lt;br /&gt;
absence_timeout=20       # Prüfinterval, das verwendet werden soll, wenn ein Gerät abwesend ist&lt;br /&gt;
&lt;br /&gt;
[Wohnzimmer]&lt;br /&gt;
address=192.168.179.34&lt;br /&gt;
port=5111&lt;br /&gt;
presence_timeout=180&lt;br /&gt;
absence_timeout=20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dieser Konfiguration kann der Collectord gestartet werden. Es empfiehlt sich diesen mit auf dem FHEM Server zu betreiben. Die erforderliche Definition in der Fhem-Konfiguration:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sobald das Handy irgendwo in der Wohnung erkannt wurde, meldet der Collectord dies sofort an FHEM und teilt den Raum mit.&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Benutzung von collectord findet man in der Commandref zum PRESENCE Modul.&lt;br /&gt;
&lt;br /&gt;
=== Überwachung von Geräten mit Perl-Code ===&lt;br /&gt;
Es ist möglich zum Überwachen von Geräten eine eigene Perl-Funktion zu verwenden die dann vom PRESENCE Modul im Hintergrund aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; PRESENCE function {...} [ &amp;lt;check-interval&amp;gt; [ &amp;lt;present-check-interval&amp;gt; ] ]&lt;br /&gt;
&lt;br /&gt;
Sobald die Funktion den Rückgabewert 1 hat, ist das Gerät anwesend, bei 0 abwesend.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel DHCP überwachung auf Airport Basestation ====&lt;br /&gt;
Die hier vorgestellte Überwachung der DHCP Lease auf Airport Basestations per SNMP ist absolut robust gegenüber dem Ruhezustand von iOS und setzt keine weitere Konfiguration auf dem iPhone voraus. Das Abmelden beim Verlassen des Empfangsbereiches der Basestation geschieht mit etwa 5-10 Minuten Verzögerung und ist somit auch vor kurzzeitigen Empfangsproblemen sicher. Das nebenstehende Bild (???) verdeutlicht noch mal die Unterschiede zwischen einer IP-Basierten Ping-Überwachung und der Überwachung auf Ebene der Basestation oder FritzBox.&lt;br /&gt;
&lt;br /&gt;
Bevor der folgende Code verwendet werden kann ist das Perl Modul Net:SNMP zu installieren (z.&amp;amp;nbsp;B. mit: &amp;lt;code&amp;gt;cpan install use Net::SNMP&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Zuerst ist folgender Code in 99_myUtils.pl einzufügen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use Net::SNMP;&lt;br /&gt;
sub&lt;br /&gt;
snmpCheck($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($airport,$client)= @_;&lt;br /&gt;
&lt;br /&gt;
  my $community = &amp;quot;public&amp;quot;;&lt;br /&gt;
  my $host = $airport;&lt;br /&gt;
  my $oid = &amp;quot;.1.3.6.1.2.1.3.1.1.2&amp;quot;;&lt;br /&gt;
  #my $oid = &amp;quot;.1.3.6.1.2.1.3.1.1.2.25.1.10.0.1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  my ( $session, $error ) = Net::SNMP-&amp;gt;session(&lt;br /&gt;
    -hostname =&amp;gt; $host,&lt;br /&gt;
    -community =&amp;gt; $community,&lt;br /&gt;
    -port =&amp;gt; 161,&lt;br /&gt;
    -version =&amp;gt; 1&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
  if( !defined($session) ) {&lt;br /&gt;
    return 0;&lt;br /&gt;
    return &amp;quot;Can&#039;t connect to host $host.&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my @snmpoids = ();&lt;br /&gt;
&lt;br /&gt;
  my $response = $session-&amp;gt;get_next_request($oid);&lt;br /&gt;
  my @nextid = keys %$response;&lt;br /&gt;
  while ( $nextid[0] =~ m/^$oid/ ) {&lt;br /&gt;
    push( @snmpoids, $nextid[0] );&lt;br /&gt;
&lt;br /&gt;
    $response = $session-&amp;gt;get_next_request( $nextid[0] );&lt;br /&gt;
    @nextid = keys %$response;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if( !defined($response = $session-&amp;gt;get_request( @snmpoids ) ) ) {&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  foreach my $value (values %$response) {&lt;br /&gt;
    return 1 if( $value eq $client )&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach lässt sich das Mobilgerät so überwachen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define iPhone PRESENCE function {snmpCheck(&amp;quot;10.0.1.1&amp;quot;,&amp;quot;0x44d77429f35c&amp;quot;)} 30 30&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei 10.0.1.1 durch die IP-Adresse der Basestation und 0x44d77429f35c durch die MAC Adresse des Geräts als HEX-Zahl ersetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
== Das GEOFANCY Modul ==&lt;br /&gt;
Das Modul ermöglicht über einen sogenannten Webhook Mechanismus (umgangssprachlich oft auch als &amp;quot;Push&amp;quot; benannt) das aktive Melden des aktuellen Standortes. Die iPhone Apps  [http://geofency.com/ Geofency] und [http://geofancy.com/ Geofancy] können dann aktiv und quasi in dem Moment, wo man den Wohnbereich betritt oder verlässt, benachrichtigen. Das geht nochmals um einiges schneller, als die Erkennung im WLAN, bei der die Anwesenheit nur in (engen) Zyklen aktiv geprüft werden muss. Gleichzeitig werden Ressourcen in FHEM geschont. Die aktuelle Implementierung im iPhone 5S mit dediziert für das Tracking zuständigem Chip ist so gut, dass der Akku ebenfalls sehr geschont wird.&lt;br /&gt;
&lt;br /&gt;
=== Modul in FHEM einrichten ===&lt;br /&gt;
Das Modul ist mit einer einfachen Definition sofort betriebsbereit:&lt;br /&gt;
:&amp;lt;code&amp;gt;define geofancy GEOFANCY geo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit nimmt FHEM unter http://192.168.178.1:8083/fhem/geo entsprechende Meldungen des iPhones entgegen. Damit das nicht nur über das lokale WLAN funktioniert, bedarf es allerdings noch einiger zusätzlicher Maßnahmen. FHEM muss vom Internet erreichbar gemacht werden, dabei sollte unbedingt an die Absicherung des Zugriffs gedacht werden.&lt;br /&gt;
&lt;br /&gt;
Zunächst einmal habe ich bei mir eine eigene FHEMWEB Instanz dafür angelegt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define WEBhook FHEMWEB 8088 global&lt;br /&gt;
attr WEBhook hiddenroom input,detail,save,Unsorted,Everything,CUL_HM,FS20,Commandref,style,Edit files,Select style,Logfile,Floorplans,Remote doc,FileLogs,Apartment,Bathroom,Bedroom,Kitchen,Living,Residents,System,Weather,Event monitor,NEW&lt;br /&gt;
attr WEBhook room hidden&lt;br /&gt;
attr WEBhook webname webhook&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist unter der URL http://192.168.178.1:8088/webhook/geo das GEOFANCY Modul erreichbar. Ich verstecke in dieser Ansicht noch alle Räume, die ich so habe. Wer die Raumnamen allerdings kennt, kann sie trotzdem aufrufen. Auch wenn das Security-by-Obscurity ist - ich fühle mich wohler damit.&lt;br /&gt;
&lt;br /&gt;
Mit dem neuen Attribut allowedCommands lässt sich diese FHEMWEB Instanz noch weiter absichern indem nur die tatsächlich benötigten Kommandos erlaubt werden (in diesem Fall keine) und damit alle anderen nicht erlaubten (attr,define,get,set,...) automatisch nicht mehr zur Verfügung stehen: &lt;br /&gt;
 &amp;lt;code&amp;gt;attr WEBhook allowedCommands ,&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Webhook weiter absichern ===&lt;br /&gt;
Außerdem ist dringend zu empfehlen, den Zugriff über SSL und HTTP Basic-Authentication weiter abzusichern. Läuft FHEM auf einem RaspberryPi, dann empfehle ich dazu die Konfiguration eines ReverseProxy (z.B. nginx oder Apache), damit ist man am flexibelsten und kann auch alle FHEMWEB Instanzen direkt über einen einzigen Port (meist 443, der HTTPS/SSL Standard Port) zusammenfassen. Ich möchte hier allerdings beschreiben, wie weit man mit FHEM Bordmitteln kommt und nehme das Beispiel einer Installation auf einer Fritzbox.&lt;br /&gt;
&lt;br /&gt;
Wie SSL aktiviert wird, steht in der [http://fhem.de/commandref.html#FHEMWEB Commandref für FHEMWEB]. Um die Kommandos auf der Fritzbox ausführen zu können, muss zuerst Telnet aktiviert werden (bitte Google benutzen). Anschließend wechselt man auf der Fritzbox ins Verzeichnis /var/media/ftp/fhem und kann dann den Hinweisen aus der [http://fhem.de/commandref.html#FHEMWEB Commandref] unter dem Punkt HTTPS folgen. Letztlich fehlt noch das entsprechende Attribut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr WEBhook HTTPS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes aktivieren wir Benutzername+Passwort für den Zugriff. Die [http://fhem.de/commandref.html#FHEMWEB Commandref für FHEMWEB] gibt auch hier unter dem Punkt basicAuth entsprechende Hinweise. Wir fügen hier einfach mal einen Benutzer &amp;quot;webhook&amp;quot; mit dem Passwort &amp;quot;Geofancy&amp;quot; hinzu, das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr WEBhook basicAuth { &amp;quot;$user:$password&amp;quot; eq &amp;quot;webhook:Geofancy&amp;quot; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zur Absicherung gibt auch [[FritzBox Webzugriff absichern]].&lt;br /&gt;
&lt;br /&gt;
Um zu testen, ob unsere Absicherung erfolgreich war, kann man die URL https://192.168.178.1:8088/webhook/geo aufrufen (wichtig ist, dass man jetzt https und nicht mehr http eingibt; ansonsten bekommt man keine Antwort). Eine Zertifikatswarnung kann getrost ignoriert werden, verschlüsselt wird trotzdem. Es sollte auch eine Passwort Abfrage kommen und die Eingabe der entsprechenden Daten sollte dann zu einer entsprechenden Meldung vom GEOFANCY Modul führen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOK No data received, see API information on http://wiki.geofancy.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist ok, schließlich sind wir keine App, sondern der Mensch, der nur mal eben prüfen will :-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff vom Internet ermöglichen ===&lt;br /&gt;
Das ist je nach Fritzbox und Software Version unterschiedlich. Grundsätzlich gilt: Eine Weiterleitung des ports 8088 vom Internet auf das laufende FHEM auf Port 8088 intern ist von AVM so nicht vorgesehen.&lt;br /&gt;
Bei mir führte folgendes zum Erfolg:&lt;br /&gt;
&lt;br /&gt;
* Einloggen per Telnet auf der Fritzbox (ich habe FritzOS 6 installiert)&lt;br /&gt;
* Konfiguration editieren mittels &amp;quot;nvi /var/flash/ar7.cfg&amp;quot;&lt;br /&gt;
* Suchen nach richtiger Zeile durch Eingabe von &amp;quot;/internet_forwardrules&amp;quot; und Enter&lt;br /&gt;
* Hinzufügen einer weiteren Zeile (Vorsicht, die bestehende Zeile endet mit ; und das muss in , umgeändert werden, so dass das ; schließlich am Ende der Zeile steht.&lt;br /&gt;
&lt;br /&gt;
So sieht es bei mir vorher aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;internet_forwardrules = &amp;quot;tcp 0.0.0.0:488 0.0.0.0:488 0&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
Hinterher:&lt;br /&gt;
:&amp;lt;code&amp;gt;internet_forwardrules = &amp;quot;tcp 0.0.0.0:488 0.0.0.0:488 0&amp;quot;, &amp;quot;tcp 0.0.0.0:8088 0.0.0.0:8088 0&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach mittels &amp;quot;:x&amp;quot; abspeichern und sofort per &amp;quot;reboot&amp;quot; die Box neu starten, um diese Änderungen zu aktivieren. Das ist wichtig; ansonsten zeigt die Erfahrung, dass die Änderung nicht dauerhaft erhalten bleibt und die gerade gemachten Änderungen verloren gehen.&lt;br /&gt;
&lt;br /&gt;
Wer die Einstellungen zu &amp;quot;internet_forwardrules&amp;quot; bei sich nicht finden kann, hat womöglich eine andere Version als ich oder ein leicht anderes Gerät und bemüht am besten Google, was er tun kann, um das Gleiche zu erreichen. Möglicherweise tauchen die Einträge auch erst auf, wenn man mal über das Webinterface ein Forwarding eingerichtet hatte.&lt;br /&gt;
&lt;br /&gt;
Hat man einen DynDNS Dienst oder myFritz auf der Fritzbox aktiviert, so kann man jetzt auch von draußen auf den Webhook zugreifen. Das kann man prüfen, indem man das iPhone aus dem WLAN ausbucht und einmal die externe Adresse eingibt, also z.B. https://meindyndns.org:8088/webhook/geo.&lt;br /&gt;
&lt;br /&gt;
=== Einrichten in der Geof[e|a]ncy.app ===&lt;br /&gt;
Hat das alles soweit geklappt, können endlich in der Geofency.app bzw. Geofancy.app am iPhone die gewünschten Bereiche definiert werden. Am Besten zuvor in den Global Settings die folgenden Einstellungen hinterlegen:&lt;br /&gt;
&lt;br /&gt;
* URL: https://meindyndns.org:8088/webhook/geo&lt;br /&gt;
* POST (oder GET, ist egal - das FHEM Modul kann beides)&lt;br /&gt;
* HTTP Basic Authentication: EIN (entsprechend Username und Password eintragen)&lt;br /&gt;
&lt;br /&gt;
Anfänglich ist es empfehlenswert noch &amp;quot;Notification on success&amp;quot; und &amp;quot;Notification on Failure&amp;quot; einzuschalten. Ersteres kann man ausmachen wenn man weiß, dass es soweit funktioniert. Über &amp;quot;Send Test-Request&amp;quot; kann man einmal einen Test schicken und erhält das Ergebnis entsprechend dargestellt. Es sollte sowas kommen wie&lt;br /&gt;
:&amp;lt;code&amp;gt;POST Success: test OK&amp;lt;/code&amp;gt;. In Geofancy.app gibt es keine Rückmeldung über den Erfolg des Testrequests. In FHEM sollten sich durch den Testrequest jedoch die Readings sofort aktualisieren (Ggf. ist ein Reload der FHEMWEB-Seite nötig da zusätzliche Tabellenzeilen nicht via Longpoll ergänzt werden). &lt;br /&gt;
&lt;br /&gt;
Funktioniert das soweit, kann man eine neue Lokation als sein Zuhause anlegen. Es empfiehlt sich einen ID-Namen zu setzen; dieser ist dann in FHEM als Name für die Lokation sichtbar. Für die eigene Wohnung empfiehlt sich hier &amp;quot;home&amp;quot; (da dies auch direkt vom RESIDENTS Modul so verwendet werden kann). Man kann auch Trigger für andere Standorte anlegen. FHEM weiß dann sogar, wenn ihr im Büro seid und könnte sich dabei auch unterschiedlich verhalten, als wenn ihr &amp;quot;auf Achse&amp;quot; seid. Bei letzterem ist der Status im GEOFANCY Modul &amp;quot;underway&amp;quot;, was so viel heißt wie &amp;quot;unbekannter Aufenthaltsort&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Zumindest für Geofancy.app liefert ein Testrequest wohl zufällige Locations zurück. Die eigenen Location-IDs werden also nicht übergeben, selbst wenn man sich in einem Geofence befindet. Um zu testen muss man sich wohl oder übel selbst bewegen ;-).&lt;br /&gt;
&lt;br /&gt;
=== GEOFANCY Modul individualisieren ===&lt;br /&gt;
Die im GEOFANCY Modul dargestellten Readings sind nun in etwa so, wenn ihr euch bewegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Readings:&lt;br /&gt;
     2014-01-18 14:37:42   51F23894-AAAA-BBBB-CCCC-0123456789AB          arrived home&lt;br /&gt;
     2014-01-18 14:37:42   currLocLat_51F23894-AAAA-BBBB-CCCC-0123456789AB 48.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocLong_51F23894-AAAA-BBBB-CCCC-0123456789AB 11.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocTime_51F23894-AAAA-BBBB-CCCC-0123456789AB 2014-01-18 14:37:42&lt;br /&gt;
     2014-01-18 14:37:42   currLoc_51F23894-AAAA-BBBB-CCCC-0123456789AB  home&lt;br /&gt;
     2014-01-17 19:18:23   lastArr         51F23894-AAAA-BBBB-CCCC-0123456789AB home&lt;br /&gt;
     2014-01-17 18:41:46   lastDep         51F23894-AAAA-BBBB-CCCC-0123456789AB Office&lt;br /&gt;
     2014-01-18 14:37:42   lastDevice      51F23894-AAAA-BBBB-CCCC-0123456789AB&lt;br /&gt;
     2014-01-17 18:41:46   lastLocArr_51F23894-AAAA-BBBB-CCCC-0123456789AB 2014-01-17 08:58:37&lt;br /&gt;
     2014-01-17 18:41:46   lastLocDep_51F23894-AAAA-BBBB-CCCC-0123456789AB 2014-01-17 18:41:46&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLat_51F23894-AAAA-BBBB-CCCC-0123456789AB 48.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLong_51F23894-AAAA-BBBB-CCCC-0123456789AB 11.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLoc_51F23894-AAAA-BBBB-CCCC-0123456789AB  Office&lt;br /&gt;
     2014-01-18 14:37:42   state           dev:51F23894-AAAA-BBBB-CCCC-0123456789AB trig:test id:home lat:48.9999 long:11.9999&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer genauer hinschaut sieht: Mein iPhone heißt wohl 51F23894-AAAA-BBBB-CCCC-0123456789AB. Das ist sehr unübersichtlich. Wir setzen deshalb einen Alias-Namen für das Gerät. Sinnvoll erscheint mir der Vorname des Besitzers:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr geofancy devAlias 51F23894-AAAA-BBBB-CCCC-0123456789AB:Julian&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Alias-Namen können mit Leerzeichen einfach angehängt werden.&lt;br /&gt;
Die alten Readings löschen wir mit&lt;br /&gt;
:&amp;lt;code&amp;gt;set geofancy clear readings&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt sehen die Readings schon viel freundlicher aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Readings:&lt;br /&gt;
     2014-01-18 14:37:42   Julian          arrived home&lt;br /&gt;
     2014-01-18 14:37:42   currLocLat_Julian 48.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocLong_Julian 11.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocTime_Julian 2014-01-18 14:37:42&lt;br /&gt;
     2014-01-18 14:37:42   currLoc_Julian  home&lt;br /&gt;
     2014-01-17 19:18:23   lastArr         Julian home&lt;br /&gt;
     2014-01-17 18:41:46   lastDep         Julian Office&lt;br /&gt;
     2014-01-18 14:37:42   lastDevice      Julian&lt;br /&gt;
     2014-01-17 18:41:46   lastLocArr_Julian 2014-01-17 08:58:37&lt;br /&gt;
     2014-01-17 18:41:46   lastLocDep_Julian 2014-01-17 18:41:46&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLat_Julian 48.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLong_Julian 11.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLoc_Julian  Office&lt;br /&gt;
     2014-01-18 14:37:42   state           dev:Julian trig:test id:home lat:48.9999 long:11.9999&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Möchte man nun etwas bestimmtes tun, wenn man nach Hause kommt oder das Heim verlässt, kann man am Besten ein entsprechendes Notify auf das Reading currLog_Name setzen. Ich aktualisiere lediglich zwei Dummies, durch die dann alle weiteren Notifies ausgelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define n_Julian.Presence notify geofancy:currLoc_Julian:.home set Julian.homestatus home&lt;br /&gt;
attr n_Julian.Presence room Residents&lt;br /&gt;
define n_Julian.absence notify geofancy:currLoc_Julian:.underway {\&lt;br /&gt;
if (Value(&amp;quot;Julian.homestatus&amp;quot;) ne &amp;quot;gone&amp;quot; &amp;amp;&amp;amp; Value(&amp;quot;Julian.homestatus&amp;quot;) ne &amp;quot;absent&amp;quot;) {\&lt;br /&gt;
  fhem(&amp;quot;set Julian.homestatus absent&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
define n_Julian.whereabout notify geofancy:currLoc_Julian:.* set Julian.whereabout $EVTPART1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer es noch einfacher möchte (bzw. auch noch mehr Features) schaut sich einmal die neue Modulfamilie aus RESIDENTS[http://fhem.de/commandref_DE.html#RESIDENTS], ROOMMATE[http://fhem.de/commandref_DE.html#ROOMMATE] und GUEST[http://fhem.de/commandref_DE.html#GUEST] an. Diese sind direkt auf GEOFANCY abgestimmt.&lt;br /&gt;
&lt;br /&gt;
Zur Anbindung von GEOFANCY zu RESIDENTS reicht in der Regel schon ein einfaches notify: &amp;lt;code&amp;gt;define n_rr_Julian.location notify geofancy:currLoc_Julian.* set rr_Julian location $EVTPART1&amp;lt;/code&amp;gt;. Wobei &amp;quot;Julian&amp;quot; dabei als devAlias in GEOFANCY eingtragen wurde, rr_Julian der Name des ROOMMATE aus RESIDENTS ist. Außerdem sind die Location-IDs in der Geofency.app bzw. Geofancy.app so gewählt wurde, dass diese direkt einem ROOMMATE-Status entsprechen (also z.B. home, wayhome...).&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Nutzung der Anwesenheitserkennung ==&lt;br /&gt;
Hier sollen Beispiele für den Nutzen von Anwesenheitserkennung aufgezeigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abschalten aller Verbraucher (Licht, Musikanlage) beim Verlassen der Wohnung ===&lt;br /&gt;
Typisches Szenario: Man geht ausser Haus, aber hat vergessen im Bad das Licht aus zu machen. Allerdings geht man heutzutage fast garnicht mehr ohne Handy aus dem Haus.&lt;br /&gt;
&lt;br /&gt;
Nun soll FHEM in der gesamten Wohnung das Licht, sowie sonstige Verbraucher ausschalten, wenn ich länger als 15 Minuten ausser Haus bin. Dazu benötigt man zuerst eine structure, die alle Verbraucher und sonstigen Devices, die das betrifft, zusammenfasst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Gesamte_Wohnung structure Gesamtes_Licht Licht_Wohnzimmer Licht_Kueche LED_Kueche Licht_Bad Licht_Schlafzimmer AV_Receiver TV_Steckdose&lt;br /&gt;
attr Gesamte_Wohnung room Wohnung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann man mittels eines watchdogs eine Überwachung für sein Handy anlegen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Überwachen der gesamten Wohnung mittels collectord sowie presenced in jedem Raum&lt;br /&gt;
define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222&lt;br /&gt;
attr Handy event-on-change-reading state  # Ein Event soll nur bei der Änderung des Anwesenheitsstatus (Reading: status) erfolgen. Wichtig für den watchdog!!!&lt;br /&gt;
&lt;br /&gt;
# Nach 15 Minuten Abwesenheit (Handy im Status &amp;quot;absent&amp;quot;) soll die gesamte Wohnung ausgeschaltet werden.&lt;br /&gt;
define watchdog_Anwesenheit watchdog Handy:absent 00:15 Handy:present set Gesamte_Wohnung off ; setstate watchdog_Anwesenheit defined&lt;br /&gt;
attr watchdog_Anwesenheit regexp1WontReactivate 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=8081</id>
		<title>Anwesenheitserkennung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=8081"/>
		<updated>2014-10-02T04:03:41Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: Hinweise zu Geofancy.app ergänzt. &amp;quot;Ich&amp;quot; entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Viele Benutzer führen bereits eine eigene &#039;&#039;&#039;Anwesenheitserkennung&#039;&#039;&#039; durch. Diese basiert in den meisten Fällen auf Ping Checks oder bei FritzBoxen auf dem Befehl &#039;&#039;ctlmgr_ctl&#039;&#039;. Diese Lösungen können aber je nach Aufbau und Funktion FHEM massiv beeinträchtigen. Aufgrund des Aufbaus vom FHEM kann dieses dadurch für mehrere Sekunden zum völligen Stillstand gebracht werden.&lt;br /&gt;
&lt;br /&gt;
In FHEM gibt es mittlerweile mehrere Module, die eine zuverlässige Anwesenheitserkennung bieten, ohne dabei FHEM bei der Ausführung zu beeinträchtigen.&lt;br /&gt;
&lt;br /&gt;
Eine erweiterte Funktion der Anwesenheitserkennung ist die Standortverfolgung, die sich nicht nur auf eine oder sehr wenige mit (eigenem) WLAN versorgte Gebiete beschränkt.&lt;br /&gt;
&lt;br /&gt;
== Vorüberlegungen ==&lt;br /&gt;
Generell gibt es mehrere Ansätze um Anwesenheitserkennung mit Handys/Smartphones durchzuführen.&lt;br /&gt;
&lt;br /&gt;
* via PING Checks im gesamten WLAN&lt;br /&gt;
* Aktivitätsprüfung auf einer FritzBox&lt;br /&gt;
* Bluetooth Checks in der gesamten Wohnung&lt;br /&gt;
* eigene Perl-Funktion&lt;br /&gt;
* aktive Benachrichtigung des Smartphones, ausgelöst z.B. über Geo-Lokation/Geofence&lt;br /&gt;
&lt;br /&gt;
Dabei gilt bei der Auswahl der Art darauf zu achten wie sich das jeweilige Device verhält. Aufgrund der Vielfältigkeit kann man hier keine allgemeine Vorgehensweise empfehlen. Als einfacher Start (zumindest für Nicht-Apfel Telefone) eignet sich die Ping-Überprüfung und die FritzBox-Abfrage sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== Randbedingungen ===&lt;br /&gt;
Es gibt Geräte, die ihr WLAN/Bluetooth auch im Standby ständig an haben und auf Anfragen antworten können (fast alle Android-Geräte). Gerade bei Tests über WLAN kann sich das aber signifikant auf die Akku Leistung auswirken.&lt;br /&gt;
&lt;br /&gt;
Andere Geräte wiederum schalten WLAN im Standby Betrieb aus, um Akkukapazität zu sparen. Bluetooth hingegen bleibt weiterhin aktiviert und kann auf Anfragen reagieren. (iPhone)&lt;br /&gt;
&lt;br /&gt;
Wenn man bei einem iPhone die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert hat, so ist dies auch im Standby jederzeit pingbar, wenn der Recher auf dem iTunes zum synchroniseren läuft auch an ist. Ansonsten ist bei iPhone Geräten nur die Aktivitätsprüfung mit einer FritzBox oder das überwachen der DHCP Lease auf einer Airport Basestation wirklich zuverlässig.&lt;br /&gt;
&lt;br /&gt;
Auch wenn Bluetooth aktiviert ist, so bleiben einige Mobiltelefone erst dann empfangsbereit, wenn sie bereits zu irgend einem Bluetoothgerät gekoppelt wurden. Sind diese Geräte noch nie gekoppelt worden, deaktivieren diese ihren Bluetooth Empfänger beim verlassen des Bluetooth-Menüs im Gerät (iPhone).&lt;br /&gt;
&lt;br /&gt;
Hier gilt es vor allem auszuprobieren, wie stark der Akku durch eine Anwesenheitserkennung belastet wird. Entscheidend ist hier, in welchem Abstand man eine Anwesenheitserkennung durchführt. Viele Abfragen wirken sich stärker auf den Akku aus als wenige. Wenige Abfragen bieten aber keine zuverlässige und zeitnahe Erkennung.&lt;br /&gt;
&lt;br /&gt;
Als Alternative, unabhängig vom WLAN und der Erkennung, ob ein Gerät dort eingebucht ist oder nicht, bzw. unabhängig von Bluetooth kann zumindest bei einem iPhone die seit iOS 7 nochmals stark verbesserte Geo-Lokation (Geofencing) genutzt werden. Die iPhone Apps [http://geofency.com/ Geofency] oder [http://geofancy.com/ Geofancy] werden über das FHEM-Modul GEOFANCY angebunden und übertragen ihren Status immer dann, wenn ein definierter Standort betreten oder verlassen wird. Gekoppelt mit entsprechenden Notify und/oder Watchdog Kommandos ist so ebenfalls eine sehr zuverlässige Anwesenheitserkennung möglich (und das nicht nur für das eigene Zuhause).&lt;br /&gt;
&lt;br /&gt;
== Das PRESENCE Modul ==&lt;br /&gt;
Das PRESENCE Modul bietet für die Anwesenheitserkennung mehrere Varianten an. Diese sind aktuell folgende:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;lan-ping&#039;&#039;&#039; - Das überwachen via PING Checks, die durch den FHEM Server versandt werden.&lt;br /&gt;
* &#039;&#039;&#039;fritzbox&#039;&#039;&#039; - Das überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich)&lt;br /&gt;
* &#039;&#039;&#039;local-bluetooth&#039;&#039;&#039; - Das überwachen via Bluetooth Checks, die vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)&lt;br /&gt;
* &#039;&#039;&#039;lan-bluetooth&#039;&#039;&#039; - Das überwachen von Bluetoothgeräte, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[:Kategorie:Raspberry Pi|Raspberry Pi]]) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.&lt;br /&gt;
* &#039;&#039;&#039;function&#039;&#039;&#039; - Das überwachen mithilfe einer selbst geschrieben Perl-Funktion, die den Anwesenheitsstatus zurück gibt (0 oder 1)&lt;br /&gt;
* &#039;&#039;&#039;shell-script&#039;&#039;&#039; - Das überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
=== Ping-Überwachung von Geräten im WLAN/LAN ===&lt;br /&gt;
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}&lt;br /&gt;
Um ein Gerät via Ping zu überwachen, muss folgende Definition durchgeführt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-ping 192.168.0.30&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird die IP-Addresse 192.168.0.30 alle 30&amp;amp;nbsp;Sekunden geprüft, ob sie erreichbar ist. Wenn sie erreichbar ist, ist der Status &amp;quot;present&amp;quot; (anwesend), ansonsten &amp;quot;absent&amp;quot; (abwesend).&lt;br /&gt;
&lt;br /&gt;
Der Timeout kann verändert werden, indem ein Wert (in Sekunden) an das Define anhängt wird:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-ping 192.168.0.30 &#039;&#039;&#039;60&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun würde das Handy alle 60 Sekunden geprüft werden.&lt;br /&gt;
&lt;br /&gt;
Nur wenn bei einem iPhone/iPad die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert ist, ist es auch im Standby zuverlässig pingbar. Standardmäßig deaktivieren Apple-Geräte ihr WLAN im Standby-Betrieb um die Akkulaufzeit zu verlängern.&lt;br /&gt;
&lt;br /&gt;
=== FritzBox: direktes Abfragen der Aktivität via ctlmgr_ctl ===&lt;br /&gt;
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}&lt;br /&gt;
Eine sehr häufige und auch zuverlässige Methode ist auf einer FritzBox die Abfrage mittels ctlmgr_ctl Befehl. Über diesen lassen sich alle Geräte abfragen ob sie aktiv sind. Ist ein Gerät aktiv, so gilt es als anwesend.&lt;br /&gt;
&lt;br /&gt;
Dieser Modus kann allerdings nur in FHEM Installationen direkt auf einer FritzBox verwendet werden. Des weiteren muss FHEM unter dem User root laufen. Um ein Gerät zu überwachen, wird lediglich der Gerätename benötigt, so wie er unter dem Menüpunkt &amp;quot;Heimnetz&amp;quot; auftaucht. &lt;br /&gt;
&lt;br /&gt;
Die erforderliche Definition:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE fritzbox iPhone-4S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth-Überwachung von Geräten durch den FHEM Server ===&lt;br /&gt;
[[Datei:Bluetooth-Adresse-iPhone.png|thumb|Bluetooth-Adresse eines iPhones]]&lt;br /&gt;
Jenach Aufstellungsort des FHEM Servers kann es sinnvoll sein, eine Bluetooth-Überwachung direkt durch den FHEM Server durchzuführen. Hierbei gilt allerdings zu beachten, dass Bluetooth nicht für große Reichweiten gedacht ist und in den meisten Fällen keine Wände überwinden kann. Das heisst, dass in den meisten Fällen damit nur ein Raum überwacht werden kann.&lt;br /&gt;
&lt;br /&gt;
Je nach Einsatzzweck kann das auch so gewollt sein. Bluetooth USB Sticks, die bereits Bluetooth 4.0 unterstützen, können höhere Reichweiten über Zimmerwände hinaus erreichen. Vorausgesetzt, das Mobilgerät unterstützt Bluetooth 4.0.&lt;br /&gt;
&lt;br /&gt;
Um eine Überwachung per Bluetooth durchführen zu können, benötigt man die Bluetooth-Adresse eines Gerätes. Diese ähnelt vom Aufbau einer MAC-Adresse. Generell wird die Adresse in den Telefon-Informationen bei Smartphones angezeigt.&lt;br /&gt;
&lt;br /&gt;
Um eine Anwesenheitserkennung via Bluetooth durchzuführen, wird folgende Definition in der [[Konfiguration]] benötigt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE local-bluetooth XX:XX:XX:XX:XX:XX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth-Überwachung von Geräten durch verteilte Agenten in der Wohnung (presencd/collectord) ===&lt;br /&gt;
[[Datei:Raspberry-Pi-mit-WLAN-und-Bluetooth-Stick.jpg|thumb|left|Raspberry Pi mit Bluetooth- und WLAN-USB-Stick]]&lt;br /&gt;
Um eine zuverlässige und flächendeckende Bluetooth-Anwesenheitserkennung durchzuführen, ist es unerlässlich, mehrere Bluetooth-Empfänger zu verwenden, die auf mehrere oder alle Räume verteilt sind.&lt;br /&gt;
&lt;br /&gt;
Hierfür bietet sich zum Beispiel ein [[Raspberry Pi]] mit einem Mini-Bluetooth-USB-Stick und evtl. einem WLAN-USB-Stick an. Jeder Raum wird mit solch einem Raspberry ausgestattet und ist im WLAN Netz verfügbar.&lt;br /&gt;
&lt;br /&gt;
Dieses Netz aus Raspberrys wird mit dem presenced (Download-Link ist in der [http://fhem.de/commandref_DE.html#PRESENCE Commandref] zum Modul enthalten) ausgestattet. Es stehen bereits entsprechende Pakete für den Raspberry zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Beide Programme (presenced/collectord) sind Perl-Skripte, die als Daemon im Hintergrund laufen und auf Anfragen via Netzwerk warten. Es wird lediglich eine vollständige Perl-Grundinstallation mit Standardmodulen benötigt. Nach Installation der *.deb Pakete sollten diese noch angewiesen werden, automatisch beim Rechner-Neustart gestartet zu werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo update-rc.d presenced defaults&lt;br /&gt;
sudo update-rc.d collectord defaults&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Benutzung von presenced ist in der [http://fhem.de/commandref_DE.html#PRESENCE Commandref] Beschreibung zum PRESENCE Modul enthalten.&lt;br /&gt;
&lt;br /&gt;
==== Jeden Raum einzeln ansprechen (presenced) ====&lt;br /&gt;
Nun kann zuallererst jeder Raum einzeln angesprochen werden. Dabei ist zu beachten, dass pro Definition in der Konfiguration nur ein Gerät in einem Raum spezifisch überwacht werden kann.&lt;br /&gt;
&lt;br /&gt;
Eine Definition sieht dabei folgendermaßen aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy_Wohnzimmer PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 192.168.0.10:5111&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird nun das Gerät nur im Wohnzimmer (Raspberry mit IP 192.168.0.10) überwacht.&lt;br /&gt;
&lt;br /&gt;
==== Alle Räume gemeinsam ansprechen (collectord) ====&lt;br /&gt;
Um jedoch alle Räume gemeinsam zu verwenden, gibt es den Collector-Daemon. Dieser kennt alle presenced-Installationen im Netzwerk und führt eine koordinierte Suche nach den gewünschten Geräten durch. Sobald ein Gerät in einem Raum erkannt wurde, meldet der collectord den Status einschließlich der Angabe des Raumes, in dem das Gerät erkannt wurde.&lt;br /&gt;
&lt;br /&gt;
Um alle Räume zu kennen, müssen diese mit einem Config-File dem collectord mitgeteilt werden. Dieses sieht folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Schlafzimmer]           # Name des Raumes (wird in FHEM als Reading angezeigt)&lt;br /&gt;
address=192.168.179.31   # IP-Adresse oder Hostname des presenced&lt;br /&gt;
port=5111                # TCP Port, der verwendet werden soll (standardmäßig Port 5111)&lt;br /&gt;
presence_timeout=120     # Prüfinterval, das verwendet werden soll, wenn ein Gerät anwesend ist&lt;br /&gt;
absence_timeout=20       # Prüfinterval, das verwendet werden soll, wenn ein Gerät abwesend ist&lt;br /&gt;
&lt;br /&gt;
[Wohnzimmer]&lt;br /&gt;
address=192.168.179.34&lt;br /&gt;
port=5111&lt;br /&gt;
presence_timeout=180&lt;br /&gt;
absence_timeout=20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dieser Konfiguration kann der Collectord gestartet werden. Es empfiehlt sich diesen mit auf dem FHEM Server zu betreiben. Die erforderliche Definition in der Fhem-Konfiguration:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sobald das Handy irgendwo in der Wohnung erkannt wurde, meldet der Collectord dies sofort an FHEM und teilt den Raum mit.&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Benutzung von collectord findet man in der Commandref zum PRESENCE Modul.&lt;br /&gt;
&lt;br /&gt;
=== Überwachung von Geräten mit Perl-Code ===&lt;br /&gt;
Es ist möglich zum Überwachen von Geräten eine eigene Perl-Funktion zu verwenden die dann vom PRESENCE Modul im Hintergrund aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; PRESENCE function {...} [ &amp;lt;check-interval&amp;gt; [ &amp;lt;present-check-interval&amp;gt; ] ]&lt;br /&gt;
&lt;br /&gt;
Sobald die Funktion den Rückgabewert 1 hat, ist das Gerät anwesend, bei 0 abwesend.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel DHCP überwachung auf Airport Basestation ====&lt;br /&gt;
Die hier vorgestellte Überwachung der DHCP Lease auf Airport Basestations per SNMP ist absolut robust gegenüber dem Ruhezustand von iOS und setzt keine weitere Konfiguration auf dem iPhone voraus. Das Abmelden beim Verlassen des Empfangsbereiches der Basestation geschieht mit etwa 5-10 Minuten Verzögerung und ist somit auch vor kurzzeitigen Empfangsproblemen sicher. Das nebenstehende Bild (???) verdeutlicht noch mal die Unterschiede zwischen einer IP-Basierten Ping-Überwachung und der Überwachung auf Ebene der Basestation oder FritzBox.&lt;br /&gt;
&lt;br /&gt;
Bevor der folgende Code verwendet werden kann ist das Perl Modul Net:SNMP zu installieren (z.&amp;amp;nbsp;B. mit: &amp;lt;code&amp;gt;cpan install use Net::SNMP&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Zuerst ist folgender Code in 99_myUtils.pl einzufügen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use Net::SNMP;&lt;br /&gt;
sub&lt;br /&gt;
snmpCheck($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($airport,$client)= @_;&lt;br /&gt;
&lt;br /&gt;
  my $community = &amp;quot;public&amp;quot;;&lt;br /&gt;
  my $host = $airport;&lt;br /&gt;
  my $oid = &amp;quot;.1.3.6.1.2.1.3.1.1.2&amp;quot;;&lt;br /&gt;
  #my $oid = &amp;quot;.1.3.6.1.2.1.3.1.1.2.25.1.10.0.1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  my ( $session, $error ) = Net::SNMP-&amp;gt;session(&lt;br /&gt;
    -hostname =&amp;gt; $host,&lt;br /&gt;
    -community =&amp;gt; $community,&lt;br /&gt;
    -port =&amp;gt; 161,&lt;br /&gt;
    -version =&amp;gt; 1&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
  if( !defined($session) ) {&lt;br /&gt;
    return 0;&lt;br /&gt;
    return &amp;quot;Can&#039;t connect to host $host.&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my @snmpoids = ();&lt;br /&gt;
&lt;br /&gt;
  my $response = $session-&amp;gt;get_next_request($oid);&lt;br /&gt;
  my @nextid = keys %$response;&lt;br /&gt;
  while ( $nextid[0] =~ m/^$oid/ ) {&lt;br /&gt;
    push( @snmpoids, $nextid[0] );&lt;br /&gt;
&lt;br /&gt;
    $response = $session-&amp;gt;get_next_request( $nextid[0] );&lt;br /&gt;
    @nextid = keys %$response;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if( !defined($response = $session-&amp;gt;get_request( @snmpoids ) ) ) {&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  foreach my $value (values %$response) {&lt;br /&gt;
    return 1 if( $value eq $client )&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach lässt sich das Mobilgerät so überwachen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define iPhone PRESENCE function {snmpCheck(&amp;quot;10.0.1.1&amp;quot;,&amp;quot;0x44d77429f35c&amp;quot;)} 30 30&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei 10.0.1.1 durch die IP-Adresse der Basestation und 0x44d77429f35c durch die MAC Adresse des Geräts als HEX-Zahl ersetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
== Das GEOFANCY Modul ==&lt;br /&gt;
Das Modul ermöglicht über einen sogenannten Webhook Mechanismus (umgangssprachlich oft auch als &amp;quot;Push&amp;quot; benannt) das aktive Melden des aktuellen Standortes. Die iPhone Apps  [http://geofency.com/ Geofency] und [http://geofancy.com/ Geofancy] können dann aktiv und quasi in dem Moment, wo man den Wohnbereich betritt oder verlässt, benachrichtigen. Das geht nochmals um einiges schneller, als die Erkennung im WLAN, bei der die Anwesenheit nur in (engen) Zyklen aktiv geprüft werden muss. Gleichzeitig werden Ressourcen in FHEM geschont. Die aktuelle Implementierung im iPhone 5S mit dediziert für das Tracking zuständigem Chip ist so gut, dass der Akku ebenfalls sehr geschont wird.&lt;br /&gt;
&lt;br /&gt;
=== Modul in FHEM einrichten ===&lt;br /&gt;
Das Modul ist mit einer einfachen Definition sofort betriebsbereit:&lt;br /&gt;
:&amp;lt;code&amp;gt;define geofancy GEOFANCY geo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit nimmt FHEM unter http://192.168.178.1:8083/fhem/geo entsprechende Meldungen des iPhones entgegen. Damit das nicht nur über das lokale WLAN funktioniert, bedarf es allerdings noch einiger zusätzlicher Maßnahmen. FHEM muss vom Internet erreichbar gemacht werden, dabei sollte unbedingt an die Absicherung des Zugriffs gedacht werden.&lt;br /&gt;
&lt;br /&gt;
Zunächst einmal habe ich bei mir eine eigene FHEMWEB Instanz dafür angelegt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define WEBhook FHEMWEB 8088 global&lt;br /&gt;
attr WEBhook hiddenroom input,detail,save,Unsorted,Everything,CUL_HM,FS20,Commandref,style,Edit files,Select style,Logfile,Floorplans,Remote doc,FileLogs,Apartment,Bathroom,Bedroom,Kitchen,Living,Residents,System,Weather,Event monitor,NEW&lt;br /&gt;
attr WEBhook room hidden&lt;br /&gt;
attr WEBhook webname webhook&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist unter der URL http://192.168.178.1:8088/webhook/geo das GEOFANCY Modul erreichbar. Ich verstecke in dieser Ansicht noch alle Räume, die ich so habe. Wer die Raumnamen allerdings kennt, kann sie trotzdem aufrufen. Auch wenn das Security-by-Obscurity ist - ich fühle mich wohler damit.&lt;br /&gt;
&lt;br /&gt;
Mit dem neuen Attribut allowedCommands lässt sich diese FHEMWEB Instanz noch weiter absichern indem nur die tatsächlich benötigten Kommandos erlaubt werden (in diesem Fall keine) und damit alle anderen nicht erlaubten (attr,define,get,set,...) automatisch nicht mehr zur Verfügung stehen: &lt;br /&gt;
 &amp;lt;code&amp;gt;attr WEBhook allowedCommands ,&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Webhook weiter absichern ===&lt;br /&gt;
Außerdem ist dringend zu empfehlen, den Zugriff über SSL und HTTP Basic-Authentication weiter abzusichern. Läuft FHEM auf einem RaspberryPi, dann empfehle ich dazu die Konfiguration eines ReverseProxy (z.B. nginx oder Apache), damit ist man am flexibelsten und kann auch alle FHEMWEB Instanzen direkt über einen einzigen Port (meist 443, der HTTPS/SSL Standard Port) zusammenfassen. Ich möchte hier allerdings beschreiben, wie weit man mit FHEM Bordmitteln kommt und nehme das Beispiel einer Installation auf einer Fritzbox.&lt;br /&gt;
&lt;br /&gt;
Wie SSL aktiviert wird, steht in der [http://fhem.de/commandref.html#FHEMWEB Commandref für FHEMWEB]. Um die Kommandos auf der Fritzbox ausführen zu können, muss zuerst Telnet aktiviert werden (bitte Google benutzen). Anschließend wechselt man auf der Fritzbox ins Verzeichnis /var/media/ftp/fhem und kann dann den Hinweisen aus der [http://fhem.de/commandref.html#FHEMWEB Commandref] unter dem Punkt HTTPS folgen. Letztlich fehlt noch das entsprechende Attribut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr WEBhook HTTPS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes aktivieren wir Benutzername+Passwort für den Zugriff. Die [http://fhem.de/commandref.html#FHEMWEB Commandref für FHEMWEB] gibt auch hier unter dem Punkt basicAuth entsprechende Hinweise. Wir fügen hier einfach mal einen Benutzer &amp;quot;webhook&amp;quot; mit dem Passwort &amp;quot;Geofancy&amp;quot; hinzu, das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr WEBhook basicAuth { &amp;quot;$user:$password&amp;quot; eq &amp;quot;webhook:Geofancy&amp;quot; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zur Absicherung gibt auch [[FritzBox Webzugriff absichern]].&lt;br /&gt;
&lt;br /&gt;
Um zu testen, ob unsere Absicherung erfolgreich war, kann man die URL https://192.168.178.1:8088/webhook/geo aufrufen (wichtig ist, dass man jetzt https und nicht mehr http eingibt; ansonsten bekommt man keine Antwort). Eine Zertifikatswarnung kann getrost ignoriert werden, verschlüsselt wird trotzdem. Es sollte auch eine Passwort Abfrage kommen und die Eingabe der entsprechenden Daten sollte dann zu einer entsprechenden Meldung vom GEOFANCY Modul führen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOK No data received, see API information on http://wiki.geofancy.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist ok, schließlich sind wir keine App, sondern der Mensch, der nur mal eben prüfen will :-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff vom Internet ermöglichen ===&lt;br /&gt;
Das ist je nach Fritzbox und Software Version unterschiedlich. Grundsätzlich gilt: Eine Weiterleitung des ports 8088 vom Internet auf das laufende FHEM auf Port 8088 intern ist von AVM so nicht vorgesehen.&lt;br /&gt;
Bei mir führte folgendes zum Erfolg:&lt;br /&gt;
&lt;br /&gt;
* Einloggen per Telnet auf der Fritzbox (ich habe FritzOS 6 installiert)&lt;br /&gt;
* Konfiguration editieren mittels &amp;quot;nvi /var/flash/ar7.cfg&amp;quot;&lt;br /&gt;
* Suchen nach richtiger Zeile durch Eingabe von &amp;quot;/internet_forwardrules&amp;quot; und Enter&lt;br /&gt;
* Hinzufügen einer weiteren Zeile (Vorsicht, die bestehende Zeile endet mit ; und das muss in , umgeändert werden, so dass das ; schließlich am Ende der Zeile steht.&lt;br /&gt;
&lt;br /&gt;
So sieht es bei mir vorher aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;internet_forwardrules = &amp;quot;tcp 0.0.0.0:488 0.0.0.0:488 0&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
Hinterher:&lt;br /&gt;
:&amp;lt;code&amp;gt;internet_forwardrules = &amp;quot;tcp 0.0.0.0:488 0.0.0.0:488 0&amp;quot;, &amp;quot;tcp 0.0.0.0:8088 0.0.0.0:8088 0&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach mittels &amp;quot;:x&amp;quot; abspeichern und sofort per &amp;quot;reboot&amp;quot; die Box neu starten, um diese Änderungen zu aktivieren. Das ist wichtig; ansonsten zeigt die Erfahrung, dass die Änderung nicht dauerhaft erhalten bleibt und die gerade gemachten Änderungen verloren gehen.&lt;br /&gt;
&lt;br /&gt;
Wer die Einstellungen zu &amp;quot;internet_forwardrules&amp;quot; bei sich nicht finden kann, hat womöglich eine andere Version als ich oder ein leicht anderes Gerät und bemüht am besten Google, was er tun kann, um das Gleiche zu erreichen. Möglicherweise tauchen die Einträge auch erst auf, wenn man mal über das Webinterface ein Forwarding eingerichtet hatte.&lt;br /&gt;
&lt;br /&gt;
Hat man einen DynDNS Dienst oder myFritz auf der Fritzbox aktiviert, so kann man jetzt auch von draußen auf den Webhook zugreifen. Das kann man prüfen, indem man das iPhone aus dem WLAN ausbucht und einmal die externe Adresse eingibt, also z.B. https://meindyndns.org:8088/webhook/geo.&lt;br /&gt;
&lt;br /&gt;
=== Einrichten in der Geof[e|a]ncy.app ===&lt;br /&gt;
Hat das alles soweit geklappt, können endlich in der Geofency.app bzw. Geofancy.app am iPhone die gewünschten Bereiche definiert werden. Am Besten zuvor in den Global Settings die folgenden Einstellungen hinterlegen:&lt;br /&gt;
&lt;br /&gt;
* URL: https://meindyndns.org:8088/webhook/geo&lt;br /&gt;
* POST (oder GET, ist egal - das FHEM Modul kann beides)&lt;br /&gt;
* HTTP Basic Authentication: EIN (entsprechend Username und Password eintragen)&lt;br /&gt;
&lt;br /&gt;
Anfänglich ist es empfehlenswert noch &amp;quot;Notification on success&amp;quot; und &amp;quot;Notification on Failure&amp;quot; einzuschalten. Ersteres kann man ausmachen wenn man weiß, dass es soweit funktioniert. Über &amp;quot;Send Test-Request&amp;quot; kann man einmal einen Test schicken und erhält das Ergebnis entsprechend dargestellt. Es sollte sowas kommen wie&lt;br /&gt;
:&amp;lt;code&amp;gt;POST Success: test OK&amp;lt;/code&amp;gt;. In Geofancy.app gibt es keine Rückmeldung über den Erfolg des Testrequests. In FHEM sollten sich durch den Testrequest jedoch die Readings sofort aktualisieren (Ggf. ist ein Reload der FHEMWEB-Seite nötig da zusätzliche Tabellenzeilen nicht via Longpoll ergänzt werden). &lt;br /&gt;
&lt;br /&gt;
Funktioniert das soweit, kann man eine neue Lokation als sein Zuhause anlegen. Es empfiehlt sich einen ID-Namen zu setzen; dieser ist dann in FHEM als Name für die Lokation sichtbar. Für die eigene Wohnung empfiehlt sich hier &amp;quot;home&amp;quot; (da dies auch direkt vom RESIDENTS Modul so verwendet werden kann). Man kann auch Trigger für andere Standorte anlegen. FHEM weiß dann sogar, wenn ihr im Büro seid und könnte sich dabei auch unterschiedlich verhalten, als wenn ihr &amp;quot;auf Achse&amp;quot; seid. Bei letzterem ist der Status im GEOFANCY Modul &amp;quot;underway&amp;quot;, was so viel heißt wie &amp;quot;unbekannter Aufenthaltsort&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Zumindest für Geofancy.app liefert ein Testrequest wohl zufällige Locations zurück. Die eigenen Location-IDs werden also nicht übergeben, selbst wenn man sich in einem Geofence befindet. Um zu testen muss man sich wohl oder übel selbst bewegen ;-).&lt;br /&gt;
&lt;br /&gt;
=== GEOFANCY Modul individualisieren ===&lt;br /&gt;
Die im GEOFANCY Modul dargestellten Readings sind nun in etwa so, wenn ihr euch bewegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Readings:&lt;br /&gt;
     2014-01-18 14:37:42   51F23894-AAAA-BBBB-CCCC-0123456789AB          arrived home&lt;br /&gt;
     2014-01-18 14:37:42   currLocLat_51F23894-AAAA-BBBB-CCCC-0123456789AB 48.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocLong_51F23894-AAAA-BBBB-CCCC-0123456789AB 11.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocTime_51F23894-AAAA-BBBB-CCCC-0123456789AB 2014-01-18 14:37:42&lt;br /&gt;
     2014-01-18 14:37:42   currLoc_51F23894-AAAA-BBBB-CCCC-0123456789AB  home&lt;br /&gt;
     2014-01-17 19:18:23   lastArr         51F23894-AAAA-BBBB-CCCC-0123456789AB home&lt;br /&gt;
     2014-01-17 18:41:46   lastDep         51F23894-AAAA-BBBB-CCCC-0123456789AB Office&lt;br /&gt;
     2014-01-18 14:37:42   lastDevice      51F23894-AAAA-BBBB-CCCC-0123456789AB&lt;br /&gt;
     2014-01-17 18:41:46   lastLocArr_51F23894-AAAA-BBBB-CCCC-0123456789AB 2014-01-17 08:58:37&lt;br /&gt;
     2014-01-17 18:41:46   lastLocDep_51F23894-AAAA-BBBB-CCCC-0123456789AB 2014-01-17 18:41:46&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLat_51F23894-AAAA-BBBB-CCCC-0123456789AB 48.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLong_51F23894-AAAA-BBBB-CCCC-0123456789AB 11.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLoc_51F23894-AAAA-BBBB-CCCC-0123456789AB  Office&lt;br /&gt;
     2014-01-18 14:37:42   state           dev:51F23894-AAAA-BBBB-CCCC-0123456789AB trig:test id:home lat:48.9999 long:11.9999&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer genauer hinschaut sieht: Mein iPhone heißt wohl 51F23894-AAAA-BBBB-CCCC-0123456789AB. Das ist sehr unübersichtlich. Wir setzen deshalb einen Alias-Namen für das Gerät. Sinnvoll erscheint mir der Vorname des Besitzers:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr geofancy devAlias 51F23894-AAAA-BBBB-CCCC-0123456789AB:Julian&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Alias-Namen können mit Leerzeichen einfach angehängt werden.&lt;br /&gt;
Die alten Readings löschen wir mit&lt;br /&gt;
:&amp;lt;code&amp;gt;set geofancy clear readings&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt sehen die Readings schon viel freundlicher aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Readings:&lt;br /&gt;
     2014-01-18 14:37:42   Julian          arrived home&lt;br /&gt;
     2014-01-18 14:37:42   currLocLat_Julian 48.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocLong_Julian 11.9999&lt;br /&gt;
     2014-01-18 14:37:42   currLocTime_Julian 2014-01-18 14:37:42&lt;br /&gt;
     2014-01-18 14:37:42   currLoc_Julian  home&lt;br /&gt;
     2014-01-17 19:18:23   lastArr         Julian home&lt;br /&gt;
     2014-01-17 18:41:46   lastDep         Julian Office&lt;br /&gt;
     2014-01-18 14:37:42   lastDevice      Julian&lt;br /&gt;
     2014-01-17 18:41:46   lastLocArr_Julian 2014-01-17 08:58:37&lt;br /&gt;
     2014-01-17 18:41:46   lastLocDep_Julian 2014-01-17 18:41:46&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLat_Julian 48.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLocLong_Julian 11.1111&lt;br /&gt;
     2014-01-17 18:41:46   lastLoc_Julian  Office&lt;br /&gt;
     2014-01-18 14:37:42   state           dev:Julian trig:test id:home lat:48.9999 long:11.9999&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Möchte man nun etwas bestimmtes tun, wenn man nach Hause kommt oder das Heim verlässt, kann man am Besten ein entsprechendes Notify auf das Reading currLog_Name setzen. Ich aktualisiere lediglich zwei Dummies, durch die dann alle weiteren Notifies ausgelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define n_Julian.Presence notify geofancy:currLoc_Julian:.home set Julian.homestatus home&lt;br /&gt;
attr n_Julian.Presence room Residents&lt;br /&gt;
define n_Julian.absence notify geofancy:currLoc_Julian:.underway {\&lt;br /&gt;
if (Value(&amp;quot;Julian.homestatus&amp;quot;) ne &amp;quot;gone&amp;quot; &amp;amp;&amp;amp; Value(&amp;quot;Julian.homestatus&amp;quot;) ne &amp;quot;absent&amp;quot;) {\&lt;br /&gt;
  fhem(&amp;quot;set Julian.homestatus absent&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
define n_Julian.whereabout notify geofancy:currLoc_Julian:.* set Julian.whereabout $EVTPART1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer es noch einfacher möchte (bzw. auch noch mehr Features) schaut sich einmal die neue Modulfamilie aus RESIDENTS[http://fhem.de/commandref_DE.html#RESIDENTS], ROOMMATE[http://fhem.de/commandref_DE.html#ROOMMATE] und GUEST[http://fhem.de/commandref_DE.html#GUEST] an. Diese sind direkt auf GEOFANCY abgestimmt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für die Nutzung der Anwesenheitserkennung ==&lt;br /&gt;
Hier sollen Beispiele für den Nutzen von Anwesenheitserkennung aufgezeigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abschalten aller Verbraucher (Licht, Musikanlage) beim Verlassen der Wohnung ===&lt;br /&gt;
Typisches Szenario: Man geht ausser Haus, aber hat vergessen im Bad das Licht aus zu machen. Allerdings geht man heutzutage fast garnicht mehr ohne Handy aus dem Haus.&lt;br /&gt;
&lt;br /&gt;
Nun soll FHEM in der gesamten Wohnung das Licht, sowie sonstige Verbraucher ausschalten, wenn ich länger als 15 Minuten ausser Haus bin. Dazu benötigt man zuerst eine structure, die alle Verbraucher und sonstigen Devices, die das betrifft, zusammenfasst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Gesamte_Wohnung structure Gesamtes_Licht Licht_Wohnzimmer Licht_Kueche LED_Kueche Licht_Bad Licht_Schlafzimmer AV_Receiver TV_Steckdose&lt;br /&gt;
attr Gesamte_Wohnung room Wohnung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann man mittels eines watchdogs eine Überwachung für sein Handy anlegen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Überwachen der gesamten Wohnung mittels collectord sowie presenced in jedem Raum&lt;br /&gt;
define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222&lt;br /&gt;
attr Handy event-on-change-reading state  # Ein Event soll nur bei der Änderung des Anwesenheitsstatus (Reading: status) erfolgen. Wichtig für den watchdog!!!&lt;br /&gt;
&lt;br /&gt;
# Nach 15 Minuten Abwesenheit (Handy im Status &amp;quot;absent&amp;quot;) soll die gesamte Wohnung ausgeschaltet werden.&lt;br /&gt;
define watchdog_Anwesenheit watchdog Handy:absent 00:15 Handy:present set Gesamte_Wohnung off ; setstate watchdog_Anwesenheit defined&lt;br /&gt;
attr watchdog_Anwesenheit regexp1WontReactivate 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=6739</id>
		<title>WakeOnLan</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WakeOnLan&amp;diff=6739"/>
		<updated>2014-07-03T08:33:55Z</updated>

		<summary type="html">&lt;p&gt;Peterchen89: + FHEM läuft nicht als root-User.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Wake On Lan (WOL) können Computer, NAS usw. von einem anderen Netzwerk-Gerät eingeschaltet werden. Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (bei PCs z.B. im BIOS oder im Treiber der Netzwerkkarte) eingeschaltet werden. Bei einigen Systemen steigt die Energieaufnahme im Standby bei aktiviertem WOL von unter 1 W auf mehrere W pro Stunde.&lt;br /&gt;
&lt;br /&gt;
== Ermitteln der MAC-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Zunächst muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. &lt;br /&gt;
Auf dem Gerät selber:&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben &lt;br /&gt;
Von einem anderen Gerät&lt;br /&gt;
* Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben &lt;br /&gt;
* Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben&lt;br /&gt;
&lt;br /&gt;
== OpenWRT ==&lt;br /&gt;
&lt;br /&gt;
Das Wake on Lan Paket kann mit dem Programm &#039;&#039;etherwake&#039;&#039; erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;opkg update&lt;br /&gt;
opkg install etherwake&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: In der Shell folgenden Befehl eingeben (die MAC-Adresse muss natürlich angepasst werden das Interface (hier br-lan) eventuell auch):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;etherwake  -i br-lan 00:06:55:5a:53:f3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Das Gerät sollte jetzt einschalten.&lt;br /&gt;
&lt;br /&gt;
Funktion in der Datei &#039;&#039;[[99_myUtils_anlegen|99-myUtils.pm]]&#039;&#039; erstellen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## WakeOnLan von OpenWRT ############ &lt;br /&gt;
sub &lt;br /&gt;
WakeOnLan&lt;br /&gt;
{ &lt;br /&gt;
 my $mac = shift;&lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 $ret .= qx(etherwake -i br-lan $mac);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail to $mac: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: Im FHEM-Webinterface &#039;&#039;{ WakeOnLan(&#039;00:06:55:5a:53:f3&#039;);; }&#039;&#039; eingeben.&lt;br /&gt;
&lt;br /&gt;
Um auf einen Tasterdruck reagieren zu können, muss die Datei fhem.cfg ergänzt werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HM_Taster_01.ntfy notify HM_Taster_01.* {WakeOnLan(&#039;00:17:31:fa:9b:51&#039;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Wenn FHEM nicht als root-Benutzer sondern als normaler Benutzer gestartet wird, wird etherwake nicht direkt funktionieren:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fhem@XXX:/opt/fhem$ etherwake C8:CD:72:01:FF:FF&lt;br /&gt;
etherwake: This program must be run as root.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FHEM muss nun also etherwake irgendwie mit root-Rechten starten können. Sehr einfach kann man das erreichen, indem man das SETUID-Flag auf /usr/sbin/etherwake setzt. Das führt dazu, dass das Programm immer mit dem Benutzer ausgeführt wird dem es gehört. Da das Programm nach der Installation normalerweise root gehört, haben wir mit einem einfachen chmod +s /usr/sbin/etherwake also schon unser Ziel erreicht.&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Peterchen89</name></author>
	</entry>
</feed>