Additionner et soustraire des valeurs de capteurs

Bonjour,

Je désire voir ma consommation totale (réseau + production), et celle du réseau.

Pour la production solaire vu que j’ai 4 MO j’ai créé une entrée « Combiner l’état de plusieurs capteurs » que j’ai nommé « Production solaire Yielday » dans laquelle j’ai fait la somme des 4 MO, ça c’est bon.

Après je dispose des template suivants:

energie_msunpv_enconso = énergie consommée du réseau
energie_msunpv_eninj = énergie injectée sur le réseau

j’ai ensuite créé une entrée « Combiner l’état de plusieurs capteurs » où j’ai additionné
mon entrée Production solaire Yielday et le template energie_msunpv_enconso
Capture1
mais cela ne fonctionne pas
Capture2

on dirait que la somme d’une entrée « Combiner l’état de plusieurs capteurs » et d’un template ne fonctionne pas.

En fait j’aimerais faire la somme de :
mon entrée Production solaire Yielday et le template energie_msunpv_enconso
et soustraire à ce résultat le template energie_msunpv_eninj

Bonjour,
As-tu essayé de créer une nouvelle entrée « Template »?
Ce sera peut-être plus facile pour définir ton nouveau sensor, en entrant directement le modèle que tu souhaites.

Bonjour,

Un template de quel type :
Capture3

j’ai essayé « modéliser un capteur » avec ça (trouvé sur différents forums)


mais le résultat est « 0 »

Ah je viens de voir mon erreur j’ai oublié sensor. pour les entités, quelle buse :roll_eyes:

Par contre j’ai un autre soucis j’ai une entité qui est en Kwh et l’autre en Wh, comment je peux passer « sensor.energie_msunpv_eninj » en Kwh au lieu de Wh ?

Si c’est juste pour le calcul du nouveau sensor que ça te pose un problème, il suffit de rajouter un facteur /1000 pour l’entité en Wh pour le transformer en kWh.
Si tu veux avoir ton entité qui est en Wh en kWh, le plus simple est peut-être de créer une autre entité avec comme Modèle d’état l’entité initiale / 1000

1 « J'aime »

Salut @romu044

A quoi ça sert que je me décarcasse

Ces calculs sont déjà tout fait dans l’intégration dans le fichier msunpv_addons_moresensors.yaml

Il suffit de le rajouter comme les autres et de redémarrer HA.
tu auras alors :
msunpv_conso_totale #Total de consommation journalière (réseau + PV)
msunpv_prod_consommee #Total journalier de la production PV consommée
msunpv_taux_autoconsommation #Taux d’autoconsommation PV
msunpv_taux_autosuffisance #Taux d’autosuffisance PV

Ils sont en Wh pour les totaux. Si tu les veux en kWh il suffit de les /1000.

1 « J'aime »

A rien , les utilisateurs ne lisent pas la doc :joy:

2 « J'aime »

C’est tellement vrai et en plus c’est ce qui m’a pris le plus de temps à rédiger. :smiling_face_with_tear:

T’inquiète, je compatis image

@Gilles2 , merci effectivement tout simple.

@Tochy , si j’ai déjà le msunpv_addons_moresensors.yaml, seulement vu que mon tableau solaire n’est pas dans le même bâtiment que le routeur, je n’ai pas de pince pour la prod PV.
J’ai un openDTU dont je récupére les infos en mqtt.

1 « J'aime »

Quelle mauvaise langue ce @WarC0zes. @romu044 avait bien lu la doc et cherchait juste à s’adapter à sa situation :joy:

3 « J'aime »

J’avoue, il sera l’exception :joy:

après je peux avoir lu la doc et oublié, j’en suis capable :grin:

1 « J'aime »

Bonjour,

Je déterre ce topic…
J’aimerai faire la somme de valeurs de sensors au sein même d’une définition de sensor.
En effet, j’ai 2 onduleurs solaires avec chacun leurs panneaux.
Ces onduleurs sont pilotés par une application tierce, et je récupère les infos en MQTT.

J’ai donc créé un sensor qui vient lire les trames et récupère les valeurs de chaque panneau de chaque onduleur.
J’ai réussi à faire la somme des puissances des panneaux par onduleur car c’est la somme des valeurs de la trame.
Je veux maintenant faire la somme des puissances de chaque onduleur.

Voici ma définition de mes capteurs :

# données RPIECU inv0 (QS1)
- name: QS1 Panneau 1
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr1
  value_template: '{{ value_json.pwr[0] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Panneau 2
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr2
  value_template: '{{ value_json.pwr[1] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Panneau 3
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr3
  value_template: '{{ value_json.pwr[2] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Panneau 4
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr4
  value_template: '{{ value_json.pwr[3] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Total
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr
  value_template: '{{ (value_json.pwr[0]|float + value_json.pwr[1]|float + value_json.pwr[2]|float + value_json.pwr[3]|float)|round(2) }}'
  unit_of_measurement: 'W'
  device_class: power
# données RPIECU inv1 (YC600)
- name: YC600 Panneau 1
  state_topic: "rpiecu/out/2"
  unique_id: inv1_pwr1
  value_template: '{{ value_json.pwr[0] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: YC600 Panneau 2
  state_topic: "rpiecu/out/2"
  unique_id: inv1_pwr2
  value_template: '{{ value_json.pwr[1] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: YC600 Total
  state_topic: "rpiecu/out/2"
  unique_id: inv1_pwr
  value_template: '{{ (value_json.pwr[0]|float + value_json.pwr[1]|float)|round(2) }}'
  unit_of_measurement: 'W'
  device_class: power

J’ai tenté pour la somme d’ajouter cela en fin de fichier, mais j’ai une erreur et le sensor n’apparaît pas.

# données TOTAL
- name: Production
  unique_id: inv_pwr
  value_template: "{{ states('sensor.inv0_pwr')|float + states('sensor.inv1_pwr')|float }}"
  unit_of_measurement: 'W'
  device_class: power

Où ai-je l’erreur ?

Salut
ce code :

# données RPIECU inv0 (QS1)
- name: QS1 Panneau 1
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr1
  value_template: '{{ value_json.pwr[0] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Panneau 2
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr2
  value_template: '{{ value_json.pwr[1] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Panneau 3
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr3
  value_template: '{{ value_json.pwr[2] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Panneau 4
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr4
  value_template: '{{ value_json.pwr[3] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: QS1 Total
  state_topic: "rpiecu/out/1"
  unique_id: inv0_pwr
  value_template: '{{ (value_json.pwr[0]|float + value_json.pwr[1]|float + value_json.pwr[2]|float + value_json.pwr[3]|float)|round(2) }}'
  unit_of_measurement: 'W'
  device_class: power
# données RPIECU inv1 (YC600)
- name: YC600 Panneau 1
  state_topic: "rpiecu/out/2"
  unique_id: inv1_pwr1
  value_template: '{{ value_json.pwr[0] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: YC600 Panneau 2
  state_topic: "rpiecu/out/2"
  unique_id: inv1_pwr2
  value_template: '{{ value_json.pwr[1] }}'
  unit_of_measurement: 'W'
  device_class: power
- name: YC600 Total
  state_topic: "rpiecu/out/2"
  unique_id: inv1_pwr
  value_template: '{{ (value_json.pwr[0]|float + value_json.pwr[1]|float)|round(2) }}'
  unit_of_measurement: 'W'
  device_class: power

Se trouve ou ?
Dans un fichier yaml spécifique ?
Dans sensor.yaml ?

Celà serait bien de voir les lignes au dessus de la première ligne de ton code car la il nous manque des infos.

La ligne que tu as rajouté à l’air de correspondre à ce que tu veux mais il faut qu’elle soit déclarée comme un template sensor et avec juste une partie du code nous n’avons pas ces infos.

Ok ok… Excusez-moi.

C’est un fichier seul « /homeassistant/mqtt.yaml »
Appelé à la fin du fichier natif /homeassistant/configuration.yaml

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# sensor: !include_dir_merge_list sensors
mqtt:
  sensor: !include mqtt.yaml
# sensor: !include rpiecu.yaml

Ok donc le sensor que tu as rajouté ne peut pas fonctionner directement comme ça.
Le plus simple, tu supprimes les lignes que tu as ajoutées à la fin du fichier mqtt et tu vas dans parametres/appareils et services/entrées et la tu crées une nouvelle entrée combiner l’état de plusieurs capteurs


et dans les entités d’entrées tu mets les sensors que tu veux additionner puis en indicateur statistique tu mets somme.

Si jamais ça ne fonctionne pas avec une entrée combiner l’état de plusieurs capteurs il faudra passer par une entrée modèle.

Ok… Je vais tester.
Mais c’est tout de même dommage que l’on ne puisse pas « travailler » sur les valeurs d’un même sensor au sein même de ce sensor… Cela permettrait d’avoir un sensor unique qui renvoie des valeurs précalculées. Cela permettrait de fournir un « tout » complet !

Actuellement, il faut définir ce même sensor en 2 endroits différents.

Par exemple, j’ai un wattmètre qui me donne différentes valeurs au même endroit :

J’aurai aimé pouvoir faire la même chose… Quitte ensuite à rendre invisible certaines valeurs.

C’est possible de traiter tout ça dans un seul fichier mais dans ce cas là il faut passer par des packages.
Tu définis des sensors mqtt avec ton fichier mqtt.yaml et tu veux leur rajouter un sensor template chose qui n’est pas possible dans ton cas directement.

Je veux bien voir ce que tu appelles « packages »…