Wielostrefowe sterowanie ogrzewaniem

Od jakiegoś czasu próbuję zmontować oprogramowanie sterujące wielostrefowym ogrzewaniem podłogowym (lub nie) W domu jednorodzinnym. Założenia główne to…

  1. Sterowanie i podgląd z panelu Home Assistant
  2. Automatyka na Node-RED
  3. Moduł wykonawczy - Arduino Mega (W idealnej wersji płytka obsługuje zarówno czujniki temperatury jak też przekaźniki SSR)
    Cele:
  4. Kod wykonawczy wgrany na stałe do Arduino Mega (nawet kiedy padnie HA płytka steruje ogrzewaniem).
  5. Możliwość ustawienia temperatury zadanej poszczególnych stref z panelu HA (przekazanie tych wytycznych do Arduino po UART)
  6. Możliwość ustawienia histerezy dla każdej z poszczególnych stref z poziomu HA i przekazanie do Arduino po UART.
    Obecnie dysponuje oprogramowaniem które działa (z wyjątkiem histerezy) Jeśli ktoś podpowie mi jak to chętnie go opublikuję. Składa się z kilku zakładek w Arduino IDE Więc z wkopiuj wklej będzie problem.
    Myślę że skrypt takiego termostatu przyda się wielu osobą które będą mogły go dostosować do własnych potrzeb.

Zainteresował mnie twój temat, bo:

  1. Mam ogrzewanie podłogowe
  2. Planuję samodzielnie sterować wydajnością pomp obiegowych (obecnie mam jedną, ale będą dwie), sterowanie pompami będzie poprzez PWM w zależności od delty jaka jest na zasilaniu i powrocie dla obiegu sterowanego tą pompą. Ew. trzecią pompę tylko na grzejniki w łazienkach, ale taka o najmniejszej wydajności Grundfosa, nie ma PWM’a, więc tutaj jakoś inaczej.

Widzę dwa sposoby:

  1. Napisanie własnego algorytmu do Arduino/Mega lub do ESP8266/32 (do ESP, tak samo ŁATWE w Arduino IDE jak to Arduino, a masz od razu komunikację po WiFi) a następnie zintegrowanie tego z HA (CZARNA MAGIA NA RAZIE DLA MNIE)
  2. Znalezienie gotowego wsadu do ESP8266/32 z gotową integracją do HA.

Wybrałeś pierwszy scenariusz i pytasz jak to zintegrować z HA. Gdyby ktoś naprowadził, JAK? to też byłbym zainteresowany.

Ja wstępnie na potrzeby takiego scenariusza (nr1), doszkoliłem się, co do sterowania typu PID, oraz planuję bliżej doszkolić się do sterowania Delta-Sigma, gdyż są gotowe integracje ESPHome używające tych rodzajów sterowań.

Mi osobiście wydaje się, że zastosowanie jednej płytki ArdionoMega + integracja z HA, to dUUUŻo większe wyzwanie niż kupienie nawet kilku/nastu tanich płytek opartych na ESP8266 i poznanie już wypracowanych gotowców np. na ESPHome. (jeśli nie uda się użyć jednej płytki dla wielu stref).

Ciekaw jestem rozwiązania do ogarnięcia integracji z HA - jeśli podążysz scenariuszem 1, albo jeśli pójdziesz w scenariusz 2, to czy udało się na ESPHome i jak dokładnie.

Pewnie masz rację. Napisałem jednak prymitywny kod który mimo zawartego w nim bałaganu działa. Poza histerezą z którą jakoś nie mogę sobie poradzić. Jak wspomniałem bałagan w nim straszny ale może być punktem wyjścia…

Udało się. Scenariusz 2 hula od roku choć ESP Home poprzez aktualizacje sprawdza moją cierpliwość. Lubią bez słowa wprowadzić coś co wywala kod w powietrze.

@Marek_Mazurek jeżeli ktoś przeczytał ten wątek, pododnie jak ja to zrobiłem, to niczego konkretnego się nie dowie tylko tyle, “że hula na ESPHome”, nawet @marcingebus prosił wcześniej: “to czy udało się na ESPHome i jak dokładnie.

A no właśnie tak działa:

esphome:
  name: "ogrzewanie-podogowe"
  friendly_name: Czujniki temperatury

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxx"

ota:
 password: "xxx"


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Czujniki-Temperatury"
    password: "DOLKPU5XgYEB"

# Sensory temperatury
dallas:
  - id: "dallas_hub_2"
    pin: 2
    update_interval: 10s
  - id: "dallas_hub_4"
    pin: 4
    update_interval: 10s
  - id: "dallas_hub_5"
    pin: 16
    update_interval: 10s
  - id: "dallas_hub_15"
    pin: 15
    update_interval: 10s
sensor:
  - platform: dallas
    address: 0xa701143bb641aa28
    name: "Salon kominek"  
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0xdf01144fc4b1aa28
    name: "Salon pod oknem"  
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0x3e0121132556c628
    name: "Salon przed kanapą" 
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0xc63c01f095cc2328
    name: "Salon środek" 
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0x0a062017e5afe728
    name: "Salon przed telewizorem" 
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0xc2012113774c0a28
    name: "Przybudówka" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address: 0x6201144fe4b0aa28
    name: "Łazienka dolna" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address: 0x4b01144fd7f0aa28
    name: "Łazienka dolna - prysznic" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address: 0xfd0121137eda1e28
    name: "Przybudówka pod izolacją" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address:  0x2a062017dc0a2028
    name: "Panorama" 
    dallas_id: dallas_hub_5
  - platform: dallas
    address:  0xc001211345246228
    name: "Sypialnia" 
    dallas_id: dallas_hub_5
  - platform: dallas
    address:  0x3b3c01f0955f0528
    name: "Poddasze biurko" 
    dallas_id: dallas_hub_5
  - platform: dallas
    address:  0xe201212fc6313b28
    name: "Łazienka góra" 
    dallas_id: dallas_hub_5    
  - platform: dallas
    address:  0xc2062017de107028
    name: "Bufor 3/4" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x4c0121131c9e7028
    name: "Bufor dół" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x250121134015a428
    name: "Bufor góra" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x9701144fcde2aa28
    name: "Wejście" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x0101144fd15baa28
    name: "Przedpokój" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x97062017ed6dce28
    name: "Wykusz" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x810121133e35fe28
    name: "Jadalnia" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0xfa0121132b03cf28
    name: "Bufor 2/4" 
    dallas_id: dallas_hub_15
switch:
  - platform: gpio
    name: "Panorama"
    pin: 13
    inverted: True
  - platform: gpio
    name: "Poddasze biurko"
    pin: 14
    inverted: True
  - platform: gpio
    name: "Jadalnia i wykusz"
    pin: 27
    inverted: True
  - platform: gpio
    name: "Przedpokój"
    pin: 26
    inverted: True
  - platform: gpio
    name: "Łazienka góra"
    pin: 25
    inverted: True
  - platform: gpio
    name: "Sypialnia"
    pin: 33
    inverted: True
  - platform: gpio
    name: "Taras północ"
    pin: 32
    inverted: True
  - platform: gpio
    name: "Salon"
    pin: 22
    inverted: True
  - platform: gpio
    name: "Przybudówka"
    pin: 23
    inverted: True
  - platform: gpio
    name: "Łazienka dół"
    pin: 5
    inverted: True
  - platform: gpio
    name: "Pompa podłogówki"
    pin: 18
    inverted: True
  - platform: gpio
    name: "Grzałka suszarki dół"
    pin: 19
    inverted: True
  - platform: gpio
    name: "Grzałka suszarki góra"
    pin: 21
    inverted: True
  - platform: gpio
    name: "Pompa grzałek"
    pin: 12
    inverted: True
captive_portal:
    

Do tego Sterowanie przez NODERED i hula bez zarzutu. Niestety tylko do teraz bo nowe OTA w ESP Home wprowadziło zmiany które rozwalają kod jeśli chodzi o platformę Dallas. Teraz to ma być One_Wire ale nigdzie nie powiedziano jak zdefiniować Hub do tego. Dlatego też przy próbie kompilacji na nowym OTA wywala błąd.

To raczej Ty nie czytasz dokumentacji i próbujesz aktualizować bezmyślnie.
Zobacz przykładowy kod i co się zmieniło w OTA, oraz 1-wire

esphome:
  name: testowy
  friendly_name: testowy

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "5XfCRPwGpMCtzwc8LTHmHtDlmjVy/t05TX/OcgYOe80="

ota:
  - platform: esphome
    password: "0f6acd888457787fa6eaca3816dea7d4"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Testowy Fallback Hotspot"
    password: "mbaccz9HSCgA"
web_server:
  port: 80
captive_portal:
one_wire:
  - platform: gpio
    pin: GPIO19
    id: wire1
  - platform: gpio
    pin: GPIO23
    id: wire2   
sensor:
  - platform: dallas_temp
    address: 0x20000007bbb07928
    name: temperatura 1
    one_wire_id: wire1
    update_interval: 20s    
  - platform: dallas_temp
    address: 0x690b2374ed6bb028
    name: temperatura 2
    one_wire_id: wire2
    update_interval: 20s      

a tu efekt

Teraz mozesz dla dallasow dac interwal dla kazdego oddzielnie. Ja u siebie na poczatku roku przerobilem hydraulike Ogrzewania, ze wszystka napedza jedna pompa obiegowa z pompy ciepla wiec nie musze sterowac pompami obiegowymi. A dallasy przy dokladniejszej analizie mialy roznice w odczytach ± 1.5 nawet 2 stopnie. Jeden dallas odczytywal 19 a drugi 23. Za duza roznica aby bez kalibracji na nich polegac.