Сегодня в тренде «умный дом». Продавцы обещают, что ваша жизнь изменится, стоит лишь вкрутить лампочку с Wi-Fi и сказать «Алекса, включи романтику». Но давайте честно: большинство «сценариев умного дома» — это не ум, а тупость, упакованная в маркетинг.
В этой статье сравним два подхода:
Это то, что рекламируют везде: кнопки, голосовые команды и «вау-эффекты». Примеры:
Звучит весело, пока не задашься вопросом: а зачем?
Выключить свет можно и выключателем. Джакузи и без Wi-Fi нальётся. А если у тебя 20 лет в IT, как у меня, то «найди пульт» вызывает не умиление, а лёгкое раздражение: зачем городить MQTT-топик для поиска пульта, когда его можно просто положить на место?
Это не умный дом. Это ленивый дом. Или, точнее — тупой дом, замаскированный под технологичный.
Кажется, что лампочка с Wi-Fi — безобидная игрушка. Но на деле это шпионский пост, замаскированный под интерьер.
Итог: «тупой дом» не только бесполезен — он опасен. Он превращает твою квартиру в цифровой выхлоп: данные идут на продажу, а безопасность — на откуп маркетологам и китайским OEM-фабрикам.
Теперь посмотрим, как выглядит реальный умный дом — тот, в котором автоматизация решает задачи, которые человек либо не успеет решить, либо не заметит вовремя.
Настоящий умный дом не ждёт команды. Он анализирует:
И небольшой код для обнаружение утечки и перекрытия крана. Про аналитику еще рано, хотя уже было тут про анализ тенденций в моей iot системе, которые я сам прописываю. К примеру на основе имеющихся данных базы mysql скрипт анализирует качество сети, если прыгает напряжение высвечивается сообщение что электричество нестабильно. Или отключаются розетка холодильника, если там ниже 190 вольт. Розетка за 500 рублей выполняет роль реле напряжения, чтобы не сгорел холодильник. Недавно компрессор менял, и конденсаторы перепаял на плате управления холодильника атлант. Вот так ломаются холодильники, а решается это все iot розеткой за 500рублей и скриптом. Хотя попадаются розетки, которые сами горят, вместо с домом, но это другая история, мы вроде тут про автоматику ) Ладно вот простой код анализа утечек и отправки mqtt топика, должен же быть какой то код )
// Умный дом: защита от протечки воды (ESP32 + MQTT)
// Автор: блог о реальной автоматизации
// Требует: WiFi, MQTT-брокер (Mosquitto и т.п.)
#include <WiFi.h>
#include <PubSubClient.h>
// === Настройки Wi-Fi и MQTT ===
const char* ssid = "ВАШ_SSID";
const char* password = "ВАШ_ПАРОЛЬ";
const char* mqtt_server = "192.168.1.100"; // IP вашего брокера
const int mqtt_port = 1883;
const char* mqtt_user = "ваш_логин"; // если требуется
const char* mqtt_pass = "ваш_пароль";
// === Пины ===
const int WATER_LEAK_PIN = 4; // датчик влаги (цифровой выход)
const int VALVE_RELAY_PIN = 5; // реле клапана (активный низкий уровень)
// === MQTT топики ===
const char* status_topic = "home/water/status";
const char* alert_topic = "home/water/alert";
WiFiClient espClient;
PubSubClient mqttClient(espClient);
bool valveClosed = false;
unsigned long lastStatusPublish = 0;
const long statusInterval = 30000; // 30 сек
void setup() {
Serial.begin(115200);
pinMode(WATER_LEAK_PIN, INPUT);
pinMode(VALVE_RELAY_PIN, OUTPUT);
// Клапан открыт по умолчанию (реле ВЫКЛ)
digitalWrite(VALVE_RELAY_PIN, HIGH);
// Подключаемся к Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi подключён");
mqttClient.setServer(mqtt_server, mqtt_port);
}
void reconnectMQTT() {
while (!mqttClient.connected()) {
Serial.print("Подключение к MQTT...");
if (mqttClient.connect("ESP32_WaterGuard", mqtt_user, mqtt_pass)) {
Serial.println("OK");
} else {
Serial.print("Ошибка: ");
Serial.println(mqttClient.state());
delay(2000);
}
}
}
void loop() {
if (!mqttClient.connected()) {
reconnectMQTT();
}
mqttClient.loop();
// Проверяем утечку
bool leakDetected = digitalRead(WATER_LEAK_PIN) == LOW; // датчик замыкает при влаге
if (leakDetected && !valveClosed) {
// Закрываем клапан
digitalWrite(VALVE_RELAY_PIN, LOW);
valveClosed = true;
mqttClient.publish(alert_topic, "LEAK_DETECTED! Valve CLOSED.");
Serial.println("УТЕЧКА! Клапан закрыт.");
}
// Публикуем статус раз в 30 сек
if (millis() - lastStatusPublish > statusInterval) {
const char* status = valveClosed ? "ALERT: valve closed" : "OK: water flowing";
mqttClient.publish(status_topic, status, true); // retained
lastStatusPublish = millis();
Serial.print("Статус: ");
Serial.println(status);
}
delay(100); // debounce
}
Что делает сценарий:
При срабатывании датчика влаги → закрывает клапан, публикует тревогу в MQTT.
После устранения утечки → можно вручную открыть клапан (или автоматически через кнопку/веб-интерфейс — это уже расширение).
Постоянно публикует статус системы («ok» / «leak») раз в 30 секунд для мониторинга.
Как это работает в реальном «умном доме»:
MQTT-брокер (например, на Raspberry Pi) принимает сообщения.
Home Assistant / Node-RED / ваш скрипт реагирует на топик home/water/alert:
отправляет push-уведомление в Telegram;
включает вытяжку в санузле;
логирует событие в базу.
Топик home/water/status с флагом retained всегда показывает актуальное состояние — даже если вы перезапустили панель управления.
Что можно добавить (по желанию):
Кнопка «Сброс» для ручного открытия клапана после устранения течи.
Датчик давления после клапана — проверка, действительно ли вода перекрыта.
Резервное питание через ИБП — чтобы клапан сработал даже при отключении электричества.
Этот код — не «свистелка». Он решает проблему, которую человек может не заметить (особенно ночью или в отъезде). И это то, что отличает умный дом от тупого.
Кто сказал, что для «включи свет» нужна Алиса и облако с нейросетями? Никто. Это маркетологи так говорят — чтобы ты купил колонку и подписку.
На самом деле — можно запилить локального голосового помощника. Он не будет рассказывать анекдоты или заказывать пиццу, но «включи свет», «закрой шторы» или «ночной режим» — распознает легко. И главное: без интернета, без облака, без прослушки.
# Установка: pip install vosk pyaudio
from vosk import Model, KaldiRecognizer
import pyaudio
# Скачай модель с https://alphacephei.com/vosk/models (например, vosk-model-small-ru-0.22)
model = Model("vosk-model-small-ru-0.22")
rec = KaldiRecognizer(model, 16000)
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000)
stream.start_stream()
print("Говори команду...")
while True:
data = stream.read(4000, exception_on_overflow=False)
if rec.AcceptWaveform(data):
result = rec.Result()
if "включи свет" in result:
print("✅ Включаю свет!")
# Здесь — твой код: отправить MQTT, вызвать curl, включить GPIO и т.п.
elif "выключи свет" in result:
print("📴 Выключаю свет!")
# Твой код
# Можно добавить: "ночной режим", "вентилятор", "шторы" и любые фразы
Этот скрипт работает полностью офлайн. Никакие данные не уходят в интернет. Даже если отключишь Wi-Fi — всё будет работать.
Да, он не поймёт «Алиса, сделай чуть теплее» — но зачем тебе это? Ты же не в шоу-руме, а дома. А «включи свет» — работает. И безопасно.
Вот и разница между «тупым» домом (покупаешь — веришь — молчишь) и умным (понимаешь — собираешь — контролируешь).
Если твоя автоматизация не спасает от аварий, не экономит реальные деньги и не работает в твоё отсутствие — это не умный дом. Это игрушка.
А настоящий умный дом — как хороший системный администратор: тихо, надёжно, без лишнего шума, но всегда на страже.
P.S. В следующих статьях покажу, как собрать такую систему на ESP32 + Node-RED + MQTT — без облаков, без подписок, без «найди пульт». Только железо, логика и спокойный сон.
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!