Hi all,
Long story short I've managed to blow up my ESP8266 NodeMCU, 8V supplied to vin port & suddenly pop. So I've trying to convert my code to Arduino UNO with ether shield.
The code runs MQTT client linking 5 relays 4 with manual tactile switches & MQTT, 1 purely MQTT controlled & a Dallas DS18B20. I've managed to get the code to run on the Arduino but it does not connect to MQTT Broker.
Could someone check over my code & see what going on ?.
Working ESP -> // ################################################################################### //
// ################### LIBRARY INCLUDE ############################################### //
#include <ArduinoOTA.h> // OVER THE AIR UPDATE
#include <WiFiUdp.h> // SEND DATA TO UDP
#include <ESP8266WiFi.h> // ESP WIFI CHIP
#include <ESP8266mDNS.h> // MULTICAST DNS
#include <PubSubClient.h> // MQTT CLIENT
#include <OneWire.h>
#include <DallasTemperature.h>
// ################################################################################### //
// ################### DEFINE PINOUT FOR NODEMCU ##################################### //
// Digital Relay Connections
#define RelayPin1 D1 // D1-GPIO05
#define RelayPin2 D2 // D2-GPIO04
#define RelayPin3 D5 // D5-GPIO14
#define RelayPin4 D6 // D6-GPIO12
#define RelayPin5 D7 // D7-GPIO13
// Digital Switch Connections
#define SwitchPin1 D3 // D3-GPIO0
#define SwitchPin2 10 // SD3-GPIO10
#define SwitchPin3 3 // RX-GPIO03
#define SwitchPin4 1 // TX-GPIO01
// WiFi Status LED Pin
#define wifiLed D4 // D4-GPIO02
// Dallas DS18B20
#define oneWireBus D8 //
// ################################################################################### //
// ################### DEFINE MQTT SUBS / PUBS & BUFFER ############################## //
// MQTT Ssubscriptions -[recieve]
#define sub1 "/SDGWBED/LIGHTING/RLSS01" // MQTT SUBSCRIPTION TO BROKER
#define sub2 "/SDGWBED/LIGHTING/RLS0S2" // MQTT SUBSCRIPTION TO BROKER
#define sub3 "/SDGWBED/LIGHTING/RLS0S3" // MQTT SUBSCRIPTION TO BROKER
#define sub4 "/SDGWBED/LIGHTING/RLS0S4" // MQTT SUBSCRIPTION TO BROKER
#define sub5 "/SDGWBED/HEATING/RCS01" // MQTT SUBSCRIPTION TO BROKER
#define sub6 "/SDGWBED/HEATING/TSS01" // MQTT SUBSCRIPTION TO BROKER
//#define sub7 "/DEBUG/SDGWBED/ESP-MRSJD-01" // MQTT SUBSCRIPTION TO BROKER
// MQTT Publications -[send]
#define pub1 "/SDGWBED/LIGHTING/RLSP01" // MQTT PUBLICATION TO BROKER
#define pub2 "/SDGWBED/LIGHTING/RLSP02" // MQTT PUBLICATION TO BROKER
#define pub3 "/SDGWBED/LIGHTING/RLSP03" // MQTT PUBLICATION TO BROKER
#define pub4 "/SDGWBED/LIGHTING/RLSP04" // MQTT PUBLICATION TO BROKER
#define pub5 "/SDGWBED/HEATING/RCP01" // MQTT PUBLICATION TO BROKER
#define pub6 "/SDGWBED/HEATING/TSP01" // MQTT PUBLICATION TO BROKER
//#define pub7 "/DEBUG/SDGWBED/ESP-MRSJD-01" // MQTT SUBSCRIPTION TO BROKER
// MQTT Message Buffer Size
#define MSG_BUFFER_SIZE (80)
// ################################################################################### //
// ################### ESPWIFI / SERIAL / MQTT CONFIGURATION ######################### //
// WiFi Configuration
const char ssid = "?"; // Enter your WiFi SSID
const char password = ""; // Enter WiFi password
// MQTT Broker Configuration
const char mqtt_broker = ""; // [mqtt_broker]
const char mqtt_clientID = ""; // [mqtt_clientID]
const char mqtt_username = ""; // [mqtt_username]
const char mqtt_password = ""; // [mqtt_password]
const int mqtt_port = **********; // [mqtt_port]
// MQTT Client Configuration
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
char msg[MSG_BUFFER_SIZE];
int value = 0;
// USB Serial Baud rate
const int baud = 921600;
// Relay Initial State
int toggleState_1 = 0; // toggle state for relay 1
int toggleState_2 = 0; // toggle state for relay 2
int toggleState_3 = 0; // toggle state for relay 3
int toggleState_4 = 0; // toggle state for relay 4
int toggleState_5 = 0; // toggle state for relay 5
// Dallas DS18B20
OneWire oneWire(oneWireBus); // communicate with any OneWire devices
DallasTemperature sensors(&oneWire); // Pass oneWire reference to Dallas
float temp = 0;
int inPin = D8;
// ################################################################################### //
// ################### INITIAL WIFI SETUP ############################################ //
// WIFI INITIALISATION
void initWiFi() {
WiFi.mode(WIFI_STA); // Set wifi to Station Mode
WiFi.begin(ssid, password);
Serial.println(".");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
Serial.println(WiFi.localIP());
// WIFI AUTO RECONNECT
WiFi.setAutoReconnect(true);
WiFi.persistent(true);
}
// ################################################################################### //
// ################### RUN SETUP CODE ################################################ //0
void setup() {
//Serial.begin(baud);
// OTA HOST / SECURITY CONFIGURATION
ArduinoOTA.setPort(8266); // Set OTA Port
ArduinoOTA.setHostname("ESP-MRSJD-01"); // Set OTA Host
ArduinoOTA.setPasswordHash("45556ddd398e09523b13d623138dd433"); // Set OTA [Secure MD5 password]
ArduinoOTA.onStart( {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_FS
type = "filesystem";
}
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd( {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// SET ESP PIN MODE
pinMode(wifiLed, OUTPUT);
pinMode(RelayPin1, OUTPUT);
pinMode(RelayPin2, OUTPUT);
pinMode(RelayPin3, OUTPUT);
pinMode(RelayPin4, OUTPUT);
pinMode(RelayPin5, OUTPUT);pinMode(SwitchPin1, INPUT_PULLUP); pinMode(SwitchPin2, INPUT_PULLUP); pinMode(SwitchPin3, INPUT_PULLUP); pinMode(SwitchPin4, INPUT_PULLUP);
// DEACTIVATION OF ALL RELAYS DURING START
digitalWrite(RelayPin1, HIGH);
digitalWrite(RelayPin2, HIGH);
digitalWrite(RelayPin3, HIGH);
digitalWrite(RelayPin4, HIGH);
digitalWrite(RelayPin5, HIGH);
// WIFI / BROKER SETUP
digitalWrite(wifiLed, LOW);
initWiFi();
client.setServer(mqtt_broker, mqtt_port);
client.setCallback(callback);
// Dallas DS18B20
pinMode(inPin, INPUT);
sensors.begin(); // Start DS18B20 sensor
}
// ################################################################################### //
// ################### MAIN LOOPING CODE ############################################# //
void reconnect() {
// MQTT RECONNECT LOOP & SUBSCRIBE
while (!client.connected()) {
if (client.connect(mqtt_clientID, mqtt_username, mqtt_password)) {
delay(1000);
// ... and resubscribe
client.subscribe(sub1);
client.subscribe(sub2);
client.subscribe(sub3);
client.subscribe(sub4);
client.subscribe(sub5);
client.subscribe(sub6);
//client.subscribe(sub7);
}
else {
Serial.println("Could not connect to broker...");
Serial.print(client.state());
Serial.println("Will Retry in 5 Seconds");
delay(5000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
// MQTT CONTROL CODE
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
// MQTT CONTROL CODE RELAY 01
if (strstr(topic, sub1))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin1, LOW);
toggleState_1 = 0;
client.publish(pub1, "Relay 01 Status - Activated");
} else {
digitalWrite(RelayPin1, HIGH);
toggleState_1 = 1;
client.publish(pub1, "Relay 01 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 02
else if ( strstr(topic, sub2))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin2, LOW);
toggleState_2 = 0;
client.publish(pub2, "Relay 02 Status - Activated");
} else {
digitalWrite(RelayPin2, HIGH);
toggleState_2 = 1;
client.publish(pub2, "Relay 02 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 03
else if ( strstr(topic, sub3))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin3, LOW);
toggleState_3 = 0;
client.publish(pub3, "Relay 03 Status - Activated");
} else {
digitalWrite(RelayPin3, HIGH);
toggleState_3 = 1;
client.publish(pub3, "Relay 03 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 04
else if ( strstr(topic, sub4))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin4, LOW);
toggleState_4 = 0;
client.publish(pub4, "Relay 04 Status - Activated");
} else {
digitalWrite(RelayPin4, HIGH);
toggleState_4 = 1;
client.publish(pub4, "Relay 04 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 05
else if ( strstr(topic, sub5))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin5, LOW);
toggleState_5 = 0;
client.publish(pub5, "Relay 05 Status - Heating valve opening");
} else {
digitalWrite(RelayPin5, HIGH);
toggleState_5 = 1;
client.publish(pub5, "Relay 05 Status - Heating valve closing");
}
}
// UBSUBSCRIBE
else
{
Serial.println("Broker connection lost... All topics unsubscribed");
}
}
void manual_control(){
// MANUAL RELAY CONTROL CODE
// MQTT CONTROL CODE RELAY 01
if (digitalRead(SwitchPin1) == LOW){
delay(200);
if(toggleState_1 == 1){
digitalWrite(RelayPin1, LOW); // MANUAL DEACTIVATE RELAY 2
toggleState_1 = 0; // TOGGLE RELAY STATE
client.publish(pub1, "Relay 01 Status - Activated"); // PUBLISH TO TOPIC 1
Serial.println("Relay 01 Status - Activated");
}
else{
digitalWrite(RelayPin1, HIGH); // MANUAL DEACTIVATE RELAY 1
toggleState_1 = 1; // TOGGLE RELAY STATE
client.publish(pub1, "Relay 01 Status - Deactivated"); // PUBLISH TO TOPIC 1
Serial.println("Relay 01 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 02
else if (digitalRead(SwitchPin2) == LOW){
delay(200);
if(toggleState_2 == 1){
digitalWrite(RelayPin2, LOW); // MANUAL DEACTIVATE RELAY 2
toggleState_2 = 0; // TOGGLE RELAY STATE
client.publish(pub2, "Relay 02 Status - Activated"); // PUBLISH TO TOPIC 2
Serial.println("Relay 02 Status - Activated");
}
else{
digitalWrite(RelayPin2, HIGH); // MANUAL DEACTIVATE RELAY 2
toggleState_2 = 1; // TOGGLE RELAY STATE
client.publish(pub2, "Relay 02 Status - Deactivated"); // PUBLISH TO TOPIC 2
Serial.println("Relay 02 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 03
else if (digitalRead(SwitchPin3) == LOW){
delay(200);
if(toggleState_3 == 1){
digitalWrite(RelayPin3, LOW); // MANUAL DEACTIVATE RELAY 3
toggleState_3 = 0; // TOGGLE RELAY STATE
client.publish(pub3, "Relay 03 Status - Activated"); // PUBLISH TO TOPIC 3
Serial.println("Relay 03 Status - Activated");
}
else{
digitalWrite(RelayPin3, HIGH); // MANUAL DEACTIVATE RELAY 3
toggleState_3 = 1; // TOGGLE RELAY STATE
client.publish(pub3, "Relay 03 Status - Deactivated"); // PUBLISH TO TOPIC 3
Serial.println("Relay 03 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 04
else if (digitalRead(SwitchPin4) == LOW){
delay(200);
if(toggleState_4 == 1){
digitalWrite(RelayPin4, LOW); // MANUAL DEACTIVATE RELAY 4
toggleState_4 = 0; // TOGGLE RELAY STATE
client.publish(pub4, "Relay 04 Status - Activated"); // PUBLISH TO TOPIC 4
Serial.println("Relay 04 Status - Activated");
}
else{
digitalWrite(RelayPin4, HIGH); // MANUAL DEACTIVATE RELAY 4
toggleState_4 = 1; // TOGGLE RELAY STATE
client.publish(pub4, "Relay 04 Status - Deactivated"); // PUBLISH TO TOPIC 4
Serial.println("Relay 04 Status - Deactivated");
}
}
delay(100);
}
void loop() {
// WIFI LED
if (!client.connected()) {
digitalWrite(wifiLed, LOW);
reconnect();
}
else{
digitalWrite(wifiLed, HIGH);
manual_control();
}
client.loop();
// OTA
ArduinoOTA.handle();
// Dallas SD18B20
long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;
sensors.setResolution(12);
sensors.requestTemperatures(); // Send the command to get temperatures
temp = sensors.getTempCByIndex(0);
Serial.println(temp);
if((temp > -20) && (temp <100))
{
client.publish(pub6, String(temp).c_str());
}
}
}
Not Working UNO -
// ################################################################################### //
// ################### LIBRARY INCLUDE ############################################### //
#include <Ethernet.h>
#include <PubSubClient.h> // MQTT CLIENT
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
// ################################################################################### //
// ################### DEFINE PINOUT FOR NODEMCU ##################################### //
// Digital Relay Connections
#define RelayPin1 PD0 // D1-GPIO05
#define RelayPin2 PD1 // D2-GPIO04
#define RelayPin3 PD2 // D5-GPIO14
#define RelayPin4 PD3 // D6-GPIO12
#define RelayPin5 PD5 // D7-GPIO13
// Digital Switch Connections
#define SwitchPin1 A0 // D3-GPIO0
#define SwitchPin2 A1 // SD3-GPIO10
#define SwitchPin3 A2 // RX-GPIO03
#define SwitchPin4 A3 // TX-GPIO01
// Dallas DS18B20
#define oneWireBus PD6 //
// ################################################################################### //
// ################### DEFINE MQTT SUBS / PUBS & BUFFER ############################## //
// MQTT Ssubscriptions -[recieve]
#define sub1 "/SDGWBED/LIGHTING/RLSS01" // MQTT SUBSCRIPTION TO BROKER
#define sub2 "/SDGWBED/LIGHTING/RLS0S2" // MQTT SUBSCRIPTION TO BROKER
#define sub3 "/SDGWBED/LIGHTING/RLS0S3" // MQTT SUBSCRIPTION TO BROKER
#define sub4 "/SDGWBED/LIGHTING/RLS0S4" // MQTT SUBSCRIPTION TO BROKER
#define sub5 "/SDGWBED/HEATING/RCS01" // MQTT SUBSCRIPTION TO BROKER
#define sub6 "/SDGWBED/HEATING/TSS01" // MQTT SUBSCRIPTION TO BROKER
//#define sub7 "/DEBUG/SDGWBED/ESP-MRSJD-01" // MQTT SUBSCRIPTION TO BROKER
// MQTT Publications -[send]
#define pub1 "/SDGWBED/LIGHTING/RLSP01" // MQTT PUBLICATION TO BROKER
#define pub2 "/SDGWBED/LIGHTING/RLSP02" // MQTT PUBLICATION TO BROKER
#define pub3 "/SDGWBED/LIGHTING/RLSP03" // MQTT PUBLICATION TO BROKER
#define pub4 "/SDGWBED/LIGHTING/RLSP04" // MQTT PUBLICATION TO BROKER
#define pub5 "/SDGWBED/HEATING/RCP01" // MQTT PUBLICATION TO BROKER
#define pub6 "/SDGWBED/HEATING/TSP01" // MQTT PUBLICATION TO BROKER
//#define pub7 "/DEBUG/SDGWBED/ESP-MRSJD-01" // MQTT SUBSCRIPTION TO BROKER
// MQTT Message Buffer Size
#define MSG_BUFFER_SIZE (80)
// ################################################################################### //
// ################### ESPWIFI / SERIAL / MQTT CONFIGURATION ######################### //
// Ethernet Configuration
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip[] = {, , , };
byte gateway[] = {, , , };
byte subnet[] = {, , , };
// MQTT Broker Configuration
const char mqtt_broker = ", , , "; // [mqtt_broker]
const char mqtt_clientID = ""; // [mqtt_clientID]
const char mqtt_username = ""; // [mqtt_username]
const char mqtt_password = "*****"; // [mqtt_password]
const int mqtt_port = *************; // [mqtt_port]
// MQTT Client Configuration
EthernetClient unoClient;
PubSubClient client(unoClient);
unsigned long lastMsg = 0;
char msg[MSG_BUFFER_SIZE];
int value = 0;
// USB Serial Baud rate
const int baud = 9600;
// Relay Initial State
int toggleState_1 = 0; // toggle state for relay 1
int toggleState_2 = 0; // toggle state for relay 2
int toggleState_3 = 0; // toggle state for relay 3
int toggleState_4 = 0; // toggle state for relay 4
int toggleState_5 = 0; // toggle state for relay 5
// Dallas DS18B20
OneWire oneWire(oneWireBus); // communicate with any OneWire devices
DallasTemperature sensors(&oneWire); // Pass oneWire reference to Dallas
float temp = 0;
int inPin = PD5;
// ################################################################################### //
// ################### INITIAL ETHERNET SETUP ######################################## //
// ETHERNET INITIALISATION
void initEthernet() {
Ethernet.begin(mac, ip, gateway, subnet);
Serial.println(".");
Serial.println(Ethernet.localIP());
delay(1000);
}
// ################################################################################### //
// ################### RUN SETUP CODE ################################################ //0
void setup() {
Serial.begin(baud);
Serial.println();
// SET UNO PIN MODE
pinMode(RelayPin1, OUTPUT);
pinMode(RelayPin2, OUTPUT);
pinMode(RelayPin3, OUTPUT);
pinMode(RelayPin4, OUTPUT);
pinMode(RelayPin5, OUTPUT);pinMode(SwitchPin1, INPUT_PULLUP); pinMode(SwitchPin2, INPUT_PULLUP); pinMode(SwitchPin3, INPUT_PULLUP); pinMode(SwitchPin4, INPUT_PULLUP);
// DEACTIVATION OF ALL RELAYS DURING START
digitalWrite(RelayPin1, HIGH);
digitalWrite(RelayPin2, HIGH);
digitalWrite(RelayPin3, HIGH);
digitalWrite(RelayPin4, HIGH);
digitalWrite(RelayPin5, HIGH);
// BROKER SETUP
initEthernet ();
client.setServer(mqtt_broker, mqtt_port);
client.setCallback(callback);
// Dallas DS18B20
pinMode(inPin, INPUT);
sensors.begin(); // Start DS18B20 sensor
}
// ################################################################################### //
// ################### MAIN LOOPING CODE ############################################# //
void reconnect() {
// MQTT RECONNECT LOOP & SUBSCRIBE
while (!client.connected()) {
if (client.connect(mqtt_clientID, mqtt_username, mqtt_password)) {
delay(1000);
// ... and resubscribe
client.subscribe(sub1);
client.subscribe(sub2);
client.subscribe(sub3);
client.subscribe(sub4);
client.subscribe(sub5);
client.subscribe(sub6);
//client.subscribe(sub7);
}
else {
Serial.println("Could not connect to broker...");
Serial.print(client.state());
Serial.println("Will Retry in 5 Seconds");
delay(5000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
// MQTT CONTROL CODE
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
// MQTT CONTROL CODE RELAY 01
if (strstr(topic, sub1))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin1, LOW);
toggleState_1 = 0;
client.publish(pub1, "Relay 01 Status - Activated");
Serial.println("Relay 01 Status - Activated");
} else {
digitalWrite(RelayPin1, HIGH);
toggleState_1 = 1;
client.publish(pub1, "Relay 01 Status - Deactivated");
Serial.println("Relay 01 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 02
else if ( strstr(topic, sub2))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin2, LOW);
toggleState_2 = 0;
client.publish(pub2, "Relay 02 Status - Activated");
Serial.println("Relay 02 Status - Activated");
} else {
digitalWrite(RelayPin2, HIGH);
toggleState_2 = 1;
client.publish(pub2, "Relay 02 Status - Deactivated");
Serial.println("Relay 02 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 03
else if ( strstr(topic, sub3))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin3, LOW);
toggleState_3 = 0;
client.publish(pub3, "Relay 03 Status - Activated");
Serial.println("Relay 03 Status - Activated");
} else {
digitalWrite(RelayPin3, HIGH);
toggleState_3 = 1;
client.publish(pub3, "Relay 03 Status - Deactivated");
Serial.println("Relay 03 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 04
else if ( strstr(topic, sub4))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin4, LOW);
toggleState_4 = 0;
client.publish(pub4, "Relay 04 Status - Activated");
Serial.println("Relay 04 Status - Activated");
} else {
digitalWrite(RelayPin4, HIGH);
toggleState_4 = 1;
client.publish(pub4, "Relay 04 Status - Deactivated");
Serial.println("Relay 04 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 05
else if ( strstr(topic, sub5))
{
for (int i = 1; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if ((char)payload[0] == '0') {
digitalWrite(RelayPin5, LOW);
toggleState_5 = 0;
client.publish(pub5, "Relay 05 Status - Heating valve opening");
Serial.println("Relay 05 Status - Heating valve opening");
} else {
digitalWrite(RelayPin5, HIGH);
toggleState_5 = 1;
client.publish(pub5, "Relay 05 Status - Heating valve closing");
Serial.println("Relay 05 Status - Heating valve closing");
}
}
// UBSUBSCRIBE
else
{
Serial.println("Broker connection lost... All topics unsubscribed");
}
}
void manual_control(){
// MANUAL RELAY CONTROL CODE
// MQTT CONTROL CODE RELAY 01
if (digitalRead(SwitchPin1) == LOW){
delay(200);
if(toggleState_1 == 1){
digitalWrite(RelayPin1, LOW); // MANUAL DEACTIVATE RELAY 2
toggleState_1 = 0; // TOGGLE RELAY STATE
client.publish(pub1, "Relay 01 Status - Activated"); // PUBLISH TO TOPIC 1
Serial.println("Relay 01 Status - Activated");
}
else{
digitalWrite(RelayPin1, HIGH); // MANUAL DEACTIVATE RELAY 1
toggleState_1 = 1; // TOGGLE RELAY STATE
client.publish(pub1, "Relay 01 Status - Deactivated"); // PUBLISH TO TOPIC 1
Serial.println("Relay 01 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 02
else if (digitalRead(SwitchPin2) == LOW){
delay(200);
if(toggleState_2 == 1){
digitalWrite(RelayPin2, LOW); // MANUAL DEACTIVATE RELAY 2
toggleState_2 = 0; // TOGGLE RELAY STATE
client.publish(pub2, "Relay 02 Status - Activated"); // PUBLISH TO TOPIC 2
Serial.println("Relay 02 Status - Activated");
}
else{
digitalWrite(RelayPin2, HIGH); // MANUAL DEACTIVATE RELAY 2
toggleState_2 = 1; // TOGGLE RELAY STATE
client.publish(pub2, "Relay 02 Status - Deactivated"); // PUBLISH TO TOPIC 2
Serial.println("Relay 02 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 03
else if (digitalRead(SwitchPin3) == LOW){
delay(200);
if(toggleState_3 == 1){
digitalWrite(RelayPin3, LOW); // MANUAL DEACTIVATE RELAY 3
toggleState_3 = 0; // TOGGLE RELAY STATE
client.publish(pub3, "Relay 03 Status - Activated"); // PUBLISH TO TOPIC 3
Serial.println("Relay 03 Status - Activated");
}
else{
digitalWrite(RelayPin3, HIGH); // MANUAL DEACTIVATE RELAY 3
toggleState_3 = 1; // TOGGLE RELAY STATE
client.publish(pub3, "Relay 03 Status - Deactivated"); // PUBLISH TO TOPIC 3
Serial.println("Relay 03 Status - Deactivated");
}
}
// MQTT CONTROL CODE RELAY 04
else if (digitalRead(SwitchPin4) == LOW){
delay(200);
if(toggleState_4 == 1){
digitalWrite(RelayPin4, LOW); // MANUAL DEACTIVATE RELAY 4
toggleState_4 = 0; // TOGGLE RELAY STATE
client.publish(pub4, "Relay 04 Status - Activated"); // PUBLISH TO TOPIC 4
Serial.println("Relay 04 Status - Activated");
}
else{
digitalWrite(RelayPin4, HIGH); // MANUAL DEACTIVATE RELAY 4
toggleState_4 = 1; // TOGGLE RELAY STATE
client.publish(pub4, "Relay 04 Status - Deactivated"); // PUBLISH TO TOPIC 4
Serial.println("Relay 04 Status - Deactivated");
}
}
delay(100);
}
void loop() {
// Dallas SD18B20
long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;
sensors.setResolution(12);
sensors.requestTemperatures(); // Send the command to get temperatures
temp = sensors.getTempCByIndex(0);
Serial.println(temp);
if((temp > -20) && (temp <100))
{
client.publish(pub6, String(temp).c_str());
}
}
}`
Blockquote
Blockquote