Prérequis: sensors template de @Francoloco
Petite notification à part pour ma femme pour qu'elle sache quand elle peut recommencer à vivre.
alias: Défi Hilo Notification En Cours
description: ""
trigger:
- platform: state
entity_id:
- sensor.defi_hilo
from: scheduled
to: appreciation
id: appreciation
- platform: state
entity_id:
- sensor.defi_hilo
from: appreciation
to: pre_heat
id: pre_heat
- platform: state
entity_id:
- sensor.defi_hilo
from: pre_heat
to: reduction
id: reduction
- platform: state
entity_id:
- sensor.defi_hilo
from: reduction
to: recovery
id: recovery
- platform: state
entity_id:
- sensor.defi_hilo
from: recovery
to: completed
id: completed
condition:
- condition: not
conditions:
- condition: state
entity_id: sensor.defi_hilo
state: scheduled
- condition: template
value_template: >
{{ states('input_text.defi_hilo_last_state_notification') !=
states('sensor.defi_hilo') }}
action:
- choose:
- conditions:
- condition: trigger
id:
- appreciation
- pre_heat
- completed
sequence:
- service: notify.mobile_app_REDACTED
data:
title: Défi Hilo
message: Le sensor défi est passé à {{ states('sensor.defi_hilo') }}
- service: input_text.set_value
metadata: {}
data:
value: "{{states('sensor.defi_hilo')}}"
target:
entity_id: input_text.defi_hilo_last_state_notification
- conditions:
- condition: trigger
id:
- reduction
sequence:
- service: notify.mobile_app_REDACTED
data:
title: Défi Hilo
message: >-
Le sensor défi est passé à {{ states('sensor.defi_hilo') }}, le
montant maximal possible est de
{{states('sensor.defi_hilo_allowed_cash')}}$
- service: input_text.set_value
metadata: {}
data:
value: "{{states('sensor.defi_hilo')}}"
target:
entity_id: input_text.defi_hilo_last_state_notification
- conditions:
- condition: trigger
id:
- recovery
sequence:
- service: notify.mobile_app_iphone_ian
data:
title: Défi Hilo
message: >-
Le sensor défi est passé à {{states('sensor.defi_hilo')}}, le
montant obtenu estimé est de
{{states('sensor.defi_hilo_remaining_cash')}}$
- service: notify.mobile_app_REDACTED
data:
title: Défi Hilo
message: >-
Le sensor défi est passé à {{ states('sensor.defi_hilo') }} plus
besoin de faire attention
- service: input_text.set_value
metadata: {}
data:
value: "{{states('sensor.defi_hilo')}}"
target:
entity_id: input_text.defi_hilo_last_state_notification
mode: single
Des appareils ont été enlevés pour simplifier.
On trigger à 1h du matin ou quand le sensor tourne à appreciation. Garantie le trigger.
On vérifie que la liste de défis le prochain est en AM.
Condition sur le sensor défi car pourrait être en train de switcher d'état à 1h pile.
Condition d'heure en cas de reboot pas rapport de HA pour par rouler 2 fois.
Choose selon qu'il y ait quelqu'un à la maison ou pas.
Des appareils ont été enlevés pour simplifier.
On trigger à 12h ou quand le sensor tourne à appreciation. Garantie le trigger.
On vérifie que la liste de défis le prochain est en PM.
Condition sur le sensor défi car pourrait être en train de switcher d'état à 1h pile.
Condition d'heure en cas de reboot pas rapport de HA pour par rouler 2 fois.
Choose selon qu'il y ait quelqu'un à la maison ou pas.
Je coupe mon convectair dans la salle de bain parce qu'il me gosse.
Je coupe mon échangeur d'air pour garder ma chaleur en dedans.
Perso je laisse le contrôle à Hilo pour cette phase, mon préchauffage est déjà entamé.
Petite passe passe ici, j'éteins l'échangeur d'air juste à 7h pour sortir les odeurs du souper pareille.
Dépendant s'il y a quelque à la maison ou quelqu'un qui dort à la maison les actions changent.
La valeur energy maximale pour les thermostats Hilo HT402 est de 500, et elle ne peut pas être réinitialisée manuellement car il est impossible d'écrire cet attribut directement. Cette valeur est automatiquement réinitialisée par le thermostat lui même chaque jour à minuit. Afin que cela fonctionne, il faut que l'heure soit correctement paramétrée sur les thermostats. Lorsqu'ils sont appairés à la passerelle Hilo, ce paramétrage est fait par un message broadcast de la passerelle comme celui-ci:
Frame 593: Packet, 55 bytes on wire (440 bits), 55 bytes captured (440 bits)
IEEE 802.15.4 Data, Src: 0x7eed, Dst: Broadcast
ZigBee Network Layer Data, Dst: Broadcast, Src: 0x0000
ZigBee Application Support Layer Data, Dst Endpt: 255, Src Endpt: 1
Frame Control Field: Data (0x08)
Destination Endpoint: 255
Cluster: Time (0x000a)
Profile: Home Automation (0x0104)
Source Endpoint: 1
Counter: 89
ZigBee Cluster Library Frame, Command: Report Attributes, Seq: 46
Frame Control Field: Profile-wide (0x08)
Sequence Number: 46
Command: Report Attributes (0x0a)
Attribute Field, Uint32: 821194320
Attribute: Local Time (0x0007)
Data Type: 32-Bit Unsigned Integer (0x23)
Uint32: 821194320 (0x30f26e50)
Afin de répliquer ce comportement il est possible d'envoyer régulièrement (idéalement plusieurs fois un peu avant et après minuit) un message similaire à celui de la passerelle au topic zigbee2mqtt/bridge/request/action. Cela peut être fait avec un script comme celui-ci:
action: mqtt.publish
metadata: {}
data:
qos: "1"
payload: >-
{% set zigbee_epoch = (as_timestamp(now()) - as_timestamp('2000-01-01 00:00:00')) | int %}
{
"action": "raw",
"params": {
"network_address": 65532,
"dst_endpoint": 255,
"src_endpoint": 1,
"profile_id": 260,
"cluster_key": 10,
"zcl": {
"frame_type": 0,
"direction": 1,
"disable_default_response": true,
"command_key": 10,
"payload": [
{
"attrId": 7,
"dataType": 35,
"attrData": {{ zigbee_epoch }}
}
]
}
}
}
topic: zigbee2mqtt/bridge/request/actionOu en utilisant l'automation MqttPublishTimeThermostatsForReset.yaml de ce repository.