Inverser la Valeur d'un objet dans le Yaml

Bonjour,
je mets en place doucement mon installation pour commencer par le module Energy,
c’est beau mais pas fonctionnel pour le moment, voici mon yaml :

utility_meter:
  conso_maison:
    source: sensor.smartmeter_electric_kwh_value # à compléter
    cycle: daily
  production_solaire:
    source: sensor.productionpv_electric_kwh_value # à compléter
    cycle: daily

Sauf que le sensor conso_maison est inversé,
je dois donc faire un value template de ce que je comprends mais je ne suis pas sur de ce que je dois mettre :

state: {{ -1 * states('sensor.smartmeter_electric_kwh_value') | float(0) }}
ou
value: {{-1 * states('sensor.smartmeter_electric_kwh_value') }}
ou
value_template: '{{ (-1 * ('sensor.smartmeter_electric_kwh_value') }}

une fois trouvé, je pourrais tester pour ma production solaire qui est surement aussi en inverser

ci-joint un jour ou il fait beau et la conso maison, est mon surplus envoyer sur le réseau

J’ai trouvé tout cela sur le forum, j’aurais besoin de vos lumières, et cela servira surement à d’autres personnes.
merci pour votre aide

Pour la mise au point, accède aux _Outils de développement _

Tu pourras tester en direct et ensuite tu copie colle la syntaxe.

@Clemalex : Merci beaucoup.
pour completer ta réponse, aller dans outils de devellopements puis modele,
coller les lignes a tester et hop .

la bonne réponse étant au dessus :slight_smile:

Enfin quasiment bon, lorsque je vérifie la configuration, j’ai ce message :frowning:

[quote="Wadohs, post:1, topic:16496"]
Error loading /config/configuration.yaml: invalid key: "OrderedDict([("-1 * states('sensor.smartmeter_electric_kwh_value') | float(0)", None)])"
in "/config/configuration.yaml", line 107, column 0
[/quote]

Mon code :

utility_meter:
  conso_maison:
    source: sensor.smartmeter_electric_kwh_value # à compléter
    cycle: daily
    value_template: {{ -1 * states('sensor.smartmeter_electric_kwh_value') | float(0) }}

J’ai mis value_template a la place de state pour tester mais mmee soucis, je vais rechercher d’ou peut venir l’erreur

je test une autre approche mais toujours sans succés, en creant un sensor directement inverser, que je reprends dans l’utility meter qui ne prends pas les attributs statut value, ou valu_template :frowning_face:
j’ai le meme message

template:
  - sensor:
    - name: 'conso_maison'
      device_class: energy
      unit_of_measurement: kWh
      value_template: {{ -1 * states('sensor.smartmeter_electric_kwh_value') | float(0) }}

utility_meter:
  conso_maison:
    source: sensor.conso_maison # à compléter
    cycle: daily
[/quote]

en ecrivant ces lignes et en rajoutant des " guillements"

template:
  - sensor:
    - name: 'conso_maison'
      device_class: energy
      unit_of_measurement: kWh
      value: "{{ -1 * states('sensor.smartmeter_electric_kwh_value') | float(0) }}"

utility_meter:
  conso_maison:
    source: sensor.conso_maison # à compléter
    cycle: daily

Et en prenant l’exemple de la doc ?

template:
  - sensor:
      - name: "conso maison"
        unit_of_measurement: "kWh"
        state: >
          {% set conso = states('sensor.smartmeter_electric_kwh_value') | float %}
          {{ -1 * conso }}

Le problème de ton dernier code ne vient pas de l’englobement ?

Ajoute des parenthèses que tu avais mis dans tes premiers exemples

je vais regarder demain a tete reposer, la j’ai un soucis lors de la validation de la configuration

Error loading /config/configuration.yaml: while parsing a block mapping
in "/config/configuration.yaml", line 104, column 5
expected <block end>, but found '-'
in "/config/configuration.yaml", line 111, column 5

qui correspond a mes lignes template.
je vais bien trouver dans la doc :wink:
I’ll be back :slight_smile:

Partage le contenu de ton fichier configuration.yaml (enleve les infos perso) car il semblerait que ce soit un problème de déclaration et non de code.

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

frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensors.yaml

# Script pour notif heure
homeassistant:
  packages: !include_dir_named packages

# Configuration pour le Reverse Proxy du DSM
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.0.0.20 #Adresse IP du Synology
    - 10.0.0.21
    - 10.0.0.22
    - 10.0.0.23

logger:
  logs:
    custom_components.esxi_stats: debug

orvibo_remote:
remote:
  - platform: orvibo_remote
    host: 10.0.0.102
    name: Orvibo AllOne

# InfluxDB
influxdb:
  host: a0d7b954-influxdb
  port: 8086
  database: HomeAssistantDB
  username: !secret influxdb_user
  password: !secret influxdb_password
  max_retries: 3
  default_measurement: state

# Telegram
telegram_bot:
  - platform: polling
    api_key: !secret telegram_token
    allowed_chat_ids:
      - !secret id_telegram_WadohS

notify:
  - platform: telegram
    name: telegram
    chat_id: !secret id_telegram_WadohS

# WOL pour serveur, va avec HASS
wake_on_lan:

# Switch Serveur
switch:
  - platform: wake_on_lan
    mac: C8:D:3FF:BE:B4:FB
    name: "Minos 1070"
  - platform: wake_on_lan
    mac: C8:D3:FF:BE:B4:23
    name: "Minas 2070"

# Jour de travail
binary_sensor:
  - platform: workday
    name: travail
    country: FR
  - platform: workday
    name: travail_demain
    country: FR
    days_offset: 1

# https://forum.hacf.fr/t/mon-dashboard-felix62/5154
# a tester jour de fete anniversaire et autres joyeuseté

# Notif Heure Byfeel
mqtt:
#  discovery: true
  discovery_prefix: homeassistant
# Energy

template:
  - sensor:
      - name: "conso_maison"
        device_class: energy
        unit_of_measurement: "kWh"
        state: >
          {% set conso = states('sensor.smartmeter_electric_kwh_value') | float %}
          {{ -1 * conso }}
    - name: "production_solaire"
      device_class: energy
      unit_of_measurement: "kWh"
      value: "{{ -1 * states('sensor.productionpv_electric_kwh_value') | float(0) }}"
      
utility_meter:
  conso_maison:
    source: sensor.conso_maison # à compléter
    cycle: daily
  production_solaire:
    source: sensor.production_solaire # à compléter
    cycle: daily


#mode volet
input_select:
  modevoletrdc:
    name: mode volet rdc est
    options:
      - Auto chauf
      - Auto froid
      - Manuel


peux être cela vient des !include, j’ai eu un soucis ou je n’arrivais pas à faire que les fichiers d’un dossier soit pris en compte, mais c’est un autre problème, je voulais me faire quelque chose d’assez propre dés le départ et séparer les .yaml est bien dans ce cas.

image

Vérifie « identation » sur ces lignes ! (normalement l"éditeur devrait dire erreur ?), ce qui n’empêche pas d’enregistré !
le image

Merci @Doubledom !
effectivement , je n’ai pas fait gaffe. l’indentation est en cause pour lui,
il faut que je vérifie avec studio code server qui est assez clair pour voir les erreurs en direct.

je me suis fais une carte pour vérifier les valeurs qui apparaissent mais avec le module energy j’ai l’impression que les kWh ne sont pas pris en compte :frowning:

Aucune valeur ne remonte cela dit dans le module energy, mais apparait bien :wink:
je vais aller chercher dans la doc du module.
Merci déjà pour votre aide.

Bon je pense avoir trouvé mais bien loin de ce que je pensais,
j’ai utilisé l’intégration Riesmann, en mettant le bon sensor, c’est a dire en W,
l’intégration me la sort en Wh, et est prise par le module Energy,
euréka, je dirais mais pas encore tout a fait.
j’ai donc une valeur négative qui rentre en journée, normal avec mon installation, j’ai mon routeur PV,
qui fait son taf et envoi 10 W sur le réseau quand j’ai un surplus solaire,
oui, mais je voudrais que cette valeur soit a 0 pour ma consommation réseau,
et qu’elle soit pris en compte que pour l’envoi sur le réseau,
c’est a dire, que mon capteur s’arrête a 0 et s’il devient négatif reste a 0.
je ferais un second capteur qui lui sera dédié à l’envoi réseau, et qui lui fonctionnement en inverse, ne prendra que les valeurs négatives.
Pour cela, on s’éloigne de mon ouverture de sujet, et on s’approche plus des « variables si je ne m’abuse ».
Je perds encore un peu mon latin, tellement je galère :slight_smile: pour quelque chose qui me parait simple de base.

Avant de me répondre, je vais laisser en stand by voir ce que donne mais j’ai un négatif en argent alors que je ne peux pas vendre mon électricité. et je pense que les calculs seront faussés.

Voici le résultat, j’utilise donc l’intégration riesmann pour arriver a quelque chose de fonctionnel ,
et je dois aussi inverser les valeurs de celui-ci donc la partie faite avec vous est pleinement fonctionnel.
ci-joint le code que j’ai maintenant et une petite capture du resultat, 93% d’autoconsommation, pas trop mal :wink: et plus les jours vont raccourcir plus que vais tendre vers le 100%

template:
  - sensor:
      - name: "conso_maison"
        device_class: energy
        unit_of_measurement: "Wh"
        state: >
          {% set conso = states('sensor.smartmeter_riemann_wh') | float %}
          {{ -1 * conso }}

utility_meter:
  conso_maison:
    source: sensor.conso_maison # à compléter
    cycle: daily

Merci beaucoup de m’avoir guidé et a bientôt sur d’autres Posts !!