Управление светодиодом ESP8266 через VizIoT

В этом примере создадим устройство на ESP8266, которое позволит:

  • управлять встроенным светодиодом через виджет «Переключатели»;
  • отправлять на сервер VizIoT уровень сигнала Wi-Fi;
  • отображать данные на панели в виде графика.

Это один из самых простых примеров использования VizIoT MQTT Client — идеальный старт для проектов умного дома.


Что понадобится

  • Микроконтроллер: ESP8266 Wemos D1 Mini
  • Среда разработки: Arduino IDE (инструкция по настройке ESP8266 — здесь)

Создание устройства в VizIoT

  1. Создайте новое устройство с именем «Тест управление светодиодом».

  2. Добавьте параметры:

    • rssi — тип «Мощность сигнала, dBm»
    • led — тип «Вкл / выкл, 0–1»
  3. В разделе «Основные настройки» скопируйте:

    • Ключ доступа
    • Пароль доступа

Эти данные понадобятся в прошивке.


Прошивка ESP8266

1. Создайте новый проект в Arduino IDE

2. Скопируйте код ниже:

#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 к ПК и загрузите скетч.


Создание панели и виджетов в VizIoT

Создайте панель: «Тест панель управления»

Добавьте два виджета:

1. График уровня сигнала

  • тип: График
  • устройство: Тест управление светодиодом
  • параметр: rssi

2. Переключатель светодиода

  • тип: Переключатели
  • устройство: Тест управление светодиодом
  • параметр: led

Готово!

Как только устройство подключится к серверу, вы сможете:

  • нажатием переключателя включать и выключать LED на ESP8266;
  • наблюдать график уровня сигнала Wi-Fi;
  • получать обратную связь от устройства почти мгновенно.