Archiv der Kategorie: PC-Kram

Meine Lieblingsbeschäftigung :)

BitBastelei #341 – iPad-Akkutausch

BitBastelei #341 - iPad-Akkutausch

(447 MB) 00:25:02

2019-07-14 10:00 🛈

Das ich von Apple nicht viel halte ist kein Geheimnis, vor Allem da die Geräte dazu neigen sich selbst zu zerstören. Im aktuellen Fall hat es ein iPad erwischt. Diese sind nur bis 35°C zugelassen, bei den zuletzt herrschenden Temperaturen wäre also eher der Kühlschrank der korrekte Ort für das Gerät gewesen. Leider lag das heutige Modell stattdessen auf dem Schreibtisch und hat die Sommerhitze mit einem kaputten Akku quittiert. Nicht gerade ungewöhnlich. Nun hab ich also die Auswahl zwischen Apple-Reparatur oder Gequengel in den Ohren. Also lege ich dann doch mal Hand an und mache das, was laut Apple ja gar nicht möglich ist: Mit mäßiger Motivation den Akku tauschen.

Links zum Thema

BitBastelei #340 – Bluetooth-Android-Apps für ESP32

BitBastelei #340 - Bluetooth-Android-Apps für ESP32

(183 MB) 00:31:50

2019-07-07 10:00 🛈

ESPs und Arduino habe ich ja schon oft gezeigt, was aber, wenn man diese mit einem Handy verbinden will? Dann spielt der ESP32 seine Bonuspunkte aus: Dieser unterstützt neben WLAN auch Bluetooth und kann so direkt und ohne Router mit einem Handy kommunizieren. Mittels des App Inventor kann man die zugehörige App für Android schnell und einfach zusammenklicken.

Links

Nginx: allow mit dynamic DNS

Wenn man Webseiten mit Backend betreibt ist es oft eine gute Idee die Verwaltungsbereiche nur von bestimmten IPs oder Netzen zuzulassen. Unter nginx gibt es hierzu den allow-Befehl, mit welchem man IPs und Netze angeben kann. Ich verwende dies z.B. häufig um nur interne IP-Bereiche oder per VPN angebundene Clients zuzulassen. Für ein aktuelles Projekt sollte jedoch auf ein VPN verzichtet werden. Theoretisch kein Problem – externe IP rein und fertig, aber leider ist es auch 2019 noch in Deutschland für viele Anschlussarten üblich bei Trennung und erneutem Verbinden eine andere IP-Adresse zuzuweisen. Für eingehende Verbindungen lässt sich dies mittels dynamischen DNS-Einträgen schnell in den Griff bekommen, jedoch ist das für das hiesige Konstrukt keine Option, da nginx mit solchen Einträgen nicht sinnvoll umgehen kann. Im Netz finden sich einige Helper-Scripte, welche den DNS regelmäßig Prüfen, die Konfiguration anpassen und den Webserver passend umkonfigurieren. Leider sind diese oft eher alt und nur auf das schon seit Jahrzehnten veraltete IPv4 ausgelegt. Als Abhilfe habe ich meine Anforderungen in ein kleines Python-Script gegossen. Für IPv6 wird von der aufgefundenen IP auf ein /48er Netz geschlossen und dieses freigegeben, sollte euer Provider nur ein /56er oder gar /64er rausrücken muss dass ggf. angepasst werden.

Vorbedingung ist, dass nginx die neue Konfiguration findet. Um es einfach zu halten stehen die dynamischen Einträge in einer separaten Textdatei, welche an passender Stelle per include eingebunden wird. Statische Einträge können, sofern vorhanden, an der üblichen Stelle bleiben.

[…]
location /admin {
        allow 192.168.0.0/24;
        include /etc/nginx/dyndns.conf;
        deny all;
        […]

Das eigentliche Script nutzt nach meinem Wissen keine externen Module und sollte somit auf jedem System mit Python 3 laufen. Es werden alle IPv4- und IPv6-Adressen abgerufen. Der angegebene Port (80) ist irrelevant, da nur die IPs genutzt werden. Die Konfiguration wird mittels MD5 auf Änderungen geprüft, liegt eine solche vor wird per Systemd eine reload ausgelöst. Ich habe die Datei mit in den nginx-Konfigurationsordner als /etc/nginx/dyndns.py gepackt – nicht schön, aber passte besser in die bereits vorhandene Struktur und Verwaltung.

#!/usr/bin/python3
import socket
import subprocess
import hashlib
import ipaddress


def md5(fname):
    hash_md5 = hashlib.md5()
    with open(fname, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()



before = md5("/etc/nginx/dyndns.conf")
cfg = open("/etc/nginx/dyndns.conf", "w")
addrs = socket.getaddrinfo("DEIN.DYNAMISCHER.DNS", 80, type=socket.SOCK_STREAM)
for addr in addrs:
    out = ""
    ip = ipaddress.ip_address(addr[4][0])
    if ip.version == 6:
        ip = ipaddress.ip_network(str(addr[4][0]) + "/48", False)
        out = (str(ip.network_address) + "/" + str(ip.prefixlen))
    else:
        out = addr[4][0]
    cfg.write("allow\t\t" + out + ";\t#Dynamic DNS\n")

cfg.close()

after = md5("/etc/nginx/dyndns.conf")

if before != after:
    #DNS has changed
    #print("RELOAD")
    subprocess.call('/usr/bin/systemctl reload nginx', shell=True)

Das Script muss regelmäßig gestartet werden um Änderungen zu prüfen. Wenn der zugehörige DNS-Dienst auf dem selben System läuft kann man möglicherweise auf Hooks zurückgreifen, andernfalls muss es zeitbasiert über Cron oder Timer laufen. Für letzteres mit einem Intervall von 5 Minuten legt man die Datei /etc/systemd/system/nginx-dyndns.timer an und füllt sie wie folgt:

[Unit]
Description=Nginx DNS updater

[Timer]
OnBootSec=0min
OnUnitInactiveSec=5m

[Install]
WantedBy=timers.target

Dazu benötigt man noch einen passenden Service, welcher unter /etc/systemd/system/nginx-dyndns.service definiert wird:

[Unit]
Description=Nginx DNS updater

[Service]
Type=oneshot
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/usr/bin/python3 /etc/nginx/dyndns.py

Last but not least wird der Timer eingeschaltet:

systemctl enable --now nginx-dyndns.timer

BitNotice #150 – Siglent SDS1102CNL Firmware Update

BitNotice #150 - Siglent SDS1102CNL Firmware Update

(25 MB) 00:04:40

2019-07-03 17:45 🛈

Bei meinem Siglent SDS1102 sind mir in letzter Zeit Probleme bei der Nutzung einiger Messungen aufgefallen. Oft helfen hier Updates der Firmware, also schauen wir mal, wie man diese bei dem Modell installiert.

Downloads @ siglent.eu

BitBastelei #339 – Hitzefrei: Quick’n’Dirty USB-Ventilator

BitBastelei #339 - Hitzefrei: Quick'n'Dirty USB-Ventilator

(1 GB) 00:22:19

2019-06-30 10:00 🛈

Die aktuellen Temperaturen lassen es kaum zu sinnvollen Tätigkeiten nachzugehen, also greifen wir ein altes Thema nochmal auf und bauen einen alten PC-Lüfter als mobilen USB-Ventilator um.

BitBastelei #338 – LORA-Gateway mit ic880a

BitBastelei #338 - LORA-Gateway mit ic880a

(277 MB) 00:14:07

2019-06-23 10:00 🛈

Bereits in der Vergangenheit hatte ich gezeigt wie man mit LORA und dem „The things network“ kleine Datenmengen wie z.B. Umweltsensoren über lange Distanzen übertragen kann. Genutzt werden hierzu so genannte Gateways, welche mehrere Frequenzen gleichzeitig überwachen, die LORA-Nachrichten entgegennehmen und zu den Internetservern des TTN-Projektes weiterleiten. Diese Gateways werden oft durch Freiwillige betrieben, sind aber leider vergleichsweise teuer. Da auch ich einige LORA-Dinge in betrieb habe geht es nun daran auch ein Gateway beizusteuern, hierzu habe ich glücklicherweise ein passendes Gateway-Board gebraucht ersteigern können. Als Basis nutze ich den ic880A mit Raspberry Pi, die nötige Software wurde von der TTN-Community aus Zürich entwickelt. Alternativen wären der RAK831 (z.B. vorgestellt in der aktuellen MAKE) oder das Pygate-Board von PyCom.

Links zum Thema:

BitBastelei #337 – HP/Aruba/HPE ProCurve 2510G-24 Managed Switch

BitBastelei #337 - HP/Aruba/HPE ProCurve 2510G-24 Managed Switch

(686 MB) 00:34:49

2019-06-16 10:00 🛈

Wieder mal ein Auktionstreffer – auf der Suche nach einem kleinen Switch mit VLAN-Unterstützung ist mit ein professioneller 24-Port Gigabit-Switch. Zwar hat das Modell schon ein paar Jahre auf dem Buckel, dürfte jedoch bei Haltbarkeit und Funktionen aktuelle Consumer-Modelle noch immer übertreffen. Schauen wir mal auf den Funktionsumfang, das Management und natürlich was drin steckt.

BitBastelei Live – Mikroskop-Nachschub

BitBastelei Live - Mikroskop-Nachschub

(2 GB) 05:38:01

2019-06-09 10:00 🛈

In letzter Zeit musste ich doch ein paar mal an Boards mit recht kleinen Bauteilen arbeiten. Die Nachteile meines bisherigen Mikroskopes gingen mir dann irgendwann doch etwas zu stark auf die Nerven, also muss etwas Besseres her.

In letzter Zeit musste ich doch ein paar mal an Boards mit recht kleinen Bauteilen arbeiten. Die Nachteile meines bisherigen Mikroskopes gingen mir dann irgendwann doch etwas zu stark auf die Nerven, also muss etwas Besseres her.

Zeitmarken

~ 00:00:00 Beginn & Storytime (ReLive ¹)
~ 00:30:00 Unboxing & Aufbau (ReLive ¹)
~ 01:10:00 Löten was vor die Nase kommt

¹ Diesen Part hatte ich vorher „live“ aufgenommen und nur grob geschnitten. Ich konnte entsprechend nicht direkt im Video-Stream auf Fragen und Kommentare eingehen. Natürlich war ich aber im Chat und griff ggf. die Themen im anschließenden Live-Teil nochmal auf.

Produktlinks (aka Werbung)

Video-Links

BitBastelei #336 – Bose SoundLink Air Innenleben & USB-Reparatur

BitBastelei #336 - Bose SoundLink Air Innenleben & USB-Reparatur

(1 GB) 00:28:49

2019-06-02 10:00 🛈

Produkten von Bose sagt man – jedenfalls im Netz – eine gewisse Qualität nach. Danach zu Urteilen, dass es hier mal wieder eine USB-Buchse zerlegt hat, scheint das nur beschränkt zu gelten. Auch die Tatsache, dass man keine Ersatzteile bereitstellt hinterlässt bei mir keinen guten Eindruck. Aber schauen wir mal, was sich in derem „SoundLink Air“ einem AirPlay-WLAN-Lautsprecher, so drin steckt und ob wir das „irreparabel beschädigte“ Gerät nicht doch repariert bekommen.

Musik: Elektronomia – Limitless · https://youtu.be/F-uQNfQKsA4

BitBastelei #335 – ESP8266 Webserver (AJAX/SPIFFS) für China-Fliegenfänger

BitBastelei #335 - ESP8266 Webserver (AJAX/SPIFFS) für China-Fliegenfänger

(619 MB) 00:49:02

2019-05-26 10:00 🛈

Vor einigen Wochen hatten wir uns einen „Fliegenfänger“ angesehen, der sich technisch nicht sonderlich anspruchsvoll darstellte. In IoT-Zeiten natürlich völlig indiskutabel, also darf das Teil nun als Übungswiese für den ESP8266 dienen. Auf dem Programm also – nach dem nötigen Hardware-Umbau – eine Runde ESP8266-Webserver mit AJAX und SPIFFS – und das ganze ausführlich erklärt.

Inhalt

  • 08:00 Beginn Programmierung
  • 08:23 ESP8266 mit dem WLAN verbinden
  • 13:35 Einfacher Zugriff auf den ESP8266: MDNS
  • 15:44 ESP8266 als Webserver
  • 17:50 Texte im Browser anzeigen
  • 19:39 Mehrere Webseiten per URL, Variablen ausgeben
  • 21:29 Unbekannte URLs abfangen
  • 22:50 Browserausgabe mit HTML formatieren
  • 25:12 Webseiten und Bilder per SPIFFS
  • 31:52 Live-Werte mit Javascript, AJAX und JSON
  • 40:31 Programmbeispiel auf Basis der gezeigten Codes mit JQuery und Bootstrap

Links zum Thema