Hello,
Iam looking for a sketch for the ESP8266
To make a switch with local control and with MQTT, and status monitor.
So when i push the switch local,the status is given true MQTT.
Do you have a working sketch please let me know.
Or do you have another interesting sketch.
Thanks in advanced
Ed
ESP8266 MQTT
Re: ESP8266 MQTT
You just want a button to send out an MQTT packet ?
https://community.openhab.org/t/mqtt-wa ... p8266/9511
https://community.openhab.org/t/mqtt-wa ... p8266/9511
Running HS3PRO on PC with Z-Wave / OpenTherm / Plugwise / RFXcom / MQTT / XAP400 / Logitech Media Server and Squeezelite on PI`s
Re: ESP8266 MQTT
Hello,
Thanks for the repley
This is also handy and interesting.
But I was looking for a light switch with a local button and status update.
and control with Mqtt.
Sorry I was not clear with my question.
Ed
Thanks for the repley
This is also handy and interesting.
But I was looking for a light switch with a local button and status update.
and control with Mqtt.
Sorry I was not clear with my question.
Ed
Re: ESP8266 MQTT
I have found another example wich is working on a NodeMCU board using the Arduino IDE. In the sketch there is a reference to SonOff which is a Wifi enable switch. I think you can use the following skech for this since it has a local button and a relay so the functions seem to be there
https://www.itead.cc/sonoff-wifi-wireless-switch.html

https://www.itead.cc/sonoff-wifi-wireless-switch.html
Code: Select all
/*
It connects to an MQTT server then:
- on 0 switches off relay
- on 1 switches on relay
- on 2 switches the state of the relay
- sends 0 on off relay
- sends 1 on on relay
It will reconnect to the server if the connection is lost using a blocking
reconnect function. See the 'mqtt_reconnect_nonblocking' example for how to
achieve the same result without blocking the main loop.
The current state is stored in EEPROM and restored on bootup
*/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Bounce2.h>
#include <EEPROM.h>
const char* ssid = "YourSSID";
const char* password = "YourPASS";
const char* mqtt_server = "YourMQTTBroker'sIP";
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
const char* outTopic = "Sonoff1out";
const char* inTopic = "Sonoff1in";
int relay_pin = 12;
int button_pin = 0;
bool relayState = LOW;
// Instantiate a Bounce object :
Bounce debouncer = Bounce();
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
extButton();
for(int i = 0; i<500; i++){
extButton();
delay(1);
}
Serial.print(".");
}
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
// Switch on the LED if an 1 was received as first character
if ((char)payload[0] == '0') {
digitalWrite(relay_pin, LOW); // Turn the LED on (Note that LOW is the voltage level
Serial.println("relay_pin -> LOW");
relayState = LOW;
EEPROM.write(0, relayState); // Write state to EEPROM
EEPROM.commit();
} else if ((char)payload[0] == '1') {
digitalWrite(relay_pin, HIGH); // Turn the LED off by making the voltage HIGH
Serial.println("relay_pin -> HIGH");
relayState = HIGH;
EEPROM.write(0, relayState); // Write state to EEPROM
EEPROM.commit();
} else if ((char)payload[0] == '2') {
relayState = !relayState;
digitalWrite(relay_pin, relayState); // Turn the LED off by making the voltage HIGH
Serial.print("relay_pin -> switched to ");
Serial.println(relayState);
EEPROM.write(0, relayState); // Write state to EEPROM
EEPROM.commit();
}
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("ESP8266Client")) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish(outTopic, "Sonoff1 booted");
// ... and resubscribe
client.subscribe(inTopic);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
for(int i = 0; i<5000; i++){
extButton();
delay(1);
}
}
}
}
void extButton() {
debouncer.update();
// Call code if Bounce fell (transition from HIGH to LOW) :
if ( debouncer.fell() ) {
Serial.println("Debouncer fell");
// Toggle relay state :
relayState = !relayState;
digitalWrite(relay_pin,relayState);
EEPROM.write(0, relayState); // Write state to EEPROM
if (relayState == 1){
client.publish(outTopic, "1");
}
else if (relayState == 0){
client.publish(outTopic, "0");
}
}
}
void setup() {
EEPROM.begin(512); // Begin eeprom to store on/off state
pinMode(relay_pin, OUTPUT); // Initialize the relay pin as an output
pinMode(button_pin, INPUT); // Initialize the relay pin as an output
pinMode(13, OUTPUT);
relayState = EEPROM.read(0);
digitalWrite(relay_pin,relayState);
debouncer.attach(button_pin); // Use the bounce2 library to debounce the built in button
debouncer.interval(50); // Input must be low for 50 ms
digitalWrite(13, LOW); // Blink to indicate setup
delay(500);
digitalWrite(13, HIGH);
delay(500);
Serial.begin(115200);
setup_wifi(); // Connect to wifi
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
extButton();
}
Running HS3PRO on PC with Z-Wave / OpenTherm / Plugwise / RFXcom / MQTT / XAP400 / Logitech Media Server and Squeezelite on PI`s
Re: ESP8266 MQTT
Hello,
This is the sketch that iam looking for.
There is so much on the internet,so I wil try this this weekend.
Thanks.
Ed
This is the sketch that iam looking for.
There is so much on the internet,so I wil try this this weekend.
Thanks.
Ed