Termostat różnicowy ESPHome

Witam wszystkich.
Od niedawna zacząłem przygodę z HA. Udało mi się już stworzyć kilka automatyzacji opartych na esp, które działają zgodnie z oczekiwaniami. Chcę stworzyć koleją, prosty termostat różnicowy, który oprócz innych funkcji, będzie otwierał klapę przepustnicy powietrza zasysanego do pompy ciepła cwu w zależności od różnicy temperatury zewnętrznej i wewnętrznej. Dwa czujniki temperatury (temp.zew i temp.wew) dwa przekaźniki sterujące serwomotorem przepustnicy+czujniki krańcowe. Temat czujników, przekaźników, krańcówek ogarniam natomiast nie wiem jak się zabrać do napisania kodu, który wykona prostą matematykę czyli np.:
jeżeli różnica temp.zew - temp.wew < 2 to przekaźnik 1 ON w innym przypadku przekaźnik 1 OFF, kolejno, jeżeli temp.wew - temp.zew < 1 przekaźnik 2 ON w innym przypadku przekaźnik 2 OFF. Proszę o poradę jak ma wyglądać składnia kodu, gdzie to zaimplementować - temlate,lamda- jeszcze tego nie ogarniam.
Z góry dzięki za porady.

Mówisz o ESPHome czy jakimś innym projekcie opartym o ESP?

Tak mowie o ESPhome. Patrzylem na Generic Thermostat ale nie wiem, jak moglbym uzyskać zamierzony efekt termostatu róznicowego.

Jeden z czujników temperatury zdefiniował byś jako target_sensor a odczyty z drugiego zmieniałyby nastawy parametru target_temp np. za pomocą automatyzacji. Ustawiają jednocześnie wymagane parametry *_tolerance. Moim zdaniem niepotrzebne są dwa przekaźnik, wystarczy jeden ze stykiem przełącznym.

Co do sprzętu - rozważ zastosowanie (adaptację) gotowego sterownika np. takiego

1 polubienie

Kolego @RobinI30 tu chodzi o sterowanie dopływem powietrza a nie cieczy czy gazu, co do wykorzystania termostatu to ciekawy pomysł , tylko wiąże się tak czy siak z automatyzacją . Sam wiesz , znacznie lepiej niż ja , że łatwiej uzyska to w NR .


Czyta dwie temperatury , zapisuje odczyty w set.flow, fukcja robi róznicę i wysyła do switcha

Siłownik to siłownik :wink: …może nawet wiązać sznurowadła jeśli go z pomysłem zastosujesz.
Powietrze to nie gaz, a klapa to nie zawór? :stuck_out_tongue_winking_eye:

Właśnie nie, termostat to załatwia.

1 polubienie

Nie w tym rzecz. Adaptacja tego siłownika do przepustnicy powietrza będzie najsłabszym ogniwem tego projektu , mam w domu 7 przepustnic sterowanych serwomechanizmami i działa to bez problemu

Myślałem, że zaczynasz od zera. Jak tak to OK.

edit… @isom1266 pomyliłem Cię z autorem tematu :wink:
Pomęczę trochę.

Zrób fotkę. Cóż to za wyjątkowe serwo?

To nie mój projekt , a co do rozwiązania sterowania nie zamierzam wychodzić przed szereg , sam piąty dzień mam doczynienia z HA więc jestem cienki jak sznurówka , chciałem tylko koledze wskazać prostą drogę

Nawet wskazane jest dzielenie się poradami, ale napisałeś to w trybie tak oznajmującym, że chciałem Cię trochę pomęczyć :stuck_out_tongue:

Smiało możesz męczyć :slight_smile: To że zaczynam z HA nie znaczy , że zaczynam z automatyką . Serwa są zwykłe modelarskie do 25kg , działają od 3 lat . Tyle że steruję nimi na zasadzie rolet z Tasmotą , po każdym ruchu serwa zabierane jest z niego zasilanie i działa w pełnym zakresie 0-100% a nie on/off

Coś koloryzujesz… z załączonego flow wiem, że masz sterowanie dwustanowe za pomocą przekaźników więc jakim cudem zadajesz wartość analogową z przedziału 0-100?

Ok.
Sterowanie przepustnicą mam już zrobione i działa na atmega328p ponad dwa lata, program napisany w XOD , bo od tego kiedyś zacząłem zabawę. Teraz chcę ten działający sterownik zmodyfikować, wyrzucić atmegę, zrobić to na esp podłączyć się do HA . Dwa przekaźniki są po to, ponieważ jeden daje tylko impuls dla otwarcia siłownika drugi przekaźnik impuls dla zamknięcia siłownika, przekaźniki nie myszą być podtrzymywane żeby siłownik się otworzył lub zamknął. Brakuje mi fragmentu kodu w Esphome, który odejmie dwie temperatury i jeśli różnica będzie większa lub mniejsza od zadeklarowanej na sztywno np. 2 stopnie to wtedy włączy przekaźnik 1 na np. 0.5s, ten da tyko inpuls siłownikowi do otwarcia, lub przekaźnik 2 dla zamknięcia. Tak mi to teraz działa na atmega i ten sam efekt chciałbym uzyskać na esp programując to w Esphome. W HA wystarczy mi tylko dla własnej informacyjni podgląd z temperatur i krańcówek w jakim położeniu jest przepustnica.

@RobinI30 Podpuszczasz mnie , ale to nawet miłe , flow był dla kolegi , ja jeszcze do tego etapu nie doszedłem i mam to w Domoticz

Przy ESPHome to ja wysiadam :slight_smile:

Nie da się w XOD “przeszczepić” tego na ESP? …skoro już masz program i dorobić komunikację

Może i się da przeszczepić, ale wolę to mieć w ESPhome jak inne moduły esp. Po prostu mam zdefiniowane czujniki temperatury przekaźiki czujniki binarne i chce dopisać automatyzację która się wykona niezależnie od HA na samym esp. Chę aby wykonał się taki kod np :

if ( id(temp_zew).state - id(temp_wew).state) > 2 {
switch.turn_on: przekaznik1 }
else { switch.turn_off: przekaznik1 }

if ( id(temp_wew).state - id(temp_zew).state) > 2 {
switch.turn_on: przekaznik2 }
else { switch.turn_off: przekaznik2 }

Nie patrzcie na składnie piszę z głowy na pałę dla przykładu.
Proszę o poradę jak ma poprawnie wyglądać ten fragment kodu, jego składnia, w którym miejscu ma być zaimplementowana żeby kod się wykonał, czy to ma być lambda dla dodatkowego sensor czy switch template ?

Dopiero zaczynam zabawę z ESPHome (więc mogę się mylić i nie wszystko jeszcze potafię zrobić) ale Twój kod można chyba (?) zrealizować tak:
tworzysz wirtualny switch za pomocą Template Switch — ESPHome coś podobnego do tego:

# Example configuration entry
switch:
  - platform: template
    name: "Template Switch"
    lambda: |-
      if (id(some_binary_sensor).state) {
        return true;
      } else {
        return false;
      }
    turn_on_action:
      - switch.turn_on: przekaznik1
    turn_off_action:
      - switch.turn_off: przekaznik1

pozostaje jednak w miejsce kodu (id(some_binary_sensor).state) wstawić poprawnie kod porównujący temperatury czyli to co opisałeś jako “( id(temp_zew).state - id(temp_wew).state) > 2

Jeśli chodzi o logikę sterowania przekaźnikami to zaadaptowałbym z tego projektu

Natomiast samo sprawdzanie temperatur to wypadałoby ogarnąć template, wydaje mi się, że tu rozwiązanie pasujące do tematu było na gdzieś na forum AIS mniej więcej w przeciągu ostatniego miesiąca (wątek mógł nie być powiązany z ESPHome, bo praktycznie takie same template występują też w HA).

Właśnie o coś takiego mi chodziło i to próbowałem zrobić tylko tworząc sensor template , ale namieszałem ze składnią lambdy bo mi się nie chciało skompilować i w ogóle nie byłem pewny czy to dobry sposób na realizację kodu . Teraz przynajmniej wiem jaką droga iść. Myślałem, że jest inny sposób w którym nie trzeba tworzyć wirtualnego switcha czy sensora żeby zrobić takie porównanie ,bo to trochę dziwne.
Będę próbował, jak znajdę czas i na pewno dam znać czy się udało.
Wielkie dzięki.