FHEM macht den Gecko glücklich – Terrarium/Aqua Steuerung mit einem Raspberry und FHEM

Categories: Aqua, FHEM, Terra, µc
Comments: No Comments
Published on: 19. Dezember 2015

beereEs ist ja bekannt, dass FHEM super auf einem Raspberry Pi läuft. Über die Installation werde ich hier also nicht weiter eingehen, da gibt es schon tolle Anleitungen im Netz (zb. auf meintechbog.de). Da in einem Terrarium oft mehrere Parameter überwacht werden sollen, auch Temperaturen aus unterschiedlichen Bereichen gleichzeitig, lohnen sich Funksender nicht wirklich. Also musste eine lokale Installation her. Lokal hat außerdem den Vorteil, dass gleich noch alle benötigten Verbraucher ebenfalls mit geschaltet werden können. Und mit dem Zusatz FHEM2FHEM kann auch gleich an den FHEM Hauptserver „berichtet“ werden.

 

Es wurde ein Raspberry 1 mit einem piface und einer 4 Port Relais Karte verwendet.

Amazon Link

IMG_4112

Die Relaiskarte wurde auf einem Brett mit 4 Steckdosen montiert. An den Steckdosen ist folgendes angeschlossen:

  • 3’er Steckdose für Licht (Hauptlampe: 70W Bright Sun, LED Grundbeleuchtung)
  • Heizstrahler 2 x 50 Watt Halogen
  • Beregnungspumpe
  • Deckenlüfter 2 x 120mm PC Lüfter

Steckdosen

 

Die Temperaturen werden über den OneWire Bus mit 4 DS1820 Sensoren gemessen. Drei davon wurden in einem Aluminium Rohr im unteren, mittleren und oberen Bereich untergebracht. Der vierte Sensor sitzt direkt un der Hauptbeleuchtung an der obersten Stelle im Terrarium. Diese Position wird sehr gerne von den Geckos als Sonnenplatz wahrgenommen und sollte nicht 35° C überschreiten.

Das piface, um Verbraucher überhaupt schalten zu können, wurde folgendermaßen in FHEM definiert:

####### PIFACE #######

define Relais PIFACE

Die Ausgänge vom piface können z.B.mit : set Relais X 1 ein und mit set Relais X 0 ausgeschaltet werden. Das X steht hierbei für den jeweiligen Port.

 

Beispiel Licht:

Das Haupt- und das Grundlicht soll von morgens 10.00h bis Abends 22.00h eingeschaltet sein. Mit dem DOIF Modul lassen sich bestimmte Zustände oder Ereignisse abfragen und einen Befehl absetzen. Das Commando set DummyA set Terra_Licht off/on wird an den Hauptserver übertragen um den jeweiligen Zustand zu visualisieren und loggen.

####### BELEUCHTUNG TERRARIUM #####

define Terra_Beleuchtung DOIF ([10:00-22:00]) (set Relais 3 1, set DummyA set Terra_Licht on) DOELSE (set Relais 3 0, set DummyA set Terra_Licht off)

 

Beispiel Heizung:

Damit es im Sommer nicht zu warm und im Winter nicht zu kalt wird, soll FHEM die Heizstrahler bei bestimmten Temperaturen einschalten. Man bedenke, dass ein Heizstrahler bei 30° im Zimmer nicht unbedingt empfehlenswert ist 🙂

Mit diesem DOIF wird nur zwischen 11.00h und 20:00h und wenn die Temperatur  am Sonnenplatz (Terra_1) unter 27° abfällt, der Heizstrahler eingeschaltet. Die nächste Bedingung fragt den gleichen Sensor ab und schaltet bei über 33° wieder ab. Um sicherzustellen, dass der Heizstrahler wirklich Nachts aus ist, habe ich in der letzten Bedingung um 20:00:05 den Strahler definitiv abgeschaltet.

####### HEIZSTRAHLER TERRARIUM #######

define Terra_Heizung DOIF ([11:00-20:00] and [Terra_1:temperature] < 27) (set Relais 2 1, set DummyA set Heizstrahler on) DOELSEIF ([Terra_1:temperature] > 33) (set Relais 2 0, set DummyA set Heizstrahler off) DOELSEIF ([20:00:05]) (set Relais 2 0, set DummyA set Heizstrahler off)

 

Beispiel Lüfter:

Im Sommer den Heizstrahler nicht einzuschalten ist die eine Sache. Es hat sich herausgestellt, das ein wenig Luftzug durch die Lüfter ebenfalls kühlen. Die Lüfter sollen ebenfalls nach jedem Beregnen und bei Dunkelheit für 15min eingeschaltet werden.

####### LÜFTUNG TERRARIUM #######

define Terra_Luefter DOIF ([21:45-22:30] or [11:00:00-11:15:00] or [14:30-14:45] or [17:30-17:45] or [Terra_3:temperature] >= 27) (set Relais 4 1, set DummyA set Luefter on) DOELSEIF ([Terra_3:temperature] <=19) (set Relais 4 0, set DummyA set Luefter off) DOELSE (set Relais 4 0, set DummyA set Luefter off)

 

Beispiel Beregnung:

Wesentlich einfacher gestrickt ist die tägliche Beregnung. Im Beispiel wir 3 mal am Tag für eine Minute die Pumpe eingeschaltet. Ebenfalls wird der Dummy wieder auf dem Haupt FHEM Server aktualisiert.

####### BEREGNUNG TERRARIUM #######

define Terra_Pumpe DOIF ([11:00:00-11:01:00] or [14:30-14:31] or [17:30-17:31]) (set Relais 5 1, set DummyA set Terra_Beregnung on) DOELSE (set Relais 5 0, set DummyA set Terra_Beregnung off)

 

Beispiel Temperaturmessung:

Damit erfolgreich angeschlossene OneWire Sensoren in FHEM Auslesen werden können, müssen diese auch definiert werden. In diesem Beispiel wird der Sensor am Sonnenplatz mit FHEM bekannt gemacht.

#### GPIOS DS18s20 ####

define Terra_1 GPIO4 10-000802260252
attr Terra_1 event-on-change-reading temperature
attr Terra_1 stateFormat {sprintf „%.1f °C“, ReadingsVal($name, „temperature“, 0)}

Dazu ein passendes notify, damit die andere FHEM Installation auch die aktuelle Temperatur mitbekommt.

define Terra1 notify Terra_1 {my $terra1=ReadingsVal(„Terra_1″,“temperature“,0);; fhem („set DummyA set Temp1_terra $terra1“)}

 

Und was ist mit dem Aquarium?

Beim Aquarium passiert nicht ganz so viel. Der Heizregler verrichtet sehr zuverlässig seinen Dienst und das Licht wird mit einem kleinen LED Computer super den ganzen Tag über simuliert. Ein paar Kleinigkeiten gibt es aber doch. Zum Einen ist es schön die Temperatur auch FHEM zu sehen, zum anderen kann man prima die tägliche Düngezufuhr steuern. Für die Messung der Temperatur wurde einfach die wasserdichte Variante des DS1820 benutzt. Für den Dünger wurde am raspberry eine weitere Relaiskarte angeschlossen und zwei Schlafpumpen angesteuert. Damit kann man ziemlich genau in ml dosieren, für einen ml brauch die Pumpe ca 3,7s

Die Pumpen gibt es hier: EBAY

####### DÜNGERPUMPE AQUARIUM EISEN #######
define Aqua_Pumpe_FE DOIF ([08:00:00-08:00:12]) (set Relais 7 1, set DummyA set Aqua_FE on) DOELSE (set Relais 7 0, set DummyA set Aqua_FE off)
####### DÜNGERPUMPE AQUARIUM NPK 3,7s/ml #######
define Aqua_Pumpe_NPK DOIF ([18:00:00-18:00:24]) (set Relais 6 1, set DummyA set Aqua_NPK on) DOELSE (set Relais 6 0, set DummyA set Aqua_NPK off)




Melde dich für meinen Newsletter an

Archiv
Kategorien
Login

Welcome , today is Mittwoch, 22. November 2017