Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SerialRelay.h>
- #include <EEPROM.h>
- #include <Bounce2.h>
- #include <MQTT.h>
- #include <PubSubClient.h>
- #include <PubSubClient_JSON.h>
- #include <ESP8266WiFi.h>
- //------------------------------------
- // --- MQTT Topics ---
- const char* topicoTemperatura = "temp"; // TOPICO Temperatura - Ex: home/room/temperature
- const char* topicoUmidade = "umid"; // TOPICO Umidade - Ex: home/room/humidity
- // --- DHT ---
- #include <DHT.h>
- #define DHTTYPE DHT22 // Selecione o modelo do seu sensor (DHT11, DHT22, etc)
- const int pinDHT = D7; // Pino de dados do DHT (D2, ...)
- const long intervaloMedicao = 1000; // Intervalo das medições in Milliseconds EX. 5000 (5 Segundos)
- DHT dht(pinDHT, DHTTYPE);
- unsigned long ultimaMedicao = 0;
- //--------------------------------------
- // Update these with values suitable for your network.
- const char* ssid = xxxxxxxxxxxxx // cannot be longer than 32 characters!
- const char* password = xxxxxxxxxxxxxxxxx //
- const char* host = "ESP-B"; // the name of your fixture, and the base channel to listen to
- IPAddress server(xx, x, x, xx); // MQTT broker
- const int relayD1 = D1;
- const int relayD2 = D2;
- bool relayStateD1 = HIGH;
- bool relayStateD2 = HIGH;
- #define BUFFER_SIZE 100
- WiFiClient wclient;
- PubSubClient client(wclient, server);
- Bounce debouncer = Bounce();
- int pinData = 14;
- int pinClock = 12;
- const byte NumModules = 1;
- SerialRelay relays (14, 12, NumModules);
- void setup() {
- Serial.begin(115200);
- Serial.println("Booting");
- WiFi.mode(WIFI_STA);
- WiFi.begin(ssid, password);
- while (WiFi.waitForConnectResult() != WL_CONNECTED) {
- Serial.println("Connection Failed! Rebooting...");
- delay(5000);
- ESP.restart();
- }
- pinMode(relayD1, OUTPUT);
- digitalWrite(relayD1, HIGH);
- pinMode(relayD2, OUTPUT);
- digitalWrite(relayD2, HIGH);
- pinMode(pinData, OUTPUT);
- pinMode(pinClock, OUTPUT);
- digitalWrite(pinData, LOW);
- digitalWrite(pinClock, LOW);
- relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
- relays.SetRelay(2, SERIAL_RELAY_OFF, 1);
- relays.SetRelay(3, SERIAL_RELAY_OFF, 1);
- relays.SetRelay(4, SERIAL_RELAY_OFF, 1);
- relays.SetRelay(1, SERIAL_RELAY_OFF, 2);
- relays.SetRelay(2, SERIAL_RELAY_OFF, 2);
- relays.SetRelay(3, SERIAL_RELAY_OFF, 2);
- relays.SetRelay(4, SERIAL_RELAY_OFF, 2);
- relays.SetRelay(1, SERIAL_RELAY_OFF, 3);
- relays.SetRelay(2, SERIAL_RELAY_OFF, 3);
- relays.SetRelay(3, SERIAL_RELAY_OFF, 3);
- relays.SetRelay(4, SERIAL_RELAY_OFF, 3);
- relays.SetRelay(1, SERIAL_RELAY_OFF, 4);
- relays.SetRelay(2, SERIAL_RELAY_OFF, 4);
- relays.SetRelay(3, SERIAL_RELAY_OFF, 4);
- relays.SetRelay(4, SERIAL_RELAY_OFF, 4);
- Serial.println("SAIDAS OK");
- Serial.println("Ready");
- Serial.print("IP address: ");
- Serial.println(WiFi.localIP());
- // MQTT callback
- client.set_callback(callback);
- }
- void callback(const MQTT::Publish& pub) {
- uint16_t i, j;
- String myMessage = String(pub.payload_string());
- // handle message arrived
- Serial.print(pub.topic());
- Serial.print(" => ");
- String myTopic = String(pub.topic());
- if(myTopic == host)
- {
- Serial.println(pub.payload_string());
- if(pub.payload_string() == "11")
- {
- digitalWrite(relayD1, LOW);
- Serial.println("relay_D1 -> on");
- client.publish("saida","11OK");
- relayStateD1 = LOW;
- }
- else if (pub.payload_string() == "12")
- {
- digitalWrite(relayD1, HIGH);
- Serial.println("relay_D1 -> off");
- client.publish("saida","12OK");
- relayStateD1 = HIGH;
- }
- if(pub.payload_string() == "21")
- {
- digitalWrite(relayD2, LOW);
- Serial.println("relay_D2 -> on");
- client.publish("saida","21OK");
- relayStateD2 = LOW;
- }
- else if (pub.payload_string() == "22")
- {
- digitalWrite(relayD2, HIGH);
- Serial.println("relay_D2 -> off");
- client.publish("saida","22OK");
- relayStateD2 = HIGH;
- }
- //MODULO RELE SERIAL
- //MODULO 1 ------------------------------------
- if(pub.payload_string() == "M1R1ON")
- {
- relays.SetRelay(1, SERIAL_RELAY_ON, 1);
- Serial.println("M1R1 -> on");
- client.publish("saida","M1R1ONOK");
- }
- else if (pub.payload_string() == "M1R1OFF")
- {
- relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
- Serial.println("M1R1 -> off");
- client.publish("saida","M1R1OFFOK");
- }
- if(pub.payload_string() == "M1R2ON")
- {
- relays.SetRelay(2, SERIAL_RELAY_ON, 1);
- Serial.println("M1R2 -> on");
- client.publish("saida","M1R2ONOK");
- }
- else if (pub.payload_string() == "M1R2OFF")
- {
- relays.SetRelay(2, SERIAL_RELAY_OFF, 1);
- Serial.println("M1R2 -> off");
- client.publish("saida","M1R2OFFOK");
- }
- if(pub.payload_string() == "M1R3ON")
- {
- relays.SetRelay(3, SERIAL_RELAY_ON, 1);
- Serial.println("M1R3 -> on");
- client.publish("saida","M1R3ONOK");
- }
- else if (pub.payload_string() == "M1R3OFF")
- {
- relays.SetRelay(3, SERIAL_RELAY_OFF, 1);
- Serial.println("M1R3 -> off");
- client.publish("saida","M1R3OFFOK");
- }
- if(pub.payload_string() == "M1R4ON")
- {
- relays.SetRelay(4, SERIAL_RELAY_ON, 1);
- Serial.println("M1R4 -> on");
- client.publish("saida","M1R4ONOK");
- }
- else if (pub.payload_string() == "M1R4OFF")
- {
- relays.SetRelay(4, SERIAL_RELAY_OFF, 1);
- Serial.println("M1R4 -> off");
- client.publish("saida","M1R4OFFOK");
- }
- }
- }
- void loop() {
- if (WiFi.status() == WL_CONNECTED) {
- if (!client.connected()) {
- if (client.connect("CASA2")) {
- client.publish("saida",(String)"EU SOU O: "+host);
- client.subscribe("ESP-B");
- }
- }
- if (client.connected())
- client.loop();
- delay(100);
- medirTemperaturaUmidade();
- delay(100);
- }
- }
- //------------------------------------------
- //--------- MEDIÇÃO DE TEMPERATURA E UMIDADE
- void medirTemperaturaUmidade() {
- unsigned long tempoAtual = millis();
- if (tempoAtual - ultimaMedicao >= intervaloMedicao) {
- ultimaMedicao = tempoAtual;
- float umidade = dht.readHumidity();
- float temperatura = dht.readTemperature(false);
- if (isnan(temperatura)) {
- Serial.print("erro na medicao");
- }
- else {
- client.publish("temp1",(String)temperatura); // Manter a mensagem no BROKER (true or false)
- Serial.print("Temperatura: ");
- Serial.print(temperatura);
- Serial.println(" *C");
- }
- if (isnan(umidade)) {
- Serial.print("erro na medicao");
- }
- else {
- client.publish("umid1",(String)+umidade); // Manter a mensagem no BROKER (true or false)
- Serial.print("Umidade: ");
- Serial.println(umidade);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement