Плата поднимает страницу + JSON API (/api/state, /api/command) на порту 80
для наблюдения и управления актуаторами независимо от MQTT/Laravel.
Команда с веб-UI публикует тот же ack в devices/{id}/ack, что и MQTT-команда,
поэтому device shadow платформы не расходится с реальным состоянием.
Включается/выключается флагом ENABLE_WEB_UI в config.h.
В README добавлены ASCII-схема подключения DHT22/реле и раздел про сборку
через arduino-cli (включая обходной путь для проблемы с правами на
~/Documents/Arduino на macOS).
20 lines
1.2 KiB
C
20 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include <Arduino.h>
|
|
#include <ArduinoJson.h>
|
|
|
|
// Инициализирует пины реле (light/pump/fan), выключает всё при старте.
|
|
void devicesBegin();
|
|
|
|
// Применяет команду {"action": "turn_on"|"turn_off"|"set_level", "level"?}
|
|
// к устройству deviceId, если это одно из известных реле-актуаторов этой
|
|
// платы (light-1/pump-1/fan-1 из config.h). Заполняет outState фактическим
|
|
// применённым состоянием для последующей публикации в devices/{id}/ack.
|
|
// Возвращает false, если deviceId этой плате не принадлежит.
|
|
bool devicesApplyCommand(const String& deviceId, const String& action, double level, JsonDocument& outState);
|
|
|
|
// Заполняет out текущим состоянием всех актуаторов этой платы:
|
|
// {"light-1":{"power":"on"},"pump-1":{"power":"off"},"fan-1":{"power":"off"}}.
|
|
// Нужно веб-интерфейсу, чтобы показать состояние без ожидания следующей команды.
|
|
void devicesGetState(JsonObject& out);
|