Browse code

Adaugat functia de UPTIME la fiecare ora

Andrei Bucur authored on 09/03/2018 11:31:08
Showing 7 changed files
... ...
@@ -8,7 +8,7 @@
8 8
 //ESP8266-01 nu are suficienta memorie pt update http
9 9
 const char* mqtt_user="64x35up";
10 10
 const char* mqtt_devid="5566";
11
-#define DEBUG 1 //0=off 1=on
11
+#define DEBUG 0 //0=off 1=on
12 12
 #define RELAY 0 //  pinul de date 
13 13
 
14 14
 /********** NU edita mai jos ******************/
... ...
@@ -18,15 +18,15 @@ char espName[13];
18 18
 char mqttESP[22];
19 19
 char mqttRELAY[23];
20 20
 char mqttLWT[22];
21
+char mqttSTA[24];
21 22
 
22 23
 const String model = "ESP8266 Releu";
23
-const String ver = "v1.0.1";
24
+const String ver = "v1.1.0";
24 25
 const char* mqttServer = "mqtt.clickhome.ro";
25 26
 const int mqttPort = 1883;
26
-long loopTimer = 900000; // miliseconds - by default trimite la 15 minute
27
-long lastMsg = 0;
28
-float loopTemp = 0;
29 27
 String mqttMessage;
28
+const unsigned long interval_update=1000*60*60; // face update la 60 min 
29
+unsigned long t_update=0;
30 30
 
31 31
 WiFiClient espClient;
32 32
 PubSubClient client(espClient);
... ...
@@ -54,6 +54,10 @@ void generate_vars(){
54 54
   strcpy (mqttLWT, "tele/");
55 55
   strcat (mqttLWT, espName);
56 56
   strcat (mqttLWT, "/LWT");
57
+
58
+  strcpy (mqttSTA, "tele/");
59
+  strcat (mqttSTA, espName);
60
+  strcat (mqttSTA, "/STATE");
57 61
 }
58 62
 
59 63
 String ipToString(IPAddress ip){
... ...
@@ -153,7 +157,14 @@ void setup()
153 153
 
154 154
   reconectez();
155 155
   client.setCallback(getMessage); //setez functia care parseaza mesajele venite prin mqtt
156
+  update_state(); //facem update la mqtt cu Uptime
157
+}
156 158
 
159
+void update_state(){ //facem update la mqtt cu Uptime
160
+    String json = "{\"Uptime\":";
161
+    json += (int)millis()/3600000; //exprimat in ore
162
+    json += "}";
163
+    client.publish(mqttSTA, json.c_str(),FALSE);
157 164
 }
158 165
 
159 166
 void getMessage(char* topic, byte* payload, unsigned int length) {
... ...
@@ -210,13 +221,12 @@ void loop()
210 210
     reconectez();
211 211
   }
212 212
   client.loop();
213
-  long now = millis(); 
214
-  if (now - lastMsg > loopTimer) 
215
-  {
216
-    lastMsg = now;
217
-    #if DEBUG
218
-    Serial.println("Nu fac nimic in bucla");
219
-    #endif
213
+  //facem update la $interval_update cu uptime
214
+  if (millis() - t_update > interval_update){
215
+    update_state();
216
+    t_update=millis();
220 217
   }
218
+  //end update
219
+
221 220
 }
222 221
 
... ...
@@ -10,7 +10,7 @@
10 10
 const char* mqtt_user="64x35up";
11 11
 const char* mqtt_devid="1791";
12 12
 #define ONE_WIRE_BUS 2 // pinul de date
13
-#define DEBUG 1 //0=off 1=on
13
+#define DEBUG 0 //0=off 1=on
14 14
 
15 15
 /********** NU edita mai jos ******************/
16 16
 char mqttPassword[15]; //urmatoarele le va genera cu functia gen
... ...
@@ -19,15 +19,18 @@ char espName[13];
19 19
 char mqttESP[22];
20 20
 char mqttTEMP[23];
21 21
 char mqttLWT[22];
22
+char mqttSTA[24];
22 23
 
23 24
 const String model = "ESP8266 Dallas";
24
-const String ver = "v1.0.1";
25
+const String ver = "v1.1.0";
25 26
 const char* mqttServer = "mqtt.clickhome.ro";
26 27
 const int mqttPort = 1883;
27 28
 long loopTimer = 900000; // miliseconds - by default trimite la 15 minute
28 29
 long lastMsg = 0;
29 30
 float loopTemp = 0;
30 31
 String mqttMessage;
32
+const unsigned long interval_update=1000*60*60; // face update la 60 min 
33
+unsigned long t_update=0;
31 34
 
32 35
 // senzor de temperatura DALLAS
33 36
 OneWire oneWire(ONE_WIRE_BUS);
... ...
@@ -61,6 +64,10 @@ void generate_vars(){
61 61
   strcpy (mqttLWT, "tele/");
62 62
   strcat (mqttLWT, espName);
63 63
   strcat (mqttLWT, "/LWT");
64
+
65
+  strcpy (mqttSTA, "tele/");
66
+  strcat (mqttSTA, espName);
67
+  strcat (mqttSTA, "/STATE");
64 68
 }
65 69
 
66 70
 String ipToString(IPAddress ip){
... ...
@@ -152,8 +159,15 @@ void setup()
152 152
 
153 153
   reconectez();
154 154
   client.setCallback(getMessage); //setez functia care parseaza mesajele venite prin mqtt
155
-
156 155
   sensors.begin();
156
+  update_state(); //facem update la mqtt cu Uptime
157
+}
158
+
159
+void update_state(){ //facem update la mqtt cu Uptime
160
+    String json = "{\"Uptime\":";
161
+    json += (int)millis()/3600000; //exprimat in ore
162
+    json += "}";
163
+    client.publish(mqttSTA, json.c_str(),FALSE);
157 164
 }
158 165
 
159 166
 void getMessage(char* topic, byte* payload, unsigned int length) {
... ...
@@ -237,9 +251,16 @@ void loop()
237 237
     reconectez();
238 238
   }
239 239
   client.loop();
240
-  long now = millis();
241
-  if (now - lastMsg > loopTimer) {
242
-    lastMsg = now;
240
+
241
+  //facem update la $interval_update cu uptime
242
+  if (millis() - t_update > interval_update){
243
+    update_state();
244
+    t_update=millis();
245
+  }
246
+  //end update
247
+
248
+  if (millis() - lastMsg > loopTimer) {
249
+    lastMsg = millis();
243 250
     sensors.setResolution(12);
244 251
     sensors.requestTemperatures(); // Send the command to get loopTemperatures
245 252
     loopTemp = sensors.getTempCByIndex(0);
... ...
@@ -23,9 +23,10 @@ char espName[13];
23 23
 char mqttESP[22];
24 24
 char mqttTEMP[23];
25 25
 char mqttLWT[22];
26
+char mqttSTA[24];
26 27
 
27 28
 const String model = "ESP8266 ";
28
-const String ver = "v1.0.1";
29
+const String ver = "v1.1.0";
29 30
 const char* mqttServer = "mqtt.clickhome.ro";
30 31
 const int mqttPort = 1883;
31 32
 long loopTimer = 900000; // miliseconds - by default trimite la 15 minute
... ...
@@ -37,6 +38,9 @@ float h = 0;
37 37
 String mqttMessage;
38 38
 bool bDHTstarted;
39 39
 int acquireresult;
40
+const unsigned long interval_update=1000*60*60; // face update la 60 min 
41
+unsigned long t_update=0;
42
+
40 43
 
41 44
 void dht_wrapper();
42 45
 PietteTech_DHT DHT(DHTPIN, DHTTYPE, dht_wrapper);
... ...
@@ -72,6 +76,10 @@ void generate_vars(){
72 72
   strcpy (mqttLWT, "tele/");
73 73
   strcat (mqttLWT, espName);
74 74
   strcat (mqttLWT, "/LWT");
75
+
76
+  strcpy (mqttSTA, "tele/");
77
+  strcat (mqttSTA, espName);
78
+  strcat (mqttSTA, "/STATE");
75 79
 }
76 80
 
77 81
 String ipToString(IPAddress ip){
... ...
@@ -165,7 +173,14 @@ void setup()
165 165
 
166 166
   reconectez();
167 167
   client.setCallback(getMessage); //setez functia care parseaza mesajele venite prin mqtt
168
+  update_state(); //facem update la mqtt cu Uptime
169
+}
168 170
 
171
+void update_state(){ //facem update la mqtt cu Uptime
172
+    String json = "{\"Uptime\":";
173
+    json += (int)millis()/3600000; //exprimat in ore
174
+    json += "}";
175
+    client.publish(mqttSTA, json.c_str(),FALSE);
169 176
 }
170 177
 
171 178
 void getMessage(char* topic, byte* payload, unsigned int length) {
... ...
@@ -263,9 +278,15 @@ void loop()
263 263
     reconectez();
264 264
   }
265 265
   client.loop();
266
-  long now = millis();
267
-  if (now - lastMsg > loopTimer) {
268
-     lastMsg = now;
266
+  //facem update la $interval_update cu uptime
267
+  if (millis() - t_update > interval_update){
268
+    update_state();
269
+    t_update=millis();
270
+  }
271
+  //end update
272
+
273
+  if (millis() - lastMsg > loopTimer) {
274
+     lastMsg = millis();
269 275
      acquireresult = DHT.acquireAndWait(2000);
270 276
      if ( acquireresult == 0 ) {
271 277
            loopTemp = DHT.getCelsius();
... ...
@@ -12,8 +12,10 @@
12 12
 #define PIR D1 //  pinul de date D1 la care se conecteaza PIRul
13 13
 
14 14
 bool ARM,lastPIR;
15
-float interval_alarma = 60000; // la ce interval sa trimita notificarile 20 sec = 20000
16
-float t_alarma=0;
15
+unsigned int interval_alarma = 60000; // la ce interval sa trimita notificarile 60 sec = 60000 in cazul in care a re doua alarme consecutive
16
+unsigned long t_alarma=0;
17
+const unsigned long interval_update=1000*60*60; // face update la 60 min 
18
+unsigned long t_update=0;
17 19
 
18 20
 char mqtt_user[9]; //le va lua din FS
19 21
 char mqtt_devid[5]; //le va lua din FS
... ...
@@ -24,9 +26,10 @@ char mqttESP[22];
24 24
 char mqttALM[24];
25 25
 char mqttPIR[22];
26 26
 char mqttLWT[22];
27
+char mqttSTA[24];
27 28
 
28 29
 const String model = "NodeMCU PIR";
29
-const String ver = "v2.0.0";
30
+const String ver = "v2.1.0";
30 31
 const char* mqttServer = "mqtt.clickhome.ro";
31 32
 const int mqttPort = 1883;
32 33
 String mqttMessage;
... ...
@@ -62,6 +65,10 @@ void generate_vars(){
62 62
   strcpy (mqttLWT, "tele/");
63 63
   strcat (mqttLWT, espName);
64 64
   strcat (mqttLWT, "/LWT");
65
+
66
+  strcpy (mqttSTA, "tele/");
67
+  strcat (mqttSTA, espName);
68
+  strcat (mqttSTA, "/STATE");
65 69
 }
66 70
 
67 71
 String ipToString(IPAddress ip){
... ...
@@ -174,6 +181,8 @@ void setup()
174 174
   json += "\"}";
175 175
   client.publish(mqttPIR, json.c_str(),TRUE);
176 176
 
177
+  update_state(); //facem update la mqtt cu Uptime
178
+
177 179
 }
178 180
 
179 181
 void getMessage(char* topic, byte* payload, unsigned int length) {
... ...
@@ -290,6 +299,13 @@ bool readConfigFile() {
290 290
   return true;
291 291
 }
292 292
 
293
+void update_state(){ //facem update la mqtt cu Uptime
294
+    String json = "{\"Uptime\":";
295
+    json += (int)millis()/3600000; //exprimat in ore
296
+    json += "}";
297
+    client.publish(mqttSTA, json.c_str(),FALSE);
298
+}
299
+
293 300
 void loop()
294 301
 {
295 302
   if (!client.connected()) 
... ...
@@ -298,6 +314,13 @@ void loop()
298 298
   }
299 299
   client.loop();
300 300
 
301
+  //facem update la $interval_update cu uptime
302
+  if (millis() - t_update > interval_update){
303
+    update_state();
304
+    t_update=millis();
305
+  }
306
+  //end update
307
+  
301 308
   if (ARM==1){ //daca e armat
302 309
     if (digitalRead(PIR)!=lastPIR){ //daca s-a schimbat valoarea 
303 310
       if (digitalRead(PIR)==1){ //daca am alarma
... ...
@@ -19,16 +19,17 @@ char espName[13];
19 19
 char mqttESP[22];
20 20
 char mqttRELAY[23];
21 21
 char mqttLWT[22];
22
+char mqttSTA[24];
22 23
 
23 24
 const String model = "NodeMCU Releu";
24
-const String ver = "v2.0.2";
25
+const String ver = "v2.1.0";
25 26
 const char* mqttServer = "mqtt.clickhome.ro";
26 27
 const int mqttPort = 1883;
27
-long loopTimer = 900000; // miliseconds - by default trimite la 15 minute
28
-long lastMsg = 0;
29
-float loopTemp = 0;
30 28
 String mqttMessage;
31 29
 
30
+const unsigned long interval_update=1000*60*60; // face update la 60 min 
31
+unsigned long t_update=0;
32
+
32 33
 WiFiClient espClient;
33 34
 PubSubClient client(espClient);
34 35
 bool readConfigFile();
... ...
@@ -56,6 +57,10 @@ void generate_vars(){
56 56
   strcpy (mqttLWT, "tele/");
57 57
   strcat (mqttLWT, espName);
58 58
   strcat (mqttLWT, "/LWT");
59
+
60
+  strcpy (mqttSTA, "tele/");
61
+  strcat (mqttSTA, espName);
62
+  strcat (mqttSTA, "/STATE");
59 63
 }
60 64
 
61 65
 String ipToString(IPAddress ip){
... ...
@@ -137,6 +142,12 @@ void reconectez() {
137 137
   }
138 138
 }
139 139
 
140
+void update_state(){ //facem update la mqtt cu Uptime
141
+    String json = "{\"Uptime\":";
142
+    json += (int)millis()/3600000; //exprimat in ore
143
+    json += "}";
144
+    client.publish(mqttSTA, json.c_str(),FALSE);
145
+}
140 146
 
141 147
 void setup()
142 148
 {
... ...
@@ -168,7 +179,7 @@ void setup()
168 168
 
169 169
   reconectez();
170 170
   client.setCallback(getMessage); //setez functia care parseaza mesajele venite prin mqtt
171
-
171
+  update_state(); //facem update la mqtt cu Uptime
172 172
 }
173 173
 
174 174
 void getMessage(char* topic, byte* payload, unsigned int length) {
... ...
@@ -300,12 +311,11 @@ void loop()
300 300
     reconectez();
301 301
   }
302 302
   client.loop();
303
-  long now = millis(); 
304
-  if (now - lastMsg > loopTimer) 
305
-  {
306
-    lastMsg = now;
307
-    #if DEBUG
308
-    Serial.println("Nu fac nimic in bucla");
309
-    #endif
303
+
304
+  //facem update la $interval_update cu uptime
305
+  if (millis() - t_update > interval_update){
306
+    update_state();
307
+    t_update=millis();
310 308
   }
309
+  //end update
311 310
 }
312 311
old mode 100644
313 312
new mode 100755
... ...
@@ -11,6 +11,17 @@
11 11
 
12 12
 #define DEBUG 0 //0=off 1=on
13 13
 
14
+const String model = "NodeMCU Dallas";
15
+const String ver = "v2.2.0";
16
+const char* mqttServer = "mqtt.clickhome.ro";
17
+const int mqttPort = 1883;
18
+long loopTimer = 900000; // miliseconds - by default trimite la 15 minute
19
+long lastMsg = 0;
20
+float loopTemp = 0;
21
+String mqttMessage;
22
+const unsigned long interval_update=1000*60*60; // face update la 60 min 
23
+unsigned long t_update=0;
24
+
14 25
 char mqtt_user[9]; //le va lua din FS
15 26
 char mqtt_devid[5]; //le va lua din FS
16 27
 char mqttPassword[15]; //urmatoarele le va genera cu functia gen
... ...
@@ -19,15 +30,7 @@ char espName[13];
19 19
 char mqttESP[22];
20 20
 char mqttTEMP[23];
21 21
 char mqttLWT[22];
22
-
23
-const String model = "NodeMCU Dallas";
24
-const String ver = "v2.1.2";
25
-const char* mqttServer = "mqtt.clickhome.ro";
26
-const int mqttPort = 1883;
27
-long loopTimer = 900000; // miliseconds - by default trimite la 15 minute
28
-long lastMsg = 0;
29
-float loopTemp = 0;
30
-String mqttMessage;
22
+char mqttSTA[24];
31 23
 
32 24
 // senzor de temperatura DALLAS
33 25
 #define ONE_WIRE_BUS D4  // pinul de date care se conecteaza la dallas
... ...
@@ -64,6 +67,10 @@ void generate_vars(){
64 64
   strcpy (mqttLWT, "tele/");
65 65
   strcat (mqttLWT, espName);
66 66
   strcat (mqttLWT, "/LWT");
67
+
68
+  strcpy (mqttSTA, "tele/");
69
+  strcat (mqttSTA, espName);
70
+  strcat (mqttSTA, "/STATE");
67 71
 }
68 72
 
69 73
 String ipToString(IPAddress ip){
... ...
@@ -170,6 +177,14 @@ void setup()
170 170
   client.setCallback(getMessage); //setez functia care parseaza mesajele venite prin mqtt
171 171
 
172 172
   sensors.begin();
173
+  update_state(); //facem update la mqtt cu Uptime
174
+}
175
+
176
+void update_state(){ //facem update la mqtt cu Uptime
177
+    String json = "{\"Uptime\":";
178
+    json += (int)millis()/3600000; //exprimat in ore
179
+    json += "}";
180
+    client.publish(mqttSTA, json.c_str(),FALSE);
173 181
 }
174 182
 
175 183
 void getMessage(char* topic, byte* payload, unsigned int length) {
... ...
@@ -321,22 +336,27 @@ void loop()
321 321
     reconectez();
322 322
   }
323 323
   client.loop();
324
-  long now = millis();
325
-  if (now - lastMsg > loopTimer) {
326
-    lastMsg = now;
324
+  //facem update la $interval_update cu uptime
325
+  if (millis() - t_update > interval_update){
326
+    update_state();
327
+    t_update=millis();
328
+  }
329
+  //end update
330
+
331
+  if (millis() - lastMsg > loopTimer) {
332
+    lastMsg = millis();
327 333
     sensors.setResolution(12);
328 334
     sensors.requestTemperatures(); // Send the command to get loopTemperatures
329 335
     loopTemp = sensors.getTempCByIndex(0);
330 336
     #if DEBUG
331 337
     Serial.println(loopTemp);
332 338
     #endif
333
-    if((loopTemp > -20) && (loopTemp <60))
334
-      {
339
+    if((loopTemp > -20) && (loopTemp <60)){
335 340
      String val = "{\"Temp\":";
336 341
       val += String (loopTemp);
337 342
       val += "}";
338 343
       client.publish(mqttESP, val.c_str(),TRUE);
339
-      }
344
+    }
340 345
   }
341 346
 }
342
-
347
+
... ...
@@ -18,8 +18,6 @@
18 18
 /********** NU edita mai jos ******************/
19 19
 
20 20
 
21
-
22
-
23 21
 char mqtt_user[9]; //le va lua din FS
24 22
 char mqtt_devid[5]; //le va lua din FS
25 23
 char mqttPassword[15]; //urmatoarele le va genera cu functia gen
... ...
@@ -28,9 +26,10 @@ char espName[13];
28 28
 char mqttESP[22];
29 29
 char mqttTEMP[23];
30 30
 char mqttLWT[22];
31
+char mqttSTA[24];
31 32
 
32 33
 const String model = "NodeMCU ";
33
-const String ver = "v2.0.1";
34
+const String ver = "v2.1.0";
34 35
 const char* mqttServer = "mqtt.clickhome.ro";
35 36
 const int mqttPort = 1883;
36 37
 long loopTimer = 900000; // miliseconds - by default trimite la 15 minute
... ...
@@ -42,6 +41,8 @@ float h = 0;
42 42
 String mqttMessage;
43 43
 bool bDHTstarted;
44 44
 int acquireresult;
45
+const unsigned long interval_update=1000*60*60; // face update la 60 min 
46
+unsigned long t_update=0;
45 47
 
46 48
 void dht_wrapper();
47 49
 PietteTech_DHT DHT(DHTPIN, DHTTYPE, dht_wrapper);
... ...
@@ -79,6 +80,10 @@ void generate_vars(){
79 79
   strcpy (mqttLWT, "tele/");
80 80
   strcat (mqttLWT, espName);
81 81
   strcat (mqttLWT, "/LWT");
82
+
83
+  strcpy (mqttSTA, "tele/");
84
+  strcat (mqttSTA, espName);
85
+  strcat (mqttSTA, "/STATE");
82 86
 }
83 87
 
84 88
 String ipToString(IPAddress ip){
... ...
@@ -185,6 +190,14 @@ void setup()
185 185
 
186 186
   reconectez();
187 187
   client.setCallback(getMessage); //setez functia care parseaza mesajele venite prin mqtt
188
+  update_state(); //facem update la mqtt cu Uptime
189
+}
190
+
191
+void update_state(){ //facem update la mqtt cu Uptime
192
+    String json = "{\"Uptime\":";
193
+    json += (int)millis()/3600000; //exprimat in ore
194
+    json += "}";
195
+    client.publish(mqttSTA, json.c_str(),FALSE);
188 196
 }
189 197
 
190 198
 void getMessage(char* topic, byte* payload, unsigned int length) {
... ...
@@ -349,9 +362,16 @@ void loop()
349 349
     reconectez();
350 350
   }
351 351
   client.loop();
352
-  long now = millis();
353
-  if (now - lastMsg > loopTimer) {
354
-     lastMsg = now;
352
+
353
+  //facem update la $interval_update cu uptime
354
+  if (millis() - t_update > interval_update){
355
+    update_state();
356
+    t_update=millis();
357
+  }
358
+  //end update
359
+
360
+  if (millis() - lastMsg > loopTimer) {
361
+     lastMsg = millis();
355 362
      acquireresult = DHT.acquireAndWait(2000);
356 363
      if ( acquireresult == 0 ) {
357 364
            loopTemp = DHT.getCelsius();