Projekt Schildkröten-Gehege - Heizungssteuerung

Begonnen von sbiermann, 04 September 2017, 15:15:27

Vorheriges Thema - Nächstes Thema

sbiermann

Holas,
mein Bruder hat sich als Hobby 2 Landschildkröten zugelegt und für die Tierchen ein Außengehege (2m x 1,5m) gebaut. Soweit alles gut, jetzt sollen die Tiere es nicht zu kalt haben und daher soll eine Steuerung für eine Heizung rein. Wozu also nicht FHEM nutzen um das zu steuern. Es gibt daher nun folgende Komponenten:
- Schlafhaus mit Wärmekabel im Deckel
- Gehege mit Wärmestrahler PAR38 und Dunkelstrahler mit Infrarot

Insgesamt gibt es 3 Temperaturfühler (DHT22) die die Temperatur und Luftfeuchtigkeit im Schlafhaus bzw. Gehege messen. Die "Heizungen" werden über Steckdosen bzw. Relais Ein oder Aus geschaltet. Es gibt einen dedizierten Raspberry Pi Zero W mit PiCam und installierten FHEM. Die Relais werden über das RPI_GPIO Modul geschaltet. Die DHT22 Werte kommen minütlich über MQTT rein.

Im Schlafhaus soll die Temperatur wie folgt geregelt werden:
- Dezember bis Februar <4° Heizung an, bei 6° aus
- März <9° Heizung an, bei 11° aus
- April bis Mai <11° an, bei 13° aus
- Juni <13° an, bei 16° aus
- Juli bis August <15° grad an, bei 17° aus.
- September <13° an, bei 15° aus
- Oktober <9° an, bei 12° aus
- November <7° an, bei 10° aus

Für den Dunkelstrahler gelten die gleichen Werte wie beim Schlafhaus.

Für den Wärmestrahler PAR 38 gilt:
- Februar bis September 8-17 Uhr aktiv außer Temperatur im Frühbeet >25 grad dann aus.
- Oktober von 8-14 Uhr aktiv außer Temperatur im Frühbeet >25 grad dann aus.

Die Hardwareseite ist soweit klar und größtenteils umgesetzt. Was mich aber interessieren würde, wie würdet ihr die Steuerung der verschiedenen "Heizungen" in FHEM machen würdet? Ich schwanke im Moment zwischen THRESHOLD und DOIF bei der Umsetzung. THRESHOLD klingt erstmal ganz sexy wegen den Schwellwerten, sowas ähnliches habe ich mit meiner Badezimmer Lüftung umgesetzt. Was die Sache komplizierter macht, ist das es pro Monat oder Monate unterschiedliche Schwellwerte an Temperaturen gibt. Was dann zum Beispiel beim Schlafhaus dann 9 THRESHOLD Definitionen wären. Wovon pro Monat immer nur eine aktiv ist, die anderen nicht. Die einzelne THRESHOLD Definition würde man dann per AT-Befehl aktivieren. Ist insgesamt dann doch recht kompliziert, daher die Frage gibt es einfachere Lösungen mit FHEM?

Viele Grüße
Stefan

amenomade

ZitatWas die Sache komplizierter macht, ist das es pro Monat oder Monate unterschiedliche Schwellwerte an Temperaturen gibt.
Genau deswegen würde ich eher mit DOIF machen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Hollo

#2
Nur mal so ein Gedankenspiel...

- 1 Dummy für Einschalttemp und 1 Dummy für Ausschalttemp
- in jedem Dummy jeweils attr bzw. userreadings für die Monate Jan bis Dez
- in diesen Attributen/Userreadings dann der gewünschte Tempwert

Für die Threshold-Definition dann basierend auf dem aktuellen Monat die Variablen für Ein- bzw. wieder Ausschalten mit dem aktuell zugehörigen Wert des Userreadings nehmen.
   

P.S.:  Da es sich um Lebewesen handelt, würde ich noch einen zusätzlichen Temp-Sensor als "Überwachung" einsetzen.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

sbiermann

Da ich noch nie mit userReadings gearbeitet habe ganz doof gefragt, wie würde denn so eine Syntax für den Monat März aussehen?

Damian

Nach der Definition eines THRESHOLD-Moduls brauchst du noch das passende Zeit-Programm zum Setzen der Soll-Temperatur


DOIF (($month<=2 or $month==12 ) and  [00:00]) (set mythreshold desired 4, set mythreshold hysterisis 2)
DOELSEIF (($month==3) and  [00:00]) (set mythreshold desired 11, set mythreshold hysterisis)
usw.


Wenn die Hysterese immer 2 Grad betragen soll, dann kann du sie direkt im THRESHOLD-Modul definieren und brauchst sie nicht jedes mal zu setzen. Statt einer festen Zeit, kannst du auch mit Zeitintervallen arbeiten [07:00-16:00].

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF