Guest User

Untitled

a guest
Dec 6th, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. /*
  2. Envio de dados de sensor PIR via MQTT
  3. Hardware Utilizado: Nodemcu v1.0, sensor de presença PIR
  4. Autor: Yhan Christian Souza Silva | Lucas de Barros Teixeira
  5. data criação: 01/12/2018
  6. data atualização: 04/12/2018
  7. const char *ssid = "2.4G_COTONETES";
  8. const char *password = "31012015anapaulalucas";
  9. const char* cloudMQTTServer = "m15.cloudmqtt.com";
  10. const char* cloudMQTTUser = "atatjgwy";
  11. const char* cloudMQTTPassword = "jtYMEoDzlXPs";
  12. const char* PIRTopic = "pir";
  13. const int cloudMQTTPort = 11158;
  14.  
  15. Acesso ao eclipse
  16. MQTT: iot.eclipse.org:1883
  17. topic: smartworkingroom
  18. */
  19.  
  20. // -- Bibliotecas Auxiliares --
  21.  
  22. #include <ESP8266WiFi.h>
  23. #include <PubSubClient.h>
  24.  
  25.  
  26. // -- Hardware -- Sensor Presença
  27.  
  28. #define sensorPIR D4
  29.  
  30. // -- Definições de Rede e conexão MQTT / Tópico a ser publicado --
  31. // -- Utilizando o hivemq como broker
  32. // -- Não é preciso senha e usuário para o acesso
  33.  
  34. const char *ssid = "2.4G_COTONETES";
  35. const char *password = "31012015anapaulalucas";
  36. const char* cloudMQTTServer = "broker.mqttdashboard.com";
  37. const char* cloudMQTTUser = "";
  38. const char* cloudMQTTPassword = "";
  39. const char* PIRTopic = "testeMRobot2";
  40. const int cloudMQTTPort = 1883;
  41.  
  42.  
  43.  
  44. // -- Instância objetos --
  45.  
  46. WiFiClient myClient;
  47. PubSubClient client(myClient);
  48.  
  49.  
  50. // -- Variáveis e constantes --
  51. // -- 60 seg. para calibragem do sensor
  52. // -- 10 seg. de intervalo para o sensor pir
  53.  
  54. long lastMillis;
  55. const long interval = 3000;
  56. const int calibratePIR = 60;
  57.  
  58. // -- Protótipo de funções auxiliares --
  59.  
  60. void connectToWiFi();
  61. void connectToBrokerMQTT();
  62. void reconnectToBrokerMQTT();
  63. void sendSensorData();
  64.  
  65.  
  66. // -- Setup --
  67.  
  68. void setup() {
  69. Serial.begin(115200);
  70. pinMode(sensorPIR, INPUT);
  71. for (uint8_t i = 0; i < calibratePIR; i++) {
  72. Serial.print(".");
  73. delay(1000);
  74. }
  75. connectToWiFi();
  76. connectToBrokerMQTT();
  77.  
  78. }
  79.  
  80. void loop() {
  81. if (!client.connected()) reconnectToBrokerMQTT();
  82. if (millis() - lastMillis >= interval) {
  83. sendSensorData();
  84. lastMillis = millis();
  85. }
  86. client.loop();
  87. }
  88.  
  89. // -- Funções auxiliares --
  90.  
  91.  
  92. // -- Fornece as credenciais e conecta a rede --
  93.  
  94. void connectToWiFi() {
  95. Serial.println("Conectando a rede: ");
  96. Serial.println(ssid);
  97. WiFi.begin(ssid, password);
  98. while (WiFi.status() != WL_CONNECTED) {
  99. delay(500);
  100. Serial.print(".");
  101. }
  102. Serial.println("");
  103. Serial.println("Conectado!");
  104. Serial.print("IP: ");
  105. Serial.println(WiFi.localIP());
  106. delay(1000);
  107. }
  108.  
  109.  
  110. // -- Realiza a primeira conexão ao Broker --
  111.  
  112. void connectToBrokerMQTT() {
  113. client.setServer(cloudMQTTServer, cloudMQTTPort);
  114. while (!client.connected()) {
  115. Serial.println("Conectando ao broker MQTT");
  116. if (client.connect("NodeMCU Client", cloudMQTTUser, cloudMQTTPassword)) Serial.println("Conectado com sucesso!");
  117. else {
  118. Serial.print("Falha estado: ");
  119. Serial.println(client.state());
  120. delay(3000);
  121. }
  122. }
  123. }
  124.  
  125.  
  126. // -- Reconecta ao Broker e verifica mensagens de erro --
  127.  
  128. void reconnectToBrokerMQTT() {
  129. while (!client.connected()) {
  130. Serial.println("Tentando conexão ao broker MQTT");
  131.  
  132. boolean connectedToBroker = strlen(cloudMQTTUser) > 0 ?
  133. client.connect("NodeMCU Client", cloudMQTTUser, cloudMQTTPassword) :
  134. client.connect("NodeMCU Client");
  135.  
  136. if (connectedToBroker) Serial.println("Conectado com sucesso!");
  137.  
  138. else {
  139. Serial.println("Falha durante a conexão erro#code: ");
  140. Serial.println(String(client.state()).c_str());
  141. Serial.println("Tentando conexão novamente em 15s");
  142. delay(15000);
  143. }
  144. }
  145. }
  146.  
  147. // -- Envio dos dados do sensor
  148. // -- "1" quando houver presença detectada
  149. // -- "0" quando não houver presença
  150.  
  151. void sendSensorData() {
  152. char msgMQTTPIR[2];
  153. boolean PIRState;
  154. PIRState = digitalRead(sensorPIR);
  155. Serial.print("Leitura PIR: ");
  156. Serial.println(PIRState);
  157. Serial.print("O estado do sensor pir eh: ");
  158. Serial.println(PIRState);
  159. dtostrf(PIRState, 2, 0, msgMQTTPIR);
  160. client.publish(PIRTopic, msgMQTTPIR);
  161. }
Add Comment
Please, Sign In to add comment