1 | !Fumifugium!
|
2 | #include <Wire.h>
|
3 | #include <ESP8266WiFi.h>
|
4 | #include <ESP8266WebServer.h>
|
5 | ESP8266WebServer server(80);
|
6 | const char* ssid = "FRITZ!Box 7490";
|
7 | const char* password = "53639365092847356658";
|
8 | //Signal-Pin des Relais: D1
|
9 | int relay_pin = 5;
|
10 |
|
11 | const int sclPin = D1;
|
12 | const int sdaPin = D2;
|
13 |
|
14 | int16_t temp;
|
15 | int16_t ac1;
|
16 | int16_t ac2;
|
17 | int16_t ac3;
|
18 | uint16_t ac4;
|
19 | uint16_t ac5;
|
20 | uint16_t ac6;
|
21 | int16_t b1;
|
22 | int16_t b2;
|
23 | int16_t mb;
|
24 | int16_t mc;
|
25 | int16_t md;
|
26 |
|
27 |
|
28 | void setup()
|
29 | {
|
30 | Wire.begin(sdaPin, sclPin);
|
31 |
|
32 | pinMode(LED_BUILTIN, OUTPUT);
|
33 | pinMode(relay_pin, OUTPUT);
|
34 | Serial.begin(9600);
|
35 | Serial.println("ESP Gestartet");
|
36 | WiFi.begin(ssid, password);
|
37 | Serial.print("Verbindung wird hergestellt ...");
|
38 | while (WiFi.status() != WL_CONNECTED)
|
39 | {
|
40 | delay(500);
|
41 | Serial.print(".");
|
42 | }
|
43 | Serial.println();
|
44 | Serial.print("Verbunden! IP-Adresse: ");
|
45 | Serial.println(WiFi.localIP()
|
46 | );
|
47 |
|
48 | server.onNotFound([](){
|
49 | server.send(404, "text/plain", "Link wurde nicht gefunden!");
|
50 | });
|
51 | server.on("/", []() {
|
52 | server.send(200, "text/plain", "Startseite");
|
53 | });
|
54 | server.on("/relay_on", []() {
|
55 | server.send(200, "text/plain", "Relais wurde angeschaltet.");
|
56 | relay_on();
|
57 | });
|
58 | server.on("/relay_off", []() {
|
59 | server.send(200, "text/plain", "Relais wurde ausgeschalten.");
|
60 | relay_off();
|
61 | });
|
62 | server.on("/state", []() {
|
63 | server.send(200, "text/plain", String(digitalRead(relay_pin)));
|
64 | });
|
65 | server.begin();
|
66 |
|
67 | Serial.println("Webserver gestartet.");
|
68 | }
|
69 |
|
70 | void set_pointer_to_addr(uint8_t addr)
|
71 | {
|
72 | Wire.beginTransmission(0x77); //Addresse des Bausteins (ef)
|
73 | Wire.write(addr); //fülle Sendepuffer (f6)
|
74 | Wire.endTransmission();
|
75 | }
|
76 |
|
77 | void start_temp_conv()
|
78 | {
|
79 | Wire.beginTransmission(0x77); //Addresse des Bausteins (ef)
|
80 | Wire.write(0xf4); //fülle Sendepuffer (f4)
|
81 | Wire.write(0x2e); //Wandlung starten
|
82 | Wire.endTransmission(); //sende Daten
|
83 | }
|
84 |
|
85 | int32_t calc_temp(int32_t readtemp)
|
86 | {
|
87 |
|
88 | int32_t X1 = int32_t(int32_t(readtemp - int32_t(ac6)) * int32_t(ac5)) / int32_t(32768);
|
89 | int32_t X2 = int32_t(int32_t(mc) * int32_t(2048)) / int32_t(int32_t(X1) + int32_t (md));
|
90 | int32_t B5 = X1 + X2;
|
91 | int32_t T = (B5 + 8) / 16;
|
92 | Serial.print("X1 : ");
|
93 | Serial.println(X1);
|
94 | Serial.print("X2 : ");
|
95 | Serial.println(X2);
|
96 | Serial.print("B5 : ");
|
97 | Serial.println(B5);
|
98 | Serial.print("T : ");
|
99 | Serial.println(T);
|
100 | return T;
|
101 | }
|
102 |
|
103 | int32_t get_temp()
|
104 | {
|
105 | int16_t temp = 0x0000;
|
106 | start_temp_conv(); //start temp-conversion
|
107 | delay(10);
|
108 | set_pointer_to_addr(0xf6); //set pointer to read data temperature reg MSB
|
109 | delay(10);
|
110 | Wire.requestFrom(0x77,2); //read the Byte f6 and f7
|
111 | int32_t UT = get_one_param_32();
|
112 | Serial.print("UT : ");
|
113 | Serial.println(UT);
|
114 | return calc_temp(UT);
|
115 | }
|
116 |
|
117 | int32_t get_one_param_32()
|
118 | {
|
119 | int32_t internal = 0x00000000;
|
120 | int32_t temp = 0x00000000;
|
121 | internal = Wire.read(); //1
|
122 | //Serial.println(ac1);
|
123 | internal = internal<<8;
|
124 | //Serial.println(ac1);
|
125 | internal = internal + 0x000000ff;
|
126 | //Serial.println(ac1);
|
127 | temp = Wire.read() + 0x0000ff00;
|
128 | //Serial.println(temp);
|
129 | internal = internal & temp; //22
|
130 | //Serial.println(ac1);
|
131 | return internal;
|
132 | }
|
133 |
|
134 | uint16_t get_one_param_16u()
|
135 | {
|
136 | int16_t internal = 0x0000;
|
137 | int16_t temp = 0x0000;
|
138 | internal = Wire.read(); //1
|
139 | internal = internal<<8;
|
140 | internal = internal + 0x00ff;
|
141 | temp = Wire.read() + 0xff00;
|
142 | internal = internal & temp; //22
|
143 | return internal;
|
144 | }
|
145 |
|
146 | int16_t get_one_param_16()
|
147 | {
|
148 | int16_t internal = 0x0000;
|
149 | int16_t temp = 0x0000;
|
150 | internal = Wire.read(); //1
|
151 | internal = internal<<8;
|
152 | internal = internal + 0x00ff;
|
153 | temp = Wire.read() + 0xff00;
|
154 | internal = internal & temp; //22
|
155 | return internal;
|
156 | }
|
157 |
|
158 | void getParam()//uint16_t *ac1, uint16_t *ac2, uint16_t *ac3, uint16_t *ac4, uint16_t *ac5, uint16_t *ac6, uint16_t *b1, uint16_t *b2, uint16_t *mb, uint16_t *mc, uint16_t *md)
|
159 | {
|
160 | set_pointer_to_addr(0xaa);
|
161 | Wire.requestFrom(0x77,22); //read the Byte 0xaa
|
162 | ac1 = get_one_param_16();
|
163 | ac2 = get_one_param_16();
|
164 | ac3 = get_one_param_16();
|
165 | ac4 = get_one_param_16u();
|
166 | ac5 = get_one_param_16u();
|
167 | ac6 = get_one_param_16u();
|
168 | b1 = get_one_param_16();
|
169 | b2 = get_one_param_16();
|
170 | mb = get_one_param_16();
|
171 | mc = get_one_param_16();
|
172 | md = get_one_param_16();
|
173 | Serial.print("AC1 : ");
|
174 | Serial.println(ac1);
|
175 | Serial.print("AC2 : ");
|
176 | Serial.println(ac2);
|
177 | Serial.print("AC3 : ");
|
178 | Serial.println(ac3);
|
179 | Serial.print("AC4 : ");
|
180 | Serial.println(ac4);
|
181 | Serial.print("AC5 : ");
|
182 | Serial.println(ac5);
|
183 | Serial.print("AC6 : ");
|
184 | Serial.println(ac6);
|
185 | Serial.print("B1 : ");
|
186 | Serial.println(b1);
|
187 | Serial.print("B2 : ");
|
188 | Serial.println(b2);
|
189 | Serial.print("mb : ");
|
190 | Serial.println(mb);
|
191 | Serial.print("mc : ");
|
192 | Serial.println(mc);
|
193 | Serial.print("md : ");
|
194 | Serial.println(md);
|
195 | }
|
196 |
|
197 | void loop() {
|
198 | server.handleClient();
|
199 | delay(100);
|
200 | getParam();//&ac1, &ac2, &ac3, &ac4, &ac5, &ac6, &b1, &b2, &mb, &mc, &md);
|
201 | delay(100);
|
202 | Serial.println(get_temp());
|
203 | }
|
204 |
|
205 |
|
206 | void relay_on()
|
207 | {
|
208 | digitalWrite(LED_BUILTIN, HIGH);
|
209 | //digitalWrite(relay_pin, HIGH);
|
210 | }
|
211 | void relay_off()
|
212 | {
|
213 | digitalWrite(LED_BUILTIN, LOW);
|
214 | //digitalWrite(relay_pin, LOW);
|
215 | }
|