//+------------------------------------------------------------------+ //| Device Finder Info //+------------------------------------------------------------------+ /* Go to: http://apper.duckdns.org/devicefinder Enter search id and click Search. You will then be connected to mqtt broker 'test.mosquitto.org', with topic as your search id. When arduino example below runs, it will publish ip info to topic wifi 'ssid'. */ //+------------------------------------------------------------------+ //| Arduino example: mqtt publish message ip to topic ssid //+------------------------------------------------------------------+ #include #include // Update these with values suitable for your network. const char* ssid = "myssid"; const char* password = "mypassword"; const char* mqtt_server = "test.mosquitto.org"; WiFiClient espClient; PubSubClient client(espClient); long lastMillis = 0; String clientId = "ESP8266-"; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting wifi ssid : "); Serial.print(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address : "); Serial.println(WiFi.localIP()); randomSeed(micros()); clientId += String(random(0xffff), HEX); // setup client id for mqtt connection } void setup() { pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); publishDeviceIP(); } void loop() { client.loop(); // send every 60 second if (millis() - lastMillis > 120*1000) { lastMillis = millis(); publishDeviceIP(); } } // publish ip to topic ssid/ip. Good for finding your device ip's. void publishDeviceIP(){ // connect broker and publish message while (!client.connected()) { Serial.print("Connecting MQTT broker : "); Serial.print(mqtt_server); Serial.print("..."); if (client.connect(clientId.c_str())) { Serial.println("connected"); } else { Serial.print("failed with state "); Serial.println(client.state()); espDelay(2000); } } // setup message with ESP id from mac and ip address unsigned char mac[6]; WiFi.macAddress(mac); IPAddress ipno; ipno = WiFi.localIP(); char msg1[30] ; sprintf(msg1, "ESP-%i%i | IP: %d.%d.%d.%d",mac[4],mac[5], ipno[0], ipno[1], ipno[2], ipno[3]); // (ESPx.x ip x.x.x.x) Serial.print("Publish topic : "); Serial.print(ssid); Serial.print(" | Message : "); Serial.println(msg1); client.publish(ssid, msg1); // publish to ssid topic, msg ipaddress. } void espDelay(unsigned long msdelay){ for(unsigned long i=0; i<=msdelay; i++){ delay(1); // esp tolerates short delays in loop, then it can do wifi stuff in between delays } }