Her er koden jeg bruker.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define wifi_ssid "<SSID>"
#define wifi_password "<PASSORD>"
#define mqtt_server "<IP>"
#define mqtt_user "<BRUKERNAVN>"
#define mqtt_password "<PASSORD>"
#define mqtt_subscribe "nodemcu/lightchains/control"
#define mqtt_publish "nodemcu/lightchains/status"
WiFiClientSecure espClient;
PubSubClient client(espClient);
void setup() {
// Set GPIO2 (D4) off by default
pinMode(2, OUTPUT);
digitalWrite(2, 0);
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 8883);
client.setCallback(callback);
}
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(wifi_ssid);
WiFi.begin(wifi_ssid, wifi_password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wifi connected");
Serial.print("My IP address is ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("]: ");
int p =(char)payload[0]-'0';
Serial.println(p);
if(p==0)
{
digitalWrite(2, 0);
Serial.print("Message published [");
Serial.print(mqtt_publish);
Serial.print("]: ");
Serial.println(p);
client.publish(mqtt_publish, "0", true);
}
if(p==1)
{
digitalWrite(2, 1);
Serial.print("Message published [");
Serial.print(mqtt_publish);
Serial.print("]: ");
Serial.println(p);
client.publish(mqtt_publish, "1", true);
}
}
void reconnect() {
while (!client.connected()) {
Serial.println("Connecting to MQTT broker ");
if (client.connect("ESP8266Client_lightchain", mqtt_user, mqtt_password)) {
Serial.println("MQTT connected");
client.subscribe(mqtt_subscribe);
} else {
Serial.println("MQTT connection failed, trying again in 5 seconds");
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}