Samstag, 11. Dezember 2021

FHEM auf neues System umziehen

Eigentlich ist der Weg einfach:

  1. Neues System installieren (Perl Module dokumentiert?)
  2. Altes System beenden und sichern
  3. Restore der Sicherung, Test und Start neues System
Die Downtime beim finalen Umzug soll möglichst gering sein. Punkt 3 kann, vor allem auch zur Übung, mehrfach durchlaufen werden. 

Hinweis: Es gibt zu diesem Thema auch eine aktualisierte Schritt für Schritt Anleitung.

Am Setup eines Raspberry hat sich seit 2019 bei mir nichts geändert. Aber ich habe ein paar neue Ideen getestet. Es ist gut wenn man ein Testsystem oder die neue Hardware bereits zur Vorbereitung hat! 
Will man es auf gleicher Hardware vorbereiten, sollte man sich meinen Artikel BootStick für den RaspberryPi anschauen. 

Dienstag, 30. November 2021

selbstsignierte Zertikate

Will man im eigenen Netzwerk HTTPS/SSL fehlerfrei verwenden, braucht man ein Zertikat was von den Endgeräten akzeptiert wird. Das Ergebnis meiner Experimente mit FHEM habe ich hier mal aufgeschrieben.

Es gibt zwei Ansätze in FHEM:

  1. Im FHEMWEB Device einfach attr <name> HTTPS 1 setzen
  2. FHEM Wiki SSL-Zertikate mit eigener ca erstellen.

Beide Wege führen nur bedingt und bei entsprechender Kenntnis zum Erfolg.

Dienstag, 2. November 2021

USB-C - Power Delivery

USB-C kennt mehrere Modi für die Versorgung/Ladung von angeschlossenen Geräten. Die Geräte können die Ladespannung und damit die mögliche Ladeleistung aushandeln. Für "dumme" Geräte (angeschlossen über einen "Schwindelstecker") gibt es da leider nur 5 Volt. 

Ich hasse es, mehere Ladegeräte mit auf Reisen zu nehmen, ich habe aber eine kleine Bosebox der ersten Generation mit 12 Volt Ladespannung. Einen 5 Volt USB/12 Volt Hohlstecker Transverter hatte ich schon, der wurde immer heiß und ist irgendwann "abgeraucht".

Die Lösung wäre ein gutes USB-C PD Netzteil und ein USB-C "Trigger" sowie 5,5 / 2,1 mm Hohlstecker.  ZY12PDN heißen diese kleinen Platinen, die für ein paar Euro im Internet zu haben sind. Es gibt sie in verschiedenen Ausführungen - auch mit Programmiertaster. Die Funktion war mir nicht klar, eine Beschreibung wurde nicht mitgeliefert - deswegen gibt es diesen Artikel.

Die entscheidende Funktionsbeschreibung habe ich hier gefunden. 

Man kann damit schnell ein Adapterkabel bauen:

  • an den ZY12PDN ein passendes Kabel anlöten.
  • Den Baustein an eine USB-C Schnittstelle stecken und dabei den Taster gedrückt halten. Die LED blinkt hektisch und bunt. Die Fähigkeiten der USB-C Schnittstelle spielen dafür keine Rolle, es genügen einfach 5 Volt.
  • Mit dem Taster die Spannung einstellen (grün = 12 Volt).
  • Taster abschließend solange drücken bis LED aus geht. Damit ist der Baustein programmiert.
  • Farbloser Schrumpfschlauch schützt die Platine und den Kabelanschluss. Der Taster bleibt bedienbar!
  • Keine Gefahr: Kann das PD Netzteil die 12 Volt nicht liefern geht der Adapter in den 5 Volt Zustand.


Es gibt die Bausteine auch mit Lötbrücken Konfiguration: 20/15 oder 12/9 Volt.

Es gibt fertige Kabel - aber eines für 12 Volt mit Hohlstecker habe ich leider nicht gefunden! 

Sonntag, 3. Oktober 2021

OpenWrt mit Scripts konfigurieren

Das neue Release openwrt-21.02. bringt unter Umständen eine neue Herausforderung: Beim Versuch des Updates kommt die Meldung:

Please wipe config during upgrade (force required) or reinstall. Reason: Config cannot be migrated from swconfig to DSA Image check failed.

Die weitere Recherche ergibt: Es gibt keinen wirklichen Upgrade Pfad: Baue das System einfach neu auf. Oh Mist: was hatte ich nochmal alles wie konfiguriert und installiert?

  1. Switch Konfiguration: VLANs für einen LAN und zwei WAN Anschlüsse
  2. Interface definieren: LAN als DHCP Server, WAN als DHCP Client, mehrere Wireless Netzwerke
  3. DHCP Reservierung für die wichtigen Server/Geräte einrichten.
  4. Software installieren, Loadbalancing, Adblocker, Advanced Reboot
  5. Einiges "fein" konfigurieren

Tja und nun? Immer auf Luci und "Keep Configuration" verlassen. Jetzt oder nie: Konfigurationsscripte sind die beste Dokumentation!

Zum Nachlesen: The UCI systemDistributed Switch Architecture

Achtung: Meine Codebeispiele konfigurieren nicht alles. Der Router ist in einem Grundzustand, der kann von Gerät zu Gerät unterschiedlich sein! Eine mehrfache Ausführung der hier gezeigten Scripte kann zu fehlerhaften Konfigurationen führen.

Mittwoch, 30. Juni 2021

Docker - ein kleiner Schnellstart Workshop

Die Docker Dokumentation finde ich so umfangreich, ich weiß nicht wo ich anfangen soll. Deswegen habe ich mal einen kleinen Einstieg mit ein paar nützlichen Kommandos aufgeschrieben. Es ist meine Sicht der Dinge und soll keinesfalls ein: "wie mach ich es richtig" Dokument sein.

Ich habe diesen Workshop auf einem Raspberry Pi 3+ und auf einem Windows PC mit Docker Desktop ausprobiert. Selbstverständlich kann man auch ein vorhandes Linux System oder eine virtuelle Maschine verwenden.

Donnerstag, 24. Juni 2021

Tasmota Firmware selbst gebaut

Es gibt für tasmota  Firmware Images zum download, aber diese enthalten nicht alles was so entwickelt wurde. Ich brauchte eine Firmware für ESP32 mit Ethernet (Olimex) und Wägesensor (HX711). Gibt es jeweils fertig als tasmota-ethernet und tasmota-sensors - ich wollte es doch aber zusammen!? 

Da bleibt nur: tasmota Firmware selbst bauen.

Es gibt eine Online Umgebung um dies zu tun, man braucht nichts zu installieren. Man muss sich dazu auf GitPod anmelden (funktioniert mit dem GitHub Account).

Dienstag, 25. Mai 2021

Linux Image in Hyper-V starten

Bekommt man ein x86-64 Linux Image direkt in Windows Hyper-V aktiviert?  (OpenWrt gibt es als .img.gz zum Download)

Ja das geht: mit einem Tool, und einem Powershell Script. (Quelle)

  1. openwrt.xx.xx.x-x86-64-combined-ext4.img.gz herunterladen.
  2. gzip auspacken
  3. Mit qemu-img das img nach vhdx konvertieren.
  4. Virtuelle Maschine definieren und die vorhandene vhdx Datei einbinden.

Freitag, 21. Mai 2021

OpenWrt Router - mehr als nur ins Internet

 Ich habe seit Jahren einen WRT 1900 ACS und zwei (langsame) DSL Leitungen. Zwei Themen stehen immer im Hinterkopf und ich will mal dazu wieder ein paar Informationen aufschreiben.

  1. Zwei WAN Anschlüsse bündeln und etwas intelligenter verwenden als nur mit ein paar Routing Einträgen.
  2. Jeweils getrennte WLAN und LAN Zugänge für IoT Geräte und für Gäste.
  3. Werbeblocker zentral mit adblock einrichten
Um sich in die Begriffe der Netzwerkthematik ein bisschen einzulesen, kann man die OpenWrt Wiki Hauptseite Firewall and Network Interfaces als Start nutzen.

Sonntag, 2. Mai 2021

Gesundheit für den Saugroboter

Valetudo befreit den Roboter von der China Cloud. Ich wollte das schon lange mal probieren - ein Thread im FHEM Forum hat mich wieder getriggert.

Ich hatte kurz vorher die aktuelle Firmware mit dem mirobo Tool aufgespielt. Dazu habe ich meinen alten Artikel etwas aktualisiert. Das hat problemlos geklappt, leider konnte ich danach nicht noch einmal die gleiche Firmware Version mit integriertem Valetudo RE flashen. 

Offenbar verhindert die neuere Firmware das flashen über mirobo. Nach einem Werksreset kann man ohne Umstände die aktuelle Firmware mit integriertem Valetudo RE flashen. 

Montag, 12. April 2021

Windows To Go

- auch zum mitnehmen 😂 -

Es gab mal eine spezielle Live Version für Windows mit gleicher Bezeichnung, diese Variation wurde aber wieder eingestellt.

mobiles Windows - auf einem Stick

Als Werkzeugkasten - es ist relativ unkompliziert und einfach zu erstellen: Wer sich nicht weiter mit Internas beschäftigen will, nimmt das Tool Rufus, das macht einen guten Job! Es kopiert quasi das Windows ISO Image auf einen USB Stick. Entweder hat man das schon oder es wird vom Tool herunterladen. Die Bedienung ist aus meiner Sicht eindeutig.

Mittwoch, 17. Februar 2021

BootStick für den RaspberryPi

Über USB Boot bei SD Card basierten SBCs hab ich schon mal was geschrieben, ab Version Pi2B v1.2 (Link) kann der Pi ohne SD Card direkt vom USB booten. Dazu muss man u.U. eine einmalige Programmierung vornehmen. Die Hardware und der Pi schon bereit ist, kann man leicht ermitteln:

# Die Hardwareversion ermitteln
cat /sys/firmware/devicetree/base/model
# ermitteln ob das Bit schon gesetzt ist
vcgencmd otp_dump | grep 17:
17:3020000a
#bei ausgabe 17:1020000a programmieren:
sudo cp /boot/config.txt /boot/config.bak
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
# einmal booten wenn erfolgreicher Test config wieder zurück
sudo mv /boot/config.bak /boot/config.txt

Ich hatte die Idee ob man den Pi temporär mit einem Stick booten kann um die SD Card zu sichern oder mit einem neuen Image zu versorgen. Ist vielleicht nur eine Machbarkeitsstudie - ich habe es ausprobiert und auf alle Fälle mal aufgeschrieben. Meine Beschreibung bezieht sich auf ein laufendes System mit RaspiOs lite.

Freitag, 29. Januar 2021

Befehle und Scripts per ssh ausführen

Ich möchte über ssh (mit Powershell oder Perl) auf einem Linux Computer Befehle ausführen und dort Aktionen steuern.

Dazu braucht man ein paar Vorbereitungen, muss ein paar Eigenheiten beachten und ich möchte hier meine Erkenntnisse notieren.

Die ssh Einrichtung für Linux (fhem) habe ich hier schon mal beschrieben. Auf die Übertragung des public Key mit der Powershell gehe ich kurz ein. 

Dienstag, 12. Januar 2021

Container Schiff

Schon oft gelesen und dann immer wieder abgestorben - so lief das Thema Docker für mich bisher. Dabei bin ich ja schon seit der ersten vmware Version ein großer Fan von Virtualisierung!

Aber jetzt - ein kleiner Vortrag über FHEM im Container hat mich bewogen es zu versuchen, wie so oft schreib ich hier mal mit, damit ich später weiß was ich gemacht habe.

Ich habe als Ergebnis des Artikels ein Setup Script auf Github abgelegt. Dieses Script

  • installiert docker und docker-compose
  • bringt den aktuellen user in die Gruppe docker
  • richtet portainer als ersten Container ein
Die Entwicklung von docker und docker-compose schreitet voran, es können sich jeden Tag Änderungen ergeben. So wie heute (18.12.2021) gestern ging die hier beschriebene Installation mit pip noch, heute funktioniert es nicht mehr. Ich versuche den Artikel immer wieder zu aktualisieren.