Neuen Sensor am MQTT einrichten

22.06.2020 - Lesezeit: ~1 Minute

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](https://www.eclipse.org/paho/clients/python/ den Sensor eintragen)

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

Raspi4 ins Internet bringen mit Nginx, Letsencrypt

03.05.2020 - Lesezeit: ~1 Minute

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
Tags: beaglebone letsencrypt nginx

Pythonscript unter Ubuntu als Service starten

04.05.2019 - Lesezeit: 2 Minuten

Oldscool einen Eintrag in /etc/rc.local

oder als Service


Meinen [Wetterserver](http://bone.nfix.de/wetter 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_speicher.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**
- https://www.thomaschristlieb.de/ein-python-script-mit-systemd-als-daemon-systemd-tut-garnicht-weh/
- https://www.reddit.com/r/learnpython/comments/8eh057/how_to_run_python_script_as_a_service_in_ubuntu/
- https://wiki.ubuntuusers.de/systemd/Units/#Eigene-Units-anlegen
- https://www.freedesktop.org/software/systemd/man/systemd.special.html
- https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
- https://unix.stackexchange.com/questions/126009/cause-a-script-to-execute-after-networking-has-started
Tags: Kubuntu beaglebone

Letsencrypt auf BBB erneuern

20.02.2019 - Lesezeit: 3 Minuten

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/t/february-13-2019-end-of-life-for-all-tls-sni-01-validation-support/74209

  • Neue Version von certbot 0.28 installieren

  • Mit dem neuen certbot das Zertifikat erneuern:

    $ 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 sein.

$ 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)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tags: beaglebone letsencrypt

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

16.02.2019 - Lesezeit: ~1 Minute

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
Tags: beaglebone Radicale

Radicale auf BBB

12.01.2018 - Lesezeit: 2 Minuten

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/Lightning 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/forum/thread/75059-kalender-syncronisiert-nicht-dav-not-dav-gelbes-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

Tags: beaglebone Radicale