Posts mit dem Label Raspberry Pi werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Raspberry Pi werden angezeigt. Alle Posts anzeigen

Dienstag, 14. Januar 2025

Raspberry Pi - Coole und sofort "fertige" Projekte für den Pi

Noch eine Raspi in der Schublade? Wenig Zeit und keine Lust Geld für aufwendige Projekte auszugeben? Mit dem Bastelcomputer lässt sich auch ohne ausgeprägten Basteltrieb Spaß haben. Mit den folgenden vier Projekten (fertige Images) könnt ihr sofort loslegen.


Pi-hole - Network-wide Ad Blocking

Siehe Raspberry Pi-hole - Installation.

NextcloudPi

NextcloudPi ist eine Nextcloud-Instanz, die vorinstalliert und vorkonfiguriert ist und eine Verwaltungsschnittstelle mit allen Tools enthält, die man zum Selbsthosten seiner privaten Daten benötigt.

DietPi

Schlankes Raspbian-Derivat für "ältere" Pi's.

Batocera

Batocera ist ein kostenloses Open-Source-System auf Linux-Basis mit einer angepassten Emulation Oberfläche, die besonders durch ihre Benutzerfreundlichkeit besticht. Anders als bei vielen Retro-Gaming-Plattformen müssen die meisten Emulatoren hier nicht manuell konfiguriert werden. Es reicht, die Spiele in die passenden Ordner zu kopieren, und schon kann es losgehen.


Mittwoch, 6. November 2024

Raspberry Pi - WLAN Überwachungskamera mit MotionEyeOS (Zero W)

In diesem Beitrag werde ich auf das MotionEyeOS eingehen, welches eine Linux-Distribution für Einplatinencomputer ist und diese in ein Videoüberwachungssystem verwandelt. 


Der Anwendungsfall ist relativ einfach, die Software soll eine Bewegung vor der Kamera erkennen und diese Bilder auf der SD-Karte speichern und ggf. weitere Aktionen (z.B. E-Mail Benachrichtigung) ausführen.

Folgende Hardware wird benötigt:

Wie genau das Kamera Modul angeschlossen wird, habe ich bereits in dem Beitrag "Raspberry Pi - Camera Modul V2.1" beschrieben.

Hinweis: Am Besten als erstes die SD-Karte mit dem MotionEye Betriebssystem beschreiben, dann muss man später den Pi nicht wieder zerlegen.

MotionEyeOs Image Flashen

1. Neueste Version von MotionEyeOS herunterladen (entsprechend dem verwendeten Raspberry Pi-Modell): https://github.com/ccrisan/motioneyeos/releases

2. Micro SD-Karte in einem Computer einlegen und den Raspberry Pi Imager starten und "Use custom" auswählen


3. Jetzt die zuvor heruntergeladene Motioneyeos-Version (.img.xz Datei) auswählen und flashen (SD Card -> Write). Dies dauert ca. 1-2 Minuten.

Damit anschließend die WLAN-Konfiguration und der SSH-Zugriff funktioniert, bitte die nachfolgenden Beiträge beachten:

 

MotionEyeOS starten und einrichten

Wenn alles funktioniert hat, startet der Raspberry Pi jetzt mit dem installierten MotionEyeOS. Eine direkte Verbindung mit einem Monitor ist nicht unbedingt erforderlich beim ersten Start, ist aber hilfreich um die aktuell zugewiesene IP-Adresse auslesen zu können.

Die nachfolgende Konfiguration kann jetzt über das komfortable Webinterface erfolgen. Hierfür einfach die jetzt zugewiesene IP-Adresse in der Adresszeile des Browser eingeben (192.168.1.100) und als "admin" einloggen.

Benutername: admin
Passwort: <leer>

 

Folgende Einstellungen kann ich für den Raspberry Pi Zero W empfehlen:
  • Zeitzone: General -> Time Zone -> Europe Berlin
  • Feste IP-Adresse: Network -> IP Configuration > Manual Static IP
  • FTP Server deaktivieren: Services -> Enable FTP Server off
  • Kamera Name: Video Device -> Camera Name -> <Name> 
  • Video Auflösung: Video Device -> Video Resolution -> 1024×780
  • Bilder Pro Sekunde: Video Device -> Frame Rate -> 8
  • Aufbewahrungsfrist Bilder: Still Images -> Preserve Pictures -> For One Month
  • (Optional) E-Mail Benachrichtigung: Motion Notifications -> Send An Email (ggf. funktioniert hier nur der SMTP-Port 25)


Zugriff auf die Bilder per Windows Explorer (IP-Adresse des Raspberry Pi) im Windows Explorer eingeben. Zum Beispiel: \\192.168.1.100


Samstag, 19. Oktober 2024

OpenSSH - Authentifizierung mittels Public-Key (Ubuntu, Raspberry Pi)

In diesem Artikel beschreibe ich, wie man den SSH-Zugang z.B. bei einem Raspberry Pi (Raspberry Pi Stretch Lite - Installation incl. SSH Fernsteuerung) für eine Authentifizierung mittels Public-Key-Verfahren konfiguriert. Basisinformationen zum Thema findet ihr in meinem Artikel Asymmetrische Kryptografie - Grundwissen (Zertifikate, OpenSSL, Public-Key-Authentifizierung, RSA).


Auf dem Client muss ein Schlüsselpaar erstellt werden, der öffentliche Schlüssel muss dann  auf den Server übertragen werden. Damit ein Login ohne Passwort möglich ist, muss der Server für die Schlüssel-Authentifizierung eingerichtet werden.

Schlüsselpaar am Client generieren mit ssh-keygen:
ssh-keygen -b 4096

Ich empfehle an dieser Stelle den Standardspeicherort beizubehalten, so kann der SSH-Client den SSH-Schlüssel automatisch bei der Authentifizierung finden.

Die Passphrase ist optional, welche zur Verschlüsselung der privaten Schlüsseldatei verwendet wird. Es wird empfohlen, den Schlüssel mit einer Passphrase zu schützen!

Jetzt muss der öffentliche Schlüssel auf den Server übertragen werden. Dies erfolgt mittels ssh-copy-id:
ssh-copy-id -i .ssh/id_rsa.pub pi@192.168.1.110

Der öffentliche Schlüssel befindet sich jetzt am Server, dies kann man mittels ssh testen:
ssh -i .ssh/id_rsa pi@192.168.1.110

Hinweis: Es wird hier jetzt nach Passphrase gefragt, mit der der Schlüssel geschützt ist!

Um seinen Server gegen Brute-Force-Angriffe zu schützen, sollte man die Passwort-Authentifizierung deaktivieren.

Hierfür muss die sshd-Konfiguration angepasst werden. Danach ist es nicht mehr möglich sich mit einem Passwort anzumelden:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
sudo service ssh restart


Sonntag, 28. Januar 2024

Raspberry Pi - Ermitteln der CPU-Temperatur (vcgencmd)

Die Überwachung der Temperatur des Raspberry Pi kann sehr wichtig sein, wenn man ihn in einem Bereich mit einer geringer Luftzirkulation betreibt.Offiziell ist der Prozessor für  Temperaturen von ca. -40 °C bis 85 °C ausgelegt.

Das Ablesen der Temperatur kann mit dem folgenden Befehl durchgeführt werden:

vcgencmd measure_temp

oder

/opt/vc/bin/vcgencmd measure_temp


Hinweis: Wenn sich die Temperatur des Raspberry Pi der Obergrenze nähert, beginnt das System automatisch, den Prozessor zu drosseln!

Freitag, 5. Januar 2024

Raspberry Pi Pico - WLAN und Webserver Bibliothek "phew"

Der Raspberry Pi Pico W kostet nur ca. 10 Euro und ist somit viel günstiger als der normale Raspberry Pi oder Raspberry Pi Zero. Der Pico arbeitet mit einem RP2040 Mikrocontroller (ARM Cortex M0+ mit bis zu 133 MHz Taktfrequenz als CPU, 264 kByte RAM und 2 MByte Flash-Speicher).

In diesem Beitrag werde ich zeigen, wie man einen WLAN-Hotspot einrichtet und per Webserver eine Webseite bzw. eine Hotspot Anmeldewebseite (Captive Portal) ausliefert. Diese kann nun zum Identitätsdiebstahl dienen.


MicroPython installieren

MicroPython steht auf der folgenden Webseite https://micropython.org/download/RPI_PICO_W/ zum Download bereit.

Nach dem Download muss die UF2-Datei auf den Pico geladen werden. Hierfür muss die Boot-Selektor-Taste (BootSEL) gedrückt gehalten werden und der Pico per USB-Kabel mit dem Rechner verbunden werden.
Die Taste BootSEL kann jetzt losgelassen werden, der Pico wird jetzt als Massenspeicher RPI-RP2 erkannt und die Firmwaredatei kann kopiert werden.

Nach dem kopieren der Firmware-Datei, wird diese sofort installiert und es wird ein Reset durchgeführt (der Massenspeicher wird nicht mehr angezeigt).

Die Programmierung kann anschließend mit der Entwicklungsumgebung Thonny erfolgen.

Unter Linux (in meinem Fall das Steam Deck) ist folgendes zu beachten:
(deck@steamdeck Tools)$ ls -l /dev/ttyACM1
crw-rw---- 1 root uucp 166, 1 Jan  2 20:08 /dev/ttyACM1
(deck@steamdeck Tools)$ sudo usermod -a -G uucp deck


Siehe auch https://support.arduino.cc/hc/en-us/articles/360016495679-Fix-port-access-on-Linux.

"phew" Bibliothek (WLAN- und Webserver) installieren

Das aktuelle Release von "phew" unter https://github.com/pimoroni/phew/releases herunterladen und mit Hilfe von Thonny auf den Pico übertragen.


Jetzt lässt sich "phew" wie jede andere Bibliothek einbinden.

Hotspot-Popup (Captive-Portal) programmieren

Wir beginnen mit der main.py . Hier gibt es Abschnitte mit den Kommentaren „#Android Redirects“, „#Apple Redir“ und „#Microsoft Windows Redirects“. In diesen Abschnitten werden die jeweiligen Tests behandelt, die jedes Betriebssystem ausführt um auf ein Captive Portal zu reagieren.

#!/usr/bin/python
# coding=utf-8
# Captive Portal with a Raspberry Pi Pico W
# (c) Sebastian Hemel, www.shemel.de
# Based on picockpit.com/raspberry-pi/raspberry-pi-pico-w-captive-portal-hotspot-access-point-pop-up/
#-----------------------------------------------------------------------------------

from phew import access_point, logging, server, dns
from phew.template import render_template
from os import stat

# This is the address that is shown on the Captive Portal
DOMAIN = "fritz.box" #pico.wireless
# Change this to whatever Wifi SSID you wish
SSID = "Gast-WLAN" #Pico W Captive
HTDOCS = "htdocs"

#How to trigger the pop-up
@server.route("/hotspot-detect.html", methods=["GET"])     # apple redir
@server.route("/generate_204", methods=["GET"])            # android redirects
@server.route("/redirect", methods=["GET"])
def hotspot(request):
    logging.info("redirecting hotspot request " + request.path)
    return server.redirect(f"http://{DOMAIN}/", 302)

@server.route("/ncsi.txt", methods=["GET"])                # microsoft windows redirects
@server.route("/connecttest.txt", methods=["GET"])
def hotspot(request):
    return "", 200

@server.route("/", methods=['GET'])
def index(request):
    logging.info("route/ retrieving index.html")
    logging.info("Got data: " + request.query_string)
    return render_template(HTDOCS + "/index.html")

@server.route("route/data.html", methods=["GET"])
def hotspot(request):
    logging.info("/data.html retrieving index.html")
    logging.info("Got data: " + request.query_string)
    return render_template(HTDOCS + "/index.html")

@server.route("/log.txt", methods=["GET"])
def hotspot(request):
    return render_template("log.txt")

@server.catchall()
def catch_all(request):
    try:
        print("***************CATCHALL***********************\n" + str(request))
        stat(HTDOCS + request.path)
        return render_template(HTDOCS + request.path)
    except OSError:
        return "Not found:" + request.path, 404

# Set to Accesspoint mode
ap = access_point(SSID)
ip = ap.ifconfig()[0]
# Grab the IP address and store it
logging.info(f"starting DNS server on {ip}")
# Catch all (DNS server) requests and reroute them
dns.run_catchall(ip)
# Run the server
server.run()
logging.info("Webserver Started")


Im nächsten Schritt benötigen wir eine index.html , hierbei handelt es sich um eine einfache "Proof-of-Concept-Datei". Diese gibt sich als "Captive Portal" aus und fordert den User auf seine Zugangsdaten einzugeben.

     

<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Pico W Captive Portal</title>
      </head>
      <body>
        <h1>Willkommen beim Captive Portal</h1>
     
        <h2>Login</h2>
           <form id="login-form">
              <p>
            <input type="text" name="username" id="username-field" class="login-form-field" placeholder="Benutzername">
            </p>
              <p>
            <input type="password" name="password" id="password-field" class="login-form-field" placeholder="Passwort">
            </p>
            <input type="submit" value="Absenden" id="login-form-submit" onclick="validate()">
        </form>
       
<script>
    function validate(){
        var username = document.getElementById("username-field").value;
        var password = document.getElementById("password-field").value;
        if (username && password){
            alert ("Login erfolgreich!");
            window.location = "index.html?username="+username+"&password="+password; // Redirecting to other page.
            return false;
        }
        else{
            alert("Bitte geben Sie Ihre Zugangsdaten ein!");
            return false;
        }
    }   
</script>
       
    </body>
</html>

Diese werden durch das Python Script jedoch in eine log.txt gespeichert ;-) .

Hinweis: Bitte beachtet hier den § 202c Vorbereiten des Ausspähens und Abfangens von Daten!

Mittwoch, 13. September 2023

Raspberry Pi-hole - Spezialisierte Blacklist für SmartTVs

Nutzt man zu Hause die Funktionen seines SmartTVs, ist es sinnvoll für den PiHole spezialisierte Blacklists zu verwenden.

Eine öffentliche Sammlung von Domains gibt es zum Beispiel hier:

 

Sonntag, 20. August 2023

Raspberry Pi-hole - Android ignoriert PiHole DNS

Ich hatte bei meinem Google Pixel Android Smartphone das Problem, dass die DNS-Einstellungen einer (per DHCP zugewiesen) mein PiHole umgangen wurde "Android sometimes bypassing the PiHole".


Dies kann folgende Ursachen haben:

  • Android 9 und höher verfügt über eine private DNS-Option, die Google DNS im automatischen Modus verwendet. "Private DNS" sollte "deaktiviert sein". Überprüft daher dies unter Einstellungen/Netzwerk und Internet/Privates DNS.
  • Durch das Anbieten eines anderen DNS-Server (z.B. FritzBox 2. DNS Eintrag). Pi-hole sollte der einzige für Clients verfügbare DNS-Server sein.
  • Android werwendet IPv6, "IPv6 deaktivieren", um zu überprüfen, ob das die Ursache ist? => Dies war auch genau mein Problem. Ich habe auf meiner FritzBox im Heimnetzwerk IPv6 komplett deaktiviert.

  • Android verwendet heimlich 8.8.8.8 (Google DNS) als sekundären DNS.


Donnerstag, 18. Mai 2023

Linux - Terminal ist eingefroren (Strg-S)

Kurzer aber nützlicher Tipp, falls auch euch das Terminal einfriert.

Führt man stty -ixon aus, wird verhindert, dass "Strg-S" das Terminal anhält bzw. pausiert. Diesen Befehl am Besten in der Konfigurationsdatei des Terminals (~/.bashrc) eintragen.

# enable the freeze/unfreeze behavior CTRL-S and CTRL-C
stty -ixon

Hintergrund: ixon und ixoff werden verwendet, um darauf zu bestehen, dass "Strg-S" und "Strg-Q" als Kontrollflusssignale (Bildlaufsperre) interpretiert werden. 

Weitere Infos zu stty finden sich hier https://tldp.org/HOWTO/Serial-HOWTO-11.html#ss11.4.


Sonntag, 23. Oktober 2022

Raspberry Pi-hole - Lokale Namen auflösen (Conditional Forwarding)

Möchte man in seinem lokalen Netz den eigenen Server oder auch die AVM FRITZ!Box unter dem eigen Namen erreichen, klappt dies nach der Raspberry Pi-hole - Installation nicht mehr. Es wird nämlich die lokale Namensauflösung übergangen. Dies lässt sich aber mit Hilfe von Conditional Forwarding wieder konfigurieren.

Mit Hilfe von Conditional Forwarding kann man den Filter auffordern, lokale Adressen nicht beim Upstream-DNS-Server zu erfragen.

Hierfür unter "Settings" => "DNS" => "Conditional Forwarding" den folgenden Eintrag (z.B. für eine fritz.box) eintragen:



Mittwoch, 17. November 2021

Raspberry Pi - Shinobi Netzwerkvideorekorder (NVR)

Die Installation und Konfiguration eines NVR (Network Video Recorder) auf einem Raspberry Pi ist mit Hilfe von Shinobi möglich. Die Steuerung und Verwaltung der Kameras erfolgt dabei ganz einfach über ein Webinterface.

Als erstes muss das Raspberry Pi OS incl. SSH-Zugriff installiert werden, siehe hierzu auch Raspberry Pi Stretch Lite - Installation incl. SSH Fernsteuerung.

Shinobi installieren

  1. Notwendige Software installieren (wenn noch nicht vorhanden)
    • sudo apt-get update 
    • sudo apt-get install curl nano -y
  2. Ninja Installer ausführen
    • sudo su
    • bash <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
  3. Ubuntu Touchless auswählen. 
    •  

Nach der Installation läuft Shinobi standardmäßig auf Port 8080.

Über den Webbrowser, sollte man jetzt durch aufrufen von http://RPI_IP_ADDRESSE:8080/super , ein  Admin-Konto erstellen:
  • Standard-Superuser: admin@shinobi.video
  • Standard-Superuser-Passwort: admin

Nachdem erstellen des Konto kann man aich auf der folgenden Seite einloggen: http://RPI_IP_ADDRESSE:8080/.

Hinweis: Weitere Installationsanleitungen finden such auch hier https://shinobi.video/docs/start.

Als gute Netzwerk Überwachungskamera empfiehlt such zum Beispiel die INKOVIDEO V-110-8MW.

Eine gute Anleitung für die Objekterkennung (Motion Detection) findet sich in der offiziellen Dokumentation https://shinobi.video/docs/configure#content-setting-up-motion-detection.

Mittwoch, 23. Juni 2021

Raspberry Pi - VNC Fernwartung: Fehler - Der Desktop kann derzeit nicht angezeigt werden

In dem Beitrag Raspberry Pi - VNC Fernwartung / Zugriff ohne Bildschirm bin ich auf die Aktivierung von VNC eingegangen. Unter Umständen kann es beim Raspberry Pi ohne angeschlossenes HDMI Kabel zu der oben genannten Fehlermeldung kommen.

Wird bei Verwendung von VNC die Meldung "Der Desktop kann derzeit nicht angezeigt werden" bzw. "Cannot currently show the desktop" angezeigt, muss die Auflösung der Standardeinstellung geändert werden.


Wenn kein HDMI-Monitor angeschlossen ist, muss in der config.txt eine Bildschirmauflösung angeben werden. Hierfür kann man sich z.B. per SSH mit dem Pi verbinden und die Konfiguration per Konsole anpassen.

sudo raspi-config

==> 2 Display Options     Configure display settings


==> D1 Resolution         Set a specific screen resolution

==> <Finish>

==> Reboot

Nach ca. 20 sec sollte dann eine Verbindung per VNC wieder möglich sein!

Raspberry Pi - Wärmebildkamera AMG8833 thermal infrared camera

Für dieses Projekt setze ich den neuen Raspberry Pi 4 ein. Hierfür werden die Daten vom AMG8833 Wärmebildkamerasensor gelesen und in Temperaturmesswerte umgewandelt, damit basierend auf den Messwerten Live-Wärmebilder angeizeigt werden können.

Der AMG8833 ist ein 64-Pixel-Temperatursensor (8x8-Array), der von Panasonic entwickelt wurde. Er kommuniziert über den I2C-Bus (Raspberry Pi - OLED Display (SSD1306) I2C ansteuern und Temperatur auslesen), wodurch er direkt mit Raspberry Pi und Arduino kompatibel ist.
Der AMG8833 bietet sich daher für Anwendungen in der Wärmebildgebung, Wärmeübertragungsanalysen, der Überwachung der menschlichen Temperatur, des Heizungs- und Klimamanagements, der industriellen Steuerung und anderer Anwendungen bei der berührungslosen Temperaturmessung an.


In diesem Beitrag wird der AMG8833 mit einem Raspberry Pi 4 verbunden (I2C-Bus), um die Temperaturen von Objekten über berührungslose Strahlungsmessung darzustellen. Benötigt wird folgendes:

Folgender Aufbau ergibt sich inklusive Verwendung des AMG8833, siehe auch folgende Grafik inkl. der korrekten Zuordnung für die Verkabelung (I2C-Adresse des AMG8833 auf 0x69):


Der Sensor wird zur Spannungsversorgung an 5 Volt (Pin 2) und Ground (ein GND z.B. Pin 6, 9, 14 usw.) und an die I2C Schnittstelle des Raspberry Pi angeschlossen. Für I2C muss man Pin 3 (SDA) und 5 (SCL) verwenden.

I2C Kommunikation mit dem AMG8833

I2C Schnittstelle im Raspbian Betriebssystem einschalten (per GUI)

 


 

I2C Schnittstelle im Raspbian Betriebssystem einschalten (per Konsole)

sudo nano /etc/modules

Und die folgenden 2 Zeilen hinzufügen:


i2c-bcm2708
i2c-dev


Jetzt muss noch die Konfigurationsdatei angepasst werden:
sudo nano /boot/config.txt

dtparam=i2c_arm=on #entfernen
dtparam=i2s=on     #entfernen

Jetzt muss noch ein reboot erfolgen, damit die Einstellungen übernommen werden:
sudo reboot

I2C Verbindung testen

Damit man jetzt die Verbindung testen kann, sollte noch das folgemde Packet installiert werden:
sudo apt-get install i2c-tools

Mit dem folgenden Befehl kann überprüft werden, ob die Verbindung zum Display funktioniert bzw. verbunden ist:
i2cdetect -y 1


Hinweis: Mit dem Befehl i2dect werden alle 256 Adressen abgefragt: Antwortet ein Chip, sieht man seine Adresse auf dem Raster.

Um mit Python per I2C auf den Sensor zugreifen zu können, benötigt man zusätzlich die smbus-Bibliothek, die in Raspbian Linux enthalten ist.

sudo apt-get install -y python-smbus

Mögliche Projekte

Python Thermal Camera with Raspberry Pi (AMG8833) - Python Thermal Camera with Raspberry Pi (AMG8833)

Build a thermal camera with Raspberry Pi and Go

Adafruit AMG8833 8x8 Thermal Camera Sensor - Build your own mini thermal camera

1979 Apollo Pi Thermal Camera - A vintage microwave monitor converted into a thermal camera! Raspberry Pi powered, with Adafruit components.

Freitag, 18. Juni 2021

Raspberry Pi-hole - Backup configuration (settings & lists)

In dem Artikel Raspberry Pi-hole - Installation habe ich beschrieben, wie die Installation auf einem Raspberry Pi durchgeführt werden muss. Ich möchte daher kurz das Sichern der Pi-Hole-Konfiguration (Einstellungen & Listen) eingehen.

Ein Pi-hole Backup erstellt man unter dem Menüpunkt:

  • Settings / Teleporter / Backup

Anschließend kann man auf dem neuen Pi wieder ein Restore durchführen.

Dienstag, 1. Juni 2021

ImageMagick - Wasserzeichen (watermark) einem Bild hinzufügen

In dem Artikel Raspberry Pi - Camera Modul V2.1 bin ich bereits kurz auf ImageMagick eingegangen, um das Bild meiner Webcam anzupassen. Mittlerweile nutzen viele Dienste ungefragt meine Webcam Bilder und schneiden sogar den Copyright Hinweis einfach ab (siehe z.B. https://www.outdooractive.com/de/webcam/obergeis-webcam-neuenstein/55939506/). Daher habe ich mich entschieden in jedes Bild ein größeres Wasserzeichen einzubauen und das Vorgehen hier zu beschreiben.


Damit man ein Wasserzeichen in sein Bild einbauen kann, wird natürlich ein passendes Logo benötigt.
Ich nehme dafür das bereits vorhandene Logo meiner Android App und setze es oben rechts (northeast) in die Ecke.

Dafür ist der folgende Befehl notwendig:

convert cam.jpg ic_launcher_192x192.png -gravity northeast -geometry +10+10 -composite cam-watermark.jpg

Was genau bedeuten die beiden Befehle?

  • convert - liest Bilder, bearbeitet sie und speichert sie ab
  • geometry +10+10 - um das Wasserzeichen 10 Pixel von der ausgewählten Ecke nach innen zu verschieben
  • composite - überlagert mehrere Bilder zu einem Bild


Samstag, 22. Mai 2021

Raspberry Pi - Vorkonfiguration (WLAN, SSH, hostname, locale) vor dem ersten Start mit Raspberry Pi Imager

Wie man einen Raspberry Pi installiert und initial einrichtet, habe ich bereits in den Artiklen Raspberry Pi Stretch Lite - Installation incl. SSH Fernsteuerung, Raspberry Pi Stretch - WLAN vor dem ersten Start konfigurieren und Raspberry Pi - statische IP bzw. initiale IP-Adresse vergeben (cmdline-txt) beschrieben. Ich gehe kurz auf den "Raspberry Pi Imager" ein, welcher dies jetzt direkt unterstützt.

Mittlerweile bietet das offizielle Image-Tool „Raspberry Pi Imager“ die Möglichkeit zu den o.g. Konfigurationen an und schreibt diese direkt auf die SD-Karte, anschließend kann das erste Booten vom Raspi direkt mit den gewünschten Einstellungen erfolgen. So lässt sich mittlerweile sehr viel Zeit bei der Ersteinrichtung sparen!

Update 07.04.2024: Auch beim Steam Deck kann der Imager verwendet werden. Siehe https://flathub.org/apps/org.raspberrypi.rpi-imager.


Das Raspberry Pi Imager Tool beschreibt die SD-Karte mit dem Betriebssystem und so wird beim ersten Start direkt eine Verbindung zum WLAN aufgebaut, SSH ist aktiv und man den Pi direkt per Konsole ansprechen. Desweiteren ist die Tastaturbelegung korrekt hinterlegt und auch das bekannte und unsichere Passwort „raspberry“ ist geändert. 

Download von Version 1.6.1 => https://github.com/raspberrypi/rpi-imager/releases/tag/1.6.1

Zusätzlich zum Betriebssystem „Raspberry Pi OS“ bietet Imager weitere Images an. Zum Beispiel die Lite-Variante (keine grafische Oberfläche) oder auch RetroPie (Retro-Spielekonsolen Emulatoren).

Sonntag, 18. April 2021

Raspberry Pi - VNC Fernwartung / Zugriff ohne Bildschirm

Wie man den "Fernzugriff per ssh aktiviert" habe ich bereits beschrieben. Die Fernwartung per Desktop ist mit Hilfe von einem installierten Raspberry Pi OS (Raspbian) relativ einfach zu aktivieren.


Update Juni 2021: Raspberry Pi - VNC Fernwartung: Fehler - Der Desktop kann derzeit nicht angezeigt werden

Nach dem ich mir vor kurzem den Raspberry Pi 4 Modell B bestellt hatte, möchte ich diesen im Desktop Modus betreiben (Raspberry Pi OS with desktop). Natürlich möchte diesen nicht direkt an einen Monitor anschließen, sonder nur per Fernzugriff (VNC).

VNC lässt sich über das Konfigurations-Tool in den Einstellungen aktivieren. Dies geht durch klick auf "Menü => Einstellungen => Raspberry-Pi-Konfiguration" und dann über den Reiter "Schnittstellen" einstellen. Der VNC Server steht sofort zur Verfügung.


Hinweis: Auch per SSH (sudo raspi-config) lässt sich unter "Interfacing Options" => "VNC" die Einstellung vornehmen. Wichtig, eine Bedienung per VNC ist nur per Desktop Boot möglich und nicht per Kommandozeile!

Am einfachsten ist der Zugrigg per RealVNC Client möglich, Download unter https://www.realvnc.com/de/connect/download/viewer/ .

Nach der Installation kann man nun direkt per IP-Adresse des Raspberry Pis eine Verbindung herstellen.


Nützlich ist in diesem Fall eine feste bzw statische IP-Adresse, siehe dazu https://sebastianhemel.blogspot.com/2017/01/raspberry-pi-wlan-konfiguration-inkl.html .

Freitag, 9. April 2021

Raspberry Pi - Verwendung von Docker Compose (Beispiel OpenAPI-Generator c't 25/2020)

In diesem Beitrag zeige ich auf Basis des Artikels c't 25/2020 S. 160 OpenAPI-Generator, wie man Docker Compose verwendet. Die Installation wurde bereits in dem Artikel Raspberry Pi - Docker Compose installieren beschrieben.

Docker Compose ermöglicht mehrere Container mit einzelnen Anwendungen oder Komponenten zu starten oder um Container automatisch zu verknüpfen und Volumes einzurichten.

Die Verwendung von Docker Compose benötigt die folgenden Schritte

  1. Erstellen eines Verzeichnis für die Installationsdateien.
    • mkdir rest-api-demo
  2. In diesem Verzeichnis muss jetzt die YAML-Datei docker-compose.yml abgelegt/erstellt werden.
    • Images mit dem Apache Webserver und PHP-Compiler:
      version: "3"
      services:
        server:
          image: "jorgenjo/rpi-apache-php" #php:apache
          volumes:
            - ./server:/var/www/html
          ports:
            - 8001:80
        client:
          image: "jorgenjo/rpi-apache-php" #php:apache
          volumes:
            - ./client:/var/www/html
          ports:
            - 8000:80
          depends_on:
            - server
  3. Im selben Verzeichnis, den/die Container zu starten.
    • ~/rest-api-demo $ sudo docker-compose up -d

    • Hinweis: Docker-Compose wird im Hintergrund (-d) ausgeführ

Test der Umgebung (Server und Client)

In beiden Verzeichnissen (Server/Client) jeweils eine index.php Datei erstellen und anschließend aufrufen.

Server: index.php
<?php echo "Test"; ?>

Client: index.php
<?php echo file_get_content("http://server"); ?>


Die Basis ist jetzt geschafft, weiter geht es jetzt mit der Anleitung unter https://github.com/manuelottlik/ct-oas-praxis/.

Nützliche Docker Compose Befehle

Erstellte Container abzeigen:
sudo docker-compose ps

Container einer Anwendungsgruppe stoppen:
sudo docker-compose stop 

Containe entfernen (sofern gestoppt):
sudo docker-compose rm 

Alle Container in einer Anwendungsgruppe stoppen und gleichzeitig entfernen:
sudo docker-compose down

Alle Data-Volumes entfernen (-v):
sudo docker-compose down -v

Donnerstag, 8. April 2021

Raspberry Pi - SD Card Speed Test

Wie schnell ist meine SD-Karte? Die Raspberry Pi Foundation hat für diese Frage ein Diagnose-Tool für Speed Tests veröffentlicht. Das kostenlose Tool nennt sich "SD Card Speed Test" und misst die Schreib- und Lesegeschwindigkeit der verbauten Karte.


Installation erfolgt über das Terminal-Fenster mit dem folgenden Befehl:

sudo apt update
sudo apt install agnostics


Siehe auch weitere Details im Raspberry Pi Blog:


Als SD-Karte kann ich persönlich die PNY PRO Elite 64GB microSDHC-Speicherkarte empfehlen.

Sonntag, 4. April 2021

Raspberry Pi - GPIO-Pin Belegung und Schaltungen (Fritzing)

In dem Beitrag "Raspberry Pi - Temperatursensor DS18B20" verweise ich auf die Raspberry Pi GPIO Anschlussbelegung. Die Pinleiste inkl. der Funktionen wird auf der folgenden Seite Raspberry Pi Pinout bis ins kleinste Detail beschrieben.


GPIO-Belegungsplan und Schaltungen (Fritzing)

Die Funktionen der 40 GPIO-Pins sind oft nur mühsam zu ermitteln. Einen ausführlichen Belegungsplan findet man auf https://de.pinout.xyz.

Nützlich ist auch die Software Fritzing. Mit ihr ist es möglich, elektronische Schaltungen am Computer zu entwerfen oder seine Projekte zu dokumentieren. Siehe fritzing.org.

Raspberry Pi - TV HAT

Das eigene Raspberry Mediacenter lässt sich mittlerweile um einen Raspberry Pi TV HAT (ca. 10 Euro) um z.B. die öffentlich-rechtlichen TV-Programme zu empfangen, erweitern. 

Ausführliche Informationen zur Konfiguration finden sich in dem folgenden Blog: 

Offizielle Mitteilung im Raspberry Pi Blog: