Start zur Sommerzeit

Es ist wieder mal Sommerzeit und der Urlaub steht vor der Tür. Endlich mal wieder Zeit Dinge zu tun, die nicht mit dem „MUSS“ anfangen.

Was steht auf dem Plan, auch in dem Wissen das nur ein Bruchteil irgendwie einen Anfang finden wird:

  • DMX-Controller mit TFT-Display
  • neue Vorlage für meine Garten-Controller auf der Basis ESP8266/ESP32
  • passives Display für MQTT-Daten
  • Weiterentwicklung der Umgebung für OTA-Updates
  • TTN-LoRa-WAN mit dem Heltec-Board testen

Allen die ihr Hobby mal „links legen lassen“ wollen und für den Urlaub in die Ferne schweifen, wünsche ich schon mal einen schönen und erholsamen Urlaub.

Nginx und PHP auf dem RaspberryPi installieren

Diese Beschreibung ist von https://pimylifeup.com/raspberry-pi-nginx/ abgeleitet und inspiriert.

Im Verlauf dieser Beschreibung gehe ich von einen laufenden OS auf euerem RaspberryPi aus, eine Beschreibung wie das zu erreichen ist findet ihr sicherlich zahlreich im Netz oder auch hier.

Wie bei allen Anleitungen hilft am meisten der Wille etwas zu lernen.

Bevor man mit der Einrichtung des NGINX-Webservers auf dem RaspberryPi beginnt muss man sicherstellen, dass unser RaspPi auf dem neustem Stand ist. Das erreicht man mit den folgenden Befehlen im Terminal.

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade

Wir sollten auch den folgenden Befehl ausführen, um Apache2 zu deinstallieren, da die Möglichkeit besteht, dass es auf dem System vorinstalliert ist. Andernfalls kann die Installation fehlschlagen, da sie automatisch startet und den Port 80 verwendet . Da wir NGINX als Webserver verwenden möchten, entfernen wir Apache2 aus dem System.

Man kann diesen Schritt überspringen, wenn man sicher ist, dass Apache2 noch nicht auf Ihrem Raspberry Pi installiert ist.

sudo apt remove apache2

Nachdem die Pakete nun auf dem neuesten Stand sind und Apache 2 entfernt wurde, können wir mit der Installation fortfahren. Mit dem folgendem Befehl installieren und starten wir NGINX auf unserem RaspberryPi.

sudo apt install nginx
sudo systemctl start nginx

Nachdem der NGINX-Webserver nun gestartet ist, sollten wir nun die lokale IP-Adresse des RaspberryPi abrufen.

http://deine PI Adresse

Sobald Sie zur Adresse navigieren, sollten Sie etwas wie das Folgende sehen. Machen Sie sich keine Sorgen, wenn hier eine Apache-Seite angezeigt wird, da NGINX manchmal die Apache-Standardindexseite nicht überschreibt.

NGINX für PHP konfigurieren

als nächstes installieren wir einen PHP-Interpreter mit folgendem Befehl.

sudo apt install php-fpm -y

Verknüpfen von NGINX und PHP

Dazu muss man die Konfigurationsdatei für den NGINX-Host (/etc/nginx/sites-enabled/default) öffnen und folgende Zeile suchen

index index.html index.htm index.nginx-debian.html;

und ersetzen durch diese Zeile

index index.html index.htm index.php;

Als nächstes nach dem Konfigurationsblock in der Konfigurationsdatei (wieder hier zu finden /etc/nginx/sites-enabled/default)suchen, der wie folgt beginnt:

location ~ \.php$ {
  ...
}

und folgende Zeilen entkommentieren, damit es so aussieht

location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}

Dadurch wird NGINX an den schnelleren PHP-Interpretor (php-fpm) gebunden, den wir gerade installiert haben.

Testen Sie PHP

Um zu testen, ob PHP funktioniert, legen Sie eine „ index.php “-Datei im Stammverzeichnis Ihres Webservers ab (standardmäßig „ /var/www/html/ “) und starten Sie NGINX mit den folgenden Befehlen neu:

echo "<?php phpinfo(); ?>" > /var/www/html/index.php

sudo /etc/init.d/nginx restart

http://pi1.local/Wenn Sie nun zu (ersetzen Sie „ pi1.local “ durch die IP-Adresse Ihres Raspberry Pi) gehen, sollte eine Seite mit Informationen zu PHP angezeigt werden.

Sensoren Dashboard

Um in meinem Garten, dezentral zur häuslichen Übersicht, einige Sensordaten darstellen und gegebenenfalls auch Steuerungsaufgaben erledigen zu können habe ich mich nach einer geeigneten Lösung umgeschaut.

Der Garten ist zwar via VPN-Verbindung an das heimatliche „Home Assistant“ angebunden, ein separates Dashboard ist aber gewünscht um im Falle einer Verbindungsunterbrechung auch autark agieren zu können.

Die Hardware stand relativ schnell fest da ich neben dem Dashboard auch weitere Funktionen damit erledigen wollte. Dabei hatte ich mich für das Raspi-Ready TFT-Touch-Display und einen entsprechenden Raspberry-Pi entschieden. Mit den ausgewählten Komponenten war auch zugleich das Problem eines entsprechenden Gehäuses gelöst.

Bei der Entscheidung für die zu verwendende Software tat ich mich relativ schwer, da kaum eine IoT-Lösung einen entsprechenden Server inklusive des Dashbords im Kiosk-Mode zu finden war. Letztendlich bin ich nun, durch das Raspi-Flash-Tool darauf aufmerksam gemacht, an der Software von Nymea hängen geblieben. Dort wird neben dem reinen Server auch eine Kombination mit Dashboard-App im Kiosk-Mode auch meiner gewählten Hardware angeboten.

Home Assistant Installation

Am zweckmäßigsten und einfachsten ist eine Installation von Home Assistant auf einem Raspberry Pi. Dieser ist sowohl in der Anschaffung und auch was den Stromverbrauch angeht preiswert und verfügt über ausreichende Leistung.

Leider ist die Beschaffung des ursprünglich preiswerten Single-Board-Computers (SBC) mittlerweile preisintensiv geworden. Man kann nur hoffen das sich die Situation wieder bessert. (März/2023)

Man benötigt:

  • Raspberry Pi 3 (am besten Modell B+ oder höher)
  • Netzteil (mind. 2,5A)
  • Micro SD-Karte, Klasse 10, 32 GB
  • SD-Kartenleser o.ä. Adapter
  • freien Ethernet-Anschluss (alternativ auch WLAN möglich)

Image installieren

Es gibt unterschiedliche Möglichkeiten, Home Assistant zu installieren. Am einfachsten ist es, das hass.io Image zu nutzen. Dabei handelt es sich um eine komplett vorkonfigurierte Installation, die nach dem Einlegen der SD Karte in Raspberry pi selbst startet. Außerdem steht unter hass.io in Home Assistant ein sog. Add-on store zur Verfügung. Dort kannst Du – ähnlich wie im App Store – Erweiterungen einfach installieren.

Software Etcher

Meine Wahl für das schreibe des Images auf die SD-Karte ist die kostenlose Software etcher. Die Software gibt es für MacOS, Windows und Linux unter: https://www.balena.io/etcher/

Nach dem Starten der Software kann man direkt eine URL für das entsprechende Image eingeben und auf das Speichermedium schreiben.

Da ich einen Raspberry 3 mit 32-bit Version verwenden will wähle ich folgende URL. (März/2023)

https://github.com/home-assistant/operating-system/releases/download/9.5/haos_rpi3-9.5.img.xz

weiter demnächst……..

Home Assistant Backup

In den ersten Anfängen mit Home Assistant habe ich munter los „gewerkelt“. Bis ich dann auf der Internet-Suche nach diversen Lösungen auf die Seite von Ingo (https://www.ingos-home-assistant.de/home-assistant-server/ ) gestossen bin, auf der ich einen treffenden Spruch gefunden habe.

Wer auf der Startseite das Bild meines HA Servers betrachtet findet darauf einen Aufkleber, der mal bei der Zeitschrift ct beigelegen hat.

Kein Backup ! Kein Mitleid !

https://www.ingos-home-assistant.de/home-assistant-server/backup/

Hatte es mich doch ebenso schon oft zum neu Installieren der Applikation gezwungen. Daher möchte ich gern hier mit meinen Versuchen zum Backup, was hoffentlich nie gebraucht und trotzdem erfolgreich ist, berichten.

OTA_Server für ESPxxxx-Projekte

Für meiner Bastelprojekte mit den unterschiedlichsten Modulen der Baureihen ESP8266/ESP32 benötigte ich immer öfter einen Server über den ich meine neuen Firmware-Versionen einspielen kann.

Dieser Server soll ohne dynamische IP-Adresse funktionieren und immer erreichbar sein. Dabei bin ich auf die Suche nach Anbietern für virtuelle Server gegangen. Letztendlich bin ich an VPS-Paketen bei Onyxhosting und Ionos hängen geblieben.

Auf Grund der angebotenen Daten und dem dafür angebotenen Preis werde ich mich aber weiterhin auf das Paket von Onyxhosting beziehen.

Im weiteren Verlauf werde ich hier meine Erfahrungen damit und meine gewählten Installationen vorstellen.

Als erstes habe ich auf den gewählten VPS-Server ein Debian-ISO installieren lassen. Nachdem dort der SSH-Zugang eingerichtet und getestet war, musste als erstes ein Update auf die akuellen Pakete erfolgen.

sudo apt update && sudo apt upgrade -y

Im Weiteren hat es sich gezeigt das „apache2“ standartmäßig installiert und damit Port 80 belegt war, was mich im Nachhinein bei meiner angestrebten Installation von Docker und den dann dort verwendeten Containern behinderte. Daher wurde das Paket deinstalliert.

sudo apt remove --purge apache2* -y

In nächsten Schritt möchte ich auf das Installieren von Docker und einigen für mein Projekt notwendigen Containern wie „Portainer“ und „NginxProxyManager“ eingehen.

Hier geht es weiter. —> OTA_Server für ESPxxxx-Projekte – Part 2

ESP32 mit LittleFS

In order to use the LittleFS library that comes with Arduino on the ESP32, use the following function

#include <LittleFS.h>

bool filesystemOK = false;

void InitFilesystem() {
  // Initialize LittleFS
  if (!LittleFS.begin(false /* false: Do not format if mount failed */)) {
    Serial.println("Failed to mount LittleFS");
    if (!LittleFS.begin(true /* true: format */)) {
      Serial.println("Failed to format LittleFS");
    } else {
      Serial.println("LittleFS formatted successfully");
      filesystemOK = true;
    }
  } else { // Initial mount success
    filesystemOK = true;
  }
}

https://techoverflow.net/2022/11/15/how-to-initialize-littlefs-in-arduino-on-the-esp32-platformio/