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.

Cache des Safari-Browsers unter iOS löschen

Für ein paar Tests wollte ich im Safari unter iOS den Cache löschen und fand direkt in Safari keine offensichtliche Möglichkeit dies zu tun. Dies liegt daran dass die entsprechende Möglichkeit dies zu tun in den Einstellungen versteckt ist.

Die Einstellungen für Safari

Öffnet man die Einstellungen, so findet man dort den Punkt Safari und schließlich den Eintrag Verlauf und Websitedaten löschen. Damit wird allerdings nicht nur der Cache, sondern auch eventuell geöffnete Tabs und ähnliches gelöscht.

Freie Alternative(n) für Evernote

Evernote ist eine praktische Anwendung. Mit ihr können Notizen gespeichert und verwaltet werden. Leider verlangt Evernote mittlerweile happige Preise für seine Premium-Funktionalitäten. Aus meiner Sicht ist dies allerdings das kleinere Problem. Viel schwerer wiegt, das die eigenen Daten einer amerikanischen Firma anvertraut werden müssen. Neben den proprietären Alternativen wie z.B. OneNote von Microsoft, gibt es mittlerweile einige freie Alternativen. Bevor man sich nach einer Alternative umschaut, sollte man erst einmal schauen welche essentiellen Features Evernote bietet. Kurz zusammengefasst sind die wichtigsten Features die Synchronisation über verschiedenen Geräte, der Web-Clipper, die Offline-Funktionalität und die OCR-Erkennung für PDF, Bilder und ähnliches. Wie wichtig jedes dieser Features ist bleibt der eigenen Gewichtung überlassen.

Mir persönlich wäre eine Lösung auf Basis von Nextcloud am liebsten. Als Notizanwendung auf Markdown-Basis bietet sich die Nextcloud App Notes an. Allerdings handelt es sich hierbei nur um eine rudimentäre Lösung. Mehr in die Richtung Evernote gehen die Lösungen ownNotes bzw. dessen Fork NextNote. Leider scheint bei diesen beiden Projekten keine Weiterentwicklung mehr stattzufinden bzw. diese sehr träge zu verlaufen.

Neben auf ownCloud bzw. Nextcloud basierenden Lösungen, gibt es eine Reihe von Standalone-Lösungen. Zu nennen wären hier unter anderem Paperworks, Permanote, Laverna, TagSpaces, Nemex, Brainstorm und OpenNote.

Die Login-Seite von wallabag

Vielen diesen Lösungen werden entweder nicht mehr weiterentwickelt oder lassen nicht wirklich das Evernote-Feeling aufkommen. Daneben gibt es Lösungen welche sich für bestimmte Aspekte von Evernote als Ersatz eignen. Ein Beispiel dafür ist wallabag, welches sich als Read-It-Later-Lösung versteht und zur Archivierung von Webseiten genutzt werden kann.

Eine Lösung welche in letzter Zeit verstärkt in den Fokus gerät ist Joplin, die vom gleichen Entwickler wie eine hier vor längerer Zeit vorgestellte Backuplösung ist. Joplin versteht sich als Alternative zu Evernote und setzt voll und ganz auf Markdown. Das bedeutet allerdings nicht das man keine Bilder oder andere Anhänge zu einem Projekt hinzufügen kann; dies ist problemlos möglich.

Joplin unter macOS

Für Joplin existieren Clients für macOS, Linux und Windows. Für die mobilen Plattformen existieren Apps für iOS und Android.

Joplin
Preis: Kostenlos
Joplin
Preis: Kostenlos

Als Backend unterstützt Joplin, das Dateisystem und eine Synchronisation zu OneDrive. An einer Unterstützung für Nextcloud und Dropbox wird gearbeitet. Laut dem Entwickler, wird diese nach der Beseitigung eines speziellen React Native Bugs implementiert:

Currently, synchronisation is possible with OneDrive (by default) or the local filesystem. A NextCloud driver, and a Dropbox one will also be available once this React Native bug is fixed. When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.

Durch die geplante Nextcloud-Unterstützung ist es möglich die Synchronisierung auf dem eigenen Server zu nutzen; die eigenen Daten bleiben somit geschützt. Joplin hat mittlerweile die Betaphase verlassen und kann produktiv genutzt werden. Für einen Umstieg von Evernote auf Joplin existiert in der Anwendung eine Importfunktion um die enex-Dateien, welche beim Export aus Evernote erzeugt werden, zu importieren. Der Quelltext ist auf GitHub zu finden und unter der MIT-Lizenz lizenziert. Daneben gibt es eine offizielle Projektseite.

10 Jahre alter Bug in JetBrains IDEs

Zur Entwicklung nutze ich in vielen Fällen die IDEs von JetBrains. Aus meiner Sicht sind die IDEs von JetBrains im Grunde großartig. Doch wo Licht ist, da fällt auch Schatten. Wenn man diese IDEs mit einer deutschen Tastaturbelegung nutzt, so wird man desöfteren mit Problemen konfrontiert sein. So ist es z.B. nicht möglich die Tastenkombination für die zeilenweise Auskommentierung zu nutzen. Es funktioniert mit einer deutschen Tastaturbelegung nicht. Manchmal kann man diese Probleme umgehen. Unter macOS würde die Nutzung des Numpads als Workarround in den meisten Fällen mangels Numpad scheitern.

Ein Beispiel für problematische Tastaturkürzel

Bei meiner Suche nach einer Lösung bin ich über einen entsprechenden Bug im Ticketsystem von JetBrains gestolpert: JRE-216. Dieser Bug vom 31. Oktober 2007 ist mittlerweile über 10 Jahre alt und noch immer ungelöst. Er verweist unter anderem auf das Ticket IDEA-165950. Auch in diesem Ticket geht es um die Unterstützung nationaler Tastaturbelegungen. Gelöst ist dieses Ticket nicht; auch wenn es mittlerweile Bestrebung gab, das Problem anzugehen. So heißt es weiter warten, auf eine endgültige Lösung; für ein Problem welches viele Entwickler Zeit, Ärger und Produktivität kostet.

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 

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.