Grundaufbau:
Benötigte Bauteile
wir brauchen- ein altes Notebook,
- einen LVDS-Adapter
- einen Raspberry.
- HDMI-Kabel, Stromkabel
Raspberry PI - Projekte
zuerst brauchen wir eine neuere Version von NodeJS. dazu geben wir folgende Befehle für den Download und Installation ein:
wget https://nodejs.org/dist/v4.3.0/node-v4.3.0-linux-armv7l.tar.gz
tar -xvf node-v4.3.0-linux-armv7l.tar.gz
cd node-v4.3.0-linux-armv7l
Nun müssen wir für noch Librarys für das System und NodeJS nachladen:
apt-get install libavahi-compat-libdnssd-dev
npm install -g --unsafe-perm homebridge homebridge-fhem
Um die Homebridge beim Systemstart zu laden erstellen wir eine neue Datei mit:
sudo nano/etc/init.d/homebridge
und fügen den nachfolgenden Inhalt in die Datei ein:
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
dir="/home/pi"
cmd="DEBUG=* /usr/local/bin/homebridge"
user="pi"
name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"
get_pid() {
cat "$pid_file"
}
is_running() {
[ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}
case "$1" in
start)
if is_running; then
echo "Already started"
else
echo "Starting $name"
cd "$dir"
if [ -z "$user" ]; then
sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
else
sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
fi
echo $! > "$pid_file"
if ! is_running; then
echo "Unable to start, see $stdout_log and $stderr_log"
exit 1
fi
fi
;;
stop)
if is_running; then
echo -n "Stopping $name.."
kill `get_pid`
for i in {1..10}
do
if ! is_running; then
break
fi
echo -n "."
sleep 1
done
echo
if is_running; then
echo "Not stopped; may still be shutting down or shutdown may have failed"
exit 1
else
echo "Stopped"
if [ -f "$pid_file" ]; then
rm "$pid_file"
fi
fi
else
echo "Not running"
fi
;;
restart)
$0 stop
if is_running; then
echo "Unable to stop, will not attempt to start"
exit 1
fi
$0 start
;;
status)
if is_runnin`enter code here`g; then
echo "Running"
else
echo "Stopped"
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0
Speichern mit 'STRG + X'
Beenden mit 'STRG +O'
Um die Datei ausführbar zu machen geben wir ein:
sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults
Jetzt gehts an die eigentliche Konfigurationsdatei der Homebridge: Wieder erstellen wir eine neue Datei mit:
nano ~/.homebridge/config.json
und fügen diesen Inhalt ein:
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"platforms": [
{
"platform": "FHEM",
"name": "FHEM",
"server": "127.0.0.1",
"port": "8083",
"auth": {"user": "FhemUser", "pass": "XXX"},
"filter": "room=Homekit"
}
],
"accessories": []
}
zuletzt starten wir die Homebridge mit:
homebridge start
Auf dem Iphone installieren wir uns die Anwendung "EVE" und verbinden uns mit dem angezeigten Code mit der Homebridge. Nach einer kurzen Synchronisierungs- zeit kann Siri Befehle wie "Schalte das Licht im Wohnzimmer aus" verarbeiten.
zuerst muss in der Fritzbox der Modus "Externen Zugriff erlauben" und Smart-Home aktiviert werden. Für zweites muss in den erweiterten Modus gewechselt werden. Für den Call Monitor wählen wir von einem angeschlossenen Telefon aus die #965
danach in der Shell auf eurem Raspberry folgenden Befehl eingeben:
sudo apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl libnet-telnet-perl
in Config eintragen:
define fb1 FBAHA fritz.box:2002
define FritzBox FRITZBOX
define FBCallMon FB_CALLMONITOR fritz.box:1012
attr FritzBox allowTR064Command 1
attr FritzBox icon it_router
attr FritzBoxCalls verbose 5
in die Kommandozeile in FHEM eintragen: set FritzBox password Passwort
Nun sollte die Fritzbox erscheinen und in regelmäßigen Zeitabständen Daten liefern wie
Fhem Forum Fritzbox
2 Konten bei Jabber.de einrichten:
Konto1@Jabber.de Konto2@Jabber.de
dann die Zusatzpakete installieren:
sudo apt-get install libnet-jabber-perl libnet-xmpp-perl libxml-stream-perl libauthen-sasl-perl libnet-ssleay-perl libnet-jabber-bot-perl libdigest-sha-perl
in FHEM in die Config eintragen:
define Jabber_Client Jabber jabber.de 5222 Konto1 PASSWORT 1 0
attr Jabber_Client OnlineStatus available
attr Jabber_Client PollTimer 2
attr Jabber_Client RecvWhitelist JABBERUSER@jabber.de
attr Jabber_Client ResourceName FHEM
attr Jabber_Client userReadings 1
attr Jabber_Client room Jabber
auf dem Handy (Android) XABBER installieren
mit dem Benutzernamen Konto2 anmelden und Konto1@Jabber.de der Kontaktliste hinzufügen.
In der Shell ausführen:
hcitool scan
(achte darauf dass dein Handy sichtbar ist, evtl. ein wenig warten und finden lassen).
Die Mac-Adresse deines Handys (z.B. AB:CD:EF:01:02:03) kopieren und in der FHEM Config in der nächsten Zeile BT-MAC durch diese ersetzen.
define Handy1 PRESENCE local-bluetooth BT-MAC 10 10
um nur bei Änderungen Benachrichtigt zu werden: attr Handy1 event-on-change-reading state um die Änderung an Jabber zu senden:
define Handy1PRESENT notify Handy1:.* set JabberClient1 msg UserName@jabber.de Handy1: $EVENT
Nun erscheint dein Handy unter Handy1 mit dem Status Present oder Absent und du wirst über jede Statusänderung benachrichtigt.
define AV_Receiver YAMAHA_AVR 192.168.7.106
attr AV_Receiver model RX-V677
zuerst flashen wir easyESP auf den ESP8266 wie in der Anleitung beschrieben. Danach Verbinden wir uns mit dem Wlan-AP des ESP und stellen auf unseren eigenen Accesspoint um. Nachdem wir die Normale Weboberfläche sehen verbinden wir die Sensoren und Aktoren am Gerät und richten diese in der Config ein. Um den ESP per FHEM verwenden zu können arbeiten wir mit dem Standard Http-Protokoll (In Settings auswählen). Das Standard-Http-Protokoll unterstützt folgende Abfragen:
http://[ESP-IP]/json (Alle definierten Ports und Portstatus)
http://[ESP-IP]/control?cmd=GPIO,10,0 (GPIO-Port, Port #10, Aus)
Für Fhem verwenden wir den Zugriff über /Json, welche in einem Json-Result die angeschlossenen (und eingerichteten!) Sensoren mit ihrem aktuellen Status anzeigt.
Der JSON String sieht folgendermaßen aus:
{"System":
{"Build": 108,"Unit": 0,"Uptime": 24,"Free RAM": 26248},
"Sensors": [
{"TaskName": "LS", "Switch": 0.00}
]}
Beim Schalten über config/gpio,port,stat liefert der ESP zurück:
{
"log": "GPIO 10 Set to 0",
"plugin": 1,
"pin": 10,
"mode": "output",
"state": 0
}
Grundkonfiguration in FHEM (TODO) define PM HTTPMOD http://192.168.7.156/json attr PM idJSON LS
Einrichten und Flashen
Hardware anschließen und einstellen
Protokolle verstehen
Anbindung an FHEM (lesen)
Anbindung an FHEM (schreiben)
Header im Domoticz Http-Modus (Get)
GET /json.htm?type=command¶m=switchlight&idx=1&switchcmd=On HTTP/1.1
Host: 192.168.7.155
Connection: close
Header im Generic-Http Modus (Get)
GET / HTTP/1.1
Host: 192.168.7.155
Connection: close
define ipcam IPCAM 192.168.7.205
attr ipcam delay 10
attr ipcam path snapshot.cgi?user=foo&pwd=bar
attr ipcam snapshots 5
attr ipcam storage /srv/share/surveillance/snapshots
define Ansicht FLOORPLAN
define Grundriss FLOORPLAN fp_Grundriss.png
Als erstes brauchen wir das Paket Json-Perl:
sudo apt-get update && sudo apt-get -y install libjson-perl
danach müssen wir in die FHEM Config folgendes eintragen: (IP muss durch die IP des Hubs ersetzt werden)
define HHub harmony 192.168.X.X
in der FHEM Kommandozeile schreiben wir dann:
set HHub autocreate
um alle Geräte, die eingetragen sind auszulesen. Das Hub selbst brauchen wir jetzt nicht mehr beachten. Das Senden der Befehle läuft dann über jede erstellte Fernbedienung ab. (unter Harmony gelistet)
get Fernbedienungsname deviceCommands
um zu sehen welche Fernbedienung welche Kommandos unterstützt. oder in der Fernbedienung auf der Config-Seite bei Get Commands auswählen.
Nun können wir einen Befehl aus dem vorherigen Befehl unter Set der aktuellen Fernbedienung eintragen und testen.