#include #include #include #include #define LEDPIN D4 #define NUMBER_PIXELS 1 Adafruit_NeoPixel led = Adafruit_NeoPixel(NUMBER_PIXELS, LEDPIN, NEO_RGB + NEO_KHZ800); // Wifi Credentials const char* ssid = "WeWork"; const char* password = "p@ssw0rd"; const char* mqtt_server = "mqtt.beebotte.com"; // For Beebotte, the MQTT token must be your "secret token", not the channel token const char* mqtt_token = "abc123"; // For Beebotte, this should be "channel/resource" const char* mqtt_resource="ESP8266/led"; WiFiClient espClient; PubSubClient client(espClient); long lastMsg = 0; char msg[50]; int value = 0; void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); digitalWrite(LED_BUILTIN, HIGH); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void onMessage(char* topic, byte* payload, unsigned int length) { // decode the JSON payload StaticJsonBuffer<128> jsonInBuffer; JsonObject& root = jsonInBuffer.parseObject(payload); // Test if parsing succeeds. if (!root.success()) { Serial.println("parseObject() failed"); return; } uint8_t red = root["red"]; uint8_t green = root["green"]; uint8_t blue = root["blue"]; // Print the received value to serial monitor for debugging Serial.println(); Serial.println("------------------------------------"); Serial.print("Received new message of length "); Serial.print(length); Serial.println(); Serial.println("Raw message: "); root.prettyPrintTo(Serial); Serial.println(); Serial.print("Red: "); Serial.print(red); Serial.print(" Green: "); Serial.print(green); Serial.print(" Blue: "); Serial.println(blue); Serial.println("------------------------------------"); Serial.println(); led.setPixelColor(NUMBER_PIXELS-1, red, green, blue); led.show(); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect if (client.connect(clientId.c_str(),mqtt_token,"")) { Serial.println("connected"); // Once connected, publish an announcement... client.publish(mqtt_resource, "hello world"); // ... and resubscribe client.subscribe(mqtt_resource); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { pinMode(LED_BUILTIN, OUTPUT); // Turn off builtin led digitalWrite(LED_BUILTIN, LOW); // Initialize Neopixel led.begin(); led.setPixelColor(NUMBER_PIXELS-1, 0, 0, 0); led.show(); Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(onMessage); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); // long now = millis(); // if (now - lastMsg > 2000) { // lastMsg = now; // ++value; // snprintf (msg, 75, "hello world #%ld", value); // Serial.print("Publish message: "); // Serial.println(msg); // client.publish("ESP8266/led", msg); // } }