Vanding: forsiderække med sidst vandet, smart-knap, liter og tid pr. bed; kapillær default 6
This commit is contained in:
@@ -70,6 +70,20 @@ utility_meter:
|
||||
source: input_number.nattis
|
||||
cycle: daily
|
||||
|
||||
# Liter vandet i dag – fordelt på zoner via tariffer.
|
||||
# Hovedhanen (LinkTap) er eneste flowmåler, og zonerne kører skiftevis,
|
||||
# så den aktive tarif sættes når en zone (eller kapillærkasse) starter.
|
||||
vanding_liter:
|
||||
name: "Vanding liter i dag"
|
||||
source: sensor.hovedhane_linktap_volume
|
||||
cycle: daily
|
||||
tariffs:
|
||||
- hb1
|
||||
- hb2
|
||||
- hb3
|
||||
- drivhus
|
||||
- kapillaer
|
||||
|
||||
|
||||
python_script:
|
||||
|
||||
|
||||
@@ -463,7 +463,110 @@ cards:
|
||||
target:
|
||||
entity_id: lawn_mower.husqvarna_automower
|
||||
|
||||
# 💡 Lys kontrol
|
||||
# � Vanding
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: custom:button-card
|
||||
entity: sensor.vanding_sidst_vandet_compact
|
||||
show_icon: false
|
||||
show_name: true
|
||||
show_state: true
|
||||
name: Sidst vandet
|
||||
tap_action:
|
||||
action: none
|
||||
hold_action:
|
||||
action: none
|
||||
styles:
|
||||
card:
|
||||
- padding: 8px
|
||||
name:
|
||||
- font-size: 11px
|
||||
- color: var(--secondary-text-color)
|
||||
- padding-bottom: 4px
|
||||
state:
|
||||
- white-space: normal
|
||||
- word-break: break-word
|
||||
- line-height: 1.2
|
||||
- font-size: 13px
|
||||
- text-align: center
|
||||
|
||||
- type: button
|
||||
name: Smart vanding
|
||||
icon: mdi:sprinkler-variant
|
||||
entity: script.vanding_hojbed_skiftevis
|
||||
tap_action:
|
||||
action: toggle
|
||||
|
||||
- type: custom:button-card
|
||||
entity: sensor.vanding_liter_i_dag_total
|
||||
icon: mdi:water
|
||||
show_icon: true
|
||||
show_name: true
|
||||
show_state: true
|
||||
name: Liter i dag
|
||||
tap_action:
|
||||
action: none
|
||||
hold_action:
|
||||
action: none
|
||||
custom_fields:
|
||||
breakdown: |
|
||||
[[[
|
||||
const n = (id) => { const s = states[id]; return s ? Math.round(parseFloat(s.state) || 0) : 0; };
|
||||
return `Ærter ${n('sensor.vanding_liter_hb1')} · Kart. ${n('sensor.vanding_liter_hb2')} · Rab. ${n('sensor.vanding_liter_hb3')}`
|
||||
+ `<br>Drivhus ${n('sensor.vanding_liter_drivhus')} · Kapillær ${n('sensor.vanding_liter_kapillaer')}`;
|
||||
]]]
|
||||
styles:
|
||||
card:
|
||||
- padding: 8px
|
||||
name:
|
||||
- font-size: 11px
|
||||
- color: var(--secondary-text-color)
|
||||
state:
|
||||
- font-size: 15px
|
||||
- font-weight: bold
|
||||
custom_fields:
|
||||
breakdown:
|
||||
- font-size: 9px
|
||||
- color: var(--secondary-text-color)
|
||||
- padding-top: 3px
|
||||
- line-height: 1.3
|
||||
|
||||
- type: custom:button-card
|
||||
entity: sensor.vanding_tid_i_dag_total
|
||||
icon: mdi:timer-sand
|
||||
show_icon: true
|
||||
show_name: true
|
||||
show_state: true
|
||||
name: Tid i dag
|
||||
tap_action:
|
||||
action: none
|
||||
hold_action:
|
||||
action: none
|
||||
custom_fields:
|
||||
breakdown: |
|
||||
[[[
|
||||
const m = (id) => { const s = states[id]; return s ? Math.round((parseFloat(s.state) || 0) * 60) : 0; };
|
||||
const cap = () => { const s = states['sensor.vanding_kapillaer_tid_i_dag']; return s ? Math.round(parseFloat(s.state) || 0) : 0; };
|
||||
return `Ærter ${m('sensor.vanding_hojbed_1_i_dag')} · Kart. ${m('sensor.vanding_hojbed_2_i_dag')} · Rab. ${m('sensor.vanding_hojbed_3_i_dag')}`
|
||||
+ `<br>Drivhus ${m('sensor.vanding_drivhus_i_dag')} · Kapillær ${cap()}`;
|
||||
]]]
|
||||
styles:
|
||||
card:
|
||||
- padding: 8px
|
||||
name:
|
||||
- font-size: 11px
|
||||
- color: var(--secondary-text-color)
|
||||
state:
|
||||
- font-size: 15px
|
||||
- font-weight: bold
|
||||
custom_fields:
|
||||
breakdown:
|
||||
- font-size: 9px
|
||||
- color: var(--secondary-text-color)
|
||||
- padding-top: 3px
|
||||
- line-height: 1.3
|
||||
|
||||
# �💡 Lys kontrol
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
|
||||
@@ -130,9 +130,64 @@
|
||||
action:
|
||||
# Åbn kun hovedhanen i 15 min – fylder kapillærkassernes flydventiler.
|
||||
# LinkTap lukker selv efter varigheden (instant mode).
|
||||
- service: select.select_option
|
||||
target:
|
||||
entity_id: select.vanding_liter
|
||||
data:
|
||||
option: kapillaer
|
||||
- service: linktap.start_watering
|
||||
target:
|
||||
entity_id: valve.hovedhane_linktap
|
||||
data:
|
||||
seconds: 900
|
||||
|
||||
# --- Forside: sidst vandet & liter-måler pr. zone ---
|
||||
|
||||
- alias: 'Vanding – opdater sidst vandet'
|
||||
description: 'Sætter tidsstempel når en zone eller hovedhanen begynder at vande'
|
||||
mode: queued
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- switch.hojbed_1
|
||||
- switch.hojbed_2
|
||||
- switch.hojbed_3
|
||||
- switch.drivhus_drypvanding
|
||||
to: 'on'
|
||||
- platform: state
|
||||
entity_id: binary_sensor.hovedhane_linktap_is_watering
|
||||
to: 'on'
|
||||
action:
|
||||
- service: input_datetime.set_datetime
|
||||
target:
|
||||
entity_id: input_datetime.vanding_sidst_vandet
|
||||
data:
|
||||
datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
|
||||
|
||||
- alias: 'Vanding – vælg liter-tarif efter aktiv zone'
|
||||
description: 'Skifter utility_meter-tarif så liter bogføres på det rette bed'
|
||||
mode: queued
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: switch.hojbed_2 # Højbed 1 – Ærter
|
||||
to: 'on'
|
||||
id: hb1
|
||||
- platform: state
|
||||
entity_id: switch.hojbed_1 # Højbed 2 – Kartofler
|
||||
to: 'on'
|
||||
id: hb2
|
||||
- platform: state
|
||||
entity_id: switch.drivhus_drypvanding # Højbed 3 – Rabarber
|
||||
to: 'on'
|
||||
id: hb3
|
||||
- platform: state
|
||||
entity_id: switch.hojbed_3 # Drivhus
|
||||
to: 'on'
|
||||
id: drivhus
|
||||
action:
|
||||
- service: select.select_option
|
||||
target:
|
||||
entity_id: select.vanding_liter
|
||||
data:
|
||||
option: "{{ trigger.id }}"
|
||||
|
||||
|
||||
@@ -26,3 +26,9 @@ vanding_sikkerhedsstop_nat:
|
||||
has_time: true
|
||||
initial: "23:59:00"
|
||||
icon: mdi:alarm-off
|
||||
|
||||
vanding_sidst_vandet:
|
||||
name: Vanding – sidst vandet
|
||||
has_date: true
|
||||
has_time: true
|
||||
icon: mdi:sprinkler-variant
|
||||
|
||||
@@ -41,7 +41,7 @@ vanding_kapillaer_antal:
|
||||
min: 0
|
||||
max: 10
|
||||
step: 1
|
||||
initial: 3
|
||||
initial: 6
|
||||
icon: mdi:counter
|
||||
|
||||
# Fugtigheds-mål per højbed (%)
|
||||
|
||||
@@ -29,3 +29,12 @@
|
||||
type: time
|
||||
start: "{{ today_at() }}"
|
||||
end: "{{ now() }}"
|
||||
# Samlet tid hovedhanen (LinkTap) har vandet i dag – dækker både zoner og
|
||||
# kapillærkasser, da alt vand passerer hovedhanen.
|
||||
- platform: history_stats
|
||||
name: vanding_hovedhane_i_dag
|
||||
entity_id: binary_sensor.hovedhane_linktap_is_watering
|
||||
state: "on"
|
||||
type: time
|
||||
start: "{{ today_at() }}"
|
||||
end: "{{ now() }}"
|
||||
@@ -0,0 +1,75 @@
|
||||
# Vanding – afledte sensorer til forside-rækken
|
||||
|
||||
# Kompakt "sidst vandet" (samme stil som støvsugerens "Sidst kørt")
|
||||
- trigger:
|
||||
- platform: homeassistant
|
||||
event: start
|
||||
- platform: state
|
||||
entity_id: input_datetime.vanding_sidst_vandet
|
||||
- platform: time_pattern
|
||||
hours: "/1"
|
||||
sensor:
|
||||
- name: "Vanding sidst vandet compact"
|
||||
unique_id: vanding_sidst_vandet_compact
|
||||
icon: mdi:sprinkler-variant
|
||||
state: >
|
||||
{% set raw = states('input_datetime.vanding_sidst_vandet') %}
|
||||
{% if raw in ['unknown', 'unavailable', '', none] %}
|
||||
Aldrig
|
||||
{% else %}
|
||||
{% set dt = as_local(as_datetime(raw)) %}
|
||||
{% if dt is none %}
|
||||
Ukendt
|
||||
{% elif dt.date() == now().date() %}
|
||||
i dag {{ dt.strftime('%H:%M') }}
|
||||
{% elif dt.date() == (now() - timedelta(days=1)).date() %}
|
||||
i går {{ dt.strftime('%H:%M') }}
|
||||
{% else %}
|
||||
{% set weekdays = ['man', 'tir', 'ons', 'tor', 'fre', 'lør', 'søn'] %}
|
||||
{{ weekdays[dt.weekday()] }} {{ dt.strftime('%d/%m %H:%M') }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
# Kumuleret vandingstid og liter i dag
|
||||
- sensor:
|
||||
# Samlet vandingstid i dag (minutter) = hovedhanens vandetid
|
||||
- name: "Vanding tid i dag total"
|
||||
unique_id: vanding_tid_i_dag_total
|
||||
unit_of_measurement: "min"
|
||||
icon: mdi:timer-sand
|
||||
state: >
|
||||
{{ (states('sensor.vanding_hovedhane_i_dag') | float(0) * 60) | round(0) }}
|
||||
|
||||
# Kapillærkasser i dag (minutter) = hovedhane minus de fire zoner
|
||||
- name: "Vanding kapillaer tid i dag"
|
||||
unique_id: vanding_kapillaer_tid_i_dag
|
||||
unit_of_measurement: "min"
|
||||
icon: mdi:cup-water
|
||||
state: >
|
||||
{% set hovedhane = states('sensor.vanding_hovedhane_i_dag') | float(0) %}
|
||||
{% set zoner = (states('sensor.vanding_hojbed_1_i_dag') | float(0))
|
||||
+ (states('sensor.vanding_hojbed_2_i_dag') | float(0))
|
||||
+ (states('sensor.vanding_hojbed_3_i_dag') | float(0))
|
||||
+ (states('sensor.vanding_drivhus_i_dag') | float(0)) %}
|
||||
{% set cap = [hovedhane - zoner, 0] | max %}
|
||||
{{ (cap * 60) | round(0) }}
|
||||
|
||||
# Samlet liter i dag = summen af tarif-tællerne
|
||||
- name: "Vanding liter i dag total"
|
||||
unique_id: vanding_liter_i_dag_total
|
||||
unit_of_measurement: "L"
|
||||
device_class: water
|
||||
state_class: total
|
||||
icon: mdi:water
|
||||
state: >
|
||||
{% set ns = namespace(t=0) %}
|
||||
{% set kilder = [
|
||||
'sensor.vanding_liter_hb1',
|
||||
'sensor.vanding_liter_hb2',
|
||||
'sensor.vanding_liter_hb3',
|
||||
'sensor.vanding_liter_drivhus',
|
||||
'sensor.vanding_liter_kapillaer'] %}
|
||||
{% for s in kilder %}
|
||||
{% set ns.t = ns.t + (states(s) | float(0)) %}
|
||||
{% endfor %}
|
||||
{{ ns.t | round(1) }}
|
||||
Reference in New Issue
Block a user