Home Assistent (Hass.io) Installation auf dem Raspberry Pi

Mit Hass.io steht für den Raspberry Pi eine einfach zu installierende Home Assistant Version zu Verfügung. Bei Hass.io handelt es sich um komplett Paket aus Linux Betriebssystem und bereits installiertem Home Assistant. Home Assistant ist Open Source und biete eine herstellerübergreifende Integration von Smarthome Komponenten. Das System lässt sich einfach über eine Weboberfläche verwalten, aktualisieren und mit Add-ons, die über einen „Add-on Store“ bereit gestellt werden, erweitern.

Inhaltsverzeichnis

Hardware

Home Assistant läuft auf dem Raspberry Pi ab Version 3. Da das System 24/7 läuft ist der Raspberry Pi mit seinem geringen Strombedarf die perfekte Basis für die Smarthome zentrale. Ihr braucht folgende Komponenten:

Installation

Die Basis Installation von Hass.io ist sehr einfach. Du must nur das passende Image auf eine SD Karte schreiben und deinen Raspberry Pi damit starten. Zum Schreiben des Images kannst du die Software Balena Etcher verwenden. Sie erlaubt dir das Schreiben von Image Dateien von der Festplatte oder kann alternativ diese auch selber herunterladen.

Alle Hass.io Releases sind auf GitHub verfügbar. Hier kannst du das Image passend zu deinem Raspberry Pi herunterladen. Für einen Raspberry Pi 4 wäre dies z.B. die Datei „haos_rpi4-6.2.img.xz“. Wir wählen den Weg Etcher das Image für uns herunterzuladen „Flash from URL“ und kopieren daher nur den Download Link von Github und fügen ihn in Etcher ein:

Etcher lädt nun das Image herunter. Über „Select Target“ kann dann die Ziel SD Card ausgewählt werden. Häufig ist diese auch schon korrekt vor belegt wenn nur eine SD Karte im System gefunden wurde.

Mit einem Klick auf „Flash!“ startet dann der eigentlich Schreibvorgang auf die SD Card.

Wenn alles geklappt hat solltest du diesen Screen bekommen

Nachdem Hass.io auf die SD Kargte geschrieben wurde must du nur noch die SD Karte in den Raspberry Pi stecken, das Netzwerkkabel einstecken und ihn anschließend durch einstecken des Stromkabels starten.

Nach einigen Minuten solltest du Home Assistant über den Browser erreichen. Die Adresse ist „homeassistant.local:8123“ oder „homeassistant:8123“. Solltest du nicht auf Home Assistant kommen, probiere ihn direkt über die IP Adresse (http://X.X.X.X:8123) die der Raspberry Pi von deinem Router bekommen hat zu erreichen. Viele Router wie z.B. die Fritzbox bieten eine Übersichtseite über alle verbundenen Geräte mitsamt ihren IP Adressen.

Chia Farming mit dem Raspberry Pi 4 und Ubuntu

Dieses Tutorial zeigt dir, wie du energiesparsames Chia Farming mit dem Raspberry Pi 4, Ubuntu und externen USB Festplatten betreiben kannst. Die Konfiguration ist zudem sehr leise aufgrund des verwendeten passiven Raspberry Pi Gehäuses. Wie du Plots für diesen Farming PC erstellst erfährst du hier.

Hardware

In dem Build verwende ich folgende Hardware:

  • Raspberry Pi 4: Raspberry Pi 4 Modell B; 4 GB, ARM-Cortex-A72 4 x, 1,50 GHz, 4 GB RAM, WLAN-ac, Bluetooth 5, LAN, 4 x USB, 2 x Micro-HDMI
  • Passives Alu Gehäuse: Lüfterloses Vollaluminium Gehäuse für den Raspbery Pi. Mein aktuelles Lieblingsgehäuse mit guten Preis-Leistungsverhältnis
  • WD My Book 8 TB USB 3.0: Externe USB 3.0 8TB Festplatte
  • Netzteil: Raspberry Pi 4 USB-C Netzteil, 5.1V, 3A
  • SanDisk 64GB Micro SD Card: Micro SD Card mit 64 GB. Aus eigener Erfahrung würde ich keine kleinere Karte nehmen, da du aufgrund der schnell wachsenden Blockchain sonst schnell an die Grenzen des Speicherplatzes stößt.
  • Micro HDMI Adapter

Ubuntu Desktop Installation

  1. Als Betriebssystem für den Raspberry Pi verwenden wir Ubuntu Desktop 21.04 mit Gnome Desktop. Dieses kannst du einfach mit Raspberry Pi Imager herunterladen und auf die SD Card schreiben.
  2. Stecke die SD Card in den Raspberry Pi und schließe Tastatur, Maus, Bildschirm und Netzwerkkabel. Der Raspberry Pi startet sobald das Stromkabel eingesteckt wird. Zur Ubuntu Installation must du nur den Setup Anweisungen folgen.
  3. Abschließend bietet es sich an die System Software zu Aktualisieren. Öffne dazu ein Terminal (Strg+Alt+T) und gebe folgende Befehle ein:
    sudo apt update

    sudo apt upgrade -y

Chia Installation

Chia.net stellt für Ubuntu ein .deb Package zur Verfügung. Die Installation kann daher einfach grafisch erfolgen. Dazu lädst du mit dem bereits installierten Firefox das Installer Package „Ubuntu/Debian ARM“ von der Chia Download Seite herunter. Wichtig ist hier das ARM Package zu nehmen, da der Raspberry PI eine ARM CPU besitzt.
Die heruntergeladene Datei findest du dann im Download Verzeichnis das du über den „Files“ Browser links in der Menüleiste erreichst. Ein Rechtsklick auf das Installer Package erlaubt dir im Kontext Menü die Installation von Chia über den Menüpunkt „Open with Software Install“. Siehe Screenshot:

In dem Menü links unten solltest du nun den installierten Chia Client finden und starten können. Da sich der Raspberry Pi nur zum Farmen eignet und nicht zum erstellen von neuen Plots gehe ich davon aus, das du bereits eine Chia Wallets besitzt. Diese kannst du einfach über den Menüpunkt „Import from Mnemonics (24 words)“ importieren.

Da der Raspbery Pi sich nur zum Farmen eignet, gehe ich davon aus das du eine Ploting Maschine hast, die bereits mit der Chia Blockchain synchronisiert ist. Da dieser Vorgang sehr lange dauert, empfehle ich dir die Blockchain von diesem Computer auf den Raspberry Pi zu kopieren. Dies spart dir einige an Zeit. Schaue dazu bei den Tipps & Tricks rein. Alternativ kannst du den Raspberry Pi auch einfach laufen lassen bis Chia fertig synchronisiert ist.

Festplatten mounten

Erstelle ein Verzeichnis in das die Festplatte mit den Chia Plots gemountet werden soll. z.B. auf der Konsole (Strg+Alt+T) mit folgenden Befehl:
sudo mkdir /mnt/MOUNTNAME

Im Ubuntu Software Menü findest du die Anwendung „Disks“. Mit dieser kannst du die USB Festplatte in das neue Verzeichnis mounten. Dazu klickst du die Festplatte an, gehst dann auf das Zahnradsymbol und wählst „Edit Mount Options…“

Hier wählst du dann „Mount at system startup“ und „Show in user interface“. Bei „Mount Point“ gibst du nun das zuvor angelegte Verzeichnis an. Nach einem Neustart des Raspbery Pi solltn nun die Plots auf der USB Festplatte in dem Verzeichnis verfügbar sein. Dies kannst du z.B. auf der Konsole prüfen oder mit dem Ubuntu File Browser.
Console:
cd /mnt/MOUNTNAME

ls -la

Im Chia Client kannst du die Plots nun im Menü „Plots“ –> „Add Plot Directory“ hinzufügen.

Statische IP Adresse einstellen

Der Farming Raspi sollte im Netzwerk immer unter der IP Adresse erreichbar sein. Dies erleichtert die Administration. Einstellen kannst du dies im Ubuntu Settings Menü „Settings -> Network -> IPv4“. Siehe Screenshot. Die IP Adresse muss natürlich zu deinem Netzwerk passen.
ama

Screen Sharing – Bildschirmfreigabe mit VNC

In Ubuntu ist die Bildschirmfreigabe mit dem VNC Protokoll integriert. Diese kannst du hier aktivieren „Settings -> Sharing -> Screen Sharing“ aktivieren. Siehe Screenshot:

Als Client kann z.B. der VNC Connect von Real VNC verwendet werden. Leider ist das Screensharing recht buggy. Folgende Probleme mit dem Screen sharing habe ich festgestellt und bislang noch keine Zeit für Lösungen gefunden:

  • Nach einem Neustart des Raspberry geht das hinterlegte Passwort verloren und muss neu eingegeben werden
  • Es muss scheinbar ein Bildschirm und Tastatur angeschlossen sein damit es funktioniert
  • Wird der VNC Connect Client verwendet muss in den Optionen „Bildqualität -> hoch“ gewählt werden. Andernfalls sieht man kein Bild.

Bleibt mir noch zu sagen: Happy Farming!

Raspberry Pi – DynDNS mit noip.com

Um auf dem Raspberry Pi Serverdienste anbieten zu können, die über das Internet erreichbar sind, steht vor dem Problem, das die meisten ISP (Internet Service Provider), insbesondere bei DSL-Anschlüssen, eine Zwangstrennung vornehmen und somit die IP-Adresse im Internet wechselt.
Um das Problem zu umgehen bieten DynDNS Anbieter die Möglichkeit eine DNS Adresse (z.B. meinraspi.ddns.net) zu registrieren, die über eine Software auf dem Router oder eben dem Raspberry Pi immer mit der aktuell gültigen IP Adresse aktualisiert wird. Das Tutorial beschreibt das Vorgehen für den DynDNS Anbieter noip.com. Er bietet kostenlose DynDNS Adressen und einen Client der auf dem Raspbian Linux läuft.

1. Registrieren bei no-ip.com
2. Danach wird die DynDNS Adresse über den Menüpunkt Hosts/Redirects auf “Add Host” erstellt.

3. no-ip Update Client auf dem Raspi installieren. Dazu über SSH als USer pi anmelden und den Schritten folgen:

Software herunterladen:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

und entpacken:

sudo tar xf noip-duc-linux.tar.gz

In das neu erstellte Verzeichnis wechseln:

cd noip-2.1.9-1/

Software compilieren/installieren:

sudo make install

Bei der Installation werden die Logindaten für no-ip abgefragt, sowie welche Adresse in welchem Intervall aktualisiert werden soll.
Anschließend kann die no-ip Software gestartet werden:

sudo noip2

Zur Kontrolle ob die Software ausgeführt wird, kann die Prozessliste aufgerufen werden:

ps ax

Damit die no.ip Software beim nächsten Start des Raspberry Pi automatisch gestartet wird kann sie über CRON automatisch gestartet werden.

crontab -e

In die Datei den folgenden Befehl aufnehmen

@reboot cd /home/pi/noip-2.1.9-1 && sudo noip2

Nun ist das Heimnetzwerk über die eingerichtete DNS Adresse aus dem Internet erreichbar. Damit einzelne Dienste, wie z.B. ein Webserver, auf dem Raspberry Pi erreicht werden können muss auf dem Router eine entsprechende Port-Weiterleitung eingerichtet werden.

Raspberry Pi – GPS Empfänger einrichten und mit Java auswerten

Für einige Projekte, z.b: im CarComputer-Bereich, wird die aktuelle GPS Position benötigt. Dazu kann an den Raspberrry Pi ein USB GPS Empfänger angeschlossen und ausgewertet werden. Die meisten der für den USB-Port erhältlichen GPS-Mäuse melden sich als serielles Gerät an und werden von dem Raspberry Pi ohne Treiberinstallation automatisch erkannt. Empfehlenswert ist der GlobalSat BU-353-S4 GPS-USB-Empfänger. Er bietet mit dem SirfStar 4 Chip eine sehr gute Empfangsleistung. Der Zugriff auf die GPS Daten kann über die Tool Suite gpsd erfolgen.

GPS Empfänger einrichten

Wird der GPS-Empfänger an den Raspberry Pi angeschlossen muss er in der Liste der USB Geräte auftauchen. Diese kann mit dem Befehl „lsusb“ aufgerufen werden.

root@raspberrypi:~# sudo lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Je nach Hersteller ist des GPS-Empfängers unterscheidet sich die Bezeichnung des Gerätes. In diesem Fall ist es das Gerät „Prolific Technology, Inc. PL2303 Serial Port“.
Raspbian weißt dem Gerät automatisch einen virtuellen USB Port zu. Welcher Port zugewiesen wurde kann aus dem Syslog gelesen werden mit dem Befehl: „sudo tail -f /var/log/syslog“. Hier wurde der Port „ttyUSB0“ zugewiesen. Die Logdatei kann wie die meisten Konsolen Programme mit Strg+C beendet werden:

root@raspberrypi:/dev# sudo tail -f /var/log/syslog
Apr  7 17:55:11 raspberrypi kernel: [4926303.396898] usb 1-1.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Apr  7 17:55:11 raspberrypi kernel: [4926303.452197] usbcore: registered new interface driver usbserial
Apr  7 17:55:11 raspberrypi kernel: [4926303.454106] usbcore: registered new interface driver usbserial_generic
Apr  7 17:55:11 raspberrypi kernel: [4926303.455879] USB Serial support registered for generic
Apr  7 17:55:11 raspberrypi kernel: [4926303.455924] usbserial: USB Serial Driver core
Apr  7 17:55:11 raspberrypi kernel: [4926303.465107] usbcore: registered new interface driver pl2303
Apr  7 17:55:11 raspberrypi kernel: [4926303.465828] USB Serial support registered for pl2303
Apr  7 17:55:11 raspberrypi kernel: [4926303.465944] pl2303 1-1.3:1.0: pl2303 converter detected
Apr  7 17:55:11 raspberrypi kernel: [4926303.477427] usb 1-1.3: pl2303 converter now attached to ttyUSB0

Um die von dem GPS-Empfänger empfangen GPS-Koordinaten auszulesen empfehlen sich unter Linux die bereits angesprochenen gpsd Tools. Diese können mit folgendem Befehl installiert werden:

sudo apt-get install gpsd gpsd-clients python-gps

Der gpsd Daemon wird wie folgt gestartet:

sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock -G

Das Flag „-G“ sorgt dafür, das der Server unter allen IP-Adressen auf Port 2947 erreichbar ist und nicht nur unter localhost. Unter Windows kann dies z.B. mit Telnet getestet werden. (Telnet muss ab Windows 7 über „Programme und Funktionen“ in der Systemsteuerung nachinstalliert werden)

telnet IP_ADRESSE_RASPI 2947

Für den GlobalSat Empfänger kann es notwendig sein sein Binärprotokoll nach NMEA zu ändern damit dieses korrekt von gpsd verarbeitet wird. Dies kann mit dem Befehl „gpsctl -n“ erreicht werden.

Anzeige der GPS Daten

Die GPS-Daten können auf der Konsole mit dem Programm „cgps“ angezeigt werden. Dabei ist zu beachten das der GPS Empfänger freie Sicht zum Himmel benötigen um Daten zu empfangen.
cgps

sudo cgps -s

Mit dem Befehl „xgps“ steht ein grafische Programm zur Verfügung. Ist an dem Raspberry Pi kein Monitor angeschlossen kann die Ausgabe grafischer Programme auch über SSH erfolgen wie es in diesem Artikel beschrieben.
xgps

sudo xgps

Mit dem Programm „gpsmon“ der gpsd Toolsuite lassen sich die vom GPS Empfänger gesendet Rohdaten, meist in Form von NMEA Sätzen, live auf der Console sehen. Somit kann wunderbar überprüft werden ob Daten empfangen werden.

sudo gpsmon

NMEA_GPSMON

Auslesen der GPS-Daten in Java

Gpsd stellt die GPS-Daten in JSON codierter Form auf Port 2947 bereit. Dieses können über eine TCP/IP Socketverbindung auslesen werden. Vereinfacht wird dies unter Java mit der Library GPSd4java.

Allerdings war die Library bei mir nicht direkt lauffähig. Ich musste über die Socket-Verbindung zunächst einen Befehl schicken, der die JSON-Ausgabe der GPS-Daten startet.

?WATCH={"enable":true,"json":true};

java_gpsd_testclientDanach können mit der Library die Daten sehr gut ausgelesen werden. Dazu habe ich das kleine, auf dem Screenshot abgebildete, Java Programm geschrieben:

Download ausführbares Programm „jGpsdTest“:


Download des Source-Codes:

Raspberry Pi – GPIO Pins grafisch schalten mit jgRaspiGPIO

Die GPIO Pins des Raspberry Pi lassen sich auf unterschiedlichste weise schalten. Richtig komfortable wird es aber erst mit einer grafischen Benutzeroberfläche. Dazu habe ich das Programm „jgRaspiGPIO“ geschrieben. Es bietet eine GUI mit Raspberry Pi Visualisierung wobei für jeden GPIO Pin einen Button vorhanden ist um den Schaltzustand zu Ändern. Der aktuelle Schaltzustand wird im Programm angezeigt. Der folgende Screenshot zeigt das Programm:

RaspiGPIOSwitcher

Der Weg zum Programmstart:
1. Programm herunterladen 😉

2. Wenn das Programm unter Windows heruntergeladen wird kann es mit WinSCP auf den Raspberry Pi übertragen werden. Dies ist hier beschrieben.

3. Voraussetzung für die Funktion von „jgRaspiGPIO“ ist eine Java JRE auf dem Raspberry Pi. Die aktuellen Versionen von Raspbian bringen Java bereits mit. Ob und welche Java Virtual Machine (JVM) installiert ist kann mit dem Befehl „java -version“ getestet werden.

4. Das Programm nutzt eine grafische Benutzeroberfläche. Wird der Raspberry Pi headless, d.h. ohne Monitor betrieben muss die Grafikausgabe über Netzwerk erfolgen. Dazu muss bei dem SSH Protokoll das X11 Forwarding aktiviert werden. Komfortabler ist der Zugriff von Windows auf den LXDE Desktop des Raspberry Pi mit xrdp.

5. Der Start der Software erfolgt mit Root-Rechten über folgenden Befehl in dem Verzeichnis in dem das Programm liegt:

sudo java -jar jgRaspiGPIO.jar

Hintergrundinformationen für Java Entwickler

Der „Raspi GPIO Switcher“ ist in Java geschrieben und nutzt die Pi4J Library. Um die GPIO Pins zu schalten werden nur wenige Befehle benötigt. Im wesentlichen sind dies folgende:

private static final GpioController gpioController = GpioFactory.getInstance();
// Pin als Ausgabe-Pin initialisieren
GpioPinDigitalOutput pin0 = gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_00, PinState.LOW);       
// Schaltzustand ändern
pin0.toggle();

Für Maven Nutzer ist noch interessant, das die Library „pi4j-native“ ausgeschlossen wird. Ansonsten kann das Projekt nicht kompiliert werden, da versucht wird die nativen Zugriffskomponenten, die nicht in Java geschrieben sind, mit dem Java Kompiler zu kompilieren.

	<dependencies>
		<dependency>
			<groupId>com.pi4j</groupId>
			<artifactId>pi4j-core</artifactId>
			<version>0.0.5</version>
			<exclusions>
				<exclusion>
					<groupId>com.pi4j</groupId>
					<artifactId>pi4j-native</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

Der Quellcode kann hier heruntergeladen werden:

Raspberry Pi – Remotedesktopverbindung

Wer Windows Server administriert kennt die in Windows integrierte Remotedeskopverbindung zur Administration entfernter Rechner über das RDP (Remote Desktop Protocol). Sie ermöglicht die komfortable Übertragung der Bildschirmausgabe des entfernten Computers. Das Programm xrdp implementiert das Remote Desktop Protokol für Linux, so das mit Windows Bordmitteln auf den Linux Desktop zugegriffen werden kann. Die Software kann in Raspbian Linux einfach mit apt-get installiert werden:

sudo apt-get install xrdp

Eine Konfiguration ist für den Benutzer pi nicht erforderlich. Unter Windows wird der integrierte Client Remotedesktopverbindung genutzt um die Verbindung zum Linux Desktop herzustellen. Er ist unter „Programme -> Zubehör -> Remotedesktopverbindung“ verfügbar oder kann über den Befehl „mstsc“ gestartet werden. Danach wird eine Verbindung zum Raspberry Pi über seine IP Adresse oder Hostnamen hergestellt:

Remotedesktopverbindung

Als Benutzeraccount wird der Benutzer pi verwendet. (Standarpasswort: raspberry)

XRDP Login

Nach kurzer Ladezeit erscheint dann der LXDE Desktop:

Raspbian LXDE Desktop über xrdp

Raspberry Pi – Bildschirmausgabe über SSH

Der Raspberry Pi wird häufig ohne einen angeschlossenen Monitor betrieben, da dieser für Serveraufgaben nicht nötig ist. Die Administration erfolgt dann über das SSH Protokoll mit einem SSH Client wie z.B. Putty für Windows wie es hier beschrieben ist.

Es gibt aber Situationen wo eine grafische Oberfläche in Form eines Desktops erforderlich ist. Linux verwendet für diese Grafikausgabe ein Netzwerkprotokoll und Softwaresammlung namens X11. Ein X-Server übernimmt dabei die Grafikausgabe und verarbeitet die Eingaben der Maus und Tastatur. So ein X-Server gibt es auch für Windows. Hier kann beispielsweise Xming verwendet werden. Die Software kann mit den Standardeinstellungen installiert werden. Nach dem Start von Xming zeigt ein Programmicon neben der Uhr das der X-Server gestartet ist.

Nach dem Start des X-Server muss noch der SSH Client so eingestellt werden, dass er den lokalen X-Server nutzt. Bei Putty sind diese Einstellungen unter Connection -> SSH -> X11 zu finden. Hier wird „Enable X11 forwarding“ aktiviert und als „X Display location“ localhost:0 eingegeben. Siehe Screenshot:
Putty x11 Einstellung

Damit ist die Konfiguration bereits abgeschlossen. Bei der Raspbian Linux Distribution ist keine weitere Konfiguration nötig. Werden Programme mit grafischer Programmoberfläche durch den User pi in der Shell gestartet erfolgt die Ausgabe automatisch in einem Windows Fenster. Testweise kann dazu der Browser Midori gestartet werden:

pi@raspberrypi ~ $ midori

Midori Browser unter Windows mit Putty und X11

Ebenso ist es möglich den integrierten LXDE Desktop zu starten. Allerdings werden hier beim Beenden ggf. nicht alle Resourcen wieder korrekt freigegeben. Eine komfortablere Möglichkeit den Desktop von Windows aus zu nutzen ist die Verwendung des RDP (Remote Desktop Protokolls) und der xrdp Software auf dem Raspberry Pi. Wie dies funktioniert wird hier beschrieben.

startlxde

Raspberry Pi – Hausautomatisierung mit Domoticz und Home Easy

RaspberryPi_RFXCOMRFXCOMDer folgende Artikel stellt den Aufbau einer Hausautomatisierung mit dem Raspberry Pi vor. Das System nutzt die Open Source Software Domoticz, die über einen 433 Mhz Transceiver der Firma RfxCom unterschiedlichste Hausautomatisierungs-Komponenten aus der Serie Home Easy der Firma ELRO steuern kann. Dazu zählen insbesondere Funksteckdosen, Thermometer, Bewegungsmelder oder Helligkeitssensoren.

Domoticz-Installation

Home Easy Funksteckdose

Home Easy Funksteckdose

Domoticz gibt es für Windows und Linux. Für den Raspberry Pi existiert ein vorkonfiguriertes Linux Images das mit der Software Win32 Imager auf eine SD Karte geschrieben werden kann. Soll Domoticz auf einem bestehenden Debian / Raspbian Linux installiert werden folgen Sie am besten der Anleitung im Domoticz Wiki. Detaillierte Informationen bietet auch das Domoticz Handbuch

Domoticz-Konfiguration

Domoticz bringt eine moderne HTML 5 Web Oberfläche mit, die sich dynamisch an das jeweilige Gerät (Desktop, Tablet, Smartphone) anpasst. Dazu wird ein aktueller Browser benötigt. IE User benötigen die Version 10+. Die Domoticz Web GUI ist über Port 8080 des Raspberry Pi erreichbar:

http://IP_ADRESSE_RASPI:8080

Auf der Startseite können die wichtigsten Komponenten des Hausautomatisierungssystems in Form von Kacheln abgelegt werden:

Domoticz - Dashboard

Domoticz – Dashboard

Als erstes sollte nach der Installation von Domoticz in den Einstellungen der RfxCom Sender konfiguriert werden. Im Normalfall ist der 433 Mhz Sender an den USB Port „dev/ttyUSB0“ angeschlossen und ermöglicht dem System die Verbindung zu den Funksteckdosen und weiteren Hausautomatisierungs-Komponenten.

Domoticz - Hardware RfxCOM

Domoticz – Hardware RfxCOM

Anlernen der Funksteckdosen

1. Zunächst muss eine Home Easy Fernbedienung mit der Steckdose verbunden werden. Dazu drücken Sie die „LEARN“ Taste bei eingesteckter Dose für 3 Sekunden. Die Status LED der Funksteckdose blinkt danach und signalisiert damit die Empfangsbereitschaft für einen neuen Sendercode.
2. Anschließend wird auf der Funkverbindung die On und danach die Off Taste gedrückt die mit der Funksteckdose verbunden werden sollen.
3. Die Funksteckdose muss nun über die Fernbedienung schaltbar sein. Sollen alle angelernten Codes in der Funksteckdose gelöscht werden, so muss die „LEARN“-Taste für 6 Sekunden gedrückt werden.

Integration in Domoticz:

4. Um die Funksteckdose in Domoticz zu integrieren gibt es im Tab „Switches“ einen Button „Learn Light/Switch“. Dieser wird gedrückt und anschließend die Taste der Steckdose auf der Fernbedienung die in das System integriert werden soll.

Die Funksteckdosen können mit dem System auch zeitgesteuert geschaltet werden:

Domoticz - zeitgesteuert Schalten

Domoticz – zeitgesteuert Schalten

Temperaturwerte erfassen und visualisieren

In dem Temperatur-Tab der Software werden die Temperaturen mehrerer Funk Temperatursender in Form Diagrammen dargestellt. Die Temperaturen werden im Tages-, Monats- und Jahresverlauf dargestellt. Der Temperatursender TFA 30.3150 wird von Domoticz automatisch erkannt.

Domoticz - Temperaturdiagramme

Domoticz – Temperaturdiagramme

Fazit

Das System ist bei mir bereits mehrere Monate im Einsatz und funktioniert sehr gut. Durch die Kombination von dem fertigen RfxCom Transmittter / Receiver und der Open Source Software ist schnell eine lauffähige Hausautomatisierung aufgebaut. Domoticz bietet eine API mit einer Rest-Schnittstelle über die mit JSON-Formatierten-Befehlen der Status einzelner Komponenten abgefragt und geändert werden kann. Dadurch sind eigene Entwicklungen die an das System „andocken“ möglich.
Wer gerne etwas mehr bastelt und Zeit investieren möchte kann auch einen günstigen 433 Mhz Sender nehmen und diesen an die GPIO Pins des Raspberry Pi anschließen. Als Software bietet sich dafür die Open Source Software pilight an.

Raspberry Pi – GPIO Pins schalten

Das Raspberry Pi verfügt über 17 frei programmierbare GPIO Pins. Diese können als Eingabe- oder Ausgabeleitung verwendet werden. Wird die Leitung zur Ausgabe verwendet so liegt an ihrem GPIO Pin eine Spannung von 3,3V an (logisch 1). Wird die Leitung als Eingang verwendet kann logisch eine 1 gelesen werden wenn eine Spannung von 3,3 Volt anliegt. Hier finden Sie eine übersicht der GPIO Pins.

Um die GPIO Ausgabe zu testen empfiehlt sich die Visualisierung der Schaltzustände mit einer Leuchtdiode. Diese kann wie in folgender Grafik angeschlossen werden:

Anschluss einer LED an die Raspberry GPIO Pins

Anschluss einer LED an die Raspberry GPIO Pins

GPIO Ansteuerung per Shell

Die GPIO können über Dateien im Verzeichnis „/sys/class/gpio/“ angesteuert werden. Dies muss mit Root-Rechten geschehen. Entweder werden die Befehle direkt als root ausgeführt oder mit vorgestelltem sudo. Sind Sie als User „pi“ angemeldet kann mit su root zum Root User gewechselt werden.
Nach dem Systemstart sind die GPIO Pins zunächst als Eingang geschaltet und müssen mit „Export“ und Direction out als Ausgang definiert werden. Mit folgenden Befehlen kann der GPIO Pin 2 aus der oberen Schaltung geschaltet werden:

$ cd /sys/class/gpio
$ echo "2" > export
$ echo "out" > gpio2/direction

GPIO auf an (3,3V Spannung)
$ echo "1" > gpio2/value

GPIO auf aus(keine Spannung)
$ echo "0" > gpio2/value

GPIO Ansteuerung per WiringPi

Alternativ zur direkten Ansteuerung kann das Programm WiringPi installiert werden. Der Vorteil von WiringPi liegt darin das keine Rootrechte zum Schalten der GPIPO Pins benötigt werden. Eine Anleitung zum Installieren von WiringPi findet sich auf der Projektseite.

Eingang auslesen
gpio -g read 2

GPIO Pin als Ausgang definieren
gpio -g mode 2 out

Ausgang setzen
gpio -g write 2 1

GPIO Ansteuerung per PHP mit WiringPi

Mit WiringPi und dem PHP Befehl „shell_exec“ können die GPIO Pins auf einfache Weise über eine Webseite geschaltet werden.

$val = trim(@shell_exec("/usr/local/bin/gpio -g read 2"));
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 2 1"));

GPIO Ansteuerung per Java und Pi4J

Unter Java können die GPIO Pins komfortable mit der Libraray Pi4J angesprochen werden. Das Programm jgRaspiGPIO nutzt die Library und ist mit Quelcode verfügbar.

Raspberry Pi – FM Sender

Im Rahmen eines #pihack-Wochenendes für das Schulprojekt „Code Club“ entstand an der Imperial College Robotik Society in London eine Software mit der der Raspberry Pi in einen UKW Sender verwandelt werden kann. Der Programm Code ist GPL lizensiert und kann hier heruntergeladen werden. Hardwareseitig sind keine Änderungen nötig. Lediglich eine kurze Antenne (20 cm Kabel) kann an GPIO 4 (Pin 7) angeschlossen werden. In Deutschland darf der Sender jedoch nicht betrieben werden, da seine Ausgangsleitung zu hoch ist und ein breiter Frequenzbereich gestört werden kann! Trotzdem zeigt das Projekt eindrucksvoll was mit dem Raspberry Pi möglich ist.

Das FM-Signal wird durch Modulation der GPIO-Clock generiert und kann Audiosignale im Bereich von 1 MHz bis 250 MHz übertragen.

Senden einer Wave Datei bei 100 Mhz:

sudo ./pifm sound.wav 100.0

Die Software erwartet ein Monoaudiosignal in Form einer Wave-Datei mit 16 Bit Auflösung und 22,05 kHz Abtastrate. Eine solche Wave Datei kann mit der Open Source Software „mPlayer“ erstellt werden:

mplayer -quiet -vo null -vc dummy -af resample=22050,channels=1 -ao pcm:waveheader:file=file_out_22kHz.wav file_in.wav