//Pico_MQTT__03publisher.ino
//Programmer: P.Thounthong
//Update: 02/12/2022
#include <WiFi.h>
#include "PubSubClient.h"
//Update these with values suitable for your network.
const char* ssid = "Wokwi-GUEST";
const char* password = "";
//Config MQTT Server
#define mqtt_server "cougar.rmq.cloudamqp.com"
#define mqtt_user "zikyolij:zikyolij"
#define mqtt_password "5DXryw4yJVfJmTyM02MKMjiMqFDCJH78"
#define mqtt_port 1883
//#define mqtt_server "propitious-paramedic.cloudmqtt.com"
//#define mqtt_user "jzlrvujc"
//#define mqtt_password "CjKjfaJ1N7S7"
//#define mqtt_port 1883
#define mqtt_ID "99_Phatiphat" //As you want
#define LED1 LED_BUILTIN
unsigned long lastSend;
WiFiClient espClient; //Pico in Station/Client mode
PubSubClient mqttClient(espClient);
void setup() {
pinMode(LED1, OUTPUT);
digitalWrite(LED1, LOW); //Active HIGH => OFF LED
Serial1.begin(115200);
wifiSetup();
delay(1000); //Allow the hardware to sort itself out
mqttClient.setServer(mqtt_server, mqtt_port);
if(mqttClient.connect(mqtt_ID, mqtt_user, mqtt_password)){
Serial1.println("MQTT Broker: connection succeeded");
digitalWrite(LED1, LOW);
}
else{
Serial1.println("MQTT Broker: connection failed!!!");
digitalWrite(LED1, HIGH);
}
}
void loop(){
if (!mqttClient.connect(mqtt_ID, mqtt_user, mqtt_password)) {
reconnect();
}
if (millis() - lastSend > 2000 ) { //Update and send only after 5 seconds
if(digitalRead(LED1)){
digitalWrite(LED1, LOW);
mqttClient.publish("9999_LED","0"); //Topic & Message
}
else{
digitalWrite(LED1, HIGH);
mqttClient.publish("9999_LED","1");
}
lastSend = millis();
}
}
void wifiSetup()
{
Serial1.println();
Serial1.print("Connecting to ");
Serial1.println(wifi_ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(wifi_ssid, wifi_password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial1.print(".");
}
Serial1.println("");
Serial1.println("WiFi connected");
Serial1.print("IP address: ");
Serial1.println(WiFi.localIP());
}
void reconnect() {
// Loop until we're reconnected
while (!mqttClient.connect(mqtt_ID, mqtt_user, mqtt_password)) {
Serial1.print("Attempting MQTT connection...");
// Attempt to connect
if (mqttClient.connect(mqtt_ID, mqtt_user, mqtt_password)) {
Serial1.println("connected");
} else {
Serial1.print("failed, rc=");
Serial1.print(mqttClient.state());
Serial1.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}