Benutzer-Werkzeuge

Webseiten-Werkzeuge


pisetup

Dies ist eine alte Version des Dokuments!


pi-setup 2021 und upgrade auf bullseye 2022

Nachdem ich Probleme mit Versionsunterschieden diversester Software und den beiden Raspberry Pis habe, versuche ich den 'alten' mal neu aufzusetzen. Als Grundlage nehme ich den 'Fast-Setup'.

Die wichtigsten Sachen, die laufen müssen: pilight und mein lcd

Grundinstallation:

  • Mit Raspberry Pi Imager das neueste Image vom Januar 2021 eingespielt
  • Eine leere ssh-Datei auf dem Boot-Volume angelegt
  • An cmdline.txt angehängt: ip=192.168.178.23::192.168.178.1:255.255.255.0::eth0:off
  • Pi3: entsprechend: 192.168.178.20
  • Anmelden mit pi/raspberry;
  • raspi-config (I2C, camera, Localisation, Festplatte erweitern, password)
  • Pi3: Audio über USB;
  • apt-get update; apt-get upgrade; Welche Version habe ich jetzt: cat /etc/os-release (buster)
  • Pi3: Probleme mit DNS, Lösung steht hier
  • sudo apt-get install mlocate; sudo updatedb

Pi-Light:

  • pi-light installieren; pilight-daemon -V (v8.1.5)

Apache, PHP, MariaDB, Python, phpmyadmin:

  • python –version: 2.7.16; python3 –version v8.1.5
  • sudo apt-get install apache2
  • sudo apt-get install mariadb-server mariadb-client; mysql_secure_installation
  • sudo apt-get install php; systemctl restart apache2 (php 7.3.27; apache 2.4.38)
  • sudo apt-get install phpmyadmin; (apache2)
  • mysql -u root; CREATE USER ihr_username@localhost IDENTIFIED BY 'ihr_eigenes_passwort';
  • GRANT ALL PRIVILEGES ON *.* TO ihr_username@localhost WITH GRANT OPTION;
  • sudo apt-get -y install python-mysql.connector python3-mysql.connector python-mysqldb python3-mysqldb
  • shebang für python3 funktionierte nicht. Besser umstellen auf: #!/usr/bin/env python3

Daten in Datenbank importieren:

  • scp /Users/varnholt/Downloads/HomeAu.sql.zip pi@192.168.178.23:
  • unzip HomeAutomation.sql.zip
  • mysql -u pi -p < HomeAutomation.sql
  • Probleme mit Umlauten beheben…

IOWarrior (USB-LCD Ansteuerung)

Für MQTT

  • sudo apt-get install mosquitto mosquitto-clients

Für Bluetooth

  • sudo apt-get install bluetooth libbluetooth-dev
  • sudo python3 -m pip install pybluez
  • sudo python3 -m pip install pygatt
  • sudo python3 -m pip install bluepy (blescan, sensortag, thingy52 in '/home/pi/.local/bin' nicht im PATH.)
  • sudo python3 -m pip install paho-mqtt
  • sudo python3 -m pip install miflora

Für „Xiaomi passive BLE monitor integration.“ was aber nicht funktioniert:

  • sudo python3 -m pip install aioblescan (installed in '/home/pi/.local/bin' nicht im PATH.)
  • sudo python3 -m pip install pycryptodomex (mit pycryptodome ging es nicht)
  • sudo python3 -m pip install voluptuous
  • sudo python3 -m pip install homeassistant (da kommt zu viel rein, man braucht nur

Für 'lock_server' um die autom. Helligkeitsanpassung im Zimmer zu stoppen

  • sudo apt-get install nodejs

Für mein „ha“ aka test C-Programm

  • sudo apt-get install libcurl4-gnutls-dev
  • sudo apt-get install libmariadb-dev-compat

Für I2C (da ich andere pins benutze), Eintrag in /boot/config.txt

  • dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=4,i2c_gpio_sda=8,i2c_gpio_scl=27
  • sudo python3 -m pip install smbus2
  • sudo python3 -m pip install rpi.bme280

In PHP nutze ich vcdiv:

  • sudo apt install php7.3-bcmath

Für ssh:

  • ssh-keygen; cat ~/.ssh/id_rsa.pub | ssh pi@192.168.178.20 'cat » .ssh/authorized_keys'
  • auch für root machen

In der Datenbank:

  • bei phpmysql kommt Fehlermeldung „count(): Parameter must be an array or an object that implements Countable“: sudo sed -i „s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g“ /usr/share/phpmyadmin/libraries/sql.lib.php
  • Tabelle Wohnung: feuchteOut und tempOut mit 0.00 vorbelegen
  • Zugriff von aussen: /etc/mysql/mariadb.conf.d/50-server.cnf; bind-address = 0.0.0.0

Webserver:

  • alle Dateien unter /var/www/html/ wieder einspielen

Weiteres:

  • sudo apt-get install mpg321

System:

  • .bashrc, .bash_aliases, .nano_backups, .profile, .nanorc
  • crontab, services

Todo:

  • opencv in camera
  • Pfade anpassen

Aktuell habe ich pilight mit der letzten Version. Sollte es wieder Probleme geben, müsste ich auf die letzte bei mir funktionierende Version zurück setzen. Das geht mit sudo apt-mark hold pilight. Mehr Informationen im eigenen PiLight-Bereich

Inzwischen alles auf python3 umgestellt; Ordnerstruktur aufgeräumt und daher in fast jedem Programm Pfade anpassen müssen; Pilight nur noch Lokal laufen, und damit jeden pilight Aufruf um Server und Port erweitert. Bei der Umstellung auf Python3 muss man bei pah-mqtt aufpassen. Die Payload wird jetzt als ByteString geliefert. Das sieht man bei einem print an (b'text'). Damit wieder ein String daraus wird, habe ich einfach als erste Zeile jeweils msg.payload = msg.payload.decode(„utf-8“) eingebaut.

Snips manual setup:

  • sudo apt-get install nodejs (node –version v10.24.0)
  • sudo apt-get install npm (npm –version v10.24.0)
  • sudo apt-get install -y dirmngr
  • sudo bash -c 'echo „deb https://raspbian.snips.ai/$(lsb_release -cs) stable main“ > /etc/apt/sources.list.d/snips.list'
  • sudo apt-key adv –fetch-keys https://raspbian.snips.ai/531DD1A7B702B14D.pub
  • sudo apt-get update
  • Jetzt kommt bei Buster ein Fehler, und man muss mit dieser Anleitung weiter machen
  • sudo bash -c 'echo „deb https://raspbian.snips.ai/stretch stable main“ > /etc/apt/sources.list.d/snips.list'
  • sudo apt-get update (sollte jetzt gehen)
  • sudo apt install libgfortran3
  • sudo apt install libatlas3-base=3.10.3-8+rpi1
  • sudo apt install snips-asr (Wenn: E: Paket snips-asr kann nicht gefunden werden. sudo apt-get update)
  • libtts brauch man nicht so kompliziert installieren, es geht auch mit
  • sudo apt-get install libttspico0 libttspico-utils
  • Jetzt geht es in der normalen Installationsanleitung weiter
  • sudo apt-get install -y snips-platform-voice
  • sudo apt-get install -y snips-template snips-skill-server
  • aplay -l und arecord -l um devices raus zu bekommen
  • sudo nano /etc/asound.conf erzeugen und 'richtig' füllen (bei dem alten steht 1:0 und 2:0 drin)
  • alsamixer stellt die Lautstärke ein
  • sudo apt-get install snips-watch
  • sudo tail -f /var/log/syslog (gibt leider noch eine Menge Fehler die zu beheben sind)
  • den Ordner /var/lib/snips/skills/ komplett, und vom Ordner /usr/share/snips/ nur den Assistant-Ordner vom alten Laufwerk rüber kopiert
  • HEUREKA: Alle Services grün!
  • snips-watch -vvv (Überwachung) zeigt, dass er mich hört, nur noch nichts ausführen kann. Und Ton geht auch!
  • libatlas3-base wird ab jetzt bei updates zurückgehalten (!)
dpkg -l snips-*
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name                  Version      Architektur  Beschreibung
+++-=====================-============-============-===========================================================
ii  snips-asr             0.64.0       armhf        Snips Automatic Speech Recognition
un  snips-asr-injection   <keine>      <keine>      (keine Beschreibung vorhanden)
un  snips-asr-service     <keine>      <keine>      (keine Beschreibung vorhanden)
ii  snips-audio-server    0.64.0       armhf        Snips Audio Server command line interface
ii  snips-dialogue        0.64.0       armhf        Snips Dialogue Manager command line interface
ii  snips-hotword         0.64.0       armhf        Snips Hotword command line interface
ii  snips-injection       0.64.0       armhf        A CLI tool to manage words injection into Snips ASR models
un  snips-kaldi           <keine>      <keine>      (keine Beschreibung vorhanden)
ii  snips-kaldi-atlas     0.26.1       armhf        Snips/Kaldi C/C++ wrapper
ii  snips-nlu             0.64.0       armhf        Snips Natural Language Understanding command line interface
ii  snips-platform-common 0.64.0       armhf        Base package for configuration
ii  snips-platform-voice  0.64.0       armhf        Metapackage for snips-platform voice assistant
un  snips-queries         <keine>      <keine>      (keine Beschreibung vorhanden)
ii  snips-skill-server    0.64.0       armhf        Snips skill server command line interface
ii  snips-template        0.64.0       armhf        A CLI tool to work with templates for Snips actions
ii  snips-tts             0.64.0       armhf        Snips TTS
ii  snips-watch           0.64.0       armhf        CLI tool to monitor what the snips platform is doing

Backup am 20210603PiNeuBackup

Nach einem Restart stimmt in den Logfiles die Uhrzeit nicht. Das liegt daran, dass intern die Uhrzeit regelmäßig gespeichert wird, aber als UTC Zeit. Beim Neustart wird dann das hergenommen, bis ein NTP-Server befragt werden konnte. Lösung: Nicht die UTC-Zeit, sondern die 'richtige' speichern.

sudo nano /sbin/fake-hwclock
#date -u '+%Y-%m-%d %H:%M:%S' > $FILE
date '+%Y-%m-%d %H:%M:%S' > $FILE

Testen mit:

sudo fake-hwclock
cat fake-hwclock.data

Update vom 4.November 2022:

Ich habe Buster auf bullseye aktualisiert - mit einigen Problemen. Man sollte nicht die Prozesse, wie z.B. die Datenbank beenden, da der update Tabellen kopieren will, wenn er die Software aktualisiert. Ausserdem hat danach der 'sudo apt-get dist-upgrade' einen Fehler gebracht. Lösung aus Artikel.

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 libc6-dev : Beschädigt: libgcc-8-dev (< 8.4.0-2~) aber 8.3.0-6+rpi1 soll installiert werden'
Lösung: sudo apt install libgcc-8-dev gcc-8-base

Danach festgestellt, das das Redo-logfile von der MariaDB so gross ist. Das kann man von 100MB auf 8MB setzen. Artikel

sudo systemctl stop mysql
/etc/mysql/mariadb.conf.d/50-server.cnf
innodb_log_file_size = 8M
innodb_log_buffer_size = 8M

cd /var/lib/mysql
sudo mv ib_logfile0 nach /tmp

Von aussen kam man nicht mehr an die Datenbank.

Fehlermeldungen:
2003: Can't connect to MySQL server on '{host}:3306' (-2 Name or service not known)
Unexpected error in connect_db: <class 'mysql.connector.errors.InterfaceError'>

Bessere Fehlermeldungen kommen, wenn man im code:
import mysql.connector
from mysql.connector import errorcode
und dann 
try:
    cnx = mysql.connector.connect(user='', password='', host='', database='')
except mysql.connector.Error as err:
    print(err)
    
Lösung:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address            = 0.0.0.0

Noch ein Problem in phpmysql. Wenn man dort auf Rechte klickt, kommt eine Fehlermeldung, dass 'collation' nicht stimmen. Lösung in dem Artikel.

#1267 - Unerlaubte Mischung von Sortierreihenfolgen (utf8mb4_general_ci, COERCIBLE) und (utf8mb4_unicode_ci, COERCIBLE) für Operation '<>'
Lösung: Auf der Startseite von phpmysql muss man den Zeichensatz/Kollation der Verbindung zum Server:' von "utf8mb4_unicode_ci" auf "utf8mb4_general_ci" setzen, dann geht wieder alles.

Dann startete am Mac der Browser nicht mehr, nachdem ich Ventura 13.0 installiert hatte.

apachectl status
/usr/local/bin/apachectl: line 95: lynx: command not found
brew install lynx
sudo apachectl start

Achtung, wenn man bullseye neu aufsetzt, gibt es keinen default-user pi mehr!

sudo rename-user

Man kann sich einen Symlink /home/pi setzen, der wird die meisten Tools wieder zum Laufen bringen.
Wer will, verwendet als „neuen“ Nutzernamen bei der Einrichtung einfach wieder „pi/raspberry“.

Create a file named userconf in the boot folder to create a user. The contents of the file are as follows

username:password-hash
The password hash is generated using the following command

echo "password" | openssl passwd -6 -stdin
For example:

pi:$6$38HiUnLhwlE1DRdL$MHHb6/OsyAlZNqmW7igj333g/CRwG/g5nls7ylTEqZZg9rOIM/cUvE962.5x6M0ONMz/r6OlBy/G6f4v8zrH51

Nach dem Upgrade auf bullseye ging auch die Verbindung zu den beiden MO-Pflanzenüberwachungen nicht mehr. Man musste miflora wieder installieren. Wenn es nur so einfach wäre. Die Bluetooth Verbindungen gingen wohl alle nicht mehr. Und das Rollo ist morgens um 8 Uhr rauf gefahren, ohne dass ich was gemacht hatte.

sudo pip3 install miflora

Damit bluetooth wieder ging, einiges ausprobiert. Welches davon nicht nötig war, weiss ich jetzt nicht. Hier die Schritte

sudo apt-get install bluetooth
sudo pip3 install bluetooth
pip3 install bluetooth
pip3 install bluepy
pip install pybluez
pip install bluepy
sudo pip install pybluez
sudo apt-get install libatlas-base-dev
sudo apt install bluetooth bluez libbluetooth-dev
sudo systemctl status bluetooth
sudo systemctl restart bluetooth
sudo systemctl status bluetooth
sudo rfkill unblock bluetooth

Nachdem ich weitere Probleme mit bluetooth habe, liegt es wohl am neuen python 3.9. Also wird nach dieser Anleitung python3.7 installiert.

Beim neu kompilieren meiner Homeautomation (test.c), fand er usb.h und mysql.h nicht mehr.

sudo apt-get install libusb-dev
sudo apt-get install libmariadb-dev-compat libmariadb-dev

PHP Fatal error: Uncaught Error: Call to undefined function bcdiv() in /home/pi/HomeAutomation/check/luftbefeuchter_check.php:175

sudo apt-get install php-bcmath

pah.mqtt, also mosquitto geht auch nicht mehr. erst gemerkt, als morgens das Rollo um 8 Uhr automatisch rauf ging, statt wenn ich das iPad aus dem Flugmodus nehme

sudo pip3 install paho-mqtt

Stand November 2022

pisetup.1667726870.txt.gz · Zuletzt geändert: 2022/11/06 09:27 von varnholt