pi

RAM Disk

Written by  on Juni 26, 2023

Mir kommt vor, viele Leute haben immer noch Panik vor einer RAM Disk.
Doch nichts leichter als das in einem Raspian Image:
Konkret mit Raspbian GNU/Linux 11 (bullseye)

# mkdir /mnt/ramdisk
# Add to /etc/fstab
tmpfs   /mnt/ramdisk    tmpfs nodev,nosuid,size=2M      0       0

FSCK für Loop Device

Written by  on Januar 21, 2023
root@ofen:/# fsck /dev/loop0
fsck from util-linux 2.36.1
fsck.fat 4.2 (2021-01-31)
FATs differ but appear to be intact.
1) Use first FAT
2) Use second FAT
[12?q]? 1
Free cluster summary wrong (521468 vs. really 517407)
1) Correct
2) Don't correct
[12?q]? 1

*** Filesystem was changed ***
The changes have not yet been written, you can still choose to leave the
filesystem unmodified:
1) Write changes
2) Leave filesystem unchanged
[12?q]? 1
/dev/loop0: 31 files, 4065/521472 clusters

Raspberry Pi am Solarfocus Therminator II

Written by  on Juni 12, 2020

Jetzt kann man den „USB Stick“ wie beschrieben mounten.
Das Loopdevice sollte dem System schon aus Teil 1 bekannt sein:

losetup -o 32256 /dev/loop0 /media/usbdisk.img

Einhängen am Pi wie gesagt Read Only

/bin/mount -o ro /dev/loop0  /mnt

Es kommt ein CSV File heraus. Die Werte sind mit Strichpunkt getrennt. Und es werden Kommas verwendet statt Punkten, was die Weiterverarbeitung etwas erschwert.

head Logfile_200604.csv
DATE;TIME;KT;RGT;Luftzahl;Statuszeile;Zusatzstatuszeile;R▒cklauftemperatur;RLA-Pumpe;Temperatur X35;AT;LDZ_IST[];LDZ_ZIEL[];LDZ_SOLL[];LDZ_Ausgang;SLK-LZ;SGA Einschubistlz;Istposition Saugsondenumschalt.;Einschubtemperatur;Iststrom Einschub/WMT;Iststrom Einschub HG;Iststrom Austragung HG;Iststrom Austragung 2 HG;Schaltzustand Sensor HG;R▒ttler_Status;R▒ttler_RGT_Merker;R▒ttler_RGT_Abfall;R▒ttler_Impulse_Z▒ndphase;R▒ttler_Impulse_Betrieb;Einschub_Impuls_LDZ;Einsch▒be;Sondereinsch▒be_LZ;Sondereinsch▒be_Start;PTO 1;PTU 1;Pufferpumpe 1;TWS Temperatur 1;TWS-Pumpe 1;RT 1;VLT 1;VLT-Soll 1;HK-Pumpe 1;RT 2;VLT 2;VLT-Soll 2;HK-Pumpe 2;Kollektortemp;Speichertemperatur unten Regelung;Speichertemperatur 1 Solarmodul;Speichertemperatur 2 Solarmodul;Solarpumpenausgang;Solarstatus;Solarstatuszeile;WMZ Durchfluss l/h;WMZ VLT;WMZ RLT;WMZ aktuelle Leistung;RT 3;VLT 3;VLT-Soll 3;HK-Pumpe 3;RT 4;VLT 4;VLT-Soll 4;HK-Pumpe 4;RT 5;VLT 5;VLT-Soll 5;HK-Pumpe 5;RT 6;VLT 6;VLT-Soll 6;HK-Pumpe 6;PTO 2;PTU 2;Pufferpumpe 2;PTO 3;PTU 3;Pufferpumpe 3;TWS Temperatur 2;TWS-Pumpe 2;TWS Temperatur 3;TWS-Pumpe 3;Heiz_Strom_LBS;Heiz_Spannung_LBS;Heiz_PWM_LBS;Offset_LBS;Kommunikationszaehler_Leistungsteil;Leistungsteil_Fehler;HG_Modul_Fehler;HK_1_Modul_Fehler;HK_2_Modul_Fehler;HK_3_Modul_Fehler;DFBM_1_Fehler;DFBM_2_Fehler;DFBM_3_Fehler;SOLAR_Modul_Fehler;FWM_1_Fehler;SSUE_Fehler;DIFF_1_Modul_Fehler;
04.06.20;00:00:08;20,4;26;7,40;8;0;19,5;0;44,3;12,4;0,0;0,0;0,0;0;0,00;999;21;23,8;3;3;0;0;-1;0;99,4;4,9;45;13;6,5;233;0;0;70,2;70,9;0;71,9;0;21,1;21,9;21,0;0;50,0;20,9;21,0;0;10,5;56,1;56,1;43,8;0;0;12;0;130,0;130,0;0,0;53,2;819,2;2,0;0;1707,0;1753,6;2,1;0;976,2;256,5;2,3;0;1034,7;-1185,0;2,4;0;215,3;-3045,0;6208;1278,8;-708,3;2572;1075,9;17028;2765,8;392;0,00;0,05;202;-1,8;0;0;0;0;0;0;0;0;0;0;0;0;0;

Hier nochmal in Übersichtlich und durchnummeriert:
1 DATE
2 TIME
3 KT
4 RGT
5 Luftzahl
6 Statuszeile
7 Zusatzstatuszeile
8 Rücklauftemperatur
9 RLA-Pumpe
10 Temperatur X35
11 AT
12 LDZ_IST[]
13 LDZ_ZIEL[]
14 LDZ_SOLL[]
15 LDZ_Ausgang
16 SLK-LZ
17 SGA Einschubistlz
18 Istposition Saugsondenumschalt.
19 Einschubtemperatur
20 Iststrom Einschub/WMT
21 Iststrom Einschub HG
22 Iststrom Austragung HG
23 Iststrom Austragung 2 HG
24 Schaltzustand Sensor HG
25 Rüttler_Status
26 Rüttler_RGT_Merker
27 Rüttler_RGT_Abfall
28 Rüttler_Impulse_Zündphase
29 Rüttler_Impulse_Betrieb
30 Einschub_Impuls_LDZ
31 Einschübe
32 Sondereinschübe_LZ
33 Sondereinschübe_Start
34 PTO 1
35 PTU 1
36 Pufferpumpe 1
37 TWS Temperatur 1
38 TWS-Pumpe 1
39 RT 1
40 VLT 1
41 VLT-Soll 1
42 HK-Pumpe 1
43 RT 2
44 VLT 2
45 VLT-Soll 2
46 HK-Pumpe 2
47 Kollektortemp
48 Speichertemperatur unten Regelung
49 Speichertemperatur 1 Solarmodul
50 Speichertemperatur 2 Solarmodul
51 Solarpumpenausgang
52 Solarstatus
53 Solarstatuszeile
54 WMZ Durchfluss l/h
55 WMZ VLT
56 WMZ RLT
57 WMZ aktuelle Leistung
58 RT 3
59 VLT 3
60 VLT-Soll 3
61 HK-Pumpe 3
62 RT 4
63 VLT 4
64 VLT-Soll 4
65 HK-Pumpe 4
66 RT 5
67 VLT 5
68 VLT-Soll 5
69 HK-Pumpe 5
70 RT 6
71 VLT 6
72 VLT-Soll 6
73 HK-Pumpe 6
74 PTO 2
75 PTU 2
76 Pufferpumpe 2
77 PTO 3
78 PTU 3
79 Pufferpumpe 3
80 TWS Temperatur 2
81 TWS-Pumpe 2
82 TWS Temperatur 3
83 TWS-Pumpe 3
84 Heiz_Strom_LBS
85 Heiz_Spannung_LBS
86 Heiz_PWM_LBS
87 Offset_LBS
88 Kommunikationszaehler_Leistungsteil
89 Leistungsteil_Fehler
90 HG_Modul_Fehler
91 HK_1_Modul_Fehler
92 HK_2_Modul_Fehler
93 HK_3_Modul_Fehler
94 DFBM_1_Fehler
95 DFBM_2_Fehler
96 DFBM_3_Fehler
97 SOLAR_Modul_Fehler
98 FWM_1_Fehler
99 SSUE_Fehler
100 DIFF_1_Modul_Fehler
Um gezielt einen einzelnen Wert zu holen, habe ich eine Funktion auf der Bash gebastelt:

f_field_nr () {
  VALUE=$(echo $1 | cut -d";" -f"$2")
  echo $VALUE
}

Die vorletze Logzeile hole ich mit diesem Befehl. Die Beistriche werden gleich durch Punkte ersetzt.

X=$(/usr/bin/tail $FILENAME -n2 | /usr/bin/head -n 1 | /bin/sed s/,/./g )

Damit sind die 100 Messwerte zur freien Verfügung. Man kann die einzelnen Werte z.B. an eine API schicken, z.B. die von Thingspeak:

/usr/bin/curl "https://api.thingspeak.com/update?api_key=${APIKEY1}&filed1=$(f_field_nr $X 3)&field2=$(f_field_nr $X 19)"

Oder in eine Datenbank einfügen. Oder an MRTG schicken.

Raspberry Pi am Solarfocus Therminator II

Written by  on Juni 11, 2020

Mit dem gestern in Raspberry Pi 4 als USB Stick dokumentierten Wissen, können wir den Raspberry Pi jetzt an den Solarfocus Therminator II anschließen.
Es handelt sich hier um das alte „Dreh-und-Drück Model“ und nicht um die neuere Touchscreen Version.
Zur Vorbereitung muss im Service Menü das Schreiben der Logfiles auf USB aktiviert sein.
Hier endet jede Garantie. Ändern Sie das nur, wenn Sie sicher sind, dass Sie wissen was sie tun!


Was dann passiert ernüchtert erstmal. Der USB Anschluss liefert nicht genug Strom für den Raspberry Pi 4. Vermutlich nur die im ursprünglichen USB Standard vorgesehenen 500mA, was für den Pi einfach nicht ausreicht. Die Folge ist, dass die Steuerung des Ofen durchstartet. Der Pi startet nicht, die Power LED flackert nur.
Ab hier endet jede Garantie. Ändern Sie das nur, wenn Sie sicher sind, dass Sie wissen was sie tun!
Es muss also mehr Strom her, und das ohne den USB-C Anschluss zu verwenden. Der Pi lässt sich über die GPIO Pins versorgen. Einfach die 5 Volt an Pin 4 und GND an Pin 6 hängen. Entsprechende Anleitungen gibt es im Netz. Ein Handyladegerät mit zumindest 1000mA wird benötigt. Da der USB Anschluss am Ofen auch 5V liefert ist es sicher besser wenn Ofen und Pi nicht getrennt voneinander geschaltet werden.
Daher bietet es sich an, die Stromversorgung aus dem Ofen zu verwenden. Der Therminator II hat mit Anschluss X2 einen 230 Volt Ausgang.
Hier endet jede Garantie. Ändern Sie das nur, wenn Sie sicher sind, dass Sie wissen was sie tun!
Ofen stromlos machen! Einen Elektriker beiziehen!

Die Stromversorgung findet bequem neben der Steuerung einen Platz. Das Kabel lässt sich leicht herausfädeln.

Der Pi könnte sicher auch unter die Abdeckung. Da ich aber WLAN verwende, platziere ich den Pi nicht unter der Metallabdeckung.
Mit einer Ausnehmung an der richtigen Stelle, kann auch die Abdeckung wieder an den Ofen.

Raspberry Pi 4 als USB Stick

Written by  on Juni 10, 2020

Ich suche mindestens seit 2016, Solarfocus Bedienteil, nach einem Gerät, dass sich auf der einen Seite wie ein USB Stick verhält und auf der anderen Seite Daten ins Netzwerk schicken kann. Idealerweise über WLAN.
c’t 2020, Heft 10, S.136ff, Voll aufgebohrt, USB-C-Anschluss des Raspberry Pi 4 ausnutzen, präsentiert die Lösung für das Problem.
Man braucht zuerst einen Raspberry Pi 4 mit Raspbian buster.

# /boot/config.txt
# Device Tree Overlay laden
# im Abschnitt [pi4]
dtoverlay=dwc2
# /etc/modules
# Eröffnet die Konfiguration via SysFS
# Am Ende anhängen
libcomposite

Pi neu starten.
Es wird ein Image von einem USB Stick mit vFAT Dateisystem benötigt. Am einfachsten in Windows formatieren und ein Image mit Win32DiskImager erstellen. 2 GB sollten reichen. Ablegen am Pi unter /media/usbdisk.img.
Die Details kommen aus dem Script initgadget der c’t (Download Link oben!).
Ich habe es soweit gekürzt, dass nur der USB Stick emuliert wird. Zu Beginn wird noch das Image vom USB Stick zum Mounten auf der Pi-Seite vorbereitet. Der Teil muss passieren, bevor ein Lock durch die Gegenstelle passiert.

# /usr/local/sbin/initgadget
losetup -o 32256 /dev/loop0 /media/usbdisk.img
cd /sys/kernel/config/usb_gadget/
mkdir -p pi4
cd pi4
echo 0x1d6b > idVendor
echo 0x0104 > idProduct
echo 0x0100 > bcdDevice
echo 0x0200 > bcdUSB
echo 0xEF > bDeviceClass
echo 0x02 > bDeviceSubClass
echo 0x01 > bDeviceProtocol
mkdir -p strings/0x409
cat /sys/firmware/devicetree/base/serial-number > strings/0x409/serialnumber
echo "Raspberry Pi Foundation" > strings/0x409/manufacturer
echo "Raspberry Pi 4" > strings/0x409/product
mkdir -p configs/c.1/strings/0x409
echo 250 > configs/c.1/MaxPower
echo "Config 1: USB Gadget" > configs/c.1/strings/0x409/configuration
mkdir -p functions/mass_storage.usb0
echo 1 > functions/mass_storage.usb0/stall
echo 0 > functions/mass_storage.usb0/lun.0/removable
echo 0 > functions/mass_storage.usb0/lun.0/cdrom
echo 0 > functions/mass_storage.usb0/lun.0/ro
echo 0 > functions/mass_storage.usb0/lun.0/nofua
echo /media/usbdisk.img > functions/mass_storage.usb0/lun.0/file
ln -s functions/mass_storage.usb0 configs/c.1/
udevadm settle -t 5 || :
ls /sys/class/udc > UDC
# Die Initialisierung als Service aktivieren
/etc/systemd/system/initgadget.service
[Unit]
Description=Raspi 4 USB Gadget
DefaultDependencies=yes

[Service]
Type=simple
ExecStart=/usr/local/sbin/initgadget

[Install]
WantedBy=local-fs.target
#----
cp initgadget.service /etc/systemd/system/
systemctl enable initgadget.service
systemctl start initgadget.service

Jetzt kann man das ausprobieren, indem man den Pi an einen Windows Rechner hängt.

Der „USB Stick“ taucht im Device Manager auf. Man kann ein Test File anlegen.

Dann am Pi mounten

/bin/mount -o ro /dev/loop0  /mnt

Und die Daten auslesen

Es sei darauf hingewiesen, dass man am Pi jetzt besser nichts zurückschreibt ins Image. FAT ist kein Dateisystem dass für gleichzeitige Zugriffe von verschiedenen Rechnern ausgelegt ist. Daher würde ich am Pi nur Read-only mounten. Und immer wenn man die aktuellen Daten verwenden will, neu mounten.

Webserver am Raspberry Pi

Written by  on Januar 19, 2020

Unter Raspian Buster

Apache2 Webserver
MariaDB Datenbank Server
– Certbot

Upgrade to Raspbian Buster

Written by  on Januar 5, 2020

Falls noch jemand das Upgrade von Raspbian Lite auf Buster nicht durchgeführt hat:
pimylifeup.com/upgrade-raspbian-stretch-to-raspbian-buster

PI Setup Buster

Written by  on Juli 15, 2019

Das ist eine Forsetzung zu PI Setup, aber aktualisiert auf Raspbian Buster.

Win32 Imager
Download Link für Image (Version & Kernel)

Einstellungen am PI:

  1. Deutsche Tastatur
  2. Statische IP
    static ip config am eth0
    /etc/network/interfaces.d/eth0

    auto eth0
    allow-hotplug eth0
    iface eth0 inet static
    address 10.0.XXX.XXX
    netmask 255.255.255.0
    gateway 10.0.XXX.XXX
    dns-nameservers 127.0.0.1
    
  3. SSH aktivieren
    service ssh start
    systemctl enable ssh
    
  4. DHCP Client deaktivieren
    service dhcpcd stop
    systemctl disable dhcpcd
    
  5. # Buster ist noch so neu, man muss bestätigen, dass es OK ist, dass sich das Repository von Testing auf Stable geändert hat
    apt-get update --allow-releaseinfo-change
    apt-get update
    apt-get upgrade
    # nicht einmal das DIG Command ist im Image dabei
    apt-get install dnsutils
    
  6. Pihole setup
  7. Pi-hole mit rekursivem Nameserver
  8. interne DNS Zone aufbauen

Raspbian Auflösung

Written by  on Februar 4, 2019

Wenn am Raspberry Pi beim Booten kein Bildschirm angeschlossen ist, dann wird eine ganz minimale Auflösung eingestellt. Das ist ungut, wenn man nur mit VNC, Teamviewer oder ähnlichem darauf zugreifen möchte.

/boot/config.txt – am Ende anhängen

# HDMI auch ohne Monitor in Betrieb nehmen (optional)
hdmi_force_hotplug=1
# DMT-Betriebsmodus aktivieren
hdmi_group=2
# Auflösung: 1024x768 / 60 Hz
hdmi_mode=16
# Auflösung: 1280x768 / 60 Hz
hdmi_mode=23
# Auflösung: 1366x768 / 60 Hz
hdmi_mode=81
# Auflösung: 1920x1080 / 60 Hz (1080p)
hdmi_mode=82

Nur einen hdmi_mode aktivieren!
Liste möglicher Auflösungen
Quelle

PI Setup

Written by  on August 25, 2018

Win32 Imager
Download Link für Image (Version & Kernel)

Einstellungen am PI:

  1. Deutsche Tastatur
  2. Statische IP
    static ip config am eth0
    /etc/network/interfaces.d/eth0

    auto eth0
    allow-hotplug eth0
    iface eth0 inet static
    address 10.0.XXX.XXX
    netmask 255.255.255.0
    gateway 10.0.XXX.XXX
    dns-nameservers 127.0.0.1
    
  3. SSH aktivieren
    service ssh start
    systemctl enable ssh
    
  4. DHCP Client deaktivieren
    service dhcpcd stop
    systemctl disable dhcpcd
    
  5. Pihole setup
  6. DoH (DNS over HTTPS aktivieren
  7. interne DNS Zone aufbauen