// ESP32S3 use ESP internal MQTT.h lib now #include // choose ONE #define useREMOTE_BROKER_HIVEMQ //#define useLOCAL_BROKER #ifdef useREMOTE_BROKER_HIVEMQ #define MQTT_HOST "" // OK #define MQTT_SECURE true #define MQTT_PORT 8883 #define useCREDETIALS true #define MQTT_user "" #define MQTT_pass "" #endif // __________________________________________________________________ LOCAL NO TLS #ifdef useLOCAL_BROKER #define MQTT_HOST "192.168.1.104" // OK #define MQTT_SECURE false #define MQTT_PORT 1883 #define useCREDETIALS true #define MQTT_user "uPICOW" #define MQTT_pass "pPICOW" #endif #define MQTT_topic "ESP32S3/data" #define MQTT_stopic "ESP32S3/set" #include // __________________________________________ instead PUBSUB MQTTClient client; #if MQTT_SECURE #include WiFiClientSecure espClient; #else #include WiFiClient espClient; #endif #define STASSID "" #define STAPSK "" #define FIXIP {192,168,1,215} IPAddress thisip(FIXIP); // _________________________________________ fix IP for webserver IPAddress gateway(192, 168, 1, 1); IPAddress subnet(255, 255, 0, 0); IPAddress primaryDNS(8, 8, 8, 8); //optional IPAddress secondaryDNS(8, 8, 4, 4); //optional const char *ssid = STASSID; const char *password = STAPSK; const char *mqtt_broker = MQTT_HOST; // _____________________________ MQTT IP broker const int mqtt_port = MQTT_PORT; const char *mqtt_user = MQTT_user; const char *mqtt_pass = MQTT_pass; const char *mqtt_topic = MQTT_topic; const char *mqtt_stopic = MQTT_stopic; bool MQTT_OK = false; // change because i not want to get it stuck if no broker online BUT now, if start broker later, must reset board void mqtt_connect() { MQTT_OK = false; if ( !MQTT_OK ) { String client_id = "esp32-client"; Serial.print("The client :"); Serial.println(client_id); #if MQTT_SECURE espClient.setInsecure(); #endif Serial.println("try connect"); if (client.connect(client_id.c_str(), mqtt_user, mqtt_pass)) { Serial.print("MQTT broker: "); Serial.print(mqtt_broker); Serial.print(" to topic: "); Serial.print(mqtt_topic); Serial.println(" connected"); MQTT_OK = true; Serial.print("subscribe to: "); Serial.println(mqtt_stopic); client.subscribe(mqtt_stopic); } else { Serial.print("MQTT connect failed "); } } } void messageReceived(String &topic, String &payload) { Serial.println("incoming: " + topic + " : " + payload); } void setup_MQTT() { Serial.println("mqtt setup_MQTT"); #if MQTT_SECURE espClient.setInsecure(); // not check server cert #endif client.begin(MQTT_HOST, MQTT_PORT, espClient ); client.setKeepAlive(100); // default 10 client.onMessage(messageReceived); mqtt_connect(); if ( MQTT_OK ) { // _______________________________________________ Publish after connect Serial.println("publish: I'm a ESP32-S3 ! "); client.publish(MQTT_topic, "I'm a ESP32-S3 ! "); } } void setup_WIFI(){ WiFi.mode(WIFI_STA); WiFi.config(thisip, gateway, subnet, primaryDNS, secondaryDNS); WiFi.begin(ssid, password); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("www Connected to "); Serial.println(ssid); Serial.print("www IP address: "); Serial.println(WiFi.localIP()); } void setup(void) { delay(500); Serial.begin(115200); // __________________________________________ talk to serial delay(500); Serial.println(); setup_WIFI(); setup_MQTT(); } void loop(void) { client.loop(); delay(10); // <- fixes some issues with WiFi stability if (!client.connected()) { mqtt_connect(); } }