Advertisement
Guest User

Untitled

a guest
Sep 17th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. // Libs
  2. #include <ESP8266WiFi.h>
  3. #include <PubSubClient.h>
  4.  
  5. // Vars
  6. const char* SSID = "NomeRedeWifi"; // rede wifi
  7. const char* PASSWORD = "SenhaWifi"; // senha da rede wifi
  8.  
  9. const char* BROKER_MQTT = "host.do.seu.broker"; // ip/host do broker
  10. int BROKER_PORT = 12275; // porta do broker
  11. const char *mqtt_user = "brokerUser";
  12. const char *mqtt_pass = "brokerPass";
  13. const char *mqtt_client_name = "arduinoClient1";
  14.  
  15. // prototypes
  16. void initPins();
  17. void initSerial();
  18. void initWiFi();
  19. void initMQTT();
  20.  
  21. WiFiClient espClient;
  22. PubSubClient MQTT(espClient); // instancia o mqtt
  23.  
  24. // setup
  25. void setup() {
  26. initPins();
  27. initSerial();
  28. initWiFi();
  29. initMQTT();
  30. }
  31.  
  32.  
  33. // implementacao dos prototypes
  34.  
  35. void initPins() {
  36. pinMode(D5, OUTPUT);
  37. digitalWrite(D5, 0);
  38. }
  39.  
  40. void initSerial() {
  41. Serial.begin(115200);
  42. }
  43. void initWiFi() {
  44. delay(10);
  45. Serial.println("Conectando-se em: " + String(SSID));
  46.  
  47. WiFi.begin(SSID, PASSWORD);
  48. while (WiFi.status() != WL_CONNECTED) {
  49. delay(100);
  50. Serial.print(".");
  51. }
  52. Serial.println();
  53. Serial.print("Conectado na Rede " + String(SSID) + " | IP => ");
  54. Serial.println(WiFi.localIP());
  55. }
  56.  
  57.  
  58. //Função que recebe as mensagens publicadas
  59. void mqtt_callback(char* topic, byte* payload, unsigned int length) {
  60.  
  61. String message;
  62. for (int i = 0; i < length; i++) {
  63. char c = (char)payload[i];
  64. message += c;
  65. }
  66. Serial.println("Tópico => " + String(topic) + " | Valor => " + String(message));
  67.  
  68. //Esse bloco é desnecessário se não utilizar I/O
  69. if (message == "1") {
  70. digitalWrite(D5, 1);
  71. } else {
  72. digitalWrite(D5, 0);
  73. }
  74. Serial.flush();
  75. }
  76.  
  77. void reconnectMQTT() {
  78. while (!MQTT.connected()) {
  79. Serial.println("Tentando se conectar ao Broker MQTT: " + String(BROKER_MQTT));
  80. if (MQTT.connect(mqtt_client_name, mqtt_user, mqtt_pass)) {
  81.  
  82. Serial.println("Conectado");
  83. MQTT.publish("nakatani/out/message", "teste");
  84. MQTT.subscribe("nakatani/in/message");
  85.  
  86. } else {
  87. Serial.println("Falha ao Reconectar");
  88. Serial.println("Tentando se reconectar em 2 segundos");
  89. delay(2000);
  90. }
  91. }
  92. }
  93.  
  94. // Funcão para se conectar ao Broker MQTT
  95. void initMQTT() {
  96. MQTT.setServer(BROKER_MQTT, BROKER_PORT);
  97. MQTT.setCallback(mqtt_callback);
  98. }
  99.  
  100.  
  101. void recconectWiFi() {
  102. while (WiFi.status() != WL_CONNECTED) {
  103. delay(100);
  104. Serial.print(".");
  105. }
  106. }
  107.  
  108. //Processo principal
  109. void loop() {
  110. if (!MQTT.connected()) {
  111. reconnectMQTT();
  112. }
  113. recconectWiFi();
  114. MQTT.loop();
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement