Soooooo - wie versprochen gibts noch ein paar Einzelheiten zu meinem Aufbau
Vorbereitung des Raspberrys:
Installiert habe ich das Raspberry Pi OS Lite, das heist ohne Desktop Ansicht - im Prinzip eine abgespeckte Version, in welcher nur die notwendigsten Sachen installiert sind. Um nach der Installation auf das RPi zugreifen zu können muss auf der SD-Karte eine Datei "ssh" erstellt werden (damit wird der Zugriff über ssh aktiviert). Auserdem habe ich in meinem Fall noch die Datei "wpa_supplicant.conf" erstellt und konfiguriert damit sich das RPi beim ersten Start in mein WLAN einwählt (Ein Netzwerkkabel tuts auch). Jetzt die Karte und den Stecker rein und es kann losgehen.
Da ich in dem Bereich wo der Kühlschrank steht nur einen billigen Repeater ohne Netzwerkanschluss habe Betreibe ich das RPi die ganze Zeit über WLAN. Das hat den einen riesigen Nachteil - sollte das WLAN einmal ausfallen wird das RPi nicht wieder damit verbinden (außer man konfiguriert sich eine entsprechende bash Datei und lässt diese alle x Minuten über cron laufen) und damit hat mein keinen Zugriff mehr darauf. Selbiges gilt natürlich wenn das WLAN aus welchen Gründen auch immer gar nicht erreichbar ist. Deshalb habe ich das RPi so Konfiguriert, dass es einen eigenen Hotspot erstellt, sollte das WLAN nicht funktionieren. Eine perfekte Beschreibung dazu gibt es hier:
https://www.raspberryconnect.com/projec ... pot-switch
--> Da ich inzwischen schon des öfteren Probleme mit der Verbindung hatte und das oben genannte Vorgehen zwar funktioniert, allerdings nur wenn das WLAN von Anfang an fehlt (der cronjob bzw. das Script hat aus welchen Gründen auch immer nicht funktioniert) habe ich mir einen neuen Repeater bestellt und werde das RPi in Zukunft über Ethernet verbinden.
Als nächstes über apt NodeRed und SQLite installieren. Wer einen Sensor wie den bme280 nutzt muss noch i2c aktivieren:
https://pypi.org/project/RPi.bme280/
Ich hab für Testzwecke noch phpLiteAdmin installiert - damit kann man dann über den Browser den Inhalt der Datenbank anschauen, Tabellen erstellen, exportieren, ...
Jetzt noch den NodeRed Flow importieren und das Python Script an den richtigen Ort kopieren (das mache ich mit FileZilla) und wir sind startbereit.
Die Oberfläche:
Auf TLS habe ich, da ich das Raspberry nur in meinem LAN nutzen werde, verzichtet (außerdem finde ich diese ganze Zertifikatsgeschichte nicht gerade trivial...). Falls doch mal von außerhalb etwas geschaut werden muss gibt es einen Telegrambot oder ich verbinde mich über ein RPi, welches immer an meinem Router hängt und als OpenVPN Server fungiert, in mein LAN (kann ich nur empfehlen - ist auch super wenn man in Hotels oder Firmen mit restriktiven Firewalls ist - einfach über TCP 443 und tls-crypt dann geht alles

).
- Aktuelle Werte
Zeigt die aktuelle Temperatur, die aktuelle Luftfeuchte und die Schaltzustände (nicht änderbar) der einzelnen Gerätschaften an. Außerdem kann man hier die Kühlschranklampe einschalten und Fehler zurücksetzen (wenn Fehler zurückgesetzt wurde bekommt man über Telegram eine Nachricht sobald die Temperatur oder Luftfeuchte über oder unter einen gewissen Bereich fällt - dass man nicht zugespammt wird, wird die Nachricht nur einmal verschickt und danach müsste man dann wieder den Fehler zurücksetzen)
- Report
1 zu 1 von valki abgeschrieben und leicht angepasst - finde den Filter echt genial!
- Einstellungen
Hier können die einzelnen Gerätschaften , sowie die Automatiken ein und ausgeschaltet werden. Außerdem werden hier auch die Abweichungen eingestellt. Generell ist es so, dass der eingestellte Wert durch die Abweichung unter und überschritten werden darf und dann darauf reagiert wird. Bsp: Temperatur auf 2C, Abweichung 2K --> Bei 4C geht die Kühlung an, bei 0C würde theoretisch die Heizung angehen (ist noch nicht verbaut) - Luftfeuchte verhält sich analog. Wenn also eine Temperatur von 2C und eine Abweichung von 2K eingestellt wird, wird sich die Temperatur zwischen 2 und 4 Grad bewegen.
Der Mess- und Regelintervall gibt an wie oft in Python der Loop über den Sensor und die Prüfung ob ein Gerät ein bzw. ausgeschaltet werden muss. Die Aktualisierung im Reiter Aktuelle Werte ist daher auch immer nur so genau wie die hier eingestellten Sekunden (kann ohne Probleme auch auf 1s gestellt werden).
Der Speicherintervall gibt an wie oft die Temperatur und die Luftfeuchte in die Datenbank geschrieben werden soll (30s finde ich ausreichend um schöne Graphen zu bekommen).
- RPi Control
Enthält Auslastungs- und Temperaturübersichten des RPi - hier kann auch ausgeschaltet oder neu gestartet werden.
- Telegram Bot
status - Akutelle Temperatur, Luftfeuchte, Schaltzustände, ...
lampe - schaltet die lampe an bzw. aus (um nicht immer die Website aufzurufen - geht auf dem Handy schneller)
Versenden von Fehlermeldungen wenn Temperatur +/- 1,5C über bzw. unter der eingestellten Temperatur plus bzw. minus der Abweichung ist - Luftfeuchte analog dazu mit 10% (kann im Python Script angepasst werden)
Alle eingestellten Werte werden direkt bei der Umstellung in eine separate Tabelle in der SQLite Datenbank geschrieben und bei einem Neustart automatisch geladen. Sollte sich also iwas aufhängen (was bisher noch nicht passiert ist) einfach Kabel ziehen und wieder rein und alles funzt wie vorher.
Hardware und Verkabelung:
Hab ich im Prinzip im ersten Post schon erwähnt - ist relativ unspektakulär. Den Kühlschrank habe ich über die Anschlüssen am Thermostat angeschlossen. Einfach die zwei Kabel abgezogen, verlängert und an das Relais angeschlossen. Im selben Gehäuse befindet sich auch der Schalter für die Lampe - genau selbes Spiel.
Jede Steckdose ist an jeweils ein Relais angeschlossen, damit lassen sich dann alle anderen Geräte ohne Modifikationen betreiben (außer der Entfeuchter musste überbrückt werden). Dafür Die Nullleiter von Steckdose zu Steckdose geführt und den letzten direkt an einen Schukostecker - die Phasen jeweils an ein Relais, nach dem Relais alle Verbinden und danach wieder an den Schukostecker.
Der Luftfeuchte- und Temperatursensor kann mit eine Patchkabel direkt ans RPi angeschlossen werden. Das habe ich, um Störungen zu vermeiden, separat mit Abstand zu den Stromleitungen verlegt und ein separates Loch im Kühlschrank gebohrt (im oberen drittel). Ans Ende vom Patchkabel habe ich Breadboardstecker gelötet und die Gegenstücke an die Sensorplatine - so könnte ich bei einem defekt einfach die Kabel ziehen und wäre innerhalb von einer Minute wieder startklar (ein Ersatzsensor ist heute gekommen

)
Standort und Isolierung:
Die ausenseiten (Boden, Deckel, Links, Rechts) habe ich mit 20mm Styropor umhüllt und vorne 20mm überstehen lassen um noch eine Tür einzupassen (die ist leider noch nicht fertig...) - Ich hoffe die Tür bringt dann eine bemerkbare Verbesserung, nach der Dämmung der aussenseiten konnte ich keine Signifikante Veränderung der kurven bzw. Schaltzeitpunkte feststellen...
Was definitiv am meisten gebracht hat war den Kühlschrank ca. 20cm von der Wand wegzuziehen (vorher ca. 5cm Abstand). Dadurch haben sich Kühlphasen um ca. 10% verringert (Habe auch schon überlegt kurz nach einschalten der Kühlung einen kleinen Ventilator an der Hinterseite einzuschalten um die Abwärme besser abtransportieren zu können).
Jetzt reicht es für heute erst mal wieder. Ich hoffe es ist euch nicht zu viel Text

als nächstes kommt dann die Erläuterung der NodeRed Steuerung und des Python Scripts.