OK, jako, że robiłem integrację wczoraj na aktualnym HA i to co powyżej nie do końca już ma się do rzeczywistości postaram się poniżej dać pełną solucję w 1 poście.
Pozwolenie od PGE to 2 dni czekania - jeden mail z uzasadnieniem czemu chcemy wpiąć i informacją, że nie naruszymy plomby - za 2 dni odpowiedź ze zgodą + pozwolenie na podpięcie samemu.
teraz od strony HA:
W configuration.yaml
dodajemy wpisy:
input_number: !include input_number.yaml
template: !include template.yaml
Jeśli już je mamy to uzupełniamy danymi jak poniżej:
w pliku input_number.yaml
deklarujemy
gas_meter_m3:
name: Odczyt gazu
min: 0
max: 999999
step: 0.01
unit_of_measurement: m³
mode: box
gas_m3_to_kwh_conversion_rate:
name: Współczynnik konwersji gazu
min: 0
max: 999999
step: 0.001
unit_of_measurement: m³/kWh
mode: box
gas_kwh_price:
name: Cena 1 kWh gazu (netto)
min: 0
max: 100
step: 0.00001
unit_of_measurement: PLN/kWh
mode: box
są to kolejno: wkazanie teraźniejsze gazu, współczynnik konwersji m3 na kWh z faktury, cena 1kWh z faktury
W pliku template.yaml
deklarujemy:
- unique_id: gas
sensor:
- name: "Zużycie gazu - m³"
unique_id: "usage_m3"
state: "{{ states('input_number.gas_meter_m3') | float(0) | round(2) }}"
unit_of_measurement: "m³"
icon: "mdi:fire"
device_class: gas
state_class: total_increasing
- name: "Zużycie gazu - kWh"
unique_id: "usage_kwh"
state: "{{ (states('input_number.gas_meter_m3') | float(0) * ( states('input_number.gas_m3_to_kwh_conversion_rate') | float(0) )) | round(3) }}"
unit_of_measurement: "kWh"
icon: "mdi:fire"
device_class: energy
state_class: total_increasing
zużycie gazu w m3 i kWh jako sensor template zgodne z Energy Dashboard.
Przeładowujemy konfigurację i ustawiamy wartości w input_number (cenę, współczynnik, teraźniejsze wskazanie gazomierza).
W Ustawienia -> Automatyzacje
tworzymy automatyzację:
alias: Dodaj do odczytu gazu
description: ""
trigger:
- platform: state
entity_id:
- binary_sensor.miernik_gazu_contact
from: "on"
to: "off"
condition: []
action:
- service: input_number.set_value
data:
value: "{{ (states.input_number.gas_meter_m3.state | float) + 0.01 }}"
target:
entity_id: input_number.gas_meter_m3
mode: single
Gdzie binary_sensor.miernik_gazu_contact
to nasz SNZB-04.
Opcjonalnie w Ustawienia → Urządzenia i usługi → Pomocnicy tworzymy liczniki mediów
dziennie, tygodniowo, miesięcznie, rocznie podając jako Sensor wejściowy
sensor.template_gas_usage_kwh
i ustawiając odpowiedni cykl resetowania licznika
.
W Ustawienia → Dashboardy → Energia w sekcji Zużycie gazu
dodajemy źródło gazu sensor.template_gas_usage_kwh
oraz zaznaczamy Użyj encji z bieżącą ceną
gdzie ustawiamy input_number.gas_kwh_price
.
Wszystko działa.
Opcjonalnie zamiast powyższych konfiguracji wersja do packages
:
input_number:
gas_meter_m3:
name: Odczyt gazu
min: 0
max: 999999
step: 0.01
unit_of_measurement: m³
mode: box
gas_m3_to_kwh_conversion_rate:
name: Współczynnik konwersji gazu
min: 0
max: 999999
step: 0.001
unit_of_measurement: m³/kWh
mode: box
gas_kwh_price:
name: Cena 1 kWh gazu (netto)
min: 0
max: 100
step: 0.00001
unit_of_measurement: PLN/kWh
mode: box
template:
- unique_id: gas
sensor:
- name: "Zużycie gazu - m³"
unique_id: "usage_m3"
state: "{{ states('input_number.gas_meter_m3') | float(0) | round(2) }}"
unit_of_measurement: "m³"
icon: "mdi:fire"
device_class: gas
state_class: total_increasing
- name: "Zużycie gazu - kWh"
unique_id: "usage_kwh"
state: "{{ (states('input_number.gas_meter_m3') | float(0) * ( states('input_number.gas_m3_to_kwh_conversion_rate') | float(0) )) | round(3) }}"
unit_of_measurement: "kWh"
icon: "mdi:fire"
device_class: energy
state_class: total_increasing
[EDIT]
Uważajcie na input_number.increase
w automatyzacji - niestety co jakiś czas z kapelusza dodaje niepełny step (w moim przypadku 0.01
), przez co widzimy dziwne cyferki typu 3.459999999999
zamiast 3.46
. Poprawiona automatyzacja już wklejona na górze.