Projektvorstellung Willkommensmeldung auf dem Display RasBi

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Antworten
marius.jaworowski@gmail.com
Beiträge: 26
Registriert: 30.04.2016, 11:50

Projektvorstellung Willkommensmeldung auf dem Display RasBi

Beitrag von marius.jaworowski@gmail.com » 25.05.2016, 18:37

Hallo Freunde der leichten Hausautomatisierungsunterhaltung,

ich präsentiere euch hier die Möglichkeit euch von eurer Hausautomatisierung begrüße zulassen sobald Ihr nach Hause kommt. Ich habe bereits ein Projekt vorgestellt welches sich mit der Personen-Anwesenheitserkennung beschäftigt hat, dieses Projekt baut darauf auf und ich habe alle notwendigen Punkte auch hierher übernommen.

Für den Betrieb braucht Ihr ein Raspbarry 2/3 und das "PiFace Control and Display". Bei der Raspbarry 2 wird noch ein Bluetooth Adapter (BT) benötigt. Mithilfe des RasBi und BT erzeugt Ihr ein Home-Zone. Betritt oder verlässt jemand diese Zone, so wird ein entsprechende Meldung auf dem Display angezeigt. Es können beliebig viele Raspbarry's verwendet werden um die Home-Zone zu erweitern. Die Meldung werden dabei auf jeden einzelnen Display angezeigt. Zur Anwesenheitserkennung empfehlt sich die Nutzung eines Handys.

Natürlich werden die Anwesenheitsinformationen an das HomeMatic CCU System weitergegeben.

Solltest es sein dass Du keinen RASPBERRY PI mit "PiFace Control and Display " besitzen und Du auch keine Erfahrung mit der Einrichtung hast, dann kannst ich Dir ein Link schicken, wo Du einen RASPBERRY PI fertig mit der nötigen Software kaufen kannst. Möchtest Du nur die Anwesenheitserkennung ohne die Display Funktionalität nutzen ist das auch problemlos möglich.


Die größten Vorteile:
  • Alles passiert Lokal ohne Internet ,Dienstleister und VPN
    Es fallen keine Laufenden Kosten an (ausser Strom)
    Es ist sehr energiesparend (auch für das Telefon)
    Geräteverwaltung passier über die CCU2, daher besonders einfach
    Es lassen sich mehrere Sensoren einbinden, sodass man die Reichweite von Bluetooth frei skalieren kann.
    Protokollierung der Anwesenheit
    Alles ist in Python geschrieben
    Willkommensmeldung beim eintreten in die Home-Zone über das PiFace Control and Display
Welche Komponenten habe ich verwendet:
  • HomeMatic CCU2 v2.19.9
    XML-API CCU Addon für die CCU2 in Version 1.11
    RASPBERRY PI 2 (mit RASPBIAN JESSIE)
    Bluetooth Adapter (RASPBERRY PI 3 hat Bluetooth integriert - habe es aber nicht getestet)
    PiFace Control and Display http://www.piface.org.uk/products/pifac ... nd_display
Funktionsweise
Die Anwesenheitserkennung, die Steuerung des Displays sowie die Kommunikation mit dem HomeMatic System wird von Spot : https://github.com/red-ip/spot/ erledigt.
Spot ist ein Programm das in Python geschrieben ist, es wird auf dem RasBi als Deamon eingerichtet.

Spot besteht aus zwei Teilen, einem Server und einem Sensor. Die Anzahl an Sensoren kann problemlos erhört werden um damit die Reichweite der Home-Zone zu erweitern. Jedes Mobile Gerät das dem Funk Standard Bluetooth beherrscht kann verwendet werden. Sei es ein iPhone/Android Telefon, eine iWatch/SmartWatch, Notebook, iPad oder ein Nokia Telefon.
Jedes Bluetooth Gerät besitzt eine individuelle MAC-Adresse, diese wird bei der HomeMatic CCU als System-Variable eingetragen, damit weisst Spot welche Gerät es auf "Anwesenheit" hin prüfen soll. Spot (Server) fragt die HomeMatic in regelmässigen Abständen ab und übergibt eine Liste der Geräten an die Sensoren. Diese wiederum schauen ob sich das Bluetooth Gerät in der Reichweite befindet oder nicht. Die Reichweite der Sensoren bildet die Home-Zone. Betritt ein Gerät die Home-Zone, so wird es sofort an das HomeMatic System kommuniziert. Ein Gerät gilt als nicht mehr anwesend wenn es über die Dauer von zwei Zyklen (2min) von keinen Sensor gesehen wird. Dies soll Fehlinterpretation durch Funkschatten und ähnliches verhindern. Das beschriebene Verhalten lässt sich über die Spot-Konfigurationsdatei beeinflussen.

Es ist wichtig zu versehen, dass es nur einen Server geben darf, es dürfen aber mehrere Sensoren betrieben werden. In der kleinsten Umgebung läuft der Server und der Sensor auf dem gleichen RasBi, jeder weitere Sensor wird auf einem neuen RasBi eingerichtet.


1# RASPBERRY PI
Alle Schritte werden über die Shell durchgeführt!
Bluetooth muss auf dem Raspberry installiert und funktionsbereit sein,
dazu die folgenden Pakete installieren.

Code: Alles auswählen

sudo su
apt-get install bluetooth mc python-bluez
Jetzt koppeln wir das Bluetooth Gerät (zB Telefon) mit dem Raspberry über ein Konfigurationstool

Code: Alles auswählen

bluetoothctl		#startet das Verwaltungsprogramm 
power on		
- Bring dein Telefon in den Status sodass andere Geräte es pre Bluetooth erkennen können. Bei einen iPhone genügt es in die Bluetooth Einstellungen zu gehen. Solange Bluetooth eingeschaltet ist und der Bildschirm an ist, kann ein iPhone erkannt werden.
- um die MAC Adresse herausfinden, scannen wir die Umgebung :

Code: Alles auswählen

scan on
Ausgabe (Beispiel):
Discovery started
[CHG] Controller 00:15:83:E5:79:36 Discovering: yes
[NEW] Device 5E:7F:77:E1:D5:B5 5E-7F-77-E1-D5-B5
[NEW] Device 4F:17:D2:BD:06:51 4F-17-D2-BD-06-51
[NEW] Device 88:C6:26:65:90:C2 88-C6-26-65-90-C2
[NEW] Device 41:04:EB:57:28:77 41-04-EB-57-28-77
[NEW] Device 11:E7:77:74:17:EB 11-E7-77-74-17-EB
[NEW] Device CC:29:F5:67:B7:EC CC-29-F5-67-B7-EC
[CHG] Device CC:29:F5:67:B5:EC Name: iPhoneMarius
[CHG] Device CC:29:F5:67:B5:EC Alias: iPhoneMarius
- Mein Telefon ist das iPhoneMarius, und hat die MAC-Adresse CC:29:F5:67:B5:EC
- Damit sind wir in der Lage das iPhone jetzt zu koppeln. Denk daran das Telefon muss sich in “discovery modus” befinden

Code: Alles auswählen

agent on
pair CC:29:F5:67:B5:EC
[bluetooth]# pair CC:29:F5:67:B5:EC
Attempting to pair with CC:29:F5:67:B5:EC
[CHG] Device CC:29:F5:67:B5:EC Connected: yes
Request confirmation
[agent] Confirm passkey 476717 (yes/no): yes
[CHG] Device CC:29:F5:67:B5:EC Modalias: bluetooth:v004Cp6E00d0930
[CHG] Device CC:29:F5:67:B5:EC UUIDs:
00000000-deca-fade-deca-deafdecacafe
00001000-0000-1000-8000-00805f0b34fb
0000110a-0000-1000-8000-00805f0b34fb
0000110c-0000-1000-8000-00805f0b34fb
0000110e-0000-1000-8000-00805f0b34fb
00001116-0000-1000-8000-00805f0b34fb
0000111f-0000-1000-8000-00805f0b34fb
0000112f-0000-1000-8000-00805f0b34fb
00001132-0000-1000-8000-00805f0b34fb
00001200-0000-1000-8000-00805f0b34fb
[CHG] Device CC:29:F5:67:B5:EC Paired: yes
Pairing successful
Du musst im der Shell "yes" schreiben und auf dem Gerät dies ebenfalls bestätigen.
Nachdem wir alle Geräte gekoppelt haben, beenden wir das Programm

Code: Alles auswählen

exit
Jedes Gerät muss mit den Raspberry “gekoppelt” werden. Ich bin nach der Anleitung unter den folgenden Link vorgegangen:
https://wiki.archlinux.org/index.php/Bluetooth
Bei Verwendung von mehreren Raspberry's (Spot-Sensor) muss das Telefon an jeden Raspberry für sich gekoppelt werden


Damit das ganze auch nach einem Neustart zuverlässig funktioniert, muss eine Datei erstellt werden:

Code: Alles auswählen

mcedit /etc/udev/rules.d/10-local.rules
mit dem folgenden Inhalt:
# Set bluetooth power up
ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"


2# Installation des Displays]/b]

sudo raspi-config
Enabling SPI
sudo apt-get install python3-pifacecad
sudo reboot

Hersteller Beschreibung:
http://www.piface.org.uk/guides/setting ... d_Display/



3# HomeMatic Konfiguration
Du musst XML-API http://www.homematic-inside.de/software ... tem/xmlapi auf deiner CCU installieren.

Erstelle auf der CCU für jedes Gerät das Du abfragen willst eine System Variable (Logic value true = is true, false = is false) Englische Schreibweise verwenden

Der Name der Variablen: var_spot_CC:29:F5:67:B5:EC_marius_iPhone
Die Variable ist wie folgt aufgebaut :
“var_spot_” = dadurch erkennt Spot die Variable. Dies bleibt immer gleich
“CC:29:F5:67:B5:EC” = das ist die Bluetooth MAC Adresse des Gerätes das überprüft werden soll
“_marius" = Name des Teilnehmers
“_iPhone” = Gerätename des Teilnehmers


4# Erstelle ein Programme auf der CCU

Beispiel Anwesenheit :
System state var_spot_CC:29:F5:67:B5:EC_marius_iPhone when is true trigger when chenged
AND
System state Anwesenheit when nicht anwesend check only
OR
System state var_spot_CC:29:C2:27:AC:A2_paulina_iPhone when is true trigger when chenged
AND
System state Anwesenheit when nicht anwesend check only

Activity
System state Anwesenheit immediately anwesend



Beispiel Keine Anwesenheit :
System state var_spot_CC:29:F5:67:B5:EC_marius_iPhone when is false trigger when chenged
AND
System state var_spot_CC:29:C2:27:AC:A2_paulina_iPhone when is false trigger when chenged

Activity
System state Anwesenheit immediately nicht anwesend


(Sorry für die Vermischung der Sprachen)



5# Spot.py installation auf dem RASPBERRY PI
Erstelle das Verzeichnis

Code: Alles auswählen

sudo mkdir /opt/spot/
sudo chown pi:pi /opt/spot/
- Besorge dir Spot von https://github.com/red-ip/spot/
- und Speicher alles unter /opt/spot/
root@redberry:/opt/spot# ls -la
/opt/spot
/opt/spot/core/
/opt/spot/init.d/
/opt/spot/log/
/opt/spot/spot.cfg
/opt/spot/spot.py
/opt/spot/spot_sensor.py
nachdem wir die Dateien abgelegt haben, können wir einen ersten Testlauf starten

Code: Alles auswählen

cd /opt/spot/
python spot.py -s	# Beim ersten Lauf wird ein Fehler angezeit, das ist aber nicht weiter schlimm
python spot.py -s	# Beim zweiten Lauf wird eine Meldung ausgegeben dass das Programm nicht gestartet war. auch ok
pi@redberry:/opt/spot $ python spot.py -s
lading CFG
debug Lading Config file
------------------- Spot 1.2.7 -------------------
debug Got the option to stop the Daemon
debug Script file is present, OK .
debug Script is not running : spot_sensor.py
Could not stop, pid file '/tmp/spot_check.pid' missing.
Als nächstes müssen wir Spot sagen wie er die HomeMatic CCU erreichen kann. Hierzu editieren wir die
/opt/spot/spot.cfg Datei und tragen die IP Adresse der CCU unter "ip_ccu = " ein.

Um die Willkommensmeldung auf dem Display anzeigen zu lassen, muss pifacecad_support (ebefalls in der /opt/spot/spot.cfg) eingeschaltet werden.
[PIFACECAD]
pifacecad_support = true

Code: Alles auswählen

mcedit /opt/spot/spot.cfg 

Automatisches Starten nach einem Reboot einrichten:

Code: Alles auswählen

sudo cp /opt/spot/init.d/spot /etc/init.d
sudo chmod 744 /etc/init.d/spot

- Erster Starte von Spot

Code: Alles auswählen

sudo python spot.py -d
# Hierbei startet Spot auch einen lokalen (Spot-) Sensor

:D
Spot sollte jetzt mit seiner Arbeit anfangen. Bei Problemen bitte bei mir melden!

Du kannst unter /opt/spot/log/ die Log-Dateien einsehen und dich davon überzeugen das alle korrekt funktioniert. Spot kann mit verschiedenen Parametern gestartet werden. Für weitere Informationen rufe "python spot.py -h" und "python spot_sensor.py -h" auf.

Optional:
Es ist möglich Spot als einen reinen Sensor (ohne Server) zu starten um zB die Reichweite von Bluetooth zu erweitern. Hierfür wird ein weiterer RASPBERRY PI benötigt. Die Einrichtung des Sensors ist identisch mit der bereits oben beschriebenen Einrichtung von Spot bis auf den Aufruf des Programmes. Hierzu muss die folgende Datei wie folgt editiert werden:
/etc/init.d/spot

ändere die Zeile
COLLECTORD_BIN=/opt/spot/spot.py
zu
COLLECTORD_BIN=/opt/spot/spot_sensor.py

- Starte Spot_sensors
sudo python /opt/spot/spot_sensor.py -d

Bedenke das Spot nach Sensoren mittels Broadcast sucht, sollten diese sich nicht in der gleichen broadcast Domäne befinden, kannst Spot mit dem Parameter "-m" gefolgt von <IP>:<PORT> eine Liste (Komma getrennt) an Sensoren mitgeben.
Dateianhänge
IMG_2839.jpg

Luxtra
Beiträge: 452
Registriert: 13.12.2014, 07:00
Danksagung erhalten: 1 Mal

Re: Projektvorstellung Willkommensmeldung auf dem Display Ra

Beitrag von Luxtra » 13.02.2017, 07:36

marius.jaworowski@gmail.com hat geschrieben:Hallo Freunde der leichten Hausautomatisierungsunterhaltung,

...


4# Erstelle ein Programme auf der CCU

Beispiel Anwesenheit :
System state var_spot_CC:29:F5:67:B5:EC_marius_iPhone when is true trigger when chenged
AND
System state Anwesenheit when nicht anwesend check only
OR
System state var_spot_CC:29:C2:27:AC:A2_paulina_iPhone when is true trigger when chenged
AND
System state Anwesenheit when nicht anwesend check only

Activity
System state Anwesenheit immediately anwesend



Beispiel Keine Anwesenheit :
System state var_spot_CC:29:F5:67:B5:EC_marius_iPhone when is false trigger when chenged
AND
System state var_spot_CC:29:C2:27:AC:A2_paulina_iPhone when is false trigger when chenged

Activity
System state Anwesenheit immediately nicht anwesend
Hallo,

recht kompliziert, da kursieren hier einfachere BT-Lösungen, aber OK

Aber 2 Fragen bleiben:
1) Warum auf die CCU einloggen und Programme eintippen, die kann man doch über das WebUI einrichten.
2) Sicher, dass die markierten Texte so korrekt sind?

marius.jaworowski@gmail.com
Beiträge: 26
Registriert: 30.04.2016, 11:50

Re: Projektvorstellung Willkommensmeldung auf dem Display Ra

Beitrag von marius.jaworowski@gmail.com » 13.02.2017, 11:11

Hallo Luxtra,

es sieht komplizierter aus als es eigentlich ist..

Zu deinen Fragen
1 ) ja klar, über das WebUi. Ich habe drei ScreenShots hinzugefügt
Die Beiden Programme:
[img]Anwesenheit_True.png[/img]
[img]Anwesenheit_False.png[/img]
2 ) über die WebUi erstellst du einfach eine System Variable. Das "var_spot_" sagt Spot das er diese Variable auswerten soll. Dann nur noch die MAC Adresse und einen eindeutigen Name. Ich glaube die erste Antwort beantwortet auch deine zweite Frage.

[img]screenshot_368.png[/img]

Hoffe ich konnte es einigermaßen verständlich erklären.
Dateianhänge
Anwesenheit_True.png
Abwesenheit_False.png
screenshot_368.png

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“