Рассмотрим пример который позволит управлять светодиодом микроконтроллера через виджет «Переключатели» и строить график уровень Wi-Fi сигнала.
Что нам потребуется:
Добавление и настройка устройства:
Прошивка ESP8266:
#include <ESP8266WiFi.h> #include <VizIoTMqttClient.h> #include <ArduinoJson.h> #include <Ticker.h> //ssid и пароль доступа для подключения к WI-FI const char* WIFI_SSID = "your_wifi_ssid"; const char* WIFI_PASSWORD = "your_wifi_password"; //Ключ и пароль доступа устройства const char* VIZIOT_DEVICE_KEY = "your_16_char_device_key"; const char* VIZIOT_DEVICE_PASS = "your_20_char_device_pass"; //Создание MQTT клиента VizIoTMqttClient mqttClient(VIZIOT_DEVICE_KEY, VIZIOT_DEVICE_PASS); //Адрес ноги со светодиодом #define LED_ESP D4 // Статус светодиода bool ledState = false; // Таймер для отправки данных MQTT-брокеру VizIoT Ticker sender; bool isSendDataToServer = false; void SendDataToServer() { isSendDataToServer = true; } #define INTERVAL_SEND_DATA 300 // Отправляйте данные каждые 5 минут (5*60=300) // Функция отправки данных MQTT-брокеру VizIoT void sendPacketToVizIoT() { DynamicJsonDocument doc(256); JsonObject obj = doc.to<JsonObject>(); obj["led"] = ledState ? 1 : 0; obj["rssi"] = WiFi.RSSI(); String jsonStr; serializeJson(doc, jsonStr); if (mqttClient.publishJson(jsonStr.c_str())) { Serial.println("Published JSON: " + jsonStr); } else { Serial.println("Failed to publish JSON"); } } // Функция для полученных параметров от MQTT-брокеру VizIoT void onParameterReceived(const char* paramName, const char* value) { Serial.print("Received parameter: "); Serial.print(paramName); Serial.print(" = "); Serial.println(value); if (strcmp(paramName, "led") == 0) { bool newState = (strcmp(value, "1") == 0); ledState = newState; digitalWrite(LED_ESP, ledState ? LOW : HIGH); // Включить = LOW Serial.print("LED state updated to: "); Serial.println(ledState ? "ON" : "OFF"); sendPacketToVizIoT(); } } //Функция подключения к WI-FI void setup_wifi() { WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to Wi-Fi..."); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println("Connected to Wi-Fi"); } void setup() { //Включаем вывод информации в Serial Monitor Serial.begin(115200); //разрешаем управлять светодиодом pinMode(LED_ESP, OUTPUT); digitalWrite(LED_ESP, HIGH); // Светодиод выключен //Подключаемся к WI-FI setup_wifi(); // Запускаем mqtt клиент и указываем функцию обработки входных сообщений mqttClient.begin(); mqttClient.setParameterCallback(onParameterReceived); // Создаем событие отправки данных каждые INTERVAL_SEND_DATA сек sender.attach(INTERVAL_SEND_DATA, SendDataToServer); // Отправим данные, как только подключимся к брокеру SendDataToServer(); } void loop() { // Проверяем подключениек WiFi if (WiFi.status() != WL_CONNECTED) { WiFi.reconnect(); delay(1000); return; } // Обработка входящих сообщений и поддержания активного соединения с MQTT-брокером. mqttClient.poll(); if (!mqttClient.isConnected()) { mqttClient.reconnect(); } // Отправка данных на сервер каждые 5 минут if (isSendDataToServer) { isSendDataToServer = false; sendPacketToVizIoT(); } delay(100); }
Добавления виджетов:
Теперь вы все настроили и осталось дождаться подключения вашего устройства на сервер и сможете управлять светодиодом путем нажатия на переключатель в Панели.