Aide sur les sensors et le calcul

Mon problème

Bonjour,

J’ai besoin de calculer ce que me coute l’utilisation de ma pompe de piscine. J’ai toutes les données en ma possession pour faire le calcul mais ne sais pas comment les mettre en œuvre.
J’aimerais inclure ca dans un sensor.
J’ai un relevé de la durée de fonctionnement de ma pompe. Un sensor avec la consommation totale calculée. Via node-red, suivant l’heure de la journée, j’ai une entrée qui change pour indiquer le prix du Kw. Ca change automatiquement si HC ou HP.
Donc, si j’intègre ca dans un sensor via un calcul, quand le prix du Kw changera, ca changera le cout total de ma consommation et vice-versa.
Il faudrait que le calcul du cout total de fonctionnement intègre le fait qu’il y a des périodes ou le kw est moins cher. Et là, je bloque.
Voici mes sensors crées. Mais la partie ou je multiplie est celle que je dois changer par mes entrées.

- platform: template
    sensors:
      duree_pompe:
        friendly_name: Durée de fonctionnement de la pompe
        unit_of_measurement: H
        value_template: '{{ (states("sensor.conso_pompe_piscine") | float / 3600) | round(0) }}'
      conso_pompe:
        friendly_name: Consommation de la pompe
        unit_of_measurement: Kwh
        value_template: '{{ (states("sensor.duree_pompe") | float * 0.105) | round(2) }}'
      cout_pompe:
        friendly_name: Coût de la pompe
        unit_of_measurement: €
        value_template: '{{ (states("sensor.conso_pompe") | float * 0.247) | round(2) }}'

Voici mes sensors et entrées.
image

Merci à vous

Ma configuration


System Health

version core-2021.5.5
installation_type Home Assistant OS
dev false
hassio true
docker true
virtualenv false
python_version 3.8.9
os_name Linux
os_version 5.4.83-v7
arch armv7l
timezone Europe/Brussels
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4799
Installed Version 1.12.3
Stage running
Available Repositories 824
Installed Repositories 32
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 5.13
update_channel stable
supervisor_version supervisor-2021.05.4
docker_version 19.03.15
disk_total 14.0 GB
disk_used 9.5 GB
healthy true
supported true
board rpi3
supervisor_api ok
version_api ok
installed_addons Samba share (9.3.1), Terminal & SSH (9.1.1), KNXD daemon (0.4.1), Node-RED (9.1.3), Samba Backup (4.5.0), Alsa & PulseAudio Fix (3.4), File editor (5.3.0), APC UPS Daemon (1.9), Network UPS Tools (0.7.0), Nginx Proxy Manager (0.11.0), MariaDB (2.3.0), ESPHome (1.17.0)
Lovelace
dashboards 2
resources 16
views 8
mode storage
___

Pourquoi ne pas partir sur 2 entités distinctes :

  • Consommation HP et calcul du coût
  • Consommation HC et calcul du coût

?

Ce que tu peux obtenir en utilisant un utility_meter et son service de sélection de tarif: → Documentation

Il ne te restera plus qu’à faire une entité pour le total des deux tarifs.

1 « J'aime »

Bonjour,

Merci de ta réponse. Je ne savais pas que ça existait.

J’essaye ça demain.

Encore merci

1 « J'aime »

Bonjour,

Je suis un peu pommé pour les HP et HC avec les plages horaires. J’ai tenté de nombreuse choses sans résultats.

Pour la mesure j’utilise un Shelly em.

Bonjour

il te faut créer deux choses

l’utility meter

utility_meter:
  daily_energy:
    source: sensor.energy
    name: Daily Energy
    cycle: daily
    tariffs:
      - peak
      - offpeak

et une automation
qui elle va basculer en fonction de ton abonnement les heures creuses et les heures pleines

automation:
  trigger:
    - platform: time
      at: "09:00:00"
      variables:
        tariff: "peak"
    - platform: time
      at: "21:00:00"
      variables:
        tariff: "offpeak"
  action:
    - service: select.select_option
      target:
        entity_id: select.daily_energy
      data:
        option: "{{ tariff }}"
1 « J'aime »

Bonjour j’ai un peu le même problème:

ERREUR
Error rendering data template: TypeError: unsupported operand type(s) for -: ‹ str › and ‹ int ›

Je souhaite sauver tous les jours les KWh utilisés par ma PAC depuis la valeur sauvée en début du mois.

alias: Save KWh depuis jour 1 (encours)
description: KWh depuis 1er jour du mois
trigger:
  - platform: time
    at: "23:45:00"
condition: []
action:
  - service: input_number.set_value
    data:
      value: >-
        {{ (states('sensor.pac_kwh_t1_t2')  - states'(input_number.pac_kwh_mois') |
        int}}
    target:
      entity_id: input_number.pac_kwh_encours
mode: single

le sensor.pac_kwh_t1_t2 = KWh actuels sur mon compteur

le input_number.pac_kwh_mois = KWh que j’ai sauvé en début du mois et qui fonctionne bien:

alias: Save KWh mois précédent (mois)
description: KWh T1+T2 - mois passé
trigger:
  - platform: state
    entity_id:
      - binary_sensor.minuit
condition:
  - condition: template
    value_template: "{{ now().strftime(\"%d\")|int == 1}}"
action:
  - service: input_number.set_value
    data:
      value: "{{ states('sensor.pac_kwh_t1_t2') | int }}"
    target:
      entity_id: input_number.pac_kwh_mois
mode: single

et donc input_number.pac_kwh_encours est la valeur que je devrais stocker à minuit.

Merci pour votre aide.

Salut

Pas vraiment, là tes templates sont pas au top :

  • |int à transformer en |int(0) c’est un changement de l’année dernière qui est obligatoire désormais. Valable pour tes 2 bouts de code.
  • le message d’erreur te dit que tu lui demande de faire un sous-traction entre une chaine de caractères et un nombre… HA est bête et méchant il ne sait pas faire…
    La seule soustraction est là
{{ (states('sensor.pac_kwh_t1_t2')  - states'(input_number.pac_kwh_mois') | int}}

Donc il vaut mieux faire

{{ (states('sensor.pac_kwh_t1_t2')|int(0)  - states'(input_number.pac_kwh_mois')|int(0)}}

comme ça il a 2 chiffres pour faire son calcul et avec le bon format de template

Penser à corriger le code #2

Merci Pulky-Luke
cela fonctionne.

service: input_number.set_value
data:
  value: >-
    {{states('sensor.pac_kwh_t1_t2')|int(0) -
    states('input_number.pac_kwh_mois')|int(0)}}
target:
  entity_id: input_number.pac_kwh_encours

J’ai juste dû changer l’étendue de input_number qui était de 1 à 50000 en -50000 à 50000.
En testant, je me suis rendu compte que si le résultat était négatif (normalement non) l’automatisme affichait une erreur.