Advertisement
Salabert

Untitled

Jan 22nd, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.81 KB | None | 0 0
  1. #include <SerialRelay.h>
  2. #include <EEPROM.h>
  3. #include <Bounce2.h>
  4. #include <MQTT.h>
  5. #include <PubSubClient.h>
  6. #include <PubSubClient_JSON.h>
  7. #include <ESP8266WiFi.h>
  8.  
  9. //------------------------------------
  10. // --- MQTT Topics ---
  11. const char* topicoTemperatura = "temp"; // TOPICO Temperatura - Ex: home/room/temperature
  12. const char* topicoUmidade = "umid"; // TOPICO Umidade - Ex: home/room/humidity
  13.  
  14. // --- DHT ---
  15. #include <DHT.h>
  16. #define DHTTYPE DHT22 // Selecione o modelo do seu sensor (DHT11, DHT22, etc)
  17. const int pinDHT = D7; // Pino de dados do DHT (D2, ...)
  18. const long intervaloMedicao = 1000; // Intervalo das medições in Milliseconds EX. 5000 (5 Segundos)
  19. DHT dht(pinDHT, DHTTYPE);
  20. unsigned long ultimaMedicao = 0;
  21. //--------------------------------------
  22.  
  23.  
  24. // Update these with values suitable for your network.
  25. const char* ssid = xxxxxxxxxxxxx // cannot be longer than 32 characters!
  26. const char* password = xxxxxxxxxxxxxxxxx //
  27. const char* host = "ESP-B"; // the name of your fixture, and the base channel to listen to
  28. IPAddress server(xx, x, x, xx); // MQTT broker
  29.  
  30.  
  31. const int relayD1 = D1;
  32. const int relayD2 = D2;
  33. bool relayStateD1 = HIGH;
  34. bool relayStateD2 = HIGH;
  35.  
  36. #define BUFFER_SIZE 100
  37. WiFiClient wclient;
  38. PubSubClient client(wclient, server);
  39. Bounce debouncer = Bounce();
  40.  
  41. int pinData = 14;
  42. int pinClock = 12;
  43. const byte NumModules = 1;
  44. SerialRelay relays (14, 12, NumModules);
  45.  
  46. void setup() {
  47. Serial.begin(115200);
  48. Serial.println("Booting");
  49. WiFi.mode(WIFI_STA);
  50. WiFi.begin(ssid, password);
  51. while (WiFi.waitForConnectResult() != WL_CONNECTED) {
  52. Serial.println("Connection Failed! Rebooting...");
  53. delay(5000);
  54. ESP.restart();
  55. }
  56.  
  57. pinMode(relayD1, OUTPUT);
  58. digitalWrite(relayD1, HIGH);
  59. pinMode(relayD2, OUTPUT);
  60. digitalWrite(relayD2, HIGH);
  61.  
  62. pinMode(pinData, OUTPUT);
  63. pinMode(pinClock, OUTPUT);
  64. digitalWrite(pinData, LOW);
  65. digitalWrite(pinClock, LOW);
  66.  
  67. relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
  68. relays.SetRelay(2, SERIAL_RELAY_OFF, 1);
  69. relays.SetRelay(3, SERIAL_RELAY_OFF, 1);
  70. relays.SetRelay(4, SERIAL_RELAY_OFF, 1);
  71. relays.SetRelay(1, SERIAL_RELAY_OFF, 2);
  72. relays.SetRelay(2, SERIAL_RELAY_OFF, 2);
  73. relays.SetRelay(3, SERIAL_RELAY_OFF, 2);
  74. relays.SetRelay(4, SERIAL_RELAY_OFF, 2);
  75. relays.SetRelay(1, SERIAL_RELAY_OFF, 3);
  76. relays.SetRelay(2, SERIAL_RELAY_OFF, 3);
  77. relays.SetRelay(3, SERIAL_RELAY_OFF, 3);
  78. relays.SetRelay(4, SERIAL_RELAY_OFF, 3);
  79. relays.SetRelay(1, SERIAL_RELAY_OFF, 4);
  80. relays.SetRelay(2, SERIAL_RELAY_OFF, 4);
  81. relays.SetRelay(3, SERIAL_RELAY_OFF, 4);
  82. relays.SetRelay(4, SERIAL_RELAY_OFF, 4);
  83.  
  84. Serial.println("SAIDAS OK");
  85.  
  86.  
  87. Serial.println("Ready");
  88. Serial.print("IP address: ");
  89. Serial.println(WiFi.localIP());
  90.  
  91. // MQTT callback
  92. client.set_callback(callback);
  93.  
  94. }
  95.  
  96. void callback(const MQTT::Publish& pub) {
  97.  
  98. uint16_t i, j;
  99.  
  100. String myMessage = String(pub.payload_string());
  101. // handle message arrived
  102. Serial.print(pub.topic());
  103. Serial.print(" => ");
  104. String myTopic = String(pub.topic());
  105.  
  106.  
  107. if(myTopic == host)
  108. {
  109.  
  110. Serial.println(pub.payload_string());
  111.  
  112. if(pub.payload_string() == "11")
  113. {
  114. digitalWrite(relayD1, LOW);
  115. Serial.println("relay_D1 -> on");
  116. client.publish("saida","11OK");
  117. relayStateD1 = LOW;
  118. }
  119. else if (pub.payload_string() == "12")
  120. {
  121. digitalWrite(relayD1, HIGH);
  122. Serial.println("relay_D1 -> off");
  123. client.publish("saida","12OK");
  124. relayStateD1 = HIGH;
  125. }
  126. if(pub.payload_string() == "21")
  127. {
  128. digitalWrite(relayD2, LOW);
  129. Serial.println("relay_D2 -> on");
  130. client.publish("saida","21OK");
  131. relayStateD2 = LOW;
  132. }
  133. else if (pub.payload_string() == "22")
  134. {
  135. digitalWrite(relayD2, HIGH);
  136. Serial.println("relay_D2 -> off");
  137. client.publish("saida","22OK");
  138. relayStateD2 = HIGH;
  139. }
  140.  
  141. //MODULO RELE SERIAL
  142. //MODULO 1 ------------------------------------
  143. if(pub.payload_string() == "M1R1ON")
  144. {
  145. relays.SetRelay(1, SERIAL_RELAY_ON, 1);
  146. Serial.println("M1R1 -> on");
  147. client.publish("saida","M1R1ONOK");
  148. }
  149. else if (pub.payload_string() == "M1R1OFF")
  150. {
  151. relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
  152. Serial.println("M1R1 -> off");
  153. client.publish("saida","M1R1OFFOK");
  154. }
  155. if(pub.payload_string() == "M1R2ON")
  156. {
  157. relays.SetRelay(2, SERIAL_RELAY_ON, 1);
  158. Serial.println("M1R2 -> on");
  159. client.publish("saida","M1R2ONOK");
  160. }
  161. else if (pub.payload_string() == "M1R2OFF")
  162. {
  163. relays.SetRelay(2, SERIAL_RELAY_OFF, 1);
  164. Serial.println("M1R2 -> off");
  165. client.publish("saida","M1R2OFFOK");
  166. }
  167. if(pub.payload_string() == "M1R3ON")
  168. {
  169. relays.SetRelay(3, SERIAL_RELAY_ON, 1);
  170. Serial.println("M1R3 -> on");
  171. client.publish("saida","M1R3ONOK");
  172. }
  173. else if (pub.payload_string() == "M1R3OFF")
  174. {
  175. relays.SetRelay(3, SERIAL_RELAY_OFF, 1);
  176. Serial.println("M1R3 -> off");
  177. client.publish("saida","M1R3OFFOK");
  178. }
  179. if(pub.payload_string() == "M1R4ON")
  180. {
  181. relays.SetRelay(4, SERIAL_RELAY_ON, 1);
  182. Serial.println("M1R4 -> on");
  183. client.publish("saida","M1R4ONOK");
  184. }
  185. else if (pub.payload_string() == "M1R4OFF")
  186. {
  187. relays.SetRelay(4, SERIAL_RELAY_OFF, 1);
  188. Serial.println("M1R4 -> off");
  189. client.publish("saida","M1R4OFFOK");
  190. }
  191.  
  192.  
  193.  
  194. }
  195. }
  196. void loop() {
  197. if (WiFi.status() == WL_CONNECTED) {
  198. if (!client.connected()) {
  199. if (client.connect("CASA2")) {
  200. client.publish("saida",(String)"EU SOU O: "+host);
  201. client.subscribe("ESP-B");
  202. }
  203. }
  204.  
  205. if (client.connected())
  206. client.loop();
  207. delay(100);
  208. medirTemperaturaUmidade();
  209. delay(100);
  210. }
  211. }
  212. //------------------------------------------
  213. //--------- MEDIÇÃO DE TEMPERATURA E UMIDADE
  214. void medirTemperaturaUmidade() {
  215. unsigned long tempoAtual = millis();
  216. if (tempoAtual - ultimaMedicao >= intervaloMedicao) {
  217. ultimaMedicao = tempoAtual;
  218. float umidade = dht.readHumidity();
  219. float temperatura = dht.readTemperature(false);
  220. if (isnan(temperatura)) {
  221. Serial.print("erro na medicao");
  222. }
  223. else {
  224. client.publish("temp1",(String)temperatura); // Manter a mensagem no BROKER (true or false)
  225. Serial.print("Temperatura: ");
  226. Serial.print(temperatura);
  227. Serial.println(" *C");
  228. }
  229. if (isnan(umidade)) {
  230. Serial.print("erro na medicao");
  231. }
  232. else {
  233. client.publish("umid1",(String)+umidade); // Manter a mensagem no BROKER (true or false)
  234. Serial.print("Umidade: ");
  235. Serial.println(umidade);
  236. }
  237. }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement