Kyselin chatgpt:ltä vähän apuja, että miten Home Assistantissa voisi tehdä binary_sensorin jolla on eri triggeri aloitukselle ja lopetukselle, koska halusin että aloitus menee sen mukaan että ottoteho menee alle 25W ja pumppu on käynnissä (ei siis ole sammutettu), ja sitten lopetus että ottoteho menee alle 10W ja puhalluslämpö alle 0 astetta. Sehän kertoi että tekee binary_sensorin jonka asettaa vaan off, ja sitten automaatiot sekä sulatuksen aloitukselle ja lopetukselle, jotka muuttavat binary_sensorin tilaa on/off.
Pyysin vielä että pitäis pystyä seuraamaan sulatusten kestoja, sulatusten välisiä aikoja ja sulatuskertoja.
Kehotti tekemään helper-funktioita seuraavasti:
- input_boolean: daikin_defrost_active
- input_datetime: daikin_defrost_start_time (tyyppiä date&time)
- input_number: daikin_defrost_duration (max: 3000, unit: seconds), daikin_time_between_defrost_cycles (max: 31536000)
- input_counter: daikin_defrost_cycle_count,
Tein nämä siinä GUI:ssa, niin koodia ei suoraan näe.
Sitten kolme automaatiota: sulatus alkoi, sulatus loppui ja sulatuslaskurin nollaus keskiyöllä. Värkkäilin nämäkin sillä GUI:lla, mutta näistä saa koodit esiin automations.yaml-tiedostosta.
YAML:
- id: '1730555821990'
alias: Sulatus alkoi
description: ''
triggers:
- trigger: numeric_state
entity_id:
- sensor.zigbee_digital_meter_power
for:
hours: 0
minutes: 0
seconds: 10
below: 25
conditions:
- condition: state
entity_id: input_boolean.daikin_defrost_active
state: 'off'
- condition: state
entity_id: climate.daikin_room_temperature
state: heat
actions:
- action: homeassistant.turn_on
metadata: {}
data: {}
target:
entity_id:
- input_boolean.daikin_defrost_active
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.daikin_time_between_defrost_cycles
data:
value: '{{ as_timestamp(now()) - as_timestamp(states(''input_datetime.daikin_defrost_start_time''))
}}'
- action: input_datetime.set_datetime
metadata: {}
target:
entity_id: input_datetime.daikin_defrost_start_time
data:
timestamp: '{{ as_timestamp(now()) }}'
- action: notify.mobile_app_iphone_heikki
metadata: {}
data:
message: Daikin sulatus alkoi
mode: single
- id: '1730556081146'
alias: Sulatus loppui
description: ''
triggers:
- trigger: numeric_state
entity_id:
- sensor.zigbee_digital_meter_power
for:
hours: 0
minutes: 0
seconds: 30
below: 10
conditions:
- condition: state
entity_id: input_boolean.daikin_defrost_active
state: 'on'
- condition: numeric_state
entity_id: sensor.daikin_puhallusilma_lampotila
below: 5
actions:
- action: homeassistant.turn_off
metadata: {}
data: {}
target:
entity_id:
- input_boolean.daikin_defrost_active
- action: input_number.set_value
metadata: {}
target:
entity_id: input_number.daikin_defrost_duration
data:
value: '{{ as_timestamp(now()) - as_timestamp(states(''input_datetime.daikin_defrost_start_time''))
}}'
- action: counter.increment
metadata: {}
data: {}
target:
entity_id: counter.daikin_defrost_cycle_count
mode: single
- id: '1730558188181'
alias: Sulatuslaskurin nollaus
description: ''
triggers:
- trigger: time
at: 00:00:00
conditions: []
actions:
- action: counter.reset
metadata: {}
data: {}
target:
entity_id: counter.daikin_defrost_cycle_count
mode: single
Saas nähdä miten tämä toimii...
Edit: piti jo vähän modailla, eihän se binary_sensor oikein toiminut, mutta input_boolean ajaa saman asian. Hoksasin myös että kun laski reilusti pyyntiä, niin triggeröity turha muka-sulatus, pitää vielä säätää noita ehtoja.
Edit2: lisäsin aloitus-automaatioon ehdon että sulatus ei ole vielä käynnistynyt, muuten tulee tupla-aloituksia. Ja muutin lopetuksen raja-arvoja (teho <10 30s ja puhallus <5)