Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Libs
- #include <ESP8266WiFi.h>
- #include <PubSubClient.h>
- // Vars
- const char* SSID = "NomeRedeWifi"; // rede wifi
- const char* PASSWORD = "SenhaWifi"; // senha da rede wifi
- const char* BROKER_MQTT = "host.do.seu.broker"; // ip/host do broker
- int BROKER_PORT = 12275; // porta do broker
- const char *mqtt_user = "brokerUser";
- const char *mqtt_pass = "brokerPass";
- const char *mqtt_client_name = "arduinoClient1";
- // prototypes
- void initPins();
- void initSerial();
- void initWiFi();
- void initMQTT();
- WiFiClient espClient;
- PubSubClient MQTT(espClient); // instancia o mqtt
- // setup
- void setup() {
- initPins();
- initSerial();
- initWiFi();
- initMQTT();
- }
- // implementacao dos prototypes
- void initPins() {
- pinMode(D5, OUTPUT);
- digitalWrite(D5, 0);
- }
- void initSerial() {
- Serial.begin(115200);
- }
- void initWiFi() {
- delay(10);
- Serial.println("Conectando-se em: " + String(SSID));
- WiFi.begin(SSID, PASSWORD);
- while (WiFi.status() != WL_CONNECTED) {
- delay(100);
- Serial.print(".");
- }
- Serial.println();
- Serial.print("Conectado na Rede " + String(SSID) + " | IP => ");
- Serial.println(WiFi.localIP());
- }
- //Função que recebe as mensagens publicadas
- void mqtt_callback(char* topic, byte* payload, unsigned int length) {
- String message;
- for (int i = 0; i < length; i++) {
- char c = (char)payload[i];
- message += c;
- }
- Serial.println("Tópico => " + String(topic) + " | Valor => " + String(message));
- //Esse bloco é desnecessário se não utilizar I/O
- if (message == "1") {
- digitalWrite(D5, 1);
- } else {
- digitalWrite(D5, 0);
- }
- Serial.flush();
- }
- void reconnectMQTT() {
- while (!MQTT.connected()) {
- Serial.println("Tentando se conectar ao Broker MQTT: " + String(BROKER_MQTT));
- if (MQTT.connect(mqtt_client_name, mqtt_user, mqtt_pass)) {
- Serial.println("Conectado");
- MQTT.publish("nakatani/out/message", "teste");
- MQTT.subscribe("nakatani/in/message");
- } else {
- Serial.println("Falha ao Reconectar");
- Serial.println("Tentando se reconectar em 2 segundos");
- delay(2000);
- }
- }
- }
- // Funcão para se conectar ao Broker MQTT
- void initMQTT() {
- MQTT.setServer(BROKER_MQTT, BROKER_PORT);
- MQTT.setCallback(mqtt_callback);
- }
- void recconectWiFi() {
- while (WiFi.status() != WL_CONNECTED) {
- delay(100);
- Serial.print(".");
- }
- }
- //Processo principal
- void loop() {
- if (!MQTT.connected()) {
- reconnectMQTT();
- }
- recconectWiFi();
- MQTT.loop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement