Category Archives: Raspberry Pi

Raspbian: Minimal Webcam

Comments Off on Raspbian: Minimal Webcam
Filed under DIY, Raspberry Pi

Diese Variante einer mobilen Webcam enthält softwareseitig nur ein Skript für die Erstellung und FTP-Upload des “webcamimage.jpg” sowie einen Cron-Job der jede Minute ausgeführt wird.
An zusätzlicher Software wird sshpass benötigt, Datenübertragung erfolgt mit SFTP. Das normale FTP wird von kommerziellen Hosting-Firmen nicht mehr unterstützt.
Beispiel-Syntax für Download: user@host:directory/webcamimage.jpg
Beispiel-Syntax für Upload: user@host:directory/ <<< $'put webcamimage.jpg'
Hier das komplette Script (password muss in Quotationmarks):

#!/bin/bash
cd /home/pi/webcam/
sudo rm *.jpg
raspistill -rot 180 -w 1640 -h 1232 -o "webcamimage.jpg"
sleep 1
sshpass -p "password" sftp -oPort=22 user@host:directory/ <<< $'put webcamimage.jpg'
exit

Hardware ist hier ein Raspberry Pi Model B Plus Rev 1.2 plus Kamera Modul V2 plus TPLink TL-WN722n (Rev1, Atheros).

Mujiwireless Version 2

Comments Off on Mujiwireless Version 2
Filed under Raspberry Pi

Ein wesentlicher Schwachpunkt bei Mujiwireless Version 1 ist die fehlende Information über die IP-Nummer, die das Gerät zugewiesen bekommt. Mit dem monochromen Mini-OLED-Display lässt sich dieser Makel elegant beheben. Das Display zeigt anhand der Demo-Datei stats.py schon alle wesentlichen Daten an: IP-Nummer, CPU-Load, RAM- und Disk-Belegung. Anhand von der CPU-Load kann man auch gut auf den ersten Blick erkennen, ob ein Zugriff auf das Gerät stattfindet. Die Disk-Belegung funktioniert ebenfalls zuverlässig. Alles in allem eine wesentliche Verbesserung was die Funktion angeht. Baulich ist das Display allerdings wesentlich höher als der Raspberry Pi Zero, so, es passt nicht mehr in das (namensgebende) Muji-Gehäuse. Eventuell kann man an den Header-Stiften schrauben …

Mujiwireless (Eduroam-NAS)

Comments Off on Mujiwireless (Eduroam-NAS)
Filed under Raspberry Pi

Der Raspberry Pi Zero W kostet 10,35 Euro. Eine SD-Karte kostet 12,99 Euro, das USB-Kabel kostet 3,45 Euro. Das Muji-Visitenkartenetui mit doppeltem Fach kostet 3,95 Euro. Alles zusammen ergibt einen äusserst mobilen und drahtlosen Datenspeicher für vorkonfigurierte WLAN-Umgebungen. Die Idee: da das persönliche Bewegungsprofil meistens zwischen bekannten WLANs hin- und herpendelt, und ein Smartphone als Datenspeicher mit hoher Kapazität ausscheidet, soll dieser Mini-Computer, sozusagen als drahtloser USB-Stick, die Daten zwischen den WLANs austauschen. Den Fachbegriff NAS (Network Attached Storage) kann man natürlich auch verwenden. Vorteil: das Ding kann einfach in der Tasche bleiben, es wird über eine USB-Powerbank mit Strom versorgt. Stationärer Strom-Betrieb an einer beliebigen USB-Buchse ist natürlich auch möglich. Zweiter Vorteil: ein Ausbau der Kapazität durch Austausch der SD-Karte ist möglich. Dafür muss natürlich das System geklont werden, z.B. mit ApplePi-Baker.

Die Schwierigkeit dabei ist die Konfiguration des Eduroam-WLANs für die jeweilige Hochschule, den dieses Setup ist keinesfalls gleich für alle angeschlossenen Institute. Auch die Wahl des richtigen OS’ für dieses Projekt ist wichtig: das aktuelle Raspbian (Stretch 9.0) bringt nicht die notwendigen WLAN-Treiber für den Raspberry Pi Zero W mit. An Software wird also benötigt: Raspbian Jessy 8.0 und eine nachträgliche SMB-Installation.

Zwei Konfig-Dateien für Eduroam (und andere WLANs) sind wesentlich: /etc/wpa_supplicant/wpa_supplicant.conf und /etc/network/interfaces. In interfaces wird nur der allgemeine WLAN-Modus definiert und die Verweise zu den WLAN-Setups hinterlegt; folgender Inhalt ist weitesgehend allgemeingültig:


# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

# the loopback network interface
auto lo
iface lo inet loopback

# the primary network interfaces
allow-hotplug wlan0

iface wlan0 inet manual

# link to access data
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

# secondary network interface with dhcp
iface eth0 inet dhcp

Inhalt der wpa_supplicant.conf sieht folgendermassen aus:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE

network={
        ssid="eduroam"
        proto=RSN
        key_mgmt=WPA-EAP
        pairwise=CCMP
        auth_alg=OPEN
        eap=TTLS
        identity="RZ-Login"*
        password="RZ-Kennwort"*
        anonymous_identity="anonymous@hs-wismar.de"
        ca_cert="/etc/ssl/certs/Deutsche_Telekom_Root_CA_2.pem"
        phase2="auth=PAP"
        priority=1
}

network={
        ssid="Zuhause WLAN"*
        psk="Zuhause WLAN Kennwort"*
        key_mgmt=WPA-PSK
        priority=5
}

Alle mit * gekennzeichneten Zeilen sind persönliche Angaben. Wichtig die Verschlüsselungsmethode während der Authentifizierung (eap), die äussere Identität (anonymous_identity) sowie der Verweis auf das Root-Zertifikat (ca-cert), was schon Bestandteil des OS ist. RZ-Login als Kurzname. Die Prioritäten (priority) spielen nur dann eine Rolle, wenn beide WLANs in Reichweite sind.

Für das FileSharing wird SMB benötigt, die Prozedur dafür klammere ich hier mal aus. Persönlich habe ich 2 Ordner zum Teilen angelegt: einen mit Passwort und einen ohne Passwort (Guest-Access). Achtung: dass das Gerät für alle im Eduroam-WLAN befindlichen Geräte erreichbar ist, muss klar sein.

Praxis: ich benutze Mujiwireless™ jetzt schon ein paar Wochen und alles funktioniert wie erhofft. Der Zugriff von macOS (in Eduroam) erfolgt über die IP-Adresse, die man allerdings über nmap vorher in Erfahrung bringen muss. Der Zugriff von Windows-Computern im Eduroam klappt leider nicht. Im Home-WLAN erscheint das Volume im Netzwerkbrowser (siehe letztes Bild). Die Geschwindigkeit der Dateitransfers richtet sich an den Limitationen des Eduroam und der Möglichkeiten der Hardware des Raspberry Pi Zero aus. Im Home-WLAN erreicht man etwas höhere Datenraten. Für richtig grosse Daten eignet sich das eigentlich nicht, so liegt die praktische Datenrate im Eduroam zwischen 2-3 MB/s, dh., für 6 GB braucht man ca. eine Stunde. Aber nochmal: das Ding liegt dabei in einer Tasche 😀.

Twitter Photo Bot (Raspberry Pi/Camera Module V2) updated

Comments Off on Twitter Photo Bot (Raspberry Pi/Camera Module V2) updated
Filed under DIY, Raspberry Pi

IMG_1993

Der neue Raspberry Pi V3 Model B kommt neuerdings mit integriertem WiFi und das neue Kameramodul V2 kommt jetzt neuerdings mit einer 8-MP-Kamera, diese beiden neuen Features unterstützen die Realisierung des “Twitter Photo Bot” ganz wesentlich.
Die Idee: ein System, was regelmässig und völlig autonom Bilder macht und tweetet. Bei minimalem Bedienungsaufwand, heißt: nur am Strom anschliessen, fertig.
Nötig an Hardware dafür ist (neben dem Raspberry Pi und dem Kameramodul) ein mobiler UMTS-WLAN-Router, der die Netzverbindung herstellt. Diese 3 Sachen müssen alle in ein Gehäuse. Der Router braucht natürlich eine SIM-Karte mit entsprechenden Datenkontingent, auf die Schnelle habe ich mit einem Datenverbrauch von 500 MB pro Monat kalkuliert. Das Ganze hat also den Charakter einer Webcam-to-Go, allerdings mit reiner Twitter-Anbindung, denn irgendwohin müssen ja auch die ganzen Daten, im Jahr wären das stolze 6 GB.
Benötigte Software: das Standard-Raspbian, einen Twitter-Account, die Twython-Bibliothek und ein Python-Script, was über Crontab ausgeführt wird. Das Betriebssystem verarbeite ich mit SDFormatter und ApplePi-Baker, siehe AudioCube, das geht definitiv am schnellsten.
Die App-Registration unter apps.twitter.com braucht etwas mehr Zeit, definiert werden muss ein Name, eine Beschreibung und hinterlegt werden muss eine Handynummer. Die kann man aber nach der Registrierung wieder rausnehmen.

Bildschirmfoto 2016-08-03 um 14.32.46

Die benötigten Token (bei “Manage Keys and Access Tokens”) sind: Consumer Key (API Key), Consumer Secret (API Secret), Access Token und Access Token Secret.
Weiterhin brauchen wir die Twython-Bibliothek, diese wird installiert über:

sudo apt-get install python-setuptools
sudo easy_install pip
sudo pip install twython

Hier das endgültige Skript (twitterphotobot.py):


import sys
import os
import random

from twython import Twython

consumer_key = 'lc7dhdghgdhgdfhgdfGPP3'
consumer_secret = 'Fy0S5NhdhgfhdgfhgfdhgfdhdgfhLuvdZpuwiiNgh6'
access_token = '760076306dhdhdfghgdfhdfhgfdhgdfhdgfQzqDhvlLS'
access_token_secret = 'HOidOZfcdhdghdfhgfdhgdfhgfdhdgfZfuXLEAgMMITGKw'

messages = [
"I ve got the Power.",
"Strawberry Fields forever.",
"Boom. Shake, shake, shake the room.",
"We dont need no education.",
]

takephoto = "raspistill -w 1280 -h 960 -q 100 -o /home/pi/Desktop/picture.jpg"
os.system(takephoto)
photo = open('/home/pi/Desktop/picture.jpg', 'rb')
twitter = Twython(consumer_key, consumer_secret, access_token, access_token_secret)
image = twitter.upload_media(media=photo)
twitter.update_status(status=random.choice(messages), media_ids=[image['media_id']])

Unter “messages” stehen die Texte des Tweets, die per Zufall eingebunden werden, letzte Zeile. Unter “takephoto” wird die Grösse des Bildes festgelegt; die Bildgrösse muss unbedingt begrenzt werden, weil die rohe Foto-Ausgabe des Camera-Moduls die maximale Twitter-Photo-Upload-Größe (<3MB) überschreitet.
Getestet wird das Skript mit python twitterphotobot.py, bei mir dauerte das ganze ca. 20 Sekunden zum Ausführen, danach sollte der Tweet auch schon veröffentlicht sein.
Troubleshooting: SyntaxError: Non-ASCII character '\xc2' ...
Der Fehler bzgl. der Sonderzeichen innerhalb der “messages”-Sektion passiert häufig, hier werden die Umlaute oder falsche Apostrophe (Akut,´) angemerkt. Stattdessen sollte man das Ersatz-Apostroph verwenden (‘). Eine Lösung für die Umlaute habe ich noch nicht.
Raspberry-Pi-Zeit setzen: sudo dpkg-reconfigure tzdata
Crontab: https://www.raspberrypi.org/documentation/linux/usage/cron.md, bei mir ist jede Viertelstunde eingestellt.
Der letzte Schritt ist die WiFi-Anbindung an den UMTS-Router, dafür gibt es eine kurze Anleitung hier: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md, die SSID und das Passwort stehen bei diesem Model von TP-Link auf der Innenseite des Deckels.
Mit der umfangreichste Teil der Übung ist ein effektives Gehäuse. Ich habe das Innenteil eines Festplattengehäuses in ein MDF-Gehäuse eingepasst, Schwierigkeit besteht darin, dass die Kamera irgendwie fest mit Gehäuse verankert sein muss, gleichzeitig man aber auch an das Innenleben kommen sollte. Und an den Ethernet-Port sollte man auch immer denken, um natürlich das System warten zu können.

Bauteile:

Raspberry Pi V3 Model B 40 EUR
Raspberry Pi Kameramodul V2 32 EUR
TP-Link UMTS Router 56 EUR
SD-Karte 16 GB 8 EUR

PS: das ganze funktioniert auch mit einem Raspberry Pi 1 Model B und Debian Jessie Lite.

IMG_2014

Update 23.9.: Das Sonderzeichen-Problem löst man durch die Definierung des Encodings in der ersten Zeile des Scripts:
# -*- encoding: utf-8 -*-

AudioCube (Late 2015)

Comments Off on AudioCube (Late 2015)
Filed under DIY, Raspberry Pi

IMG_8707

Nach mehreren Monaten im Testbetrieb hier eine kleine Dokumentation zur Idee und zur Realisation des AudioCube (auch spöttisch AudioKaaba genannt; wobei festzustellen ist, dass die Kaaba in Mekka keine exakte Würfelform besitzt) auf RasberryPi/MusicBox-Basis.
Einen kleinen AirPlay-Receiver für 30 EUR plus Kosten für Netzteil und Audiokabel selbst zu bauen, war die Aufgabe. Dazu die hübsche und naheliegende Würfel-Form zu realisieren, war die wesentlich schwierigere Aufgabe. Martin Jamborsky entwickelte für mich das extrem schlüssige Würfel-Gehäuse aus MDF, versehen mit den notwendigen Öffnungen für Strom, Audio-Klinke und die rückwärtigen Anschlüsse USB und Ethernet. Die Kantenlänge beträgt 99 mm. Ausser an der Unterseite gibt es keinerlei sichtbare Schraubverbindungen. Das Öffnen und Schließen des Gehäusses ist möglich aber ziemlich aufwendig. Trotzdem sollte natürlich das Wechseln der Mini-SD-Karte mit Betriebssystem und Software irgendwie möglich sein, aber eine Prämisse beim Zusammenbau war das nicht gewesen.
IMG_8178

IMG_8192

Ebenso gibt es keine Bedienelemente, im Idealfall soll der AudioCube nur gelangweilt neben der Audio-Anlage stehen und über Ethernet den AirPlay-Empfänger für Rechner und iOS-Geräte spielen. Wie der Name schon sagt: nur für Audio. Einrichtung und Betrieb erfolgt rein headless, deswegen ist auch ein Ethernet-Anschluss vonnöten. Im Idealfall steht der Cube also nicht nur neben der Audio-Anlage, sondern auch neben dem Router/Kablemodem. Was zugegeben nicht die Regel ist. Einen WLAN-Adapter zu installieren ist möglich, habe ich auch schon gemacht, allerdings keine Langzeiterfahrung damit.
Zur Software: installiert ist das Standard-Raspian Wheezy und die MusicBox-Software, die aus mehreren Teilen besteht: dem Audio-Player Mopidy, dem AirPlay-Receiver Shairport und dem Web-Client für Einrichtung und Fernsteuerung. Anleitungen dafür gibt es einige im Netz, für meine Zwecke habe ich ein Image von der fertigen Installation erstellt, was ich dann auf die SD-Karten der einzelnen Cubes gespielt habe, denn es gibt inzwischen 3 Stück von diesen. Das Tool ApplePi Baker erledigt das sehr schnell und elegant, ebenfalls nützlich ist das Tool SDFormatter, was die SD-Karten entsprechend den Anforderungen für ApplePi Baker formatiert.
IMG_8678
Der Web-Zugriff erfolgt über die Adresse http://musicbox.local, dort werden die Einstellungen für Name, Netzwerk und andere Musik-Einstellungen gemacht. MusicBox als Software ist sehr vielseitig und kann für diverse Zwecke angepasst werden, man kann Radiostationen fest einstellen, eine Spotify-Station definieren und lokale Musik-Files und -Playlists abspielen, sozusagen das Multifunktionswerkzeug für Musik-Raspberrys. Aber wie gesagt, als AirPlay-Receiver soll er nur so rumstehen.