Netzwerkweiter Adblocker mittels Pi-hole

Die größte Verwendung finden Adblocker in den Browsern die wir täglich nutzten. Abseits der Browser werden Adblocker, mangels gefühlter Notwendigkeit, eher selten genutzt. Mit Pi-hole existiert eine Lösung, welche nicht nur für den lokalen Rechner, sondern für das gesamte Netzwerk funktioniert; eine Art schwarzes Loch für Werbung.

pi-hole.net

Pi-hole wird, wie der Name es bereits andeutet, auf dem Raspberry Pi installiert. Es werden eine Reihe von Distributionen für den Raspberry Pi unterstützt. Technisch gesehen fungiert Pi-hole als DNS-Server und löst Domains von Werbenetzwerken nicht auf. Über ein Webinterface können die Statistiken betrachtet und die Einstellungen getätigt werden. Daneben kann Pi-hole über ein Kommandozeilentool, gleichen Namens, administriert werden. Weitere Informationen findet man auf der offiziellen Projektseite unter pi-hole.net. Der unter der EUPL lizenzierte Quellcode ist auf GitHub zu finden. Die European Union Public License (EUPL) ist eine auf europäisches Recht angepasste Copyleft-Lizenz.

Digital Signage für den Raspberry Pi

Der Begriff Digital Signage beschreibt im Groben nichts anders als die Nutzung digitaler Schilder, was z.B. Bildschirme sein können. Möchte man einen solchen Bildschirm bespielen, kann man sich mit dem Raspberry Pi eine entsprechende Lösung zusammenbauen. Daneben gibt es eine spezialisierte Distribution für den Raspberry Pi. Diese hört auf den Namen Raspberry Digital Signage und stellt nach dem Booten einen Webbrowser im Vollbild dar. Als Browser wird Chromium genutzt. Daneben stellt die Distribution sicher, das man den Webbrowser nicht beenden oder anderweitig manipulieren kann.

binaryemotions.com

Zur Wartung und Nutzung der Distribution existiert ein Webinterface, in welchem die entsprechenden Einstellungen vorgenommen werden können. Heruntergeladen werden kann die Distribution von der Seite des Herstellers.

Webseite im Kiosk-Modus auf dem Raspberry Pi darstellen

Für einen speziellen Anwendungsfall wollte ich eine Webseite im Kiosk-Modus mittels eines Raspberry Pi darstellen. Der Raspberry Pi sollte hochfahren und anschließend die Webseite anzeigen. In diesem Fall wurde Midori als Browser und Raspbian als Distribution ausgewählt. Im ersten Schritt werden die entsprechenden Pakete installiert:

apt-get install xorg matchbox midori unclutter

Nachdem die benötigten Pakete installiert wurden, geht es an die Konfiguration. Dazu wird Home-Verzeichnis des Nutzers pi die Datei .xinitrc angelegt und mit folgendem Inhalt befüllt:

#!/bin/sh
/usr/bin/unclutter &
/usr/bin/matchbox-window-manager &
xset -dpms
xset s off
while true; do
/usr/bin/midori -e Fullscreen -a https://example.org
done

Mittels unclutter wird der Mauscursor ausgeblendet; anschließend wird der Window-Manager gestartet. Danach geht es an die Konfiguration von X11 – die Energiesparoptionen und der Bildschirmschoner werden deaktiviert. Zum Abschluss folgt der eigentliche Start des Browsers in einer Schleife. Dies führt dazu dass Midori nach einem Absturz sofort wieder neugestartet wird. Die aufzurufende URL sollte dabei natürlich angepasst werden. Damit X11 automatisch gestartet wird, editieren wir wir ebenfalls die Datei .bashrc – dort fügen wir an das Ende Datei folgenden Befehl hinzu:

# Start X11
startx

In diesem speziellen Fall war der Anzeigemonitor um 90 Grad gedreht, so das der Inhalt des Bildschirms ebenfalls gedreht werden musste. Dazu muss die Datei /boot/config.txt bearbeitet werden und folgender Wert hinzugefügt werden:

display_rotate=1

Nun muss nur noch dafür gesorgt werden, dass der Raspberry Pi nach dem Start automatisch in den Nutzer pi einloggt. Dazu kann das Konfigurationswerkzeug raspi-config genutzt werden.

Die Einstellung um automatisch mit dem Nutzer pi zu starten

Die entsprechende Einstellung befindet sich in den Boot Options und dort im Punkt Desktop / CLI. An dieser Stelle muss Console Autologin ausgewählt werden. Anschließend kann der Raspberry Pi neugestartet werden und das ganze getestet werden.

Z-Wave im Home Assistant aktivieren

Die freie Heimautomationslösung Home Assistant verfügt unter anderem über eine Unterstützung des Z-Wave-Protokolls. Möchte man die Unterstützung für Z-Wave hinzufügen, so muss theoretisch nur die passende Konfiguration hinterlegt werden. In der Praxis gibt es allerdings ein paar Kleinigkeiten mehr zu beachten. Hier wird davon ausgegangen, dass Hass.io als Betriebssystem für Home Assistant genutzt wird. Bevor man mit der Konfiguration beginnt, benötigt man Gerät um sich mit dem Z-Wave-Netzwerk zu verbinden. Empfehlenswert ist hier z.B. der Aeotec Z-Stick Series 5. Daneben existieren eine Reihe weiterere Controller, welche vom Home Assistant unterstützt werden.

Die Anzeige der installierten Add-Ons für Hass.io

Im ersten Schritt sollten im Hass.io-Menü die Add-Ons für SSH und Samba aktiviert werden. Dazu wird die Weboberfläche über die URL:

http://hassio.local:8123

aufgerufen. Nach der Installation der Add-Ons ist es wichtig, diese über den Button Start direkt zu aktivieren. Nachdem das Samba-Add-On aktiviert wurde, kann über die Freigabe der Hass.io-Instanz im Ordner config die Konfiguration eingesehen werden. Wichtig ist hierbei die Datei configuration.yaml. An das Ende dieser Datei fügt man folgende Konfiguration ein:

# Z-Wave
zwave:
  usb_path: /dev/ttyACM0

Damit ist die Konfiguration für Z-Wave abgeschlossen. Um das korrekte Gerät für den Z-Wave-Stick zu ermitteln, loggen wir uns per SSH auf der Hass.io-Instanz ein:

ssh root@hassio.local

und geben dort den Befehl:

hassio host hardware

Dieser Befehl zeigt uns, welche Hardware an dem Raspberry Pi angeschlossen ist. Eine Ausgabe könnte dann z.B. so aussehen:

{
  "serial": [
    "/dev/ttyAMA0"
  ],
  "input": [],
  "disk": [],
  "gpio": [
    "gpiochip0",
    "gpiochip100"
  ],
  "audio": {
    "0": {
      "name": "bcm2835 - bcm2835 ALSA",
      "type": "ALSA",
      "devices": {
        "0": "digital audio playback",
        "1": "digital audio playback"
      }
    }
  }
}

Nachdem der Befehl eingegeben wurde, wird der Z-Wave-Stick an den Raspberry Pi angeschlossen:

{
  "serial": [
    "/dev/ttyACM0",
    "/dev/ttyAMA0"
  ],
  "input": [],
  "disk": [],
  "gpio": [
    "gpiochip0",
    "gpiochip100"
  ],
  "audio": {
    "0": {
      "name": "bcm2835 - bcm2835 ALSA",
      "type": "ALSA",
      "devices": {
        "0": "digital audio playback",
        "1": "digital audio playback"
      }
    }
  }
}

Bei dem neuen Gerät im Abschnitt serial handelt es sich um den Z-Wave-Stick. Seine Gerätebezeichnung übernehmen wir in die Konfiguration. Wird der Stick ab- und später wieder angesteckt, so kann sich die Gerätebezeichnung ändern, so dass dieser Prozess anschließend wiederholt werden muss. Im Falle einer falsch konfigurierten Gerätebezeichnung erhält man auf dem Dashboard eine Fehlermeldung das Z-Wave nicht angesprochen werden konnte. Nachdem der Stick angesteckt ist und die Konfiguration entsprechend erweitert wurde, muss Home Assistant neugestartet werden. Dazu wählt man im Menü Einstellungen den Punkt General und wählt dort im Bereich Server Managment den Button Restart. Nach knapp einer Minute sollte die Weboberfläche wieder verfügbar und Z-Wave aktiv sein.

Raspbian von Jessi auf Stretch aktualisieren

Vor ein paar Tagen wurde Raspbian, die Debian-Distribution für den Raspberry Pi, auf das neue Release mit dem Namen Stretch aktualisiert. Debian benennt seine Releases nach Figuren aus dem Toy Story Universum. Nach dem Cowgirl Jessi, folgt nun der Octopus Stretch, Um bestehende Installationen, welche noch mit der älteren Version laufen, zu aktualisieren, sollte man sich per SSH mit dem entsprechenden Raspberry Pi verbinden. Dort gibt man dann folgendes ein:

apt-get update
apt-get dist-upgrade

Damit wird die bestehende Version (Jessi) auf die aktuelle Version aktualisiert. Im nächsten Schritt müssen die Paketquellen angepasst werden. Dazu muss die sources.list-Datei in einem Editor geöffnet werden:

nano /etc/apt/sources.list

Die Datei sieht dabei im Normalfall wie folgt aus:

deb http://mirrordirector.raspbian.org/raspbian/ jessi main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

Die Zeichenkette jessi muss nun durch stretch ausgetauscht werden. Das gleiche gilt für Dateien die im Ordner /etc/apt/sources.list.d/ liegen. Anschließend müssen die Pakete auf die neue Version (Stretch) aktualisiert werden:

apt-get update
apt-get dist-upgrade

Je nach Anzahl der installierten Pakete, kann dieser Vorgang durchaus einige Stunden in Anspruch nehmen. Unter Umständen wird gefragt, ob bestimmte Konfigurationsdateien überschrieben oder behalten werden sollen. Hier sollte man je nach Fall abwägen. Bei Konfigurationen, die manuell angepasst worden sind, kann ein Überschreiben derselben zu Problemen führen, da die Dienste dann eventuell nicht mehr so laufen wie ursprünglich gewünscht. Wenn der Vorgang abgeschlossen ist, sollten noch einige Aufräumarbeiten angestartet werden:

apt-get autoremove
apt-get autoclean

Anschließend kann der Raspberry Pi mittels des Befehls reboot neugestartet werden.