Klimatyzacja kanałowa

Cześć,
W związku z zakładaniem klimy kanałowej zacząłem sobie klepać pod nią soft.
Przepustnica, którą się bawię jest tu a realizuję to na sterowniku do otwierania/zamykania rolet Nous L12T.
GPIO:

| GPIO 01 | Switch 1 |
| GPIO 03 | Switch 2 |
| GPIO 04 | Relay 2  |
| GPIO 05 | Relay 1  |
| GPIO 12 | LedLink  |
| GPIO 14 | Button 1 |

Póki co wszystko jest jasne:

  1. GPIO 12 podpięte jako status_led
  2. GPIO 05 i 04 podpięte jako switch
  3. Jako, że nie mam fizycznych przycisków do otwierania/zamykania przepustnicy to do GPIO 01 podpiąłem binary_sensor, który robi za close_endstop
  4. Zdeklarowałem sobie cover z platform: feedback i wszystko spiąłem zmiennymi po id

Na ten moment wszystko działa jak trzeba, teraz kolejna część - a mianowicie automatyzacja sterowania. Póki co nie mam jeszcze sterownika do klimatyzatora więc ciężko mi określić jak pobiorę status Heat/Cool + Zadaną temperaturę ale wychodzę z założenia, że to zrobię więc klepię sobie kod dalej i stanąłem nad logicznym problemem:

  1. TEORETYCZNIE (bo jeszcze tego nie pobrałem) mam stan nazwijmy go hvac (heat vent air conditioner) - określa on 3 stany: HEATING, COOLING, OFF
  2. TEORETYCZNIE mam temperaturę zadaną dla hvac - nie wiem czy ona będzie się przestawiała automatycznie czy ręcznie - brak sterownika póki co
  3. Chciałem zadeklarować sobie komponent climate i nie do końca pewien jestem, który - w teorii skłaniam się do bang-bang controllera w mniej więcej takiej logice:
heat_action: |
  if(hvac == HEATING) {
    cover.open('cover_id_here')
  } else {
    cover.close('cover_id_here')
  }
idle_action: |
  if(hvac == OFF) {
    cover.close('cover_id_here')
  }
cool_action: |
  if(hvac == COOLING) {
    cover.open('cover_id_here')
  } else {
    cover.close('cover_id_here')
  }

tym sposobem o nie otworzę przepustnicy do pomieszczenia, w którym powinno być “chłodzone” podczas “grzania” i odwrotnie. I wszystko jest spoko, jeśli przyjmiemy, że nie chcemy osiągać żadnych punktów pośrednich - czyli przymknięcia klapy przepustnicy np. do 70% by zniwelować wahania temperatury.

W takim wypadku lepiej by było zastosować thermostat zamiast bang-bang controllera, który daje mi dodatkowe opcje takie jak cool/heat_deadband/overrun gdzie mógł bym właśnie dokonywać przymknięcia przepustnicy. o zadaną stałą - mam możliwość pobrania temperatury z termometrów na zigbee więc bez problemu by działało.

Kolejną opcją był by PID controller - niestety jak rozumiem te są sterowane przez PWM więc zupełnie nie ta technologia :wink:

No i dochodzimy do pytania: Jak WY byście to zrealizowali by uzyskać jak najmniejsze wahania temperatury i najlepszą wydajność urządzenia? Taki trochę temat rzeka, ale chętnie poczytam coś mądrego.

Ja mam przepustnice sterowane serwomechanizmem, w każdym pomieszczeniu czujnik temp, regualcja oprócz % otwarcia, poziom nadmuchu - moc wentyaltora samej klimy. W praktyce sprawdza się pełne otwarcie, 50% i OFF. Gdy wszystkie przepustnice są otwarte na 100% = Max moc nadmuchu, potem proporcjonalnie do przymykających się przepustnic nadmuch się zmniejsza ( 4 poziomy). Czujnik decyzyjny wraz ze sterownikiem ściennym, w największym pomieszczeniu, ( najwolniej się nagrzewa i wychładza). Regulator PID przy klimie nie ma sensu, histereza oryginalnego czujnika to 2 st , dlatego bazuję na niezależnych czujnikach. Jak coś to pytaj

1 polubienie

O widzisz, nie pomyślałem o sterowaniem siłą nadmuchu. OK wstępnie mam sterownik gotowy, czekam aż skończą instalację i będę myślał co z tym zrobić dalej bo w sumie będę musiał nadmuch też zaimplementować.

cześć
jakie są koszta takiej klimy kanałowej?

To jest pytanie typu, który samochód jest szybszy - zielony czy czerwony?
Na cenę złoży się pewnie:

  • ilość pomieszczeń
  • ilość m^3 do wymiany
  • warunki instalacji a przez co czas instalacji
  • rozłożenie pomieszczeń, a przez co długości rur, ociepleń itp.
  • rodzaj jednostki, producent, moc.

Ogólnie najlepiej to jak byś wziął kogoś do wyceny bo to takie wróżenie z fusów.
W moim przypadku wychodziło taniej niż split a drożej niż monolity, ale za to roboty było dużo mniej niż z jednostkami split/monolit - brak pompek do skroplin, wszystko schowane w poddaszu. 3 pokoje po 10-13m^2 na 3,5KW jednostce wyszło 12K PLN z przepustnicami i kilkoma modami. Wiem, że znajomy za podobną konfigurację płacił 15K PLN (inny rejon PL). Jeśli chcesz się sam pobawić to jednostka główna to koszt około 6-7tys. pln, do tego rury i wszystko inne.

PS. Wszyscy wiedzą, że czerwone są najszybsze :wink:

[EDIT]
No to skończyłem i przetestowałem swoje “wypociny”. Ogólnie użyłem przepustnic z tego wątku + nous L12T (tanie sterowniki rolet na esp8266). Działa wszystko prócz trybu AUTO, ze względu na brak hvac_action w integracji gree.
Oto jak wyszło:
DEFINICJA SAMEGO URZAĄDZENIA, MAM ICH KILA WIĘC SĄ INCLUDE’y

substitutions:
  name_lower: ... # Nazwa pokoju z malej
  name_upper: ... # Nazwa pokoju z duzej
  temperature_sensor: sensor.... # NAZWA CZUJNIKA TEMPERATURY W POKOJU
  bssid: "68:D7:FF:FF:FF:FF" # BSSID mojej sieci WIFI - można pominąć i zależy od konfiguracji

esp8266:
  board: esp01_1m
  restore_from_flash: True

logger:
  level: DEBUG

api:
  encryption:
    key: !secret api_encryption

ota:
  password: !secret ota_password

wifi:
  power_save_mode: NONE
  fast_connect: false
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_password
    bssid: ${bssid}

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "AC ${name_upper} Fallback Hotspot"
    password: !secret wifi_fallback_password

<<: !include 
  file: ac/logic.yaml
  vars:
    name_lower: ${name_lower}
    name_upper: ${name_upper}
    temperature_sensor: ${temperature_sensor}

logic.yaml:

# NOUS L12T
# GPIO:
# 1  - Switch 1
# 3  - Switch 2
# 4  - Relay 2
# 5  - Relay 1
# 12 - LED Link
# 14 - Button
captive_portal:

esphome:
  name: ac-throttle-${name_lower}
  comment: AC Throttle Driver
  friendly_name: AC ${name_upper}
  on_loop: 
    then:
      if:
        condition:
          - lambda: |-
              if (id(gree).state == "cool" && id(ac).action == CLIMATE_ACTION_COOLING) return true;
              else if (id(gree).state == "dry" && id(ac).action == CLIMATE_ACTION_DRYING) return true;
              else if (id(gree).state == "heat" && id(ac).action == CLIMATE_ACTION_HEATING) return true;
              else if (id(gree).state == "fan_only" && id(ac).action == CLIMATE_ACTION_FAN) return true;
              else if (id(gree).state == "auto" && id(ac).mode == CLIMATE_MODE_AUTO ) return true;
              
              if (id(ac).action == CLIMATE_ACTION_IDLE) {
                if (id(gree).state == "cool" && id(ac).mode == CLIMATE_MODE_COOL) return true;
                else if (id(gree).state == "dry" && id(ac).mode == CLIMATE_MODE_DRY) return true;
                else if (id(gree).state == "heat" && id(ac).mode == CLIMATE_MODE_HEAT) return true;
                else if (id(gree).state == "fan_only" && id(ac).mode == CLIMATE_MODE_FAN_ONLY) return true;
                else if (id(gree).state == "auto" && id(ac).mode == CLIMATE_MODE_AUTO ) return true;
              }
              return false;
        then:
          - if:
              condition:
                - switch.is_on: throttle_close
              then:
                - switch.turn_on: ac_switch
        else:
          - if:
              condition:
                - switch.is_on: throttle_open
              then:
                - switch.turn_off: ac_switch
  


# State of main AC unit
text_sensor:
  - platform: homeassistant
    id: gree
    internal: True
    entity_id: climate.gr_acunit_6400_02_403c

# Temperature sensor in room
sensor:
  - <<: !include
      file: ../shared/temperature-sensor.yaml
      vars: 
        id: temperature_sensor
        entity_id: ${temperature_sensor}

# built-in led
status_led:
  pin: 
    number: GPIO12
    inverted: True

binary_sensor:
  - platform: gpio
    name: "Throttle"
    pin: GPIO5
    device_class: opening
    icon: mdi:air-conditioner

switch:
  - platform: gpio
    pin: GPIO5
    id: throttle_open
    internal: True
    interlock: [throttle_close]
  - platform: gpio
    pin: GPIO4
    id: throttle_close
    internal: True
    interlock: [throttle_open]
  - platform: template
    id: ac_switch
    internal: True
    lambda: |-
      if (id(throttle_open).state) {
        return true;
      } else {
        return false;
      }
    turn_on_action:
      - switch.turn_off: throttle_close
      - switch.turn_on: throttle_open
    turn_off_action:
      - switch.turn_off: throttle_open
      - switch.turn_on: throttle_close

climate:
  - platform: thermostat
    sensor: temperature_sensor
    name: Thermostat
    id: "ac"
    min_idle_time: 30s
    min_cooling_off_time: 30s
    min_cooling_run_time: 30s
    min_heating_off_time: 30s
    min_heating_run_time: 30s
    min_fanning_off_time: 30s
    min_fanning_run_time: 30s
    heat_deadband: 0.5
    heat_overrun: 0.5
    cool_deadband: 0.5
    cool_overrun: 0.5
    visual:
      min_temperature: 18
      max_temperature: 24
      temperature_step: 0.5
    idle_action:
      then:
        - delay: 0s
    off_mode: 
      then:
        - delay: 0s
    cool_action:
      then:
        - delay: 0s
    heat_action: 
      then:
        - delay: 0s
    dry_action: 
      then:
        - delay: 0s
    fan_only_action: 
      then:
        - delay: 0s
    auto_mode:
      then:
        - delay: 0s

temperature-sensor.yaml

platform: homeassistant
id: ${id}
internal: True
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
icon: mdi:home-thermometer
entity_id: ${entity_id}

Cała logika jak widać jest w on_loop ze względu na zgrywanie stanu między głównym unitem w HA a wirtualnym termostatem. Zmiana w wirtualnym termostacie wyzwala event do zmiany (po jakiś tam kalkulacjach) statusu jednostki gree po czym w zelżności od stanu grzanie/chłodzenie/… jednostki zamyka lub otwiera przepustnice. Jeśli 2 pokoje chcą chłodzić a jeden grzać to 2 przepustnice się otwierają, jedna zamyka a jednostka główna chłodzi. Jak 2 pokoje chcą grzać a jeden chłodzić to jedna przepustnica się zamyka itd. itd.

całość w HA wygląda tak:

3 polubienia

No i fajnie, ciekawe tylko jak będzie to u Cebie banglać z tą integracją gree, u mnie przy zanikach zasilania ( brak prądu) moduły wifi w gree się gubiły i musiałem je zgłaszać od nowa. Zrezygnowałem z tego rozwiązania na rzecz Smart IR , gdzie mam wszystkie tryby pracy i wentyla.
Jak widzę koszty montażu wzrosły i to znacznie, kilka lat temu za 5 kW + 5 pomieszczeń + nawiew powietrza z zewnątrz (wietrzenie) zapłaciłem 9 tyś. Jakaś stara fotka z prowizorycznego podłączenia przepustnic


Pięć wyrzytni , niezaizolowana czerpnia i z tyłu widoczny kanał zaciągu powietrza z zewnątrz.
Pozdrawiam

2 polubienia

Dzięki :slight_smile: No ceny wszystkiego wzrosły ostatnimi laty, chociaż porównując teraz do ~ 2 lata temu to i tak jest taniej niż było. Co do integracji gree to radzi sobie bdb pomijając kwestię hvac_action i to, że jednostka używa 2 kluczy do komunikacji, pierwszy jest przy wyrejestrowanym wifi, drugi po zarejestrowaniu jednostki. Jeśli chcesz używać oryginalnej aplikacji Gree+ to integracja nie będzie miała klucza poprawnego dla wifi. Instalacja obu aplikacji spowoduje przeskakiwanie między oryginalną aplikacją a integracją, dlatego też z oryginalnej aplikacji zrezygnowałem całkowicie.
Mam do Ciebie pytanie techniczne odnośnie przepustnic. Na ten moment mam to zrobione tak, że jak wszystkie wirtualne termostaty są w idle, czyli np. chłodzą ale osiągnęły już minimalną temperaturę to zostawiam przepustnice otwarte ale zmniejszam nawiew do minimum co jednak wciąż powoduje chłodzenie powolne pomieszczenia. Zamknięcie wszystkich przepustnic przy nawet minimalnym nawiewie nie wydaje się rozsądnym wyjściem (choć i tak one nie są w 100% szczelne). Jak tą kwestię rozwiązałeś? Wyłączasz jednostkę?

[EDIT]
Jakie moduły wifi w gree? Masz osobny termostat podpięty do każdego pomieszczenia? Ja mam jeden sterownik podpięty pod wifi a wszystko zrobione jak widać w ESPHome.

Zamknięcie wszystkich przepustnic przy włączonym agregacie i nawet minimalnym nawiewie spowoduje zebranie się wody w kanałach i na anemostatach, nic pozytywnego i nie polecam. Przy chłodzeniu ustawiam żeby 2 stopnie przed zadaną w pomieszczeniu przepustnica się przymykała do połowy, dzięki temu w innych większych pomieszczeniach wydajność rośnie przy nawet zmniejszonym nawiewie. Po osiągnieciu zadanej we wszystkich pomieszczeniach wyłączam klimę i temperatura musi wzrosnąć o dwa stopnie w największym pomieszczeniu ( tam jest główny sterownik) żeby klima znów ruszyła. Może nie jest to idealne rozwiązanie, ale wystrczajace do utrzymania komfortu w lecie…
O modułach wifi napisałem, bo mam dwie klimy Gree , kanałowa i split w salonie na parterze.
O sterowaniu w pokojach pisałem wcześniej , w każdym czujnik i na jego podstawie regulacja przepustnic.

1 polubienie