#include "TinyMqtt.h" // https://github.com/hsaturn/TinyMqtt #include "TinyStreaming.h" // https://github.com/hsaturn/TinyConsole /** Simple Client (The simplest configuration, client only sends topics) * * * +--------+ * +------>| broker |<--- < Other client * | +--------+ * | * +-----------------+ * | ESP | | * | +----------+ | * | | internal | | * | | client | | * | +----------+ | * | | * +-----------------+ * * 1 - change the ssid/password * 2 - change BROKER values (or keep emqx.io test broker) * 3 - you can use mqtt-spy to connect to the same broker and * see the sensor/temperature updated by the client. * * pro - small memory footprint (both ram and flash) * - very simple to setup and use * * cons - cannot work without wifi connection * - stop working if broker is down * - local publishes takes more time (because they go outside) */ const char* BROKER = "broker.emqx.io"; const uint16_t BROKER_PORT = 1883; const char* ssid = ""; const char* password = ""; static float temp=19; static MqttClient client; void setup() { Serial.begin(115200); delay(500); Serial << "Simple clients with wifi " << endl; if (strlen(ssid)==0) Serial << "****** PLEASE MODIFY ssid/password *************" << endl; WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial << '.'; } Serial << "Connected to " << ssid << "IP address: " << WiFi.localIP() << endl; client.connect(BROKER, BROKER_PORT); } void loop() { client.loop(); // Don't forget to call loop() for each broker and client // delay(1000); please avoid usage of delay (see below how this done using next_send and millis()) static auto next_send = millis(); if (millis() > next_send) { next_send += 1000; if (not client.connected()) { Serial << millis() << ": Not connected to broker" << endl; return; } auto rnd=random(100); if (rnd > 66) temp += 0.1; else if (rnd < 33) temp -= 0.1; Serial << "--> Publishing a new sensor/temperature value: " << temp << endl; client.publish("sensor/temperature", String(temp)); } }