beaglebone

Neuen Sensor am MQTT einrichten

Anzeige aller Sensoren, die am Mosquitto angeschlossen sind: (IP-Adresse des BBB 192.168.80.106)

$ mosquitto_sub -h 192.168.80.106 -v -t /#
/Sensor/3B1B3A {"ID": "3B1B3A", "TI": 25.48, "L": 98875.38, "F": 43.48, "T": 21.75}

Im Python Programm für paho den Sensor eintragen

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    client.subscribe('/Sensor/3B1B3A')

Raspi4 ins Internet bringen mit Nginx, Letsencrypt

Der Raspi4 soll im Internet verfügbar sein.

  • Der Raspi4 nennt sich server2020 und hängt an der Fritzbox mit der Adresse 192.168.80.20
  • dazu wird die nginx-Konfiguration auf dem bereits im Internet befindlichen bone.nfix.de auf den Raspi4 erweitert.
$ sudo nano /etc/nginx/sites-available/server2020
server {
        listen 443;
        listen [::]:443;
        server_name dev.wlsoft.de;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        location / {
            proxy_pass http://192.168.80.20;
        }
}

Den neuen Server verfügbar machen

$ sudo ln -s /etc/nginx/sites-available/server2020 /etc/nginx/sites-enabled/

nginx neue starten

$ sudo nginx -s reload
  • Ein neues Letsencrypt – Zertifikat erstellen, das beide Server umfasst:
$ sudo certbot --nginx -d dev.wlsoft.de -d bone.nfix.de

Pythonscript unter Ubuntu als Service starten

Oldscool einen Eintrag in /etc/rc.local

oder als Service


Meinen Wetterserver möchte ich als Service starten, so dass ich Programmupdates ohne Reboot des BBB einspielen kann.

Ich benötige zwei Services

  • zum Speicher der über MQTT empfangen Daten: wnf_wetter_spe­icher.service
  • zum Anzeigen der Daten: wnf_wetter_http­.service
$ sudo nano /etc/systemd/system/wnf_wetter_speicher.service

Da der Service unbedingt eine aktives Netzwerk braucht, wird dieser Service nach dem network-online.target gestartet.

[Unit]
Description=wnfWetterSpeichern
Wants=network-online.target
After=network-online.target syslog.target

[Service]
Type=simple
User=wnf
Group=wnf
WorkingDirectory=/home/wnf/wnfwetter/
ExecStart=/home/wnf/wnfwetter/wnf_wetter_speicher.py
StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/wnf_wetter_http.service
[Unit]
Description=wnfWetterHttp
After=syslog.target

[Service]
Type=simple
User=wnf
Group=wnf
WorkingDirectory=/home/wnf/wnfwetter/
ExecStart=/home/wnf/wnfwetter/wnf_wetter_http.py
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target
$ sudo systemctl enable wnf_wetter_speicher.service
$ sudo systemctl enable wnf_wetter_http.service
$ sudo systemctl daemon-reload
$ sudo service wnf_wetter_speicher start
$ sudo service wnf_wetter_http start

Literatur

Letsencrypt auf BBB erneuern

Von Letsencrypt kommen E-Mails mit der Nachricht

You may need to update your client to the latest version in case it is still using the deprecated TLS-SNI-01 validation method. https://community.letsencrypt.org/…upport/74209

$ certbot --version || /path/to/certbot-auto --version
certbot 0.28.0
$ sudo sh -c "sed -i.bak -e 's/^\(pref_challs.*\)tls-sni-01\(.*\)/\1http-01\2/g' /etc/letsencrypt/renewal/*; rm -f /etc/letsencrypt/renewal/*.bak"
$ sudo certbot renew --dry-run
  • Jetzt kommt die Fehlermeldung:
IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: bone.nfix.de
   Type:   connection
   Detail: Fetching
   http://bone.nfix.de/.well-known/acme-challenge/C1ye-gE-z3kMKFE-UQxZ-pkGaLD19E9FA7bHa6malik:
   Error getting validation data
  • Da certbot den http Zugriff auf bone.nfix.de benötigt, muss in der Fritzbox das Port 80 freigegeben se­in.
$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/bone.nfix.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for bone.nfix.de
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/bone.nfix.de/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/bone.nfix.de/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Radicale auf BBB (Logging: OSError: [Errno 30] Read-only file system: '/var/log/radicale/log')

Nachdem ich auf meinen BBB von Ubuntu 16.04 auf Ubuntu 18.04 gewechselt hatte musste ich feststellen, dass das der Radicale-Server nicht mehr lief.

Der Befehl $ journalctl –unit radicale.service -e liefert u.a. diese Fehlermeldung:

OSError: [Errno 30] Read-only file system: '/var/log/radicale/log'

den Radicale-Server anhalten

$ sudo systemctl stop radicale

Da ich nicht herausgefunden habe, warum das Filesystem Read-Only sein soll habe ich in

$ sudo nano /etc/radicale/config

das Logging ausgeschaltet

[logging]
## config = /etc/radicale/logging
## debug = True

den Radicale-Server wieder starten

$ sudo systemctl start radicale

Radicale auf BBB

Die Installation von Radicale als CalDav und CardDav Server auf meinem BBB war erfolgreich. Radicale kommt mit einem eigenen Http-Server daher und muss deshalb nicht in nginx eingebunden werden.

Leider hatte Thunderbird/Lig­htning bei der ganzen Probiererei die Zusammenarbeit mit meinem CalDav-Kalender eingestellt. Es gab nur das gelbe Warndreieck: „Der Kalender ist nicht verfügbar“. Wie „hier (Kalender syncronisiert nicht – DAV_NOT_DAV – gelbes Warndreieck)“: https://www.thunderbird-mail.de/…warndreieck/ zu lesen ist, liegt das daran, dass Thunderbird die Passwörter nur einmal pro Server speichern kann. Deshalb habe ich

  • die Passwörter für den Radicale-Server in Thunderbird gelöscht.
  • Den Radicale-Kalender in Thunderbird abgemeldet
  • Thunderbird neu gestartet
  • Den Radicale-Kalender neu erstellt (mit der kompletten Pfadangabe, wie Radicale sie anzeigt.)
https://radicale.fritz.box:5232/user/xxxa40a-84cb-b167-4d4c-06f92db7xxx/
  • Es wird erneut nach User und Passwort gefragt, dann sollte der Radicale Kalender auch unter Thunderbird funktionieren.

Literatur

Beaglebone Black und Locale

Meine Pythonscripte laufen nicht richtig auf dem BBB. Es kommt zur beliebten Fehlermeldung:

UnicodeEncodeError: 'ascii' codec can't encode character ...

1. Locale generieren

sudo locale-gen de_DE.UTF-8

2. Locale setzen, dies generiert auch die Datei /etc/default/lo­cale.

update-locale LANG=de_DE.UTF-8

3. Danach das System neu starten oder eine neue Konsole öffnen.

Literatur

Tags: 

Beaglebone Black und die blaue LED

Literatur BeagleBone Black Built-In LEDs

Falls der BBB sichtbar ist, nervt eine blau blinkende LED gehörig. Dabei handelt es sich um die LED 0 deren Steuerung im Verzeichnis /sys/class/led­s/beaglebone:gre­en:usr0 festgelegt wird.

$ cd /sys/class/leds/beaglebone:green:usr0

Diese LED wird vom heartbeat getriggert:

$ cat trigger
none rc-feedback kbd-scrolllock kbd-numlock kbd-capslock
kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock
kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock
nand-disk usb-gadget usb-host mmc0 mmc1 timer
oneshot [heartbeat] backlight gpio default-on

Um diesen Trigger auf none zu schalten sind die folgenden Befehle nötig:

$ sudo su
# echo none > trigger
$ cat trigger
[none] rc-feedback kbd-scrolllock kbd-numlock kbd-capslock
kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock
kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock
nand-disk usb-gadget usb-host mmc0 mmc1 timer
oneshot heartbeat backlight gpio default-on

Damit die blaue LED beim Booten des BBB ausgeschaltet wird müssen diese Zeilen in die Datei /etc/rc.local vor dem exit 0 eingetragen werden:

# blaue LED ausschalten
cd /sys/class/leds/beaglebone:green:usr0
echo none > trigger
Tags: 

Beaglebone Black

Da auf meinem Beaglebone Black (BBB) das Betriebssystem auf dem internen Speicher installiert war, konnte ich kein do-release-upgrade ausführen, da der Speicherplatz nicht ausreichte. Also musste das System auf einer 32-GByte-SDCard neu aufgesetzt werden.

Auf meinem Desktoprechner, die SD-Card vorbereiten.

$ sudo ./mk_mmc.sh --mmc /dev/sdd --dtb am335x-boneblack --distro xenial --firmware --serial-mode

Die SD-Card im BBB einlegen. Die serielle Schnittstelle des BBB mit dem Desktoprechner verbinden und minicom starten:

$ sudo minicom -D /dev/ttyUSB0

Beim Anschließen des BBB an die stromversorgung den Schalter S2 auf dem BBB gedrückt halten, damit von der SD-Card gebootet wird.

Literatur

Tags: 

Seiten