Il y a quelques avantages à choisir des modules Shelly plutôt que des chinoiseries. D'abord ces modules sont aux normes européennes, et ce n'est pas juste un adhésif CE posé par un mineur au fond d'une usine chinoise (pensez surtout aux assurances qui peuvent se montrer tatillonnes en cas de sinistre), le tarif est accessible et si vous avez une question (technique ou autre) le CEO de la boite vous répondra dans le fil Facebook de la marque ou par mail.
Une chose intéressante est également que beaucoup de ces modules remontent la consommation instantanée et cumulée. Je pensais naïvement que tous conservaient la consommation cumulée en cas de coupure secteur, mais, même si dixit le CEO c'était vaguement en projet en 2019, ce n'est toujours pas le cas et cette information sera perdue localement (sauf EM), bien qu'elle reste accessible sur le cloud Shelly via l'application idoine, mais impossible à récupérer via l'API.
Pour conserver cette information je me suis un peu torturé l'esprit depuis quelques jours en cherchant différentes solutions pour stocker et conserver ce chiffre, alors qu'en fait la solution était sous mes yeux et que je l'avait déjà utilisée quand j'avais déployé mon module de calcul des couts électrique globaux. La solution passe par l'intégration utility_meter:
proposée de base par Home Assistant.
Utility Meter est une intégration qui va permettre de stocker le cumul d'une valeur sur une période donnée (hourly
, daily
, weekly
, monthly
, bimonthly
, quarterly
and yearly
), ainsi que la même valeur sur la période n-1. Par exemple, si vous configurez en journalier, à 13:45 vous pourrez afficher (ou utiliser) la valeur de consommation d'un compteur depuis minuit ainsi que celle à la même heure pour le jour précédent. Imaginez juste le code et les template qu'il aurait fallut imaginer sans cette intégration...
En ce qui me concerne, en prenant par exemple un Shelly 1PM qui pilote un convecteur, ce qui va m'intéresser est de connaitre la consommation cumulée en cours et celle pour le même jour l'an dernier.
Bien sur il est possible, avec un peu d'imagination et quelques lignes de code YAML, de stocker les années précédentes dans un input_number:
ou même l'évolution dans une base de données et pour les plus maniaques d'utiliser Grafana pour afficher de beaux histogrammes. Même si ça ne changera probablement rien à la facture EdF, en partant du principe que si la domotique apporte un indéniable confort, de part le surcoût induit elle permet au final rarement réaliser de vraies économies.
En pratique
Dans cet exemple j'utilise l'intégration Shelly for Hass, mais il est toute à fait possible de faire la même chose avec d'autres types de modules, voire en intégrant les modules Shelly (ou autres) avec MQTT...
On crée nos entrées utility_meter:
dans notre fichier de configuration :
utility_meter:
energy_total_yearly_ch_bureau:
source: sensor.shelly_shplg_s_f8ccf83_total_consumption
cycle: yearly
energy_total_yearly_ch_cheminee:
source: sensor.shelly_shsw_pm_68c63afaf521_total_consumption
cycle: yearly
energy_total_yearly_ch_salon:
source: sensor.shelly_shsw_pm_68c63afaf658_total_consumption
cycle: yearly
energy_total_yearly_ch_cuisine:
source: sensor.shelly_shsw_pm_68c63afaf1ca_total_consumption
cycle: yearly
Ensuite on va pouvoir les utiliser directement pour les afficher, ici dans une carte ou j'ai utilisé le composant multiple-entity-row pour les besoins de l'affichage. Vous remarquerez l'utilisation de l'attribut last_period
pour afficher l'année précédente.
entities:
- entities:
- attribute: last_period
name: Année passée
unit: kWh
entity: sensor.energy_total_yearly_ch_cheminee
name: Convecteur Cheminée
secondary_info: last-changed
show_state: true
state_header: Année en cours
type: 'custom:multiple-entity-row'
title: Consomation cumulée
type: entities
Bonus
Etant donné que j'avais dans un séjour ouvert trois convecteurs qui fonctionnent en même temps, j'ai créé deux sensor:
pour regrouper ces informations afin de pouvoir afficher une seule ligne pour le séjour, un pour l'année en cours et un pour l'année précédente, qui de fait sera à zéro pour un moment. Attention, utility_meter:
commence à compter au moment ou les entrées sont crées.
- platform: template
sensors:
energy_total_yearly_ch_sejour:
friendly_name: "Total Séjour"
unit_of_measurement: 'kWh'
value_template: "{{
(states('sensor.energy_total_yearly_ch_cheminee') | float) +
(states('sensor.energy_total_yearly_ch_cuisinee') | float) +
(states('sensor.energy_total_yearly_ch_salon') | float) }}"
- platform: template
sensors:
energy_total_yearly_ch_sejour_last_period:
friendly_name: "Total Séjour (N-1)"
unit_of_measurement: 'kWh'
value_template: "{{
(states('sensor.energy_total_yearly_ch_cheminee.attributes.last_period') | float) +
(states('sensor.energy_total_yearly_ch_cuisinee.attributes.last_period') | float) +
(states('sensor.energy_total_yearly_ch_salon.attributes.last_period') | float) }}"
EDIT 21/01/2021 : On peut parfois avoir besoin de changer la valeur d'un utility_meter:
. Dans les Outils de développement / Services vous trouverez un service utility_meter.calibrate et utility_meter.reset. Sauf qu'il y a un petit bugg et seuls les utility_meter:
qui ont une option tariffs:
s'affichent. Qu'à cela ne tienne, il suffit de coller le nom de l'entité + TAB et ensuite changer la valeur :
entity_id: sensor.energy_total_yearly
value: 25550