В этом примере создадим устройство на ESP8266, которое позволит:
Это один из самых простых примеров использования VizIoT MQTT Client — идеальный старт для проектов умного дома.
Создайте новое устройство с именем «Тест управление светодиодом».
Добавьте параметры:
В разделе «Основные настройки» скопируйте:
Эти данные понадобятся в прошивке.
#include <ESP8266WiFi.h>
#include <VizIoTMqttClient.h>
#include <ArduinoJson.h>
#include <Ticker.h>
// Wi-Fi настройки
const char* WIFI_SSID = "your_wifi_ssid";
const char* WIFI_PASSWORD = "your_wifi_password";
// Данные устройства VizIoT
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);
// Светодиод на D4 (встроенный LED)
#define LED_ESP D4
bool ledState = false;
// Таймер периодической отправки данных
Ticker sender;
bool isSendDataToServer = false;
void SendDataToServer() {
isSendDataToServer = true;
}
#define INTERVAL_SEND_DATA 300 // каждые 5 минут
// Формирование и отправка JSON-пакета на сервер
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");
}
}
// Обработка входящих параметров
void onParameterReceived(const char* paramName, const char* value) {
Serial.print("Received: ");
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: ");
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("\nConnected to Wi-Fi");
}
// Основная инициализация
void setup() {
Serial.begin(115200);
pinMode(LED_ESP, OUTPUT);
digitalWrite(LED_ESP, HIGH);
setup_wifi();
mqttClient.begin();
mqttClient.setParameterCallback(onParameterReceived);
sender.attach(INTERVAL_SEND_DATA, SendDataToServer);
SendDataToServer();
}
// Основной цикл
void loop() {
if (WiFi.status() != WL_CONNECTED) {
WiFi.reconnect();
delay(1000);
return;
}
mqttClient.poll();
if (!mqttClient.isConnected()) {
mqttClient.reconnect();
}
if (isSendDataToServer) {
isSendDataToServer = false;
sendPacketToVizIoT();
}
delay(100);
}
В Arduino IDE:
В коде замените значения:
WIFI_SSID — имя вашей Wi-Fi сетиWIFI_PASSWORD — парольVIZIOT_DEVICE_KEY — ключ устройстваVIZIOT_DEVICE_PASS — пароль устройстваПосле этого подключите ESP8266 к ПК и загрузите скетч.
Создайте панель: «Тест панель управления»
Добавьте два виджета:
Как только устройство подключится к серверу, вы сможете: