#include "Config.h"
#include <Arduino.h>
#include "Global.h"
#include "REST_API.h"
// -------------------- ЛОГИКА УСТРОЙСТВА --------------------
// Простейшее 1-канальное реле
void applyChannelState(uint8_t ch, bool on) {
if (ch != 0) return;
digitalWrite(RELAY_PIN, on ? HIGH : LOW);
}
// Добавляем поля в /status
void appendStatusJsonFields(String &json) {
// Пример: {"status":"ok","relay_state":"on"}
json += ",\"relay_state\":\"";
json += getPrimaryState() ? "on" : "off";
json += "\"";
}
// Добавляем поля в /about (если нужно)
void appendAboutJsonFields(String &json) {
// Например, количество каналов
json += ",\"channels\":" + String(CHANNEL_NUM);
}
// Обработка действий
bool deviceHandleAction(const String &action,
const String ¶msJson,
String &errorCode,
String &errorMessage)
{
if (action == "set_state") {
String state = extractJsonStringValue(paramsJson, "state");
state.toLowerCase();
if (state != "on" && state != "off") {
errorCode = "IllegalActionOrParams";
errorMessage = "Unknown state value";
return false;
}
bool on = (state == "on");
// ВАЖНО: здесь мы сами решаем, сохранять ли это в EEPROM,
// вызывать ли setChannelState/ setOn и т.п.
setOn(on); // внутри setOn → setChannelState(0, on, true);
return true;
}
// Неизвестное действие
errorCode = "IllegalActionOrParams";
errorMessage = "Unknown action";
return false;
}
// -------------------- SETUP / LOOP --------------------
void setup() {
pinMode(RELAY_PIN, OUTPUT);
coreSetup();
}
void loop() {
coreLoop();
}