//+------------------------------------------------------------------+ //| IP scanner Info //+------------------------------------------------------------------+ /* Go to: http://iotdemo.gearhostpreview.com/ipscanner Enter your wifi ssid on web page and click connect. You will then be connected to mqtt broker 'test.mosquitto.org'. When arduino example below runs, it will publish it's ip info to to topic 'ssid'. Web page will then show the message from your arduino/esp8266/esp32. */ //+------------------------------------------------------------------+ //| 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 } }