Besoin d un sensorpour tuya PJ-1203A (mesure par pince amperemetrique )

Bonjour,

je viens de rajouter un mesureur par pince amperemetrique tuya PJ-1203A , meter CT clamp

j’ai mis le tore A sur l arrivé EDF ( entre le compteur et le tableau ) , et le tore B sur ma prod solaire
j’ai bien des valeurs qui remontent sur ces sensors :
power_a et power_b qui remonte en W
power_ab qui semble etre ce que consommes reelement la maison
flow_a et flow_b qui indique le sens ( consuming ou producting )

mon soucis , c est que si je produit 500W , que la maison consomme 200W , j ai donc 300W qui repartent sur le reseau ( ca c est bon )
mais power_a indique 300 ( au lieu de -300 ) , MAIS flow_a passe en producting

est il possible de creer un sensor.grid_consumption qui reprends power_a uniquement si flow_a = consuming
et un sensor.grid_production , qui repends power_a uniquement si flow_a = producting

question subsidiaire, comment fair een sorte que le sensor power_ab soit toujours positif ( le temps qu il fasse son calcul des fois j ai une valeur négative ) existe il une fonction genre INT pour avoir uniquement le positif d une valeur ?

Salut,

voici un exemple de config assez facilement lisible pour faire ce genre de logique.
Ici pour créer un nouveau sensor qui ne garde que les valeurs positives d’un autre sensor.

sensor:
  - platform: template
    sensors:
      generation_to_grid_entity:
        device_class: power
        unit_of_measurement: W
        value_template: >
          {% if states('sensor.prod_cons_diff')|int(default=0) > 0 %}
            {{ states('sensor.prod_cons_diff')|int(default=0)}}
          {% else %}
            0
          {% endif %}   

En passant, c’est le moment de profiter du fait que les sensor template peuvent maintenant être créés en live depuis l’interface des entrées., sans passer par le fichier yaml et sans redémarrer!

mon niveau de yalm est assez faible, mais je pense comprendr e la logque de ton exemple, je vais tester .

ps, maintenant que tu le dit c est vrai qu ils ont rajouté ca en UI depuis quelques mois , je vais voir si je m en sort

C’est même moins que ça! Depuis la 2023.9, il y a 2 semaines.

Pas besoin de redémarrer pour les templates sensor en YAML :wink:
dans outils de dev, dans YAML, tu a le button entité de modèle.
template reload

Oui ça aussi c’est du passé plus besoin de recharger. Maintenant tu sauves ton entrée et c’est bon. Plus besoin de faire du yaml, pas d’indentation, et ça calcule même le résultat en lvie pour confirmer que c’est bon :stuck_out_tongue:

Exemple avec celui que j’ai partagé ci-dessus

alors, j ai tenté ( j avais pas vu les réponses ) de faire ceci :

  - sensor:
      name: "Grid Production"
      unit_of_measurement: W
      device_class: "energy"
      value_template: >
          {% if states('sensor.0xa4c138ea17209f20_energy_flow_a') == "producing" %}
            {{ states('sensor.0xa4c138ea17209f20_power_a')|int(default=0)}}
          {% else %}
            0
          {% endif %}

  - sensor:
      name: "Grid Consumtion"
      unit_of_measurement: W
      device_class: "energy"
      value_template: >
          {% if states('sensor.0xa4c138ea17209f20_energy_flow_a') == "consuming" %}
            {{ states('sensor.0xa4c138ea17209f20_power_a')|int(default=0)}}
          {% else %}
            0
          {% endif %}     

mais au redémarrage , pas de sensor.grid_ ( bizarre )
d ailleurs,j ai du enlever le ‹ |int(default=0) › dans la réponse d @AlexHass , sinon ca passait pas .

je vais tenter de les creer en UI pour voir, réponse demain ( avec mes horaires, il se fait tard pour moi ) , merci pour vos réponses, je vais voir ce qu eje peut faire :slight_smile:

1 « J'aime »

Oui effectivement le |int(default=0) c’est pour transformer l’état en nombre. Si c’est pour comparer un chaine de caractères, ça fait une erreur.

Bonjour,

alors voila, j ai fait via l UI ( je comprends toujours pas pourquoi mon template en yalm ne passe pas :stuck_out_tongue: ) .
et tout fonctionne :slight_smile:

voici mon sensor.grid_2_home

{% if states('sensor.0xa4c138ea17209f20_energy_flow_a') == "consuming" %}
{{ states('sensor.0xa4c138ea17209f20_power_a')|int(default=0)}}
{% else %}
0
{% endif %}

et le sensor.home_2_grid

{% if states('sensor.0xa4c138ea17209f20_energy_flow_a') == "producing" %}
{{ states('sensor.0xa4c138ea17209f20_power_a')|int(default=0)}}
{% else %}
0
{% endif %}

J ai pu adapter mes capteurs et mes graphs sont désormais OK

question subsidiaire
Comment faire en sorte que le sensor power_ab soit toujours positif ( le temps qu il fasse son calcul des fois j ai une valeur négative ) existe il une fonction genre INT pour avoir uniquement le positif d une valeur ?

Salut,
en ajoutant | abs tu peux avoir la valeur absolue d’un état.
Si j’ai bien compris ce que tu cherches!

{{ states('sensor.power_ab') | int | abs)}}