Рассмотрим пример который позволит управлять светодиодом микроконтроллера через виджет «Переключатели» и строить график уровень Wi-Fi сигнала.
Что нам потребуется:
Добавление и настройка устройства:
Прошивка ESP8266:
#include <ESP8266WiFi.h> #include <Ticker.h> #include <VizIoTMqttClient.h> //Адрес ноги со светодиодом #define LED_ESP 2 //ssid и пароль доступа для подключения к WI-FI const char* ssid = ".........."; const char* password = "..........."; //Зарегистрируйтесь в VizIoT.com и создайте устройство //Ключ и пароль доступа VizIoT Устройства (можно узнать в настройках устройства) String VizIoT_Device_key = "................"; String VizIoT_Device_pass = "...................."; WiFiClient espClient; PubSubClient clientMQTT(espClient); VizIoTMqttClient clientVizIoT(clientMQTT); long lastMsg = 0; char msg[100]; byte statusLed = 0; /*----------Отправка данных----------------*/ Ticker sender; bool isSendDataToServer; void SendDataToServer() {isSendDataToServer = true;} #define INTERVAL_SEND_DATA 30 //Отправка данных каждые 5 минут (5*60=300) /*----------Отправка данных----------------*/ void setup() { //разрешаем управлять светодиодом pinMode(LED_ESP, OUTPUT); digitalWrite(LED_ESP, HIGH); //Включаем вывод информации в Serial Monitor Serial.begin(9600); //Подключаемся к WI-FI setup_wifi(); clientVizIoT.config(VizIoT_Device_key, VizIoT_Device_pass); clientVizIoT.listenCommand(callback); sender.attach(INTERVAL_SEND_DATA, SendDataToServer); // Создаем событие отправки данных каждые INTERVAL_SEND_DATA сек } //Обработка события получения данных void callback(String parameter, byte value) { Serial.print("Публикация сообщения: parameter"); Serial.print(parameter); Serial.print("value "); Serial.println(value); if (parameter.compareTo("led") == 0) { if (value == 1) { statusLed = 1; digitalWrite(LED_ESP, LOW); } else { statusLed = 0; digitalWrite(LED_ESP, HIGH); } snprintf(msg, sizeof(msg), "{\"led\":\"%c\"}", (statusLed) ? '1' : '0'); Serial.print("Публикация сообщения: "); Serial.println(msg); clientVizIoT.sendJsonString(String(msg)); } } //Функция подключения к WI-FI void setup_wifi() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { //Ожидает подключения к WI-FI delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi подключен"); } void loop() { //необходим для обработки входящих сообщения и поддержания подключения к Брокеру clientVizIoT.loop(); if (isSendDataToServer) { isSendDataToServer = false; snprintf (msg, sizeof(msg), "{\"rssi\":\"%i\",\"led\":\"%c\"}", WiFi.RSSI(), (statusLed) ? '1' : '0'); Serial.print("Публикация сообщения: "); Serial.println(msg); clientVizIoT.sendJsonString(String(msg)); } }
#define MQTT_MAX_PACKET_SIZE 1024в библиотеке «PubSubClient» она обычно расположена в «C:\Users\{Имя пользователя}\Documents\arduino\libraries\PubSubClient\src\PubSubClient.h»
Добавления виджетов:
Теперь вы все настроили и осталось дождаться подключения вашего устройства на сервер и сможете управлять светодиодом путем нажатия на переключатель в Панели.