Перейти до публікації
Пошук в
  • Додатково...
Шукати результати, які містять...
Шукати результати в...

ПВУ_DIY

yur43

Рекомендовані повідомлення

image.png.465ed4cf43ed0174f9eab29cc1cff0ea.png

для порівняння дані температури від датчиків DS і BME. Поки Далас одну сходинку родить, BME їх вже 6шт видає. Але є біда, вони трохи саморозігріваються, при малих протоках відчутно - до 0,15С.

image.png.249d469f0fab66a8fad3791cd87371ef.png

після калібрування Бош і Далас ідуть разом

Змінено користувачем yur43
Посилання на коментар
Поділитися на інших сайтах

10 годин тому, yur43 сказав:

image.thumb.png.6e7080e7316ff8e32e215b53ed9f6717.png

комфортне охолодження природною прохолодою працює чіткоimage.thumb.png.b2442c0112b161edfab3388669968242.png

Цікаві графіки, як кардіограма після бігу 😁

Але я по своїй вентиляції побачив що навіть без байпасу, якщо на виході теплообмінника є чуть не вулична температура (26-27С), то датчики по кімнатах як показували 22С +/-, так і показують, особливо нічого не змінюється. В зимовий період зворотня ситуація, коли в кімнатах 21-22С, а на подачі 17-18С, то температура в кімнатах також не опускається до рівня притоку. Тобто в кімнатах все рівно плюс-мінус стабільна температура.

Змінено користувачем TaurosRMK
Посилання на коментар
Поділитися на інших сайтах

41 хвилину тому, TaurosRMK сказав:

в кімнатах все рівно плюс-мінус стабільна температура.

Як каже мій товариш, то по суті автоматизований режим відкритого вікна. Хтось може поставити просто ЕС-вентилятор на кухонну витяжку і керувати його продуктивністю по температурі, ще хтось просто відкриє вікно і йому добре, я реалізував це використовуючи елементи вентиляції,

Коли ввечері сідає сонце і вмикається режим охолодження, ми з дружиною чітко відчуваємо цей момент, навіть засинати і спати приємніше.

Посилання на коментар
Поділитися на інших сайтах

23 години тому, yur43 сказав:

реалізував це використовуючи елементи вентиляції

Цікаво, а якщо вимикати витяжний вентилятор і хай приточний дує прохолодним повітрям, також буде режим охолодження. Це не повноцінний байпас, але ефект рекуперації буде дуже малий. По типу як зимою в режимі обмерзання, якщо є загроза, то приточний вимикається і теплообмінник прогріваєтсья витяжним повітрям. А літом зворотня дія, витяжний вимикається, а приточним буде охолоджується. В теорії вентилятор буде дути в приточні кімнати, далі повітря буде рухатися по інших кімнатах і направлятися в різні отвори, і більшість напевно піде у витяжні канали і на вулицю.

Хм, треба буде попробувати коли вентилятори заміню і дороблю автоматизацію.

Посилання на коментар
Поділитися на інших сайтах

6 годин тому, TaurosRMK сказав:

Цікаво, а якщо вимикати витяжний вентилятор і хай приточний дує прохолодним повітрям, також буде режим охолодження. Це не повноцінний байпас, але ефект рекуперації буде дуже малий. По типу як зимою в режимі обмерзання, якщо є загроза, то приточний вимикається і теплообмінник прогріваєтсья витяжним повітрям. А літом зворотня дія, витяжний вимикається, а приточним буде охолоджується. В теорії вентилятор буде дути в приточні кімнати, далі повітря буде рухатися по інших кімнатах і направлятися в різні отвори, і більшість напевно піде у витяжні канали і на вулицю.

Хм, треба буде попробувати коли вентилятори заміню і дороблю автоматизацію.

В мене майже герметичний будинок. І повітря проходить через рекуператор в будь-якому випадку. Через це штатна система попередження обмерзання (зупинкою проточного вітряка) толком і не працювала. Тому байпас - саме логічне рішення.

Посилання на коментар
Поділитися на інших сайтах

  • 4 тижні потому...

image.png.3b24ac33c50e902c8bf40bf947de2183.png

ще ілюстрація роботи системи охолодження в графіках, нижній графік - ефективність рекуперації. При мікрорізниці між температурами потоків результат розрахунку починає ковбасити. Дякую шановному volomoto що навчив як результат хоч в рамки загнати між 0 і 100%, бо раніше були викиди до тисяч %. 

Зауважу, що ПВУ оперує не зовсім кімнатною температурою (22-23С), а трохи гарячішим повітрям з під стелі (близько 24С), бо літом відчутний дизбаланс температури шарів над підлогою, під стелею, по середині висоти.

Змінено користувачем yur43
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

image.thumb.png.4c82cb42884ce3264d8ce0377579a83c.png

налаштував в ESP датчик рівня, завтра закину в криницю - буде міряти шо там є.

В модулі ПВУ повно вільних портів, підчепив сюди. А НА вже зможе по низькому рівню води вимикати насос і вмикати тривогу. Бо з цими поливами грядок хочеться бачити - динаміку рівня в криниці.

image.png.d5ec8a5d6b073a3a424d402e214e5e98.png

 

Змінено користувачем yur43
Посилання на коментар
Поділитися на інших сайтах

1 година тому, TaurosRMK сказав:

Що за датчик?

image.thumb.png.bc8136d8739c7244ad2206235766186d.png

на 5 метрів, 4-20 mA, дав йому 15в, поклав на дно колодязя

image.thumb.png.2eacbbf7aa2e73aa6022627bf6133902.png

  • Лайк 3
Посилання на коментар
Поділитися на інших сайтах

  • 2 тижні потому...

Все працює чудово.

Єдине, датчик СО2 недавно калібрував - показував 252ррм, коли нікого довго не було.

image.thumb.png.b4b28e9388b3d765409c9f9ac543cbd2.png

Посилання на коментар
Поділитися на інших сайтах

  • 2 тижні потому...
Прихований текст

esphome:

  name: hrv-kc868-a4

  friendly_name: HRV_kc868-a4

  on_boot:

    then:

      - number.set:

          id: dac_min

          value: 0.11

      - number.set:

          id: dac_max

          value: 0.35

      - number.set:

          id: dac_bal1

          value: 0.003

      - number.set:

          id: dac_bal2

          value: -0.01    

      - output.set_level:

          id: set_level

          level: 0.4

esp32:

  board: esp32dev

  framework:

    type: arduino

logger:

    level: ERROR

web_server:

  port: 80    

api:

  encryption:

    key: "V"

  services:

    - service: scd4x_calibrate_co2_value

      variables:

        co2_ppm: int

      then:

      - scd4x.perform_forced_calibration:

          value: !lambda 'return co2_ppm;'

          id: scd40

    - service: scd4x_factory_reset

      then:

      - scd4x.factory_reset: scd40

ota:

  - platform: esphome

    password: "b"

wifi:

  ssid: "WI"

  password: "2"

  reboot_timeout: 5h

  ap:

    ssid: "Hrv-Kc868-A4 Fallback Hotspot"

    password: "2"

rtttl:

  output: rtttl_out

  id: my_rtttl

number:

  - name: dac_min

    id: dac_min

    platform: template

    min_value: 0

    max_value: 0.3

    step: 0.01

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_max

    id: dac_max

    platform: template

    min_value: 0

    max_value: 0.6

    step: 0.01

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_bal1

    id: dac_bal1

    platform: template

    min_value: -0.01

    max_value: 0.01

    step: 0.001

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_bal2

    id: dac_bal2

    platform: template

    min_value: -0.01

    max_value: 0.01

    step: 0.001

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_power

    platform: template

    id: dac_power

    min_value: 0

    max_value: 1

    step: 0.001

    mode: box

    optimistic: true

    entity_category: diagnostic

  - name: PID_power

    platform: template

    id: PID_power

    min_value: 0

    max_value: 1

    step: 0.001

    mode: box

    optimistic: true

    entity_category: diagnostic

climate:

  - platform: bang_bang

    name: "cool_wind"

    id: cool_wind

    visual:

      min_temperature: 10

      max_temperature: 30

      temperature_step: 0.1    

    sensor: temp_ino

    default_target_temperature_low: 18.2 °C

    default_target_temperature_high: 19.5 °C

    cool_action:

      - switch.turn_on: cool_on

    heat_action:

      - switch.turn_on: cool_off

    idle_action:

      - switch.turn_off: cool_on

      - switch.turn_off: cool_off

  - platform: bang_bang

    name: "defrost"

    visual:

      min_temperature: 1

      max_temperature: 6

      temperature_step: 0.1

    sensor: temp_outR

    default_target_temperature_low: 2 °C

    default_target_temperature_high: 3 °C

    heat_action:

      - switch.turn_on: defrost_on

    idle_action:

      - switch.turn_off: defrost_off

      - switch.turn_off: defrost_on

    cool_action:

      - switch.turn_on: defrost_off

  - platform: pid

    name: "PID_CO2"

    id: PID_CO2

    visual:

      min_temperature: 500

      max_temperature: 1500

      temperature_step: 10

    sensor: CO2

    default_target_temperature: 850

    cool_output: PID_level

    control_parameters:

      kp: 0.003

      ki: 0

      kd: 0

i2c:

  sda: GPIO19

  scl: GPIO21

  scan: false

  id: bus_a

tca9548a:

  - address: 0x70

    id: multiplex0

    i2c_id: bus_a

    channels:

      - bus_id: multiplex0channel0

        channel: 0

      - bus_id: multiplex0channel1

        channel: 1

      - bus_id: multiplex0channel2

        channel: 2

      - bus_id: multiplex0channel3

        channel: 3

      - bus_id: multiplex0channel4

        channel: 4

      - bus_id: multiplex0channel5

        channel: 5

      - bus_id: multiplex0channel6

        channel: 6

      - bus_id: multiplex0channel7

        channel: 7

one_wire:

  - platform: gpio

    pin: 13

switch:    

  - platform: template

    name: "cool_on"

    id: cool_on

    turn_on_action:

      - switch.turn_off: cool_off

      - switch.turn_off: relay_2    

      - switch.turn_off: relay_4    

      - repeat:

          count: 33

          then:

            - switch.turn_on: relay_1

            - switch.turn_on: relay_3    

            - delay: 1.5s

            - switch.turn_off: relay_1

            - switch.turn_off: relay_3

            - delay: 140s

  - platform: template

    name: "cool_off"

    id: cool_off

    turn_on_action:

      - switch.turn_off: cool_on

      - switch.turn_off: relay_1

      - switch.turn_off: relay_3

      - repeat:

          count: 35

          then:

            - switch.turn_on: relay_2

            - switch.turn_on: relay_4

            - delay: 1.5s

            - switch.turn_off: relay_2

            - switch.turn_off: relay_4

            - delay: 140s    

  - platform: template

    name: "defrost_on"

    id: defrost_on

    turn_on_action:

      - switch.turn_off: defrost_off

      - switch.turn_off: relay_2    

      - repeat:

          count: 33

          then:

            - switch.turn_on: relay_1

            - delay: 1.5s

            - switch.turn_off: relay_1

            - delay: 150s

  - platform: template

    name: "defrost_off"

    id: defrost_off

    turn_on_action:

      - switch.turn_off: defrost_on

      - switch.turn_off: relay_1

      - repeat:

          count: 35

          then:

            - switch.turn_on: relay_2

            - delay: 1.5s

            - switch.turn_off: relay_2

            - delay: 150s          

  - platform: gpio

    name: "bypass_in_on"

    id: relay_1

    pin: 2

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_1

  - platform: gpio

    name: "bypass_in_off"

    id: relay_2

    pin: 15

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_2

  - platform: gpio

    name: "bypass_out_on"

    id: relay_3

    pin: 5

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_3

  - platform: gpio

    name: "bypass_out_off"

    id: relay_4

    pin: 4

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_4

sensor:

  - platform: adc

    pin: 34

    name: "water level"

    update_interval: 30s

    unit_of_measurement: m

    attenuation: 11db

    filters:

      - offset: -0.61

      - multiply: 1.66666

      - exponential_moving_average:

          alpha: 0.08

          send_every: 1

  - platform: pulse_counter

    pin: 14

    name: "fan1"

    filters:

      - multiply: 0.5

    update_interval: 30s

    accuracy_decimals: 0

    unit_of_measurement: "RPM"

    on_value_range:

      - below: 300

        then:

          - delay: 2min

          - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'

  - platform: pulse_counter

    pin: 27

    name: "fan2"

    filters:

      - multiply: 0.5

    update_interval: 30s

    accuracy_decimals: 0

    unit_of_measurement: "RPM"

    on_value_range:

      - below: 300

        then:

          - delay: 2min

          - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'

  - platform: dallas_temp

    address: 0xb401204ec799da28

    name: "temp_outR"

    accuracy_decimals: 2

    id: temp_outR    

    filters:

      - offset: -0.01  

  - platform: dallas_temp

    address: 0xce0000034b298828

    name: "temp_out"

    accuracy_decimals: 2

    id: temp_out

    filters:

      - offset: 0.08

  - platform: bme280_i2c

    i2c_id: multiplex0channel1

    address: 0x76

    temperature:

      name: "BME280 Temp_room"

      accuracy_decimals: 2

      filters:

        - offset: -0.1  

    humidity:

      name: "BME280 Humid_room"

      accuracy_decimals: 1

    update_interval: 3min        

  - platform: bme280_i2c

    i2c_id: multiplex0channel7

    address: 0x76

    temperature:

      name: "BME280 Temp_ino"

      id: temp_ino

      accuracy_decimals: 2  

    humidity:

      name: "BME280 Humid_ino"

      accuracy_decimals: 1

    update_interval: 30s

  - platform: bme280_i2c

    i2c_id: multiplex0channel6

    address: 0x76

    temperature:

      name: "BME280 Temp_in"

      id: temp_in

      accuracy_decimals: 2

      filters:

        - offset: -0.2

    humidity:

      name: "BME280 Humid_in"

      id: Humid_in

      accuracy_decimals: 1

    update_interval: 1min

  - platform: scd4x

    i2c_id: multiplex0channel6

    co2:

      name: "CO2"

      id: CO2

      filters:

        - exponential_moving_average:

            alpha: 0.12

            send_every: 1

    automatic_self_calibration: false

    altitude_compensation: 242m

    measurement_mode: low_power_periodic

    id: scd40

output:

  - platform: ledc

    pin: GPIO18

    id: rtttl_out

  - platform: esp32_dac

    pin: GPIO26

    id: dac_output1

  - platform: esp32_dac

    pin: GPIO25

    id: dac_output2

  - platform: template

    type: float

    id: set_level

    write_action:      

      - lambda: |-

          id(dac_power).publish_state(state);      

          auto v1 = id(dac_min).state + id(dac_bal1).state + (state * (0.9 + id(dac_bal2).state));

          auto v2 = id(dac_min).state - id(dac_bal1).state + (state * (0.9 - id(dac_bal2).state));

          id(dac_output1).set_level(v1);

          id(dac_output2).set_level(v2);

  - platform: template

    type: float

    id: PID_level

    write_action:      

      - lambda: |-

          if (id(fans).state) {

          // Fan is ON, do something here

          } else {

          // Fan is OFF, do something else here

          }

          id(PID_power).publish_state(state);  

          auto v = state * id(dac_max).state;

          if (!id(fans).state) {

          id(set_level).set_level(v);

          }

fan:

  - platform: speed

    output: set_level

    name: "fan"

    id: fans

    on_turn_off:

      then:

      - output.set_level:

          id: set_level

          level: 0.15

    on_turn_on:

      then:

      - delay: 60min

      - lambda: !lambda |-

          id(fans).turn_off();

time:

  - platform: sntp

    on_time:

      - minutes: /30

        then:

        - lambda: |-

            if (id(temp_in).state > 23 && id(temp_out).state < 22) {

            auto call = id(cool_wind).make_call();

            call.set_mode("HEAT_COOL");

            call.perform();          

            }

            else {

            if (id(cool_wind).mode != CLIMATE_MODE_OFF) {

            auto call = id(cool_wind).make_call();

            call.set_mode("OFF");

            call.perform();

            id(cool_off).turn_on();

            }}

- зміни стосуються оновленої версії ESPHOME

- доданий коефіцієнт для балансування вентиляторів, тепер bal1 балансує на низьких обертах, bal2 - на високих

  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

26.06.2024 в 16:54, yur43 сказав:

балансування вентиляторів

А шо то балансування означає, підтримка однакових обертів? Тоді це балансуванням важко назвати 🙂

Посилання на коментар
Поділитися на інших сайтах

56 хвилин тому, TaurosRMK сказав:

А шо то балансування означає, підтримка однакових обертів? Тоді це балансуванням важко назвати 🙂

так, балансуванням можна змінювати бажані пропорції обертів, або по бажанню просто вирівняти оберти. Бо вентилятори можуть мати різні криві регулювання, і DAC виходи можуть бути з різними К.підсилення, адже вихід ESP потрібно підсилити для регулювання 0-10в.

image.thumb.png.103c5c5ba8c526ebf71591889f47f071.png

Спочатку планував додати диф.датчик тиску приміщення-вулиця, тоді економічна ефективність ПВУ стане максимальною через відсутність неконтрольованих потоків, але в будинку троє дверей з різних боків, і незрозуміло як воно буде в результаті.

Якщо є якісь пропозиції, озвучте.

Змінено користувачем yur43
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

  • 3 місяці потому...

image.png.7848ae3434126db0fd50d1984aeff8c9.png

1. при потеплінні на вулиці, ККД падає.

2. Дописав вимкнення термостату розморозки при зовнішній темературі вище "0".

3. Літнє автоматичне охолодження байпасом сезон відпрацювало задовільно.

Змінено користувачем yur43
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

18.10.2024 в 17:17, yur43 сказав:

ККД

А код можна, як саме розраховуєтсья ККД? І взагалі код отого всього, для ознайомлення 🙂

Змінено користувачем TaurosRMK
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

10 годин тому, TaurosRMK сказав:

А код можна, як саме розраховуєтсья ККД? І взагалі код отого всього, для ознайомлення 🙂

кот

Прихований текст
Прихований текст

esphome:

  name: hrv-kc868-a4

  friendly_name: HRV_kc868-a4

  on_boot:

    then:

      - number.set:

          id: dac_min

          value: 0.11

      - number.set:

          id: dac_max

          value: 0.35

      - number.set:

          id: dac_bal1

          value: 0.003

      - number.set:

          id: dac_bal2

          value: -0.021

      - output.set_level:

          id: set_level

          level: 0.4

         

esp32:

  board: esp32dev

  framework:

    type: arduino

 

logger:

  level: WARN

 

#web_server:

 # port: 80  

   

api:

  encryption:

    key: "V8E7p7ySFvXxvoRjsmxFk74PB5fxXArAh8qcU4zdSUg="

  services:

    - service: scd4x_calibrate_co2_value

      variables:

        co2_ppm: int

      then:

      - scd4x.perform_forced_calibration:

          value: !lambda 'return co2_ppm;'

          id: scd40

    - service: scd4x_factory_reset

      then:

      - scd4x.factory_reset: scd40

  reboot_timeout: 0s

 

ota:

  - platform: esphome

    password: "b59573ce56500968751b8c576ecb4bdf"

wifi:

  ssid: !secret wifi_ssid

  password: !secret wifi_password

  reboot_timeout: 5h

  ap:

    ssid: "Hrv-Kc868-A4 Fallback Hotspot"

    password: !secret wifi_password

rtttl:

  output: rtttl_out

  id: my_rtttl

number:

  - name: dac_min

    id: dac_min

    platform: template

    min_value: 0

    max_value: 0.3

    step: 0.01

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_max

    id: dac_max

    platform: template

    min_value: 0

    max_value: 0.6

    step: 0.01

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_bal1

    id: dac_bal1

    platform: template

    min_value: -0.01

    max_value: 0.01

    step: 0.001

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_bal2

    id: dac_bal2

    platform: template

    min_value: -0.1

    max_value: 0.1

    step: 0.001

    mode: box

    optimistic: true

    entity_category: config

  - name: dac_power

    platform: template

    id: dac_power

    min_value: 0

    max_value: 1

    step: 0.001

    mode: box

    optimistic: true

    entity_category: diagnostic

  - name: PID_power

    platform: template

    id: PID_power

    min_value: 0

    max_value: 1

    step: 0.001

    mode: box

    optimistic: true

    entity_category: diagnostic

climate:

  - platform: bang_bang

    name: "cool_wind"

    id: cool_wind

    visual:

      min_temperature: 10

      max_temperature: 30

      temperature_step: 0.1    

    sensor: temp_ino

    default_target_temperature_low: 18.2 °C

    default_target_temperature_high: 19.5 °C

    cool_action:

      - switch.turn_on: cool_on

    heat_action:

      - switch.turn_on: cool_off

    idle_action:

      - switch.turn_off: cool_on

      - switch.turn_off: cool_off

  - platform: bang_bang

    name: "defrost"

    id: defrost

    visual:

      min_temperature: 1

      max_temperature: 6

      temperature_step: 0.1

    sensor: temp_outR

    default_target_temperature_low: 2 °C

    default_target_temperature_high: 3 °C

    heat_action:

      - switch.turn_on: defrost_on

    idle_action:

      - switch.turn_off: defrost_off

      - switch.turn_off: defrost_on

    cool_action:

      - switch.turn_on: defrost_off

  - platform: pid

    name: "PID_CO2"

    id: PID_CO2

    visual:

      min_temperature: 500

      max_temperature: 1500

      temperature_step: 10

    sensor: CO2

    default_target_temperature: 850

    cool_output: PID_level

    control_parameters:

      kp: 0.0035

      ki: 0

      kd: 0

i2c:

  sda: GPIO19

  scl: GPIO21

  scan: false

  id: bus_a

tca9548a:

  - address: 0x70

    id: multiplex0

    i2c_id: bus_a

    channels:

      - bus_id: multiplex0channel0

        channel: 0

      - bus_id: multiplex0channel1

        channel: 1

      - bus_id: multiplex0channel2

        channel: 2

      - bus_id: multiplex0channel3

        channel: 3

      - bus_id: multiplex0channel4

        channel: 4

      - bus_id: multiplex0channel5

        channel: 5

      - bus_id: multiplex0channel6

        channel: 6

      - bus_id: multiplex0channel7

        channel: 7

one_wire:

  - platform: gpio

    pin: 13

switch:    

  - platform: template

    name: "cool_on"

    id: cool_on

    turn_on_action:

      - switch.turn_off: cool_off

      - switch.turn_off: relay_2    

      - switch.turn_off: relay_4    

      - repeat:

          count: 33

          then:

            - switch.turn_on: relay_1

            - switch.turn_on: relay_3    

            - delay: 1.5s

            - switch.turn_off: relay_1

            - switch.turn_off: relay_3

            - delay: 140s

  - platform: template

    name: "cool_off"

    id: cool_off

    turn_on_action:

      - switch.turn_off: cool_on

      - switch.turn_off: relay_1

      - switch.turn_off: relay_3

      - repeat:

          count: 35

          then:

            - switch.turn_on: relay_2

            - switch.turn_on: relay_4

            - delay: 1.5s

            - switch.turn_off: relay_2

            - switch.turn_off: relay_4

            - delay: 140s    

  - platform: template

    name: "defrost_on"

    id: defrost_on

    turn_on_action:

      - switch.turn_off: defrost_off

      - switch.turn_off: relay_2    

      - repeat:

          count: 33

          then:

            - switch.turn_on: relay_1

            - delay: 1.5s

            - switch.turn_off: relay_1

            - delay: 150s

  - platform: template

    name: "defrost_off"

    id: defrost_off

    turn_on_action:

      - switch.turn_off: defrost_on

      - switch.turn_off: relay_1

      - repeat:

          count: 35

          then:

            - switch.turn_on: relay_2

            - delay: 1.5s

            - switch.turn_off: relay_2

            - delay: 150s          

  - platform: gpio

    name: "bypass_in_on"

    id: relay_1

    pin: 2

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_1

  - platform: gpio

    name: "bypass_in_off"

    id: relay_2

    pin: 15

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_2

  - platform: gpio

    name: "bypass_out_on"

    id: relay_3

    pin: 5

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_3

  - platform: gpio

    name: "bypass_out_off"

    id: relay_4

    pin: 4

    on_turn_on:

    - delay: 60s

    - switch.turn_off: relay_4

sensor:

  - platform: adc

    pin: 34

    name: "water level"

    update_interval: 30s

    unit_of_measurement: m

    attenuation: 11db

    filters:

      - offset: -0.61

      - multiply: 1.66666

      - exponential_moving_average:

          alpha: 0.08

          send_every: 1

  - platform: pulse_counter

    pin: 14

    name: "fan1"

    filters:

      - multiply: 0.5

    update_interval: 30s

    accuracy_decimals: 0

    unit_of_measurement: "RPM"

    on_value_range:

      - below: 300

        then:

          - delay: 2min

          - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'

  - platform: pulse_counter

    pin: 27

    name: "fan2"

    filters:

      - multiply: 0.5

    update_interval: 30s

    accuracy_decimals: 0

    unit_of_measurement: "RPM"

    on_value_range:

      - below: 300

        then:

          - delay: 2min

          - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'

  - platform: dallas_temp

    address: 0xb401204ec799da28

    name: "temp_outR"

    accuracy_decimals: 2

    id: temp_outR    

    filters:

      - offset: -0.01  

  - platform: dallas_temp

    address: 0xce0000034b298828

    name: "temp_out"

    accuracy_decimals: 2

    id: temp_out

    filters:

      - offset: 0.08

  - platform: bme280_i2c

    i2c_id: multiplex0channel1

    address: 0x76

    temperature:

      name: "BME280 Temp_room"

      accuracy_decimals: 2

      filters:

        - offset: -0.1  

    humidity:

      name: "BME280 Humid_room"

      accuracy_decimals: 1

    update_interval: 3min        

  - platform: bme280_i2c

    i2c_id: multiplex0channel7

    address: 0x76

    temperature:

      name: "BME280 Temp_ino"

      id: temp_ino

      accuracy_decimals: 2  

    humidity:

      name: "BME280 Humid_ino"

      accuracy_decimals: 1

    update_interval: 30s

  - platform: bme280_i2c

    i2c_id: multiplex0channel6

    address: 0x76

    temperature:

      name: "BME280 Temp_in"

      id: temp_in

      accuracy_decimals: 2

      filters:

        - offset: -0.2

    humidity:

      name: "BME280 Humid_in"

      id: Humid_in

      accuracy_decimals: 1

    update_interval: 1min

  - platform: scd4x

    i2c_id: multiplex0channel6

    co2:

      name: "CO2"

      id: CO2

      filters:

        - exponential_moving_average:

            alpha: 0.12

            send_every: 1

    automatic_self_calibration: false

    altitude_compensation: 242m

    measurement_mode: low_power_periodic

    id: scd40

 

  - platform: wifi_signal

    name: "RSSI"

    id: sensor_rssi

    update_interval: 90s

    entity_category: "diagnostic"

 

output:

  - platform: ledc

    pin: GPIO18

    id: rtttl_out

  - platform: esp32_dac

    pin: GPIO26

    id: dac_output1

  - platform: esp32_dac

    pin: GPIO25

    id: dac_output2

  - platform: template

    type: float

    id: set_level

    write_action:      

      - lambda: |-

          id(dac_power).publish_state(state);      

          auto v1 = id(dac_min).state + id(dac_bal1).state + (state * (0.9 + id(dac_bal2).state));

          auto v2 = id(dac_min).state - id(dac_bal1).state + (state * (0.9 - id(dac_bal2).state));

          id(dac_output1).set_level(v1);

          id(dac_output2).set_level(v2);

  - platform: template

    type: float

    id: PID_level

    write_action:      

      - lambda: |-

          if (id(fans).state) {

          // Fan is ON, do something here

          } else {

          // Fan is OFF, do something else here

          }

          id(PID_power).publish_state(state);  

          auto v = state * id(dac_max).state;

          if (!id(fans).state) {

          id(set_level).set_level(v);

          }

fan:

  - platform: speed

    output: set_level

    name: "fan"

    id: fans

    on_turn_off:

      then:

      - output.set_level:

          id: set_level

          level: 0.15

    on_turn_on:

      then:

      - delay: 60min

      - lambda: !lambda |-

          id(fans).turn_off();

time:

  - platform: sntp

    on_time:

      - minutes: /30

        then:

        - lambda: |-

            if (id(temp_in).state > 23 && id(temp_out).state < 22) {

            auto call = id(cool_wind).make_call();

            call.set_mode("HEAT_COOL");

            call.perform();          

            }

            else {

            if (id(cool_wind).mode != CLIMATE_MODE_OFF) {

            auto call = id(cool_wind).make_call();

            call.set_mode("OFF");

            call.perform();

            id(cool_off).turn_on();

            }}

 

        - lambda: |-

            if (id(temp_out).state < 0) {

            auto call = id(defrost).make_call();

            call.set_mode("HEAT");

            call.perform();          

            }

            else {

            if (id(defrost).mode != CLIMATE_MODE_OFF) {

            auto call = id(defrost).make_call();

            call.set_mode("OFF");

            call.perform();

            id(cool_off).turn_on();

            }}

 

ККД =((t_ino - t_out) / (t_in - t_out) * 100)

Змінено користувачем yur43
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

3 години тому, yur43 сказав:

ККД =((t_ino - t_out) / (t_in - t_out) * 100)

В коді цього нема (або я не бачу), то десь в іншому місці зроблено?

Посилання на коментар
Поділитися на інших сайтах

1 годину тому, TaurosRMK сказав:

В коді цього нема (або я не бачу), то десь в іншому місці зроблено?

ККД рахує НА. На стороні ПВУ хто його має бачити? 

Посилання на коментар
Поділитися на інших сайтах

6 годин тому, yur43 сказав:

ККД рахує НА. На стороні ПВУ хто його має бачити? 

Ну наприклад, ваш контролер Kincony? Думаю датчики від ПВУ до нього підключені?

Посилання на коментар
Поділитися на інших сайтах

Тільки що, TaurosRMK сказав:

Ну наприклад, ваш контролер Kincony? Думаю датчики від ПВУ до нього підключені?

Контролер прекрасно керує ПВУ, він без дисплея. У випадку аварійної зупинки вентилятора запищить штатною пищалкою. Слідкує за температурами і відповідно вмикає автоматичне охолодження, чи антиобмерзання. Він автономний.

ККД, це результат моніторингу системи, моніторинг весь в НА.

Посилання на коментар
Поділитися на інших сайтах

10 хвилин тому, yur43 сказав:

Контролер прекрасно керує ПВУ, він без дисплея. У випадку аварійної зупинки вентилятора запищить штатною пищалкою. Слідкує за температурами і відповідно вмикає автоматичне охолодження, чи антиобмерзання. Він автономний.

ККД, це результат моніторингу системи, моніторинг весь в НА.

Ну я мав на увазі розрахунок ККД може робитися на контролері і відображатися як сенсор в НА, все рівно він інтегрований в НА. Але то таке, якщо тільки для інформації, то без різниці, хоть в екселі )))

Посилання на коментар
Поділитися на інших сайтах

12 часов назад, yur43 сказал:

ККД =((t_ino - t_out) / (t_in - t_out) * 100)

маєте враховувати що ця формула атуальна лише в кейсі коли два потока однакові, що дуже не часто буває, більш повна формула має рахуватися через тепло (враховувати потік).

36 минут назад, TaurosRMK сказал:

Ну наприклад, ваш контролер Kincony?

а нащо то йому? знову таки без розуміння потоків то число трошки зі стелі. В мене ПВУ ентальпійний має ккд десь біля 50% але так то по формулі бачив і 120 коли один закрив всі засувки )

Змінено користувачем standov
  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

7 хвилин тому, standov сказав:

а нащо то йому?

Та просто, якщо і датчики підключені до контролера, то можна там же і ККД рахувати )) А то яке число виходить, це вже інше питання.

Посилання на коментар
Поділитися на інших сайтах

Створіть акаунт або увійдіть у нього для коментування

Ви маєте бути користувачем, щоб залишити коментар

Створити акаунт

Зареєструйтеся для отримання акаунта. Це просто!

Зареєструвати акаунт

Увійти

Вже зареєстровані? Увійдіть тут.

Увійти зараз
×
×
  • Створити...