Aufbau eines PacketRadio-Nodes

nach der „Neuerfindung“ eines alten Hobbys will ich nun systematisch an die Beschreibung meiner Station gehen. Zum Ersten benötigt man heut zu Tage einen Internet-Anschluss, aber weiterhin nicht zu verachten ist der Anschluss via Funk (CB-FUNK).

Als Anlauf-Quelle neben vielen anderen Webseiten will ich hier forum.packetradio-salzwedel.de nennen. Fragen sind dort immer willkommen.

Da ich in einer Mietwohnung keine Kabel durch Fenster/Türen legen kann ist der Node zweigeteilt aufgebaut. Die Funkstation auf dem Balkon im wasserdichten Gehäuse und der Node dann im Wohnraum selbst.

Teil 1 – Die Außenstation

Aufgebaut mit Funkgerät, in meinem Fall eine AE4200 von Albrecht mit einem angeschlossenem TNC21S – Symec. Dort wurde ein Eprom mit TF2.7 verbaut und mit einem USB-Seriell-Adapter an einen RasperryPI angeschlossen.

Der RaspberryPi wird mit der Lite-Version nach einschlägigen Beschreibungen installiert und in ein vorhandenes WLAN eingebunden. Dort sollte er eine feste IP zugeordnet bekommen.

user@tncpi:~>sudo apt install ser2net -y

Nach der Installation von ser2net muss noch die entsprechende Konfiguration angepasst werden und sollte wie unten aussehen.

%YAML 1.1
connection: &con_tnc2
       accepter: tcp,8001
       enable: on
       options:
           kickolduser: true
       connector:     serialdev,/dev/ttyUSB0,19200n81,local

Dabei dabei ist mit obiger Konfiguration das Eingangsdevice der USB-Port (/dev/ttyUSB0) und benutzt die Baudrate 19200. Das Ausgangsdevice ist der TCP-Port 8001 der auf Verbindungen wartet.

Teil 2 – Der Node

Nun muss am Noderechner die Umsetzung Netzwerk zu Serial-Device wieder vorgenommen werde. Die wird mit socat erreicht und muss als erstes installiert werden.

user@nodepi:~>sudo apt install socat
socat -d -d pty,link=/dev/ptyCH24,raw,echo=0,waitslave \ 
tcp:192.168.10.6:8001,forever,interval=10 &
#-----------------------------------------------------------------------------
device /dev/ptyCH24
tnn_lockfile /var/lock/LCK..ptyCH24
# 6PACK
kisstype 1
port 2 
#-----------------------------------------------------------------------------

weiter demnächst…….

Teil 3 – Die Software

Teil 4 – Ideen das ganze zu verfeinern

Es ist die Idee den RaspberryPi am TNC durch einen ESP8266/ESP32 zu ersetzen. Dazu gibt es im Github einige Beispiele wie damit eine Serial2WiFi- / Serial2Net-Umsetzung gemacht werden kann.

Neue Hardware für meine Projekte

wie zum Beispiel HomeAssistant. Seit 01/2024 als 2. Gerät mittlerweile auch andere Projekte.

Ich wollte meine „alte“ Hardware etwas auf leistungsfähigeres Niveau heben. Bei den derzeitigen Preisen für leistungsfähigere Raspberry Pi’s bin ich schnell auf die Suche nach Alternativen gegangen. Daher schien mir eine wirkliche Alternative ein Mini-PC zu sein. Man findet diesen beim Lieferanten mit dem großen „A*****“ ebenso wie beim Versteigerungsportal mit „e***“.

Nach einigem Suchen bin ich bei „e***“ auf ein mir günstiges erscheinendes Angebot gestoßen. Deshalb habe ich mir dort einen Lenovo THINKCENTRE M625Q beschafft. Für unter 50€ mit 2x 1.5GHz CPU, 4GB RAM, 32GB M.2 SATA SSD, passiv gekühlt sicherlich eine gute Alternative für einen Raspberry Pi 4/5 zu aktuellen Preisen.

Da mir die verbaute 32GB M.2 SATA SSD etwas zu knapp erschien habe ich mir dazu als Upgrade gleich noch eine entsprechend größere Variante mit 128GB dazu bestellt.

Alles zusammen bin ich immer noch unter dem derzeitigen Preis für einen vergleichbaren RaspberryPi geblieben.

Installation

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.

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/