1 | #include <genieArduino.h>
|
2 | #include "DHT.h"
|
3 | #include <Wire.h>
|
4 | #include "RTClib.h"
|
5 | #include <stdio.h>
|
6 | #include <stdint.h>
|
7 | #include <ctype.h>
|
8 |
|
9 | RTC_Millis rtc;
|
10 |
|
11 | #define DHT1PIN 30 // PIN für Datenleitung von Temperatur_Sensor_1
|
12 | #define DHT2PIN 32 // PIN für Datenleitung von Temperatur_Sensor_2
|
13 | #define DHT3PIN 34 // PIN für Datenleitung von Temperatur_Sensor_3
|
14 |
|
15 | // Uncomment whatever type you're using!
|
16 |
|
17 | #define DHTTYPE DHT22 // DHT 22 (AM2302)
|
18 | #define Zu_VENTILATOR 31
|
19 |
|
20 | // Initialisierung von DHT Sensoren
|
21 | DHT dht1(DHT1PIN, DHTTYPE);
|
22 | DHT dht2(DHT2PIN, DHTTYPE);
|
23 | DHT dht3(DHT3PIN, DHTTYPE);
|
24 |
|
25 | Genie genie;
|
26 |
|
27 | int Relais1 = 0; //Relais Zuluftventilator
|
28 | int Relais2 = 0; //Relais Abluftventilator
|
29 | int Relais3 = 0; //Relais Umluftventilator
|
30 |
|
31 | void setup ()
|
32 | {
|
33 | pinMode (Zu_VENTILATOR, OUTPUT); //Ausgang für Temp/Feuchte_Sensor_1 Relais
|
34 | //digitalWrite(Zu_VENTILATOR, LOW);
|
35 | pinMode (33, OUTPUT); //Ausgang für Temp/Feuchte_Sensor_2 Relais
|
36 | pinMode (35, OUTPUT); //Ausgang für Temp/Feuchte_Sensor_3 Relais
|
37 | pinMode (41, OUTPUT); //Ausgang für alle Bodenfeuchte_Sensoren
|
38 | pinMode (40, OUTPUT); //Ausgang für Wasserpumpe Relais
|
39 | pinMode (42, OUTPUT); //Ausgang für Magnetventil_1 Relais
|
40 | pinMode (44, OUTPUT); //Ausgang für Magnetventil_2 Relais
|
41 | Serial.begin(115200);
|
42 | genie.Begin(Serial);
|
43 |
|
44 | // following line sets the RTC to the date & time this sketch was compiled
|
45 | rtc.begin(DateTime(F(__DATE__), F(__TIME__)));
|
46 | // This line sets the RTC with an explicit date & time, for example to set
|
47 | // January 21, 2014 at 3am you would call:
|
48 | //rtc.adjust(DateTime(2015,05,12,22,42,00));
|
49 | delay (3500); //let the display start up after the reset (This is important)
|
50 | genie.WriteObject (GENIE_OBJ_FORM, 0, 0); // Select form 0
|
51 |
|
52 |
|
53 | }
|
54 |
|
55 | void loop()
|
56 | {
|
57 | DateTime now = rtc.now();
|
58 | zeit();
|
59 | //feuchtemw();
|
60 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 3, tempmw());
|
61 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 4, feuchtemw());
|
62 | //genie.WriteObject (GENIE_OBJ_USER_LED, 0, Zu_VENTILATOR);
|
63 |
|
64 | if (Zu_VENTILATOR == LOW && (tempmw() > 27 || feuchtemw() > 80)) //Einschalten des Zuluftventilators
|
65 | {
|
66 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 3, tempmw()); //Ausgabe des Mittelwerts am Touch
|
67 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 4, feuchtemw());
|
68 | digitalWrite (Zu_VENTILATOR, HIGH);
|
69 | genie.WriteObject (GENIE_OBJ_USER_LED, 0, Zu_VENTILATOR); //LED sollte leuchten
|
70 | Relais1 = 1;
|
71 |
|
72 |
|
73 | }
|
74 |
|
75 | if (Zu_VENTILATOR == HIGH && tempmw() <=27 && feuchtemw() <= 80 ) //Ausschalten des Zuluftventilators
|
76 | {
|
77 | if(now.second() == 0 || now.second() == 10 || now.second() == 20 || now.second() == 30 || now.second() == 40 || now.second() == 50)
|
78 | {
|
79 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 3, tempmw());
|
80 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 4, feuchtemw());
|
81 | digitalWrite (Zu_VENTILATOR, LOW);
|
82 | genie.WriteObject (GENIE_OBJ_USER_LED, 0, Zu_VENTILATOR); //LED sollte wieder aus sein
|
83 | Relais1 = 0;
|
84 |
|
85 |
|
86 | }
|
87 | }
|
88 | delay(1000);
|
89 | }
|
90 |
|
91 | float tempmw() //Berechnung von Temperaturmittelwert
|
92 | {
|
93 | float t1 = dht1.readTemperature(); //Auslesen der Temperature in Celsius von Sensor 1
|
94 | float t2 = dht2.readTemperature(); //Auslesen der Temperature in Celsius von Sensor 2
|
95 | float t3 = dht3.readTemperature(); //Auslesen der Temperature in Celsius von Sensor 3
|
96 |
|
97 | return( (t1 + t2 + t3) / 3 ); //Errechnen des Mittelwerts
|
98 | }
|
99 |
|
100 | float feuchtemw() //Berechnung von Luftfeuchtkeitmittelwert
|
101 | {
|
102 | float h1 = dht1.readHumidity(); //Auslesen der Luftfeuchtigkeit von Sensor 1
|
103 | float h2 = dht2.readHumidity(); //Auslesen der Luftfeuchtigkeit von Sensor 2
|
104 | float h3 = dht3.readHumidity(); //Auslesen der Luftfeuchtigkeit von Sensor 3
|
105 |
|
106 | return( (h1 + h2 + h3) / 3 ); //Errechnen des Mittelwerts
|
107 | }
|
108 | void zeit()
|
109 | {
|
110 | DateTime now = rtc.now();
|
111 |
|
112 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 0, now.hour());
|
113 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 1, now.minute());
|
114 | genie.WriteObject (GENIE_OBJ_LED_DIGITS, 2, now.second());
|
115 | }
|