Kategorie: Tutorial

Logitech G915 mit Linux verwenden (Piper/Ratbag/solaar)

Vor einigen Wochen habe ich mir mal wieder eine neue Tastatur gekauft. Die Beleuchtung und Makros sind unter Linux ja immer so eine Sache – Bei manchen Herstellern funktioniert es problemlos, bei anderen gar nicht und bei wieder anderen funktionieren nur manche Geräte, andere wiederum nicht. Bei der G915 von Logitech ging es allerdings bis auf ein paar Kleinigkeiten recht gut.

Piper/Ratbag – für die Steuerung von Beleuchtung und Makros

Nach etwas Recherche stellte sich heraus, dass man die Tastatur wohl mit der Software „Piper“ ganz gut einstellen kann. Installiert war Piper schnell, danach gab es allerdings schon das erste Problem: Die Tastatur wurde nicht erkannt.

Piper zeigt an, dass kein Gerät gefunden wurde

Nach etwas Suchen im Internet kam ich dann auf die Lösung: Die USB-ID stimmte bei mir nicht mit der überein, die standardmäßig für diese Tastatur im Quellcode von Ratbag* festgelegt ist. Also schnell die ID mit lsusb im Terminal herausgesucht und anschließend die Konfiguration von Ratbag überarbeitet:

Die ID ist hier „046d:c541“. Nun muss in folgender Datei:

die Zeile mit „DeviceMatch=“ folgendermaßen überarbeitet werden:

am Schluss ist die ID, die mit dem vorherigen Befehl ausgelesen wurde. Anschließend dann noch den Service neustarten:

Jetzt wird die Tastatur von Ratbag erkannt:

Makro Einstellungen von Piper

Oben links kann das Profil ausgewählt werden (Umschaltbar durch die Tasten M1-M3 auf der Tastatur).

Im ersten Tab „Tasten“ lassen sich die Makros einstellen. Ich habe meine Tasten G3-G5 auf die Makros „Strg+Shift+Alt+1-3“ gelegt und diese dann anschließend zum Öffnen von verschieden Programmen in den Systemeinstellungen eingestellt. Die Tasten G1 und G2 lassen sich leider nur auf rechte/linke Maustaste stellen. Dieser Bug wird hoffentlich auch bald gefixt – mich stört es aber eigentlich nicht.

LED-Einstellungen von Piper

Unter dem Tab „LEDs“ lässt sich – wer hätte es gedacht – die Beleuchtung einstellen. Für die Tasten und separat das G-Logo lassen sich verschiedene Beleuchtungsmodi einstellen oder auch die Beleuchtung ganz ausschalten.

Zum Schluss nicht vergessen, auf „Zuweisen“ zu klicken. Dann werden die Einstellungen direkt auf der Tastatur gespeichert und Piper wird eigentlich nicht mehr benötigt.

.* Piper ist die grafische Oberfläche für Ratbag

Solaar – Akkustand anzeigen

Der Akkustand der Tastatur lässt sich mit „solaar“ anzeigen.

Solaar war schnell installiert und der Akkustand lässt sich ohne weitere Einstellungen auslesen.

Bei früheren Versionen hatte ich das Problem, dass die Beleuchtung und die Makros der Tastatur sich abgeschaltet haben, sobald solaar gestartet wurde. Dieses Problem ist mittlerweile behoben.

Android Apps mit ADB auf eine SD Karte verschieben

Wer viel Fotos, Videos, Musik und Apps auf seinem Handy hat, dem wird vielleicht schon mal der Speicher vollgelaufen sein. Auf den meisten Androidgeräten kann man diesen aber mit einer SD-Karte einfach erweitern. Dateien lassen sich darauf ohne Probleme speichern, Apps seit Android 6 leider nicht mehr. Über einen Umweg funktioniert das aber.

Mit dem tool adb kann man über USB auf die shell des Mobilgeräts zugreifen. Dazu müssen dort zuerst die Entwicklereinstellungen aktiviert werden

Entwicklereinstellungen aktivieren

In den Einstellungen des Geräts befindet sich ein Punkt „Telefoninfos“, „Über das Telefon“ oder ähnlich. Meist ganz oben oder ganz unten. Darin befindet sich die Buildnummer, wo du nun so oft drauf tippst, bis die Meldung „Du bist jetzt Entwickler“ erscheint.

Das Aktivieren von den Entwicklereinstellungen kann von Gerät zu Gerät unterschiedlich sein. Bei Xiaomi ist es zum Beispiel nicht die Buildnummer, sondern die MIUI Version.

Entwicklereinstellungen unter MIUI aktivieren
Entwicklereinstellungen unter MIUI aktivieren

ADB aktivieren

Nun öffnen wir die Entwicklereinstellungen. Wo sich diese befinden, ist wieder von Gerät zu Gerät unterschiedlich. Hier ein Beispiel für Xiaomi:

ADB unter MIUI aktivieren
ADB unter MIUI aktivieren

In den Entwicklereinstellungen gibt es einen Punkt „USB-Debugging“. Wenn du diesen aktivierst, kannst du nun auf dein Gerät über USB zugreifen.

ADB installieren und Shell öffnen

Auf Debian basierenden Linuxdistributionen geht das beispielsweise mit

Bei anderen Betriebssystemen hilft dir das Internet weiter! -> https://www.xda-developers.com/install-adb-windows-macos-linux/

Nachdem du dein Gerät über USB angeschlossen hast, kannst du jetzt mit

In die Shell des Mobilgeräts wechseln. Es kann sein, dass du den Zugriff noch bestätigen musst.

Paketname einer App herausfinden

Um eine App auf die SD Karte zu verschieben, musst du zuerst den Paketnamen er App herausfinden. Die meisten Apps bestehen aus nur einem Paket, manche aber auch aus mehreren.

1. Möglichkeit: Playstore

Öffne den Playstore, am besten im Browser und klicke die gewünschte App an. In der Adresszeile findest du jetzt den App-Namen. Beispiel:

https://play.google.com/store/apps/details?id=org.mozilla.firefox

Der Paketname ist hier org.mozilla.firefox.

2. Möglichkeit: Suchen

Gib in der Shell des Mobilgeräts pm list packages ein. So werden dir alle installierten Pakete aufgelistet und du kannst nach dem gewünschten suchen.

UUID der SD Karte herausfinden

Bevor wir nun endlich mit dem Verschieben anfangen können, brauchen wir noch die UUID der SD Karte. Gib in der Shell ls /storage ein. Neben „emulated“, was der interne Speicher ist, sollte dir auch noch die SD Karte angezeigt werden. Diese müsste im Format XXXX-XXXX sein.

App auf die SD Karte verschieben

Mit folgendem Befehl lässt sich nun ein Paket verschieben:

Wenn nach etwas Warten die Ausgabe „Success“ kommt, hat es funktioniert. Es ist auch möglich, dass es nicht funktioniert, da dich nicht alle Apps auf die SD-Karte verschieben lassen. Nun solltest du auch testen, ob die App noch funktioniert. Manche Apps lassen sich zwar verschieben, funktionieren dann aber nicht mehr.

Möchtest du eine App wieder zurück auf den internen Speicher verschieben, gibst du beim oberen Befehl statt der UUID „internal“ ein.

Bonus: Bloatware entfernen

Mithilfe von pm lassen sich auch Apps deinstallieren, die man am Gerät selbst nicht deinstallieren kann. Hierzu gibt es den Befehl

Aber Achtung: Man sollte sich vorher gut überlegen, was man löscht. Manche Apps sind wichtig und sollten nicht gelöscht werden.

Lokale Hostnames in Pi-hole korrekt auflösen

Seit einigen Jahren suchte ich schon nach einer Lösung, Hostnames im lokalen Netzwerk mit Pi-Hole korrekt aufzulösen. Nun bin ich selbst auf eine Lösung gekommen.

1. Möglichkeit: Conditional Forwarding

Diese Möglichkeit hatte ich einige Zeit, ich war damit aber nie so wirklich zufrieden, da immer hinter den Hostnames ein .fritz.box ergänzt werden musste, also z.B. raspberrypi.fritz.box.

Bei „Settings“ > „DNS“ > „Advanced settings“ muss man dazu folgende Punkte einstellen:

  • Unter „Never forward non-FQDNs“ und „Never forward reverse lookups for private IP ranges“ keinen Haken setzen.
  • Unter „Use Conditional Forwarding“ einen Haken setzen.
  • Den Bereich des lokalen Netzwerkes eingeben, zum Beispiel 192.168.178.0/24. /24 steht für x.x.x.1 bis x.x.x.255.
  • Die IP Adresse des DHCP Servers, meist der Router, eingeben, z.B. 192.168.178.1.
  • Als Local Domain Name verwende ich fritz.box

2. Möglichkeit: Der Router als einziger DNS Server

Diese Möglichkeit funktionierte bei mir schon besser. Bei „Settings“ > „DNS“ > „Advanced settings“ muss man dazu folgende Punkte einstellen:

  • In dem linken Kasten „Upstream DNS Servers“ alle Haken rausnehmen.
  • Im rechten Kasten „Upstream DNS Servers“ Als Custom 1 und Custom 3 die IP Adressen (IPV4 und IPV6) der Fritzbox bzw. des Routers eintragen.

Nun funktionieren die Hostnames wie gewohnt.

RaspberryPi als Überwachungskamera

Hier möchte ich dir gerne zeigen, wie ich mit einem Raspberry Pi eine Überwachungskamera gebaut habe und wie auch du das machen kannst.

Hardware

Materialliste

Raspberry: Ein Raspberry Pi Zero ist klein, günstig und verbraucht nur wenig Strom. Er ist aber auch in der Leistung stark beschränkt. Bei HD Auflösung (1280×720) hat er bei mir bei Bewegungserkennung und beim Speichern der Bilder ca. 1FPS erreicht. Das reicht mir aus. Wer mehr braucht, sollte lieber zu einem Raspberry Pi 4 greifen.

Netzteil: Ich verwende hier ein Hutschienennetzteil (Für den Pi4 hier). Wer lieber eines mit Stecker (Für den Pi4 hier) mag, kann das auch verwenden.

Kühlung: Da bei einer Videoübertragung und Bewegungserkennung der RPi ganz schön viel zu tun hat, ist eine Kühlung auf jeden Fall sinnvoll. Ich verwende diese Kühlkörper (Für den Pi4 hier). Da auch der USB Stick ziemlich heiß wurde und ich vom RPi Zero noch den kleinen Kühlkörper übrig hatte, habe ich diesen zum Kühlen des USB Sticks genutzt. In eine normale USB-Buchse passt er dann aber nicht mehr.

SD Karte: Ich verwende diese hier. 16 GB sind für das Projekt völlig ausreichend. Theoretisch würden auch weniger reichen, kleinere SD Karten kosten aber fast genau so wenig.

Kameramodul: Hier hat man eine große Auswahl. Ob mit Weitwinkel, Infrarot, gleich beidem, in extrem klein oder in High Quality (nicht für den Pi Zero zu empfehlen). Es gibt aber auch sehr günstige Kameras wie diese hier, die absolut ausreichend sind.

Flachbandkabel: Die meisten Kameras kommen bereits mit einem Kabel. Da Raspberry Pi Zero aber einen kleineren CSI Anschluss hat, braucht man dafür ein Adapterkabel.

USB Stick: Wenn Aufnahmen gespeichert werden sollen, macht man das wegen der begrenzten Haltbarkeit am besten nicht auf der SD Karte. Stattdessen kann man einen USB Stick verwenden oder die Aufnahmen auf einem NAS speichern. Ich verwende diesen Stick.

Adapter für USB-Stick: Da der Raspberry Pi Zero nur einen Micro USB Anschluss hat, braucht man für den USB Stick einen Adapter. Ich verwende diesen hier.

Gehäuse: Hier gibt es auch sehr viel Auswahl. Es gibt das offizielle Raspberry Pi Zero Gehäuse, welches schon eine Aussparung für eine Kamera hat, aber ich verwende gerne Kamera Dummys. Diese sehen dann nicht nur aus wie echte Kameras, sondern lassen sich auch gut einstellen.

Zusammengerechnet komme ich dann nach aktuellem Stand auf ca. 60€.

Zusammenbau

Zum Zusammenbau braucht man nicht viel sagen. Alles kommt in den Stecker, wo es reinpasst ;). Zusammengebaut sieht die Kamera (ohne Gehäuse) so aus:

Einbau in das Gehäuse

Meine Kamera soll in einen Kameradummy. Ich habe diese hier verwendet. Vermutlich sind aber die meisten Kamera Dummys auf eBay sehr ähnlich, wenn nicht sogar gleich. Er lies sich sehr gut zerlegen. Das sieht dann so aus:

Das Schutzglas lässt sich ebenfalls noch ausbauen. So kann man es reinigen. Die Kameralinse und die LED werden nicht benötigt. Zwischen den beiden Hälften des Gehäuses lässt sich sehr gut eine Kunststoffplatte befestigen. Auf dieser habe ich dann den Raspberry festgeschraubt.

Hinter der Platte mit den IR LED Attrappen kann man mit Heißkleber die Kamera befestigen. Das sieht dann so aus:

Jetzt muss nur noch alles wieder zusammengebaut werden. Der Raspberry hängt bei mir in der unteren Kamerahälfte, da es wegen dem Batteriefach oben sehr eng wird.

Von vorne sieht die Kamera dann so aus:

Software

Installation des Images

Als Software für die Überwachungskamera verwende ich Motioneye OS. Das ist eine für verschiedene Einplatinencomputer optimierte Linuxdistribution, mit der man sehr einfach und benutzerfreundlich Überwachungskameras bauen kann.

Nachdem das Image heruntergeladen und mit z. B. dem Raspberry Pi Imager auf die SD Karte gespielt wurde, muss noch das WLAN, falls vorhanden eingestellt werden. Erstelle dazu auf der kleineren der beiden Partitionen auf der SD Karte (boot Partition) eine Datei mit dem Namen „wpa_supplicant.conf“. Diese Datei braucht folgenden Inhalt:

Die SSID und das Passwort müssen natürlich angepasst werden.

Konfiguration von Motioneye

Nach dem Booten und aufrufen der IP im Browser sieht man direkt das Bild der Kamera:

Userinterface Motioneye

Um weitere Einstellungen vorzunehmen, muss man sich aber anmelden. Das geht über den „switch user“ Button oben links. Der Benutzername ist „admin“ und das Passwort muss leer gelassen werden.

Jetzt kann man im seitlichen Menü alle möglichen Einstellungen vornehmen. Diese sind meist selbsterklärend, trotzdem gibt es noch neben jeder Einstellung ein ?, welches die Einstellung noch mal erklärt. Meine Einstellungen sehen so aus:

Wenn man auf den Livestream und anschließend auf das „Foto“ Icon klickt, kann man sich Kameraaufnahmen anschauen:

Picture Browser

SDM630 Modbus Zähler auslesen

In diesem Tutorial zeige ich dir, wie du mit einem RaspberryPi (oder auch jedem anderen Linux Rechner) einen SDM630 Modbus Zähler auslesen kannst. Das Tutorial soll eher eine Grundlage für ein eigenes Projekt sein. Fertige Software gibt es genug, wie zum Beispiel Smartmeter.

Hardware

An der oberen Klappe des Zählers gibt es u.A. die Anschlüsse A+ und B-. Diese werden mit den Klemmen A und B am Adapter verbunden. Ein Abschlusswiderstand von 150 Ohm kommt an die Endes des Bus bzw. an das letzte und erste Gerät. Da ich nur 2 Geräte habe, ist das der Zähler und der USB Adapter.

Am Bus können theoretisch mehrere Zähler parallel angeschlossen werden.

Software

Einstellungen am Zähler

Am Zähler müssen für den Modbus verschiedene Einstellungen vorgenommen werden. Das geht bei meinem Zähler so:

  1. Lange die Taste E drücken
  2. Passwort eingeben (Standard: 1000)
  3. Lange die Taste E drücken
  4. Es erscheint „Set Addr“
  5. Durch langes Drücken der Taste E die Einstellung wählen und mit den Pfeilen die Adresse ändern. Durch langes Drücken der Taste E die Einstellung Verlassen
  6. Mit den Pfeilen die Einstellungen „Set baud“, „Set Pari“ und „Set Stop“ wählen und ebenfalls einstellen

Die Adresse ist dazu das, das Gerät im Bus zu identifizieren. Wenn du nur ein Gerät hast, kannst du die Adresse bei 1 lassen, wenn du mehrere hast, den Geräten entsprechend unterschiedliche Adressen geben.

Die Baudrate ist einfach gesagt die Übertragungsgeschwindigkeit. Bei höherer Baudrate ist aber nur eine kürzere Kabellänge möglich.

Parität benutze ich keine, also „none“

Der Stop-Bit kann auf 1 gelassen werden

Mit Skript Werte auslesen

Neben den Einstellungen die du vorher vorgenommen hast, brauchst du noch einen weiteren Wert: Den USB Port. Durch ausprobieren ist man hier ziemlich erfolgreich. Mit ls /dev/ttyUSB* kannst du dir alle Ports anzeigen lassen. In meinem Fall gab es nur einen einzigen.

Mein Code sieht folgendermaßen aus:

In Zeile 1 wird das Modbus Modul von Python importiert. Dieses musst du vielleicht noch installieren:

In der nächsten Zeile wird das Gerät initialisiert. Hier musst du evtl. noch den USB Port und die Modbus Adresse ändern. Danach gibt es einen sehr langen Part, durch den das Skript später weiß, welcher Wert welche Nummer und welche Einheit hat. Durch das „use“ kann festgelegt werden, ob der Wert verwendet werden soll oder nicht. Dazu einfach den Wert auf True bzw. False setzen. In Zeile 177 befindet sich eine for Schleife, die einmal für jeden Wert ausgeführt wird. Zeile 178 prüft, ob der Wert verwendet werden soll. Alles danach (Einrückungen nicht vergessen) kannst du jetzt frei programmieren. In meinem Beispiel werden alles Daten einfach nur per print ausgegeben. Die Zeile

gibt den Wert zurück (der, bei der die for Schleife gerade ist). Mit

bekommst du die Einheit.

Dieses Codebeispiel schreib zum Beispiel die Daten in eine Influx Datenbank.

Und jetzt viel Spaß beim Programmieren!

Energiezähler

Mit diesem simplen Programm, welches ich programmiert habe, lassen sich Zählerstände von unterschiedlichen Zählern (Stromzähler, Wasserzähler, …) manuell eintragen (später auch automatisch) und analysieren. Als Server dient hier ein Raspberry Pi (theoretisch funktioniert auch jeder andere Linuxserver, aber wenn Sensoren hinzugefügt werden, dann nicht mehr). Es gibt ein Webinterface und eine App. Das Projekt findet man auf Github: https://github.com/jjk4/energiezaehler

Installation

Installation über das Installationsskript

Lade dir das Installationsskript mit wget https://raw.githubusercontent.com/jjk4/energiezaehler/main/install.sh herunter und führe es mit sudo bash install.sh aus. Das Skript fragt dich nun ein paar Dinge, die du beantworten musst:

  1. In welchem Ordner soll sich der Energiezähler befinden? Beispiel: Wenn du /energie eingibst, wird der Energiezähler unter http://IP_DEINES_RPI/energie erreichbar sein
  2. Soll eine lokale oder entfernte Datenbank verwendet werden? Bei der lokalen Datenbank speichert der Energiezähler die Daten direkt auf dem Gerät, auf dem er läuft. Bei einer entfernten Datenbank kann das auch ein anderer Server sein. Dabei musst du aber selbst influxdb installieren und eine Datenbank erstellen
Bei lokaler Datenbank:
  1. Wie soll die Datenbank heißen? Das ist der Name der Datenbank. du brauchst sie nicht zu erstellen. Das passiert automatisch
Bei entfernter Datenbank
  1. Gib die IP oder den Hostname des Servers der Datenbank ein Die IP des Servers
  2. Gib den Port des Servers der Datenbank ein Standard: 8086
  3. Erstelle auf dem Server eine Datenbank und gib den Namen der Datenbank ein Name der Datenbank, die du erstellt hast

Das war’s. Du kannst jetzt den Energiezähler verwenden und einrichten.

Konfiguration

Unter „Einstellungen“ im Webinterface lassen sich verschiedene Einstellungen vornehmen. Die Datenbankeinstellungen hast du schon bei der Installation festgelegt und solltest du nur ändern, wenn man weiß, was man tut. Zähler lassen sich folgendermaßen Konfigurieren: Der technische Name darf nur aus Kleinbuchstaben und Unterstrichen (_) bestehen. Er wird intern als Erkennungsmerkmal verwendet. Der Anzeigename ist die Bezeichnung eines Zählers, die der Nutzer im Webinterface sieht. Die Einheit sollte selbsterklärend sein. zum Beispiel kWh für Strom- oder m³ für Wasserzähler. Die Art kann man bis jetzt noch nicht einstellen. Sie soll später dazu da sein, die Software mit einem Hardwarezähler zu verbinden, um Werte automatisch auszulesen. Wenn du bei Löschen? einen Haken setzt, dann wird der Zähler nach Bestätigen gelöscht. Hierbei werden keine Daten gelöscht. Wenn du einen Zähler mit dem gleichen technischen Namen erstellst, werden wieder die Daten vom gelöschten Zähler verwendet.

Daten importieren von Energiesparkonto

Der Datenimport ist nicht für absolute Anfänger geeignet. Es wird in einer späteren Version noch die Möglichkeit geben, die Daten direkt grafisch per Webinterface zu setzen.

Du kannst Daten von energiesparkonto.de importieren . Dazu muss man sie zuerst dort exportieren. Das geht folgendermaßen: Zunächst geht man auf die entsprechende Seite (Stromseite, Wasserseite, …) und wählt unter „Meinen Verbrauch entragen“ den Punkt „Hier können Sie Daten importieren oder exportieren“

Im darauffolgenden Menü wählt man „Exportieren“, seinen gewünschten Zähler und „Mac/Unix“. Nachdem man auf Ausführen geklickt hat, wird die Datei heruntergeladen, die im nächsten Schritt auf dem Energiezähler hochgeladen wird.

Kopiere die Datei ins Webverzeichnis (/var/www/html/energie). Um die Daten dann in die Datenbank zu schreiben, mit cd /var/www/html/energie ins Verzeichnis wechseln und dann folgendes eingeben:

sudo -u www-data python3 energiesparkonto.py localhost 8086 file.csv zähler

Dabei ist localhost und 8086 der Host/die IP und der Port der Datenbank. Wenn du bei der Installation „lokal“ gewählt hast, ist es wie hier localhost und 8086. Zähler ist der technische Name des Zählers. File.csv ist der Name der Datei. Nach wenigen Sekunden ist der Datenimport fertig. Damit die Daten auch zu 100% korrekt angezeigt werden, muss man evtl. noch auf Zwischenberechnungen warten, die nach jetzigem Stand einmal am Tag um 12 Uhr stattfinden.

Screenshot Galerie

Minetestserver erstellen

Minetest ist eine Game Engine, auf der man Minecraft ähnliche Spiele spielen kann. Das Standard Spiel für Minetest ist das Minetest Game. Minetest kann man auch im Multiplayer spielen. In diesem Tutorial zeige ich dir, wie du dir einen eigenen Server erstellen kannst. Grundlage dafür ist ein auf Debian basierender Linuxserver wie zum Beispiel ein RaspberryPi. Wie man diesen einrichtet, habe ich hier beschrieben.

Installieren

Abhängigkeiten Installieren

Zunächst werden einige Programme installiert, die später für das kompilieren von Minetest nötig sind:

Dies bestätigen wir mit „J“. Nachdem alles installiert wurde, kann Minetest heruntergeladen werden.

Minetest herunterladen

--branch stable-5 bedeutet, dass die aktuelle stabile Version 5.X heruntergeladen wird. Möchte man die aktuelle Entwicklerversion haben, kann man diesen Teil einfach weg lassen.

Sobald auch minetest heruntergeladen wurde, wechseln wir in den Ordner, der gerade erstellt wurde:

und kompilieren minetest:

Minetest kompilieren

-j4 steht für 4 Prozessorkerne, auf denen kompiliert wird. Das dauert nun je nach Art des Servers einige Minuten. Während dem kompilieren kannst du dir schon einmal Gedanken über das Game und Mods, die du gerne auf deinem Server hättest, machen. Diese kannst du auch schon herunterladen und in den Ordner minetest/games/ bzw. minetest/mods verschieben.

Games und Mods installieren

Wenn du das Standard Minetest Game herunterladen möchtest, kannst du das zum Beispiel mit git machen:

für --branch stable-5 gilt wieder das Gleiche, wie bei Minetest selbst. Für das Game MineClone2 sähe die Zeile übrigens so aus:

Wenn du mit git noch nicht vertraut bist, kannst du die Datei meistens auch einfach, sowohl bei Mods als auch bei Games, als zip Datei herunterladen und dann in den mods bzw. games Ordner entpacken.

Minetest sollte nun fertig kompiliert sein.

Der erste Start

den Minetestserver kannst du nun einfach mit

starten. Es wird nun eine Welt erstellt. Mods sind aber noch keine aktiviert, dass sollten wir schnell ändern. Beende den Minetestserver wieder mit Strg+C.

Konfiguration

Die world.mt

In deinem Minetest-Ordner findest du nun ein Ordner mit dem Namen „worlds“, in dem sich ein weiterer Ordner mit dem Namen „world“ befindet. Diesen kannst du auch umbenennen, wenn deine Welt anders heißen soll. In diesem Ordner befindet sich die Datei „world.mt“ hier werde ein paar Konfigurationen eingestellt. Das wichtigste sind, denke ich, die mods. Die Datei kannst du zum Beispiel im Terminal mit dem Editor nano öffnen:

In dieser Datei sollte sich jetzt für jede Mod, die du heruntergeladen hast, eine Zeile befinden, die ungefähr so aussieht:

Diese Liste wird aber immer nur dann aktualisiert, wenn du deinen minetestserver startest. In meinem Fall, habe ich die Mod „ethereal“ installiert. Wenn du die Mod aktivieren möchtest, musst du ganz einfach nur das „false“ durch ein „true“ ersetzen.

Die minetest.conf

Eine weitere wichtige Konfigurationsdatei ist die minetest.conf, die sich nicht im Weltordner, sondern im Hauptordner (der mit worlds, games, mods,…) befindet. Diese muss zuerst erstellt werden, zum Beispiel mit:

In dieser Datei wird so ziemlich alles eingestellt. Viel zu viel, um es in diesem Tutorial zu erklären. Deshalb hier die meiner Meinung nach wichtigsten Einstellungsmöglichkeiten:

Name der
Einstellung
Möglicher WertErklärungBeispiel
name = Text (String)Der Name des Accounts des Adminsname = jjk1
creative_mode = true/false (Boolean)Kreativmodus an/auscreative_mode = false
enable_damage = true/false (Boolean)Schaden an/ausenable_damage = true
enable_pvp =true/false (Boolean)PVP an/ausenable_pvp = false
default_privs =PrivilegienPrivilegien, die ein neuer Spieler bekommen solldefault_privs =shout, interact, home
static_spawnpoint =KoordinatenStelle, an der der Spieler spawnt, wenn er stirbt oder neu auf den Serrver kommtstatic_spawnpoint = 0,11,0
server_announce = truetrue/false (Boolean)Soll der Server in der öffentlichen Serverliste erscheinen?server_announce = true
server_name = Text (String)Name des Serversserver_name = Mein erster super cooler Server
server_description = Text (String)Beschreibung des Serversserver_description = Das ist mein Server. Hier gibt es viele schöne Bauwerke. Admin: jjk1
port =Int (Ganzzahl)Port, auf dem der Server erreichbar sein sollport = 30000
max_users = Int (Ganzzahl)Maximale Anzahl an Spielern, die auf dem Server sein könennmax_users = 20

Das war jetzt nur ein grober Überblick über das, was man alles einstellen kann. Alle weiteren Einstellungsmöglichkeiten von Minetest (Games und Mods bringen oft noch zusätzliche Einstellungen!) findest du in der Datei minetest.conf.example in deinem Minetest Verzeichnis.

Automatisierungen

Minetestserver weiter laufen lassen, aber Terminalfenster schließen

Um mein Terminalfenster auch schließen zu können, ohne, dass der Minetestserver herunterfährt nutze ich screen. Dieses kannst du installieren mit:

du kannst mit screen -S name screens erstellen, diese mit Strg+A und dann D verlassen und sie wieder mit screen -r name betreten.

Minetestserver neustarten, falls er abstürzen sollte

Wenn dein Minetestserver mal abstürzt (was ja hoffentlich nicht zu häufig passiert), dann bleibt er aus. Und zwar so lange, bis du ihn wieder startest. Dabei wäre es doch eigentlich praktisch, wenn er automatisch neu starten würde. Dazu habe ich ein kleines Bash Skript gefunden:

öffnen:

Inhalt einfügen:

Zeile 5 und 6 könnte angepasst werden müssen.
Und noch ausführbar machen:

Wenn du jetzt, anstatt dem Minetestserver dieses Skript startest (./autorestart.sh), dann startet der Server automatisch neu, wenn er crasht.

Minetestserver automatisch beim Systemstart starten

So ein Minetestserver sollte ja eigentlich immer laufen. Also auch, wenn der Server mal neu startet. Dazu wird die Datei

Geöffnet und vor dem exit 0 folgende Zeile eingefügt:

Es wird also ein neuer screen mit dem Namen „minetest“ erstellt, in dem das Skript von vorher gestartet wird. Vielleicht musst du den Pfad noch anpassen.

Jetzt ist dein Server schon fast einsatzbereit. Du musst nur noch deinen Port, den du konfiguriert hast, in deinem Router freigeben (UDP). Ab dem Moment ist dein Server öffentlich und jeder kann ihn betreten, es sei denn, du hast das durch Mods verboten.

Mobile Alerts Sensoren ohne Rest API auslesen

Ich habe einige Mobile Alerts Sensoren im Haus. Diese wollte ich ursprünglich mit dem RaspberryPi über die Mobile Alerts Rest API auslesen. Da dort aber nur bestimmte Sensoren funktionieren (meine leider nicht) habe ich es auf eine etwas andere Art versucht. Diese Variante ist zwar nicht so zuverlässig und auch etwas umständlich, aber sie funktioniert immerhin.

Tipp: Es gibt auch eine andere Methode

Vorbereitungen

Die Sensoren sollten schon mit dem Gateway verbunden und in die Mobile Alerts App integriert sein. In den Einstellungen der App findet man relativ weit unten die Phone ID. Diese wird später noch gebraucht.

Dann besucht man die Seite https://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=XXXXXXXXXXXX

Am Ende muss noch die Phone ID ergänzt werden. Dort sollte man nun alle Sensoren sehen.

Skript erstellen

Jetzt brauchen wir einige Zeilen aus dem Quellcode. So wird auch später das Python Skript, welches die Daten ausliest, funktionieren. Dazu macht man einen Rechtsklick auf die Seite und wählt dann „Seitenquelltext anzeigen“ (Kann je nach Browser variieren).

Hier sehe ich zum Beispiel, dass sich die Temperatur des Badezimmers in Zeile 66 befindet. Die Luftfeuchtigkeit befindet sich in Zeile 70. Und da ist dann auch die Schwachstelle des Skripts. Sollte sich die Temperatur des Badezimmers mal nicht mehr in Zeile 66 befinden, funktioniert das Skript nicht mehr und muss angepasst werden. In der Regel gibt es so eine Änderung aber nur, wenn ein weiterer Sensor hinzugefügt oder entfernt wird.

Das ist auch schon das Skript. Es liest vorerst nur die Daten aus.

Zeile 4: Hier wird der Quelltext der Webseite heruntergeladen. Er wird in /home/pi/sensors.txt gespeichert. (nicht vergessen, die Phone ID zu ersetzen) (Update: Seit 15.4.21 Wird der Download per wget von Mobilealerts blockiert. Die zusätzliche Option „-U firefox“ lässt die Webseite denken, dass es sich um einen firefox browser handelt. Ich hoffe, dass das so weiterhin funktionieren wird.)

Zeile 5 und 6: Hier wird eine Variable auf die entsprechenden Zeilen (66 und 70) gesetzt und dann alles, bis auf die Zahl entfernt. Bei Der Temperatur muss noch das Komma durch einen Punkt ersetzt werden.

Zeile 8 und 9: Hier werden die ausgelesenen Daten ausgegeben. Natürlich kann hier auch etwas ganz anderes stehen. Die Daten könnten zum Beispiel in eine Datenbank geschrieben werden oder anderweitig verarbeitet werden (z.B: Wenn es im Schlafzimmer zu heiß aber draußen kälter ist, soll das Fenster geöffnet werden)

Zeile 10: Der Quelltext wird gelöscht. Er wird ja nicht mehr benötigt.

Ich hoffe, ich konnte dir mit diesem kurzen Tutorial weiterhelfen 😉

Mit Webmin den Server überwachen und steuern

Webmin ist ein Tool, mit dem man einen Linux Server überwachen (CPU Last, RAM Nutzung, etc.) und auch einige Dinge grafisch einstellen (Updates, cronjobs, apache2, mysql, etc.) kann. Weil mit dieser Software sehr viel grafisch geht, ist das Tool gerade für Anfänger in der Linuxserverwelt interessant, die noch nicht mit dem Terminal vertraut sind. In diesem Tutorial möchte ich dir Webmin vorstellen und zeigen, wie du es installieren kannst. Die Grundlage für dieses Tutorial ist ein auf debian basierender Linuxserver wie zum Beispiel ein RaspberryPi.

Achtung: Webmin kann auch einiges an Leistung verbrauchen. Wenn man Leistungsprobleme hat und deshalb das Gerät überwachen will, ist Webmin nicht die richtige Wahl. Dazu würde ich eine Überwachung über telegraf, influxdb und grafana oder einfach im Terminal mit „top“ empfehlen.

Die Installation

Theoretisch könnte man sich auf der Webseite von Webmin eine aktuelle deb Datei herunterladen und diese installieren. Um Webmin einfach aktualisieren zu können (mit sudo apt-get upgrade) verwende ich hier einen anderen Weg:

Als erstes wird in der Datei sudo nano /etc/apt/sources.list folgende Zeile eingetragen:

und der PGP Schlüssel heruntergeladen

und installiert:

Nach einem

Kann jetzt Webmin mit

installiert werden

Verwendung

Ab jetzt ist Webmin unter https://IP_DES_RPI:10000 erreichbar.

Eine Sicherheitswarnung, dass die Webseite nicht sicher wäre kann man wegklicken. Webmin benutzt ein selbst signiertes SSL Zertifikat, welches von den meisten Browsern als unsicher erkannt wird.

Man kann sich jetzt mit einem Benutzer und Passwort anmelden, dass auch auf dem Server existiert und root oder sudo Rechte hat, zum Beispiel als „root“ oder „pi“. Mir persönlich gefällt der „dark mode“ besser, den man über das Mond-Symbol unten Links aktivieren kann.

Hier sieht man jetzt einige Informationen über den Server wie zum Beispiel CPU Auslastung, RAM Auslastung oder den belegten Speicherplatz. Außerdem erhält man vielleicht eine Meldung, dass Update verfügbar sind. Diese kann man direkt über das Webinterface installieren. Links unter „System“ kann man zum Beispiel cronjobs verwalten, Updates machen oder Benutzer und Gruppe verwalten. Unter „Servers“ kann je nach dem, welche Server (Webserver…) installiert sind, diese Konfiguriert werden. In meinem Fall sind das zum Beispiel Apache, MySQL (was eine alternative zu phpmyadmin wäre), Samba und SSH Server. Unter „Tools“ kann man zum sich u.A. ein Terminal anzeigen lassen. Mit Webmin kann man natürlich auch noch deutlich mehr machen, als ich hier aufgelistet habe. Einfach mal im Webinterface stöbern 🙂

Mit Monitor RaspberryPi OS installieren und per SSH verbinden

In diesem Tutorial erkläre ich dir, wie du auf einem Raspberrypi das Betriebssystem „Rasberrypi OS“ (früher auch: Raspbian) installieren und eine ssh Verbindung aufbauen kannst. Das ist Grundlage für die meisten Tutorials im Netz.

Wenn du keinen Monitor hast, schau dir doch mal mein anderes Tutorial dazu an.

Installtion des Betriebssystems:

Zunächst wird der RaspberryPi Imager heruntergeladen und installiert. Diesen gibt es für Windows, Mac und Linux. Nachdem man den Imager gestartet hat (Unter Windows musst du diesen evtl. als Administrator starten), wählt man das gewünschte Betriebssystem (in diesem Fall „RaspberryPi OS (32-Bit)“) und die SD-Karte, auf der man es installieren will.

ACHTUNG! Unbedingt die richtige Karte wählen. Es werden alle Daten auf der Karte gelöscht!
Wenn man sich zu 100% sicher ist, dass man die richtige Karte gewählt hat, und dass auf der Karte keine wichtigen Daten mehr vorhanden sind, drückt man nun auf „Schreiben“. Das Betriebssystem wird dann auf die SD-Karte geschrieben.

Einrichten:

Nachdem der Imager das Betriebssystem installiert hat, geht’s jetzt ans Einrichten. Wenn man den RaspberryPi startet, wird man direkt von einem Einrichtungsfenster begrüßt. Hier muss natürlich jeder selbst entscheiden, wie er was einstellen möchte. Hier sihst du meine Konfiguration:

Über Himbeere -> Einstellungen -> RaspberryPi-Konfiguration können noch weitere Einstellungen, wie z.B. SSH, Kamera, die Auflösung oder das Passwort eingestellt werden.

SSH verbindung aufbauen

Wichtig ist, dass SSH aktiviert ist (siehe oben). Um eine SSH Verbindung aufzubauen wird im Terminal, in der Konsole, wie auch immer man es nennen will (Unter Linux, Mac und ab Windows 10) folgender Befehl eingegeben:

ssh pi@raspberrypi
„raspberrypi“ ist hier der Hostname. Sollte man diesen geändert haben. Muss man ihn hier auch ändern. Alternativ kann man auch die IP Adresse verwenden.
Sollten Fragen kommen, wie

The authenticity of host ‚raspberrypi.fritz.box (2003:e5:e74f:6650:d368:d6t8:271c:c330)‘ can’t be established.
ECDSA key fingerprint is SHA256:5Bc5nLoAhjshu2jjau7JjWSKxSJUl+aYCqvhmNN/o.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

kann man diese mit „yes“ beantworten. Dann noch das Passwort eingeben (standard: „raspberry“) und schon ist man mit dem Pi Verbunden.