Optionen
Hier werden alle nutzbaren und sinnvollen Optionen gelistet. Diese werden von mir ausdrücklich empfohlen, sind aber
dennoch kein "muss". Das kann und darf jeder Anwender für sich selbst entscheiden.
Folgende Optionen können nach persönlichem Belieben evtl. hilfreich sein:
Sowohl Raspberry 3 als auch 4 beherrschen aber das Booten über die USB-Schnittstelle. Besonders am RPI4 ist der Einsatz eines USB-Sticks neuer Bauart oder eine SSD am USB3-Port mehr als nur zu empfehlen. Der Server arbeitet dann um einiges schneller. Aber auch der RPI3 arbeitet in einer ordentlichen Geschwindigkeit mit einem USB-Stick.
Der Vorteil des Ganzen liegt auf der Hand: Der Stick kann schnell ausgetauscht werden, wenn es Probleme gibt. Ein Ersatz-USB-Stick liegt dann beispielsweise dem EInsaatzkoffer des Servers bei - natürlich mit einer identischen Kopie bespielt.
Zurück zum Seitenanfang
- Booten von USB-Sticks oder USB-SSD
- Steuerung der Lüftergeschwindigkeit abhängig von der Prozessor-Temperatur (nur für StromPI3)
- Abgleich der Echtzeituhr des StromPI3 mit dem RPI
Umstellung auf USB-Boot
Es ist mehr als nur empfehlenswert, auf die Arbeit mit der SD-Speicherkarte zu verzichten. Im Laufe meiner Experiemnte sind mir mindestens fünf Karten kaputt gegangen. Im Falle des Notfunk-Servers bedeutet dies, dass man das Gerät aufschrauben und die Speicherkarte mittels einer Zange austauschen muss.Sowohl Raspberry 3 als auch 4 beherrschen aber das Booten über die USB-Schnittstelle. Besonders am RPI4 ist der Einsatz eines USB-Sticks neuer Bauart oder eine SSD am USB3-Port mehr als nur zu empfehlen. Der Server arbeitet dann um einiges schneller. Aber auch der RPI3 arbeitet in einer ordentlichen Geschwindigkeit mit einem USB-Stick.
Der Vorteil des Ganzen liegt auf der Hand: Der Stick kann schnell ausgetauscht werden, wenn es Probleme gibt. Ein Ersatz-USB-Stick liegt dann beispielsweise dem EInsaatzkoffer des Servers bei - natürlich mit einer identischen Kopie bespielt.
- Auf einem (z.B.) Windows-PC einen USB-Stick/eine USB-SSD ganz normal, wie eine SD-Karte auch, mit einem RaspberryOS-Image bespielen.
- Windows-PC: Speicherkarte öffnen oder am laufenden RPI arbeiten
- Die Datei /boot/config.txt mit einem Texteditor öffnen (am RPI mit sudo arbeiten)
- Am Ende folgende Zeile einfügen:
program_usb_boot_mode=1
- Die SD-Karte im RPI einsetzen und den RPI (neu) starten
- Einloggen und überprüfen, ob der USB-Boot-Modus aktiv ist:
vcgencmd otp_dump | grep 17:
Das Ergebnis sollte lauten:17:3020000a
- Wenn dem so ist, RPI herunterfahren und Spannungsversorgung trennen.
- Speicherkarte entfernen und USB-Stick einsetzen.
- Spannung anstecken und sich über das Booten von USB-Stick/SSD freuen.
Zurück zum Seitenanfang
Steuerung der Lüftergeschwindigkeit
cd ~;
sudo apt -y update;
sudo apt -y upgrade;
sudo apt -y install python3-pip;
sudo pip3 install gpiozero;
nano USV/fancontrol.py;
In der leeren Datei folgenden Skript-Text eingeben:
from gpiozero import CPUTemperature, PWMLED from time import sleep led = PWMLED(2) # PWM-Pin startTemp = 55 # Temperatur bei der der Luefter an geht pTemp = 4 # Proportionalanteil iTemp = 0.2 # Integralanteil fanSpeed = 0 # Lueftergeschwindigkeit sum = 0 # Speichervariable fuer iAnteil while True: # Regelschleife cpu = CPUTemperature() # Auslesen der aktuellen Temperaturwerte actTemp = cpu.temperature # Aktuelle Temperatur als float-Variable diff = actTemp - startTemp sum = sum + diff pDiff = diff * pTemp iDiff = sum * iTemp fanSpeed = pDiff + iDiff + 35 if fanSpeed > 100: fanSpeed = 100 elif fanSpeed < 35: fanSpeed = 0 if sum > 100: sum = 100 elif sum < -100: sum = -100 #print(str(actTemp) + " Grad Celsius, " + str(fanSpeed)) led.value = fanSpeed / 100 # PWM Ausgabe sleep(1)Editor beenden und speichern
sudo nano /etc/rc.local;
Vor exit 0 folgende Zeile einfügen:
### Ansteuerung des Gehaeuseluefters abhaengig von der Prozessor-Temperatur python3 /home/pi/USV/fancontrol.py &Zurück zum Seitenanfang
Abgleich der Echtzeituhr des StromPI3mit dem RPI
nano USV/RTCSerial.py;
In der leeren Datei folgenden Skript-Text eingeben:
import serial import threading from time import sleep import time import datetime import os serial_port = serial.Serial() serial_port.baudrate = 38400 serial_port.port = '/dev/serial0' serial_port.timeout = 1 serial_port.bytesize = 8 serial_port.stopbits = 1 serial_port.parity = serial.PARITY_NONE if serial_port.isOpen(): serial_port.close() serial_port.open() try: serial_port.write(str.encode('Q')) sleep(1) serial_port.write(str.encode('\x0D')) sleep(1) serial_port.write(str.encode('date-rpi')) sleep(0.1) serial_port.write(str.encode('\x0D')) data = serial_port.read(9999); date = int(data) strompi_year = date // 10000 strompi_month = date % 10000 // 100 strompi_day = date % 100 sleep(0.1) serial_port.write(str.encode('time-rpi')) sleep(0.1) serial_port.write(str.encode('\x0D')) data = serial_port.read(9999); timevalue = int(data) strompi_hour = timevalue // 10000 strompi_min = timevalue % 10000 // 100 strompi_sec = timevalue % 100 rpi_time = datetime.datetime.now().replace(microsecond=0) strompi_time = datetime.datetime(2000 + strompi_year, strompi_month, strompi_day, strompi_hour, strompi_min, strompi_sec, 0) command = 'set-time %02d %02d %02d' % (int(rpi_time.strftime('%H')),int(rpi_time.strftime('%M')),int(rpi_time.strftime('%S'))) if rpi_time > strompi_time: serial_port.write(str.encode('set-date %02d %02d %02d %02d' % (int(rpi_time.strftime('%d')),int(rpi_time.strftime('%m')),int(rpi_time.strftime('%Y'))%100,int(rpi_time.isoweekday())))) sleep(0.5) serial_port.write(str.encode('\x0D')) sleep(1) serial_port.write(str.encode('set-clock %02d %02d %02d' % (int(rpi_time.strftime('%H')),int(rpi_time.strftime('%M')),int(rpi_time.strftime('%S'))))) sleep(0.5) serial_port.write(str.encode('\x0D')) print ('-----------------------------------------') print ('The date und time has been synced: Raspberry Pi -> StromPi') print ('-----------------------------------------') else: os.system('sudo date +%%y%%m%%d --set=%02d%02d%02d' % (strompi_year, strompi_month, strompi_day)) os.system('sudo date +%%T -s "%02d:%02d:%02d"' % (strompi_hour, strompi_min, strompi_sec)) print ('-----------------------------------------') print ('The date und time has been synced: StromPi -> Raspberry Pi') print ('-----------------------------------------') except KeyboardInterrupt: print('interrupted!') serial_port.close()Editor beenden und speichern
sudo nano /etc/rc.local;
Vor exit 0 folgende Zeile einfügen:
### Abgleich RTC des StromPI3 mit RPI-Uhr python3 /home/pi/USV/RTCSerial.py &Zurück zum Seitenanfang