MQTT, Zigbee, PHP, MySQL. Без YAML. Только сценарии.
Условия включения:
Действия:
garage/vent/mode → passiveservo/passive_damper → 100servo/bypass_damper → 0fan/intake → off, fan/exhaust → offЧастота проверки: каждые 10 минут
Условия включения:
Действия:
garage/vent/mode → filteredservo/passive_damper → 0filter/hepa → onfan/intake → on (50%)fan/exhaust → on (50%)Выключение: когда PM2.5 < 20 и прошло 30 мин
Условия включения:
Действия:
garage/vent/mode → recuperationservo/bypass_damper → 0fan/intake → on, fan/exhaust → on (60–80%)Условия включения:
Действия:
garage/vent/mode → bypassservo/bypass_damper → 100Вернуться в recuperation: если ворота закрыты, T_гараж - T_улица > 10 °C, нет льда
Условия включения:
Действия:
garage/vent/mode → emergencyУсловия включения:
Действия:
garage/vent/mode → ground_coolingУсловия: 22:00 – 07:00 И нет движения
Действия:
Пример псевдокода:
// Каждые 5–10 минут
$co2 = mqtt_get('garage/sensor/co2');
$pm25 = api_get('https://api.waqi.info/...');
$temp_diff = $inside_temp - $outside_temp;
$door_open = mqtt_get('garage/door/state');
if ($pm25 > 35) {
set_mode('filtered');
} elseif ($temp_diff > 15 && $pm25 < 25 && $door_open == 'off') {
set_mode('passive');
} elseif ($outside_temp < 5 && $co2 > 900) {
set_mode('recuperation');
}
// ... и так далее
CREATE TABLE vent_modes (
id INT AUTO_INCREMENT PRIMARY KEY,
mode VARCHAR(20), -- passive, filtered, recuperation...
activated_at DATETIME,
reason TEXT -- "high PM2.5", "temp diff >15"
);
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!