🏠

Inteligentne rolety z ESP32 i MQTT

📅 12 kwietnia 2025 ⏱ 15 min czytania 🏷️ Dom inteligentny 👁 11 odsłon
← Dom inteligentny
← Dom inteligentny

Gotowe silniki do rolet kosztują 300–600 zł. Wersja DIY z ESP32 i silnikiem krokowym 28BYJ-48 wychodzi ok. 60 zł i daje pełną kontrolę przez MQTT, Alexa lub Google Home.

Lista elementów

ElementCena
ESP32 DevKit v1~18 zł
Silnik krokowy 28BYJ-48 + sterownik ULN2003~12 zł
Przekładnia do osi rolety (druk 3D lub metal)~5 zł
Zasilacz 5 V / 2 A~12 zł
Kable, złącza dupont~3 zł

Schemat połączeń ESP32 → ULN2003

ULN2003 IN1–IN4ESP32 GPIO
IN1GPIO 19
IN2GPIO 18
IN3GPIO 17
IN4GPIO 16
VCC (5 V)VIN lub zewnętrzny 5 V
GNDGND

Kod ESP32 z MQTT

#include <WiFi.h>
#include <PubSubClient.h>
#include <Stepper.h>

#define KROKI_NA_OBROT 2048
Stepper silnik(KROKI_NA_OBROT, 19, 17, 18, 16);

const char* ssid    = "SSID";
const char* pass    = "HASLO";
const char* broker  = "192.168.1.100"; // Mosquitto

WiFiClient espKlient;
PubSubClient mqtt(espKlient);

int pozycja = 0;  // 0=zamknięte, 2048=otwarte

void callback(char* topic, byte* payload, unsigned int len) {
    String polecenie = String((char*)payload).substring(0, len);
    if (polecenie == "OPEN")  { silnik.step(2048 - pozycja); pozycja = 2048; }
    if (polecenie == "CLOSE") { silnik.step(0 - pozycja);   pozycja = 0;    }
    if (polecenie == "STOP")  { /* nic */ }
}

void setup() {
    silnik.setSpeed(12);
    WiFi.begin(ssid, pass);
    while (WiFi.status() != WL_CONNECTED) delay(500);
    mqtt.setServer(broker, 1883);
    mqtt.setCallback(callback);
    mqtt.connect("roleta1");
    mqtt.subscribe("dom/roleta/1/set");
}

void loop() {
    if (!mqtt.connected()) { mqtt.connect("roleta1"); mqtt.subscribe("dom/roleta/1/set"); }
    mqtt.loop();
}

Instalacja Mosquitto (broker MQTT)

sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable --now mosquitto

# Test z terminala
mosquitto_pub  -t "dom/roleta/1/set" -m "OPEN"
mosquitto_sub  -t "dom/roleta/1/set"

Integracja z Home Assistant

# configuration.yaml
cover:
  - platform: mqtt
    name: "Roleta sypialnia"
    command_topic: "dom/roleta/1/set"
    payload_open: "OPEN"
    payload_close: "CLOSE"
    payload_stop: "STOP"
✅ Automatyzacja: ustaw w HA, żeby rolety otwierały się o wschodzie słońca i zamykały o zachodzie – integracja sun śledzi godziny dla Twojej lokalizacji.