Спойлер - готовые краны с зигби есть в продаже. Статья обзорная, как сделать зигби устройство. Хочешь автоматизировать воду в доме? Управлять краном из Home Assistant? Не покупать дорогие Zigbee-устройства, а сделать своё? Тогда эта статья — для тебя.
Я собрал Zigbee-совместимый шаровый кран на базе ESP32, управляю им через MQTT, а в будущем легко перейду на настоящий Zigbee. Всё — своими руками, с Arduino IDE, с экраном для отладки и питанием от батареек.
📦 Что внутри: компоненты
- M5Stack Core Basic — ESP32 в корпусе с экраном, кнопками и аккумулятором (~$25)
- Драйвер мотора L298N или TB6612 — управление в 2 направления (~$3)
- Мотор с редуктором 12V — поворачивает шаровый кран за 10 сек (~$10)
- Внешний аккумулятор 12V — для питания мотора
- Провода, разъёмы, корпус — по вкусу (~$5)
- MQTT-брокер — Mosquitto на Raspberry Pi или в Docker
Итого: ~$50 — дешевле любого готового Zigbee-крана.
🔌 Схема подключения
M5Stack GPIO 26 → IN1 драйвера (открыть)
M5Stack GPIO 27 → IN2 драйвера (закрыть)
Драйвер → мотор
Питание драйвера и мотора → отдельный 12V аккумулятор
Zigbee Module (пока не используется) → Grove-порт B
💻 Код: Arduino IDE
Установи в Arduino IDE:
- Поддержку ESP32 (через Board Manager)
- Библиотеки:
M5Stack,PubSubClient
#include#include #include // === НАСТРОЙКИ === const char* ssid = "ТВОЯ_WIFI"; const char* password = "ТВОЙ_ПАРОЛЬ"; const char* mqtt_server = "192.168.1.100"; // IP твоего MQTT-брокера #define MOTOR_OPEN_PIN 26 #define MOTOR_CLOSE_PIN 27 #define CMD_TOPIC "zigbee/valve/command" #define STATE_TOPIC "zigbee/valve/state" #define MOTOR_RUN_TIME 10000 // 10 сек WiFiClient espClient; PubSubClient client(espClient); bool valveState = false; // false = закрыт, true = открыт unsigned long lastCheck = 0; const long checkInterval = 3600000; // 1 час void runMotor(int direction) { digitalWrite(MOTOR_OPEN_PIN, direction == 1 ? HIGH : LOW); digitalWrite(MOTOR_CLOSE_PIN, direction == -1 ? HIGH : LOW); if (direction != 0) delay(MOTOR_RUN_TIME); digitalWrite(MOTOR_OPEN_PIN, LOW); digitalWrite(MOTOR_CLOSE_PIN, LOW); } void callback(char* topic, byte* payload, unsigned int length) { String msg = ""; for (int i = 0; i < length; i++) msg += (char)payload[i]; if (String(topic) == CMD_TOPIC) { if (msg == "OPEN") { M5.Lcd.println("→ OPEN"); runMotor(1); valveState = true; client.publish(STATE_TOPIC, "OPENED"); } else if (msg == "CLOSE") { M5.Lcd.println("→ CLOSE"); runMotor(-1); valveState = false; client.publish(STATE_TOPIC, "CLOSED"); } } } void reconnect() { while (!client.connected()) { if (client.connect("ZigbeeValve")) { client.subscribe(CMD_TOPIC); } else delay(5000); } } void setup() { M5.begin(); M5.Lcd.println("Zigbee Valve v1.0"); pinMode(MOTOR_OPEN_PIN, OUTPUT); pinMode(MOTOR_CLOSE_PIN, OUTPUT); digitalWrite(MOTOR_OPEN_PIN, LOW); digitalWrite(MOTOR_CLOSE_PIN, LOW); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(500); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { M5.update(); if (!client.connected()) reconnect(); client.loop(); unsigned long now = millis(); if (now - lastCheck > checkInterval) { lastCheck = now; client.publish(STATE_TOPIC, valveState ? "OPENED" : "CLOSED"); } delay(100); }
🏠 Интеграция с Home Assistant
Добавь в configuration.yaml:
switch:
- platform: mqtt
name: "Zigbee Valve"
command_topic: "zigbee/valve/command"
state_topic: "zigbee/valve/state"
payload_on: "OPEN"
payload_off: "CLOSE"
state_on: "OPENED"
state_off: "CLOSED"
Перезагрузи HA — получишь красивый переключатель в интерфейсе.
🔋 Энергопотребление и автономность
- M5Stack работает от встроенной батарейки — хватает на дни.
- Мотор включается только на 10 сек — экономия энергии.
- Опрос MQTT — раз в час (можно реже).
- Для месячной автономности — добавь power bank или солнечную панель.
🚀 Что дальше?
- Добавь настоящий Zigbee через M5Stack Zigbee Module (CC2652) — тогда не нужен Wi-Fi.
- Добавь датчик положения крана (концевики) — чтобы точно знать статус.
- Добавь OTA-обновления — прошивай по воздуху.
- Добавь deep sleep — экономия батареи до месяцев.
💬 Заключение
Ты не просто купил «умную» игрушку — ты сделал устройство, которое реально решает задачу. Ты понимаешь, как оно работает. Ты можешь его улучшать. Это — настоящий DIY.
Комментарии
Пока нет комментариев. Будьте первым!