#include "illuchat_config.h" #include #include #include #include #include #include #include #include #include WiFiNet *network; Sprocket *sprocket; WebServerPlugin *webServerPlugin; WebConfigPlugin *webConfigPlugin; WebApiPlugin *webApiPlugin; PixelPlugin *pixelPlugin; MqttPlugin *mqttPlugin; void setup() { sprocket = new Sprocket({STARTUP_DELAY, SERIAL_BAUD_RATE}); pixelPlugin = new PixelPlugin({LED_STRIP_PIN, LED_STRIP_LENGTH, LED_STRIP_BRIGHTNESS, LED_STRIP_UPDATE_INTERVAL}); mqttPlugin = new MqttPlugin({MQTT_CLIENT_NAME, MQTT_HOST, MQTT_PORT, MQTT_ROOT_TOPIC}); webServerPlugin = new WebServerPlugin({WEB_CONTEXT_PATH, WEB_DOC_ROOT, WEB_DEFAULT_FILE, WEB_PORT}); webConfigPlugin = new WebConfigPlugin(webServerPlugin->server); webApiPlugin = new WebApiPlugin(webServerPlugin->server); sprocket->addPlugin(pixelPlugin); sprocket->addPlugin(webServerPlugin); sprocket->addPlugin(webConfigPlugin); sprocket->addPlugin(webApiPlugin); sprocket->addPlugin(mqttPlugin); network = new WiFiNet( WIFI_MODE, STATION_SSID, STATION_PASSWORD, AP_SSID, AP_PASSWORD, HOSTNAME, CONNECT_TIMEOUT); network->connect(); webServerPlugin->server->serveStatic(PIXEL_CONFIG_FILE, SPIFFS, "pixelConfig.json"); webServerPlugin->server->serveStatic(MQTT_CONFIG_FILE, SPIFFS, "mqttConfig.json"); const char* mqChatTopic = "wirelos/chat/log"; const char* outChatTopic = "out/chat/log"; const char* chatUser = "user"; sprocket->subscribe("mqtt/connect", [mqChatTopic, outChatTopic, chatUser](String msg) { if (msg.length() > 0) { mqttPlugin->client->subscribe(mqChatTopic); sprocket->subscribe(mqChatTopic, [](String msg) { PRINT_MSG(Serial, "CHAT", String("incoming: " + msg).c_str()); webApiPlugin->ws->textAll(msg); }); // send message from WS to this topic sprocket->subscribe(outChatTopic, [mqChatTopic, chatUser](String msg) { PRINT_MSG(Serial, "CHAT", msg.c_str()); mqttPlugin->client->publish(mqChatTopic, (String(chatUser) + ": " + msg).c_str()); }); } }); sprocket->activate(); } void loop() { sprocket->loop(); yield(); }