Feuchtegesteuerte Kellerlüftung

  • Ich möchte an dieser Stelle mein Projekt einer feuchtegesteuerten Kellerlüftung vorstellen, das ich mit einem Pi 3 umgesetzt habe.


    Da ich kein großer Hardwarebastler bin und keine Löcher in die Hauswand bohren wollte, habe ich für Sensorik und Steuerung auf Fertigteile zurückgegriffen.


    Innen- und Außentemperatur und -feuchte werden über zwei Funksensoren ASH 2200 von ELV gemessen:


    [Blocked Image: https://mrpics.bitbucket.io/klima/pics/innensensor.jpg] [Blocked Image: https://mrpics.bitbucket.io/klima/pics/aussensensor.jpg]


    Der Pi liest die Daten über den USB-Empfänger WDE1-2 (ebenfalls ELV) ein. Die Steuerung je eines Zu- und Abluftventilators erfolgt dann über eine USB-Steckdosenleiste Energenie EG-PMS2.


    Dem Pi habe ich noch ein Gehäuse mit 3,5"-Touchscreen von Tontec spendiert. Am Kellerregal sieht das dann so aus (oben im Bild der Empfänger):


    [Blocked Image: https://mrpics.bitbucket.io/klima/pics/installation.jpg]


    Die Software ist im wesentlichen eine Sammlung von Skripten. Über cron wird @reboot ein Shellskript gestartet, daß seinerseits ein Pythonskript aufruft. Sollte sich das Pythonskript beenden, loggt das Shellskript den return code und startet das Skript dann neu.


    Das Pythonskript liest Temperaturen und relative Feuchte per USB ein, berechnet daraus Taupunkt und absolute Feuchte und schreibt alle Werte in RRD-Datenbanken. Die Formeln zur Berechnung von Taupunkt und absoluter Feuchte stammen von http://www.wetterochs.de/wetter/feuchte.html.


    Herzstück der Software ist dann ein weiteres Pythonskript fanctl.py, das folgende Befehle versteht:


    on,off - zum Ein- bzw. Ausschalten der Lüfter
    lock [on,off] <Dauer in Sekunden|inf> - um den Lüfterzustand für die angegebene Zeit zu sperren
    unlock - um den Lüfterzustand zu entsperren


    und schließlich


    cron - mit diesem Befehl wird das Skript alle drei Minuten aufgerufen. Dabei vergleicht es die aktuellen Innen- und Aussenwerte und schaltet die Lüfter entsprechend, sofern sie nicht gesperrt sind. Außerdem erzeugt es Graphiken zum Verlauf und eine kleine HTML-Datei mit den aktuellen Werten.


    Auf dem Display am Pi läuft eine kleine Tkinter-GUI, die die aktuellen Werte, den Zustand des Lüfters, ob und wie lange der Lüfter gesperrt ist, sowie graphisch den Verlauf von absoluter und relativer Feuchte und Lüfterzustand der letzten 24 Stunden anzeigt und manuelles Sperren und Entsperren erlaubt:


    [Blocked Image: https://mrpics.bitbucket.io/klima/pics/pi.jpg]
    [Blocked Image: https://mrpics.bitbucket.io/klima/screens/controller.png] [Blocked Image: https://mrpics.bitbucket.io/klima/screens/lockscreen.png] [Blocked Image: https://mrpics.bitbucket.io/klima/screens/unlock.png]


    Etwas gößere Verlaufsgraphiken, auch für tägliche Durchschnitts-, Minimal- und Maximalwerte, sind über eine Webseite zugänglich, die per nginx ausgeliefert wird. Die Webseite bietet die gleichen Steuerungsmöglichkeiten wie das GUI:


    [Blocked Image: https://mrpics.bitbucket.io/klima/screens/webseite.png]
    [Blocked Image: https://mrpics.bitbucket.io/klima/screens/1w.png]
    [Blocked Image: https://mrpics.bitbucket.io/klima/screens/1Mavg.png]


    Das System läuft jetzt seit etwa einem Monat recht zuverlässig. Leider ist die Lüftung nicht besonders effektiv, evtl. ist unser Keller einfach zu feucht bzw. dringt durch Wände und Boden zu schnell Wasser nach. Wir werden also vermutlich nicht um Dichtungsmaßnahmen herumkommen. Zur Erhöhung der Lüftungseffizienz denke ich zusätzlich über eine automatische Öffnung des Kellerfensters nach.


    Zu tun bliebe noch die Implementierung einer Überwachung des Systems. Eventuell lese ich mich dazu mal in Icinga ein. Derzeit tut's aber noch die händische Überwachung durch regelmäßiges Draufschauen.


    Der Code ist komplett auf Bitbucket verfügbar:


    https://bitbucket.org/m_reiter/klima


    Falls jemand etwas Ähnliches vorhat, bin ich gerne bei der Installation behilflich.

    Edited once, last by Manul ().

  • Hallo Manul,


    uiii! Einer mehr, der was kann!


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • So was ähnliches habe ich mir auch schon mal gebaut.


    Folgende Probleme sind aber aufgetreten:
    (Die bei dir eventuell auch kommen können)


    Batterien werden leer (von den Sensoren.
    Sensoren sind Schrott (Leider zu ungenau).
    Funkprobleme mit Aussensensor (Wenn Kellerwand zu dick)
    Kein elektrisch geprüftes Gerät (Versicherung).
    Was passiert, wenn der Ventilator unabsichtlich läuft (feuchter Keller-> Schimmel).
    Ein paar so Entfeuchterdinger sind patentgeschützt.Google LogyDry.


    Bin dann auf etwas fertiges ausgewichen:
    http://www.ramser-elektro.at/der-hydrothyr/


    Klar ist die ferige Lösung ein vielfaches teurer als deine.
    Aber die funktioniert eben zuverlässig und die Versichrung klopft einen
    auch nicht auf die Finger.


    Da gibt es übrigends noch andere im Web.
    Da kann man sich viel abschaun ;-)


    EDIT:
    Lass das mit den automatischen Fensteröffnern.
    Zu teuer und ein Einbrecher freut sich auch.
    Ventilator ist da weit bessser.

    Edited once, last by NetRap ().

  • Hallo NetRap,


    vielen Dank für Deine Anmerkungen zu meinem Projekt! Über die meisten der Punkte, die Du ansprichst, habe ich mir in der Tat auch schon Gedanken gemacht, sehe sie aber weniger kritisch als Du.


    Mit der Versicherung sehe ich erst mal kein Problem. Ich habe ja nicht selbst Elektroinstallationen vorgenommen, sondern lediglich fertig gekaufte Geräte in Steckdosen gesteckt. Ob es sich dabei um eine Waschmaschine, einen Gefrierschrank oder eben eine USB-Steckdosenleiste oder einen Lüfter handelt, scheint mir kein großer Unterschied zu sein.


    Daß ich bei Funksensoren auf die Batterien achten und diese regelmäßig wechseln muß, ist mir klar - auch ein Grund, warum ich noch eine Überwachung einrichten will, die mich alarmiert, wenn von einem Sensor längere Zeit keine Daten kommen. Das war mir aber lieber, als die Wand zu durchbohren - wenn's auf die Dauer zu sehr nervt, kann ich immer noch auf kabelgebundene Sensoren umsteigen, jetzt schaue ich mal, wie lange die Batterien halten. Funkprobleme mit dem Aussensensor hatte ich in der Tat schon, da diese aber nach ca. zwei Wochen unterbrechungsfreiem Betrieb gleich für 24 Stunden und dann gehäuft auftraten, gehe ich von einem defekten Sensor aus und habe diesen bereits umgetauscht. Der neue Sensor hat bis jetzt zuverlässig und unterbrechungsfrei gesendet.


    Ich habe übrigens den Eindruck, daß die Sensoren recht genau sind. Ich habe zwar keinen geeichten Sensor zum Vergleich, nutze zur Verifikation aber Daten der nächstgelegenen Station des DWD (graue Linie, oben im Wochenverlauf zu sehen). Die Temperaturmessungen liegen sehr gut aufeinander, meine Feuchtemessungen machen extreme Ausschläge nicht ganz mit - ich halte das aber in meinem größtenteils versiegelten Vorgarten im Vergleich zur Freifeldmessung des DWD durchaus für realistisch.


    Warum der Ventilator unabsichtlich laufen sollte, ist mir nicht ganz klar. Das System schaltet die Ventilatoren ab, wenn einer der Sensoren keine gültigen Daten liefert. Der Pi wird per watchdog überwacht und sollte bei einem Absturz automatisch rebooten. Eine externe Überwachung kommt, wie gesagt, wahrscheinlich auch noch. Ich fühle mich damit nicht schlechter abgesichert als mit einem kommerziellen System.


    Daß ich irgendwelche Patente verletzen könnte, ist mir, ehrlich gesagt, nicht in den Sinn gekommen. Ich halte es aber auch für fraglich, ob die prinzipielle Idee, einen Ventilator abhängig von Innen- und Außenfeuchte ein- oder auszuschalten, patentierbar ist. Dafür scheint es mir auch zu viele Anbieter entsprechender Systeme zu geben. Möglicherweise sind bei einigen Systemen Details der Implementation patentiert, aber daß ich die mit meinem relativ naiven Ansatz zufällig nachgebaut habe, halt ich für eher unwahrscheinlich.


    Wie gut ich mit dem System letztlich fahre, kann nur die Zeit zeigen - wenn sich am Status was ändert, werde ich hier berichten. Bis dahin noch mal vielen Dank für Deine Anregungen!

  • Er verkauft es ja nicht sondern nutzt es ja nur für sich selber, welch wunder wie einfach man dinge patentieren kann... hätte ich nie gedacht das man sich diese Idee patentieren kann.

    :shy: Legastheniker :shy:


    wer fehler findet darf nachsicht haben


    Klick>Youtube Channel<Klick

  • Interessantes Projekt! :thumbs1:


    Ein paar Verbesserungschläge zum Code hätte ich:
    - Du stellst in so ziemlich jedem Script separat $BASEDIR usw ein.. Das ist etwas suboptimal, man müsste dann 10 Dateien ändern um nur diese Einstellung anzupassen. Besser wäre es du legst dir eine Konfigurationsdatei an auf die alle anderen zugreifen. Da würde sich zum Beispiel eine .ini anbieten die von python, bash und php gleichermaßen gut handbar wäre, aber auch eine *.cfg wäre kein Problem.
    - Wenn ich das richtig verstehe läuft permanent "checkrecsensors.sh" im Hintergrund? Was passiert wenn dieses Script, warum auch immer, crasht? ;) Besser wäre wenn du jede Minute ein watchdog Script via crontab ausführst um zu prüfen ob das recsensors.py Script noch aktiv ist. Würde ein Backgroundprocess sparen :)
    - Ich bin nicht son Fan von RRD da das nur statische Bilder erzeugt. Evtl. wärs eine Überlegung wert für TKinter zum Beispiel matplotlib zu verwenden um eine Echtzeitdarstellung zu realisieren und fürs Web würde ich HighCharts empfehlen :D Alternativ verzichtest du vollständig auf einen Webserver wie nginx und programmierst das mithilfe von bottle oder tornado direkt/nativ in python und kannst dann auch dort matplotlib verwenden. Oder (was allerdings ziemlich dirty wäre) du erstellst ein separates python Script nur für matplotlib und führst das dann via php aus. Ich persönlich würde den Weg über bottle/tornado wählen :fies:
    Beachte auch dass das ständige erzeugen der RRD Bilder die SD belastet. Evtl. wärs gut dafür ein tmpfs zu erzeugen, sonst bootet dein Pi irgendwann nicht mehr (zB nach einem ungewollten Stromausfall).


    Ansonsten: Weiter so!


    Zum Thema Keller und Schimmelbildung hatte ich auch mal einen Thread - in dem wurde mir geraten auch die Temperatur der Wand zu messen denn dort bildet sich der Schimmel... Vieleicht findest dort noch ein paar nützliche Infos: http://www.forum-raspberrypi.d…er-feuchtigkeit-im-keller

  • Danke für Deine Hinweise!


    Die separate config-Datei hatte ich auch schon angedacht, der jetzige Zustand ist halt historisch gewachsen. ;) Wenn ich mal (zu)viel Zeit habe, setze ich das vielleicht noch um.


    Das gilt ähnlich auch für den Vorschlag der Überwachung des recensors.py via crontab. ;)


    HighCharts hatte ich mir angeschaut, wollte aber bei einer Open Source Lösung bleiben. Ansonsten reicht mir der relativ statische Webzugang erst mal, das war halt das, was ich mit meinen HTML-Kenntnissen aus den 90ern (und ein bisschen PHP) schnell hinbekommen habe. bottle/tornado anschauen kommt aber ebenfalls auf die TODO-Liste.


    Die Graphiken werden übrigens bereits in einem tmpfs erzeugt, das hatte ich im ersten Post vergessen zu erwähnen.

  • Ich finde Plotly.js echt super. Ist Open Source und lässt sich sehr einfach über javascript einbinden. Ausserdem kannst du damit auch interaktive Graphen erstellen... :bravo2:

  • Hallo,


    ich finde deinen Artikel super interessant und habe ein paar Fragen dazu.
    Könnten wir hierzu separat mailen?


    Danke und Gruß

  • Hallo goeoenk,


    im Prinzip gerne. Da der Zweck eines Forums allerdings m.E. der Austausch ist, würde ich mir vorbehalten, Teile unserer Kommunikation, die auch für andere interessant sein könnten, hier im Thread zu veröffentlichen. Einverstanden?

  • Ich habe dem System jetzt auch eine Überwachung spendiert: Auf einem Pi 2 habe ich icinga2 installiert und den Keller-Pi als satellite konfiguriert. Dafür habe ich ein kleines Nagios plugin und eine entsprechende Konfiguration für die services geschrieben. So sieht das ganze in icingaweb2 aus:


    icingaweb2.png


    Ich werde u.a. gewarnt, wenn der cronjob nicht läuft oder wenn die Sensoren über längere Zeit (Batterien!) keine Daten liefern.

  • im Prinzip gerne. Da der Zweck eines Forums allerdings m.E. der Austausch ist, würde ich mir vorbehalten, Teile unserer Kommunikation, die auch für andere interessant sein könnten, hier im Thread zu veröffentlichen. Einverstanden?
    [/quote]


    Gerne.
    Würdest du mir dennoch deine Mailadresse mitteilen oder mir eine Nachricht schicken?

  • Ich habe Dir heute nachmittag eine Nachricht geschickt. Oben rechts neben Deinem Benutzernamen ist ein Glockensymbol mit einer Zahl auf rotem Hintergrund daneben - wenn Du da draufklickst, solltest Du zu Deinen Nachrichten kommen.

  • Welche Lüfter hast du denn für die Zu- und Endlüftung im Einsatz?


    Ich bin wärend meiner Recherchen auch auf "FHEM" gestoßen, das Ähnliches realisert. Hat hier jemand schon Erfahrung mit gesammelt?

  • Diesen hier für die Zu- und diesen für die Abluft, jeweils in 100mm in der Variante "Turbo". Die Lüfter laufen zuverlässig und relativ ruhig. Wie oben geschrieben, bin ich mit der Lüfterleistung eher nicht zufrieden, ob das an den Lüftern oder einer ungünstigen Anordnung meinerseits liegt, kann ich nicht sagen.


    FHEM hatte ich mir kurz angeschaut, es hat mir aber - ohne daß ich das rational begründen könnte - auf Anhieb eher nicht zugesagt. Daher habe ich mich für eine Eigenlösung entschieden.

  • Hallo Manul,


    geniale Lösung und Umsetzung der Kellerlüftung. Auch wenn noch nicht alles so funktioniert, wie du dir das wünschst (Keller immer noch feucht).
    Vielen Dank, dass du deine Arbeit hier teilst. :thumbs1:
    Ich bin zufällig hier auf Deinen Beitrag gestoßen, als ich auf der Suche nach einer Lösung für meinen im Sommer doch sehr feuchten Keller war.
    Ich hatte schon eine Kauflösung ins Auge gefasst, http://www.feuchtemauern.net/product_info.php?products_id=27 .
    Wobei die o.g. Lösung doch sehr teuer ist und mir nicht die gewünschte Flexibilät läßt. Da finde ich deine Umsetzung mit den Funksensoren ASH 2200 von ELV und deren Anbindung schon wesentlich genialer.
    Also habe ich mir heute gleich mal deine Liste mit verbauter Hardware vorgenommen und meine Bestellung losgeschickt. Wobei die Entscheidung zu den Lüftern noch nicht gefallen ist.
    Werde mich bei dir Melden und die Umsetzung posten.


    Ich habe noch einige Tipps für dich und auch noch einige Fragen.
    Tipps:
    - Mir ist bei den Bildern aufgefallen, dass du den Innensensor im Keller relativ weit von der Wand angebracht hast. Ich glaube es wäre besser wenn du den Sensor an der Kellerwand befestigen würdest, da diese doch noch ein paar °C kühler sein kann.


    - In dem Skript fanctl.py setzt du die Konstante "DPmargin = 2.0 # Mindestdifferenz Taupunkt (zum Einschalten)". Bei vielen Anbietern von Komplettlösungen wird dieser Wert als Default mit 5.0 belegt. Vielleicht hilft dir das weiter.


    - Außerdem wird bei einem feuchten Keller eine Intervallllüftung entpfohlen, d.h. 10 Min lüften und danach 30 Minuten Pause, damit die von außen zugeführte trockene Luft, die Feuchtigkeit aus den Kellerwänden aufnehmen kann.


    Ich hoffe bei den Tipps war etwas dabei was dir bei der Perfektionierung des Systems weiterhilft.


    Was ich noch nicht so ganz verstanden habe wo setzt du den die Konstante unlocktime ?


    Vielleicht wäre es zum Verständnis wirklich cool, wenn du eine cfg oder ini-Datei mit den Konstanten bereitstellen könntest.



    Viele Grüße
    YoYo