Intégration du module Wes V2 de la société Cartelectronic

Bonjour,

Je recherche des informations sur l’intégration du module Wes V2 de Cartelectronic dans HA.

Dans un premier temps, je recherche en priorité le moyen de remonter dans HA les informations des sondes de températures 1-wire.

Si quelqu’un a un retour d’expériences …

Cordialement,

Il y a @epenet qui a bosser sur l’intégration officiel 1-wire. Si il passe par là.

Je n’ai pas de module Wes, mais à mon avis il doit intégrer un moteur OWFS.

Dans un premier temps, tu peux essayer de l’ajouter directement dans HA en utilisant l’adresse IP et le port par défaut 4304. (cf. 1-Wire - Home Assistant)

Sinon, il faudrait voir avec cartelectronic pour vérifier s’ils utilisent bien OWFS, et s’il est possible de le rendre disponible sur le LAN

Perso j’ai parsé les infos qui m’intéressaient.

configuration.yaml :

sensor:
  - platform: rest
    name: weshomeval
    resource: http://192.168.1.80/WEBPROG/CGX/homeval.CGX
    method: GET
    authentication: basic
    username: admin
    password: wes
    json_attributes_path: "$.form"
    json_attributes:
      - "array"
      - "bssw"
      - "java"
      - "html"
    value_template: 'OK'
  - platform: template
    sensors:
       wesheurecreuseraw :
        value_template: >-
            {{ states.sensor.weshomeval.attributes["html"][5]["value"] }}
       wesheurecreuse :
        friendly_name: wes_tarif_HC
        value_template: >-
          {% if states('sensor.wesheurecreuseraw') == 'H. Creuses' %} 
              1
          {% else %} 
              0
          {% endif %}
       wespcewatt :
        friendly_name: wespcewatt
        value_template: >-
             {{ states.sensor.weshomeval.attributes["array"][2]["value"] }}
       wesvewatt :
        friendly_name: wes_VE_Watt
        device_class : power
        unit_of_measurement: 'W'
        value_template: >-
             {{ (states('sensor.wespcewatt').split(",")[1]) }}
       wesgeneralwatt :
        friendly_name: wes_general_Watt
        device_class : power
        unit_of_measurement: 'W'
        value_template: >-
             {{ (states('sensor.wespcewatt').split(",")[2]) }}
       wesgaragewatt :
        friendly_name: wes_garage_Watt
        device_class : power
        unit_of_measurement: 'W'
        value_template: >-
             {{ (states('sensor.wespcewatt').split(",")[3]) }}
       weslocalpiscinewatt :
        friendly_name: wes_localpiscine_Watt
        device_class : power
        unit_of_measurement: 'W'
        value_template: >-
             {{ (states('sensor.wespcewatt').split(",")[4]) }}
       wesrl1 :
        friendly_name: wesrl1
        value_template: >-
              {{ states.sensor.weshomeval.attributes["bssw"][0]["value"] }}
       wessw :
        friendly_name: wes_switch_virtuel
        value_template: >-
             {{ states.sensor.weshomeval.attributes["java"][74]["value"] }}
       wessw1 :
        friendly_name: wes_switch_virtuel_1_VE_Now
        value_template:  "{{ ((states('sensor.wessw') | float ) - (states('sensor.wessw') | float // 2 * 2)) | int }}"
       wessw2 :
        friendly_name: wes_switch_virtuel_2_VE_HC
        value_template:  "{{ (((states('sensor.wessw') | float ) - (states('sensor.wessw') | float // 4 * 4)) // 2 ) | int }}"
       wessw3 :
        friendly_name: wes_switch_virtuel_3_VE_Surplus
        value_template:  "{{ (((states('sensor.wessw') | float ) - (states('sensor.wessw') | float // 8 * 8)) // 4 ) | int }}"
        
  - platform: rest
    name: westic
    resource: http://192.168.1.80/tic1.cgx
    method: GET
    authentication: basic
    username: admin
    password: wes
    json_attributes_path: "$.data"
    json_attributes:
      - "tic1"
    value_template: 'OK'
  - platform: template
    sensors:
      westichp :
        friendly_name: wes_tic_hp
        device_class : power
        unit_of_measurement: 'Wh'
        value_template: >-
             {{ states.sensor.westic.attributes["tic1"]["HCHP"] | float  }}
      westichc :
        friendly_name: wes_tic_hc
        device_class : power
        unit_of_measurement: 'Wh'
        value_template: >-
             {{ states.sensor.westic.attributes["tic1"]["HCHC"]| float }}
      westicinj :
        friendly_name: wes_tic_injection
        device_class : power
        unit_of_measurement: 'Wh'
        value_template: >-
             {{ states.sensor.westic.attributes["tic1"]["INJECTION"]| float }}
      westiciinst :
        friendly_name: wes_tic_i_instantanne
        device_class : power
        unit_of_measurement: 'A'
        value_template: >-
             {{ states.sensor.westic.attributes["tic1"]["IINST"]| float }}
      westension :
        friendly_name: wes_tic_tension
        device_class : power
        unit_of_measurement: 'V'
        value_template: >-
             {{ states.sensor.westic.attributes["tic1"]["TENSION1"]| float }}

Merci pour le retour d’info Flavien …

En regardant les fichiers , je pense que le S1WVCFG.cgx devrait contenir tes températures.
Mais impossible de vérifier , je n’ai pas de 1WIRE connecté

Bonjour à vous,

je suis tout nouveau sur Homeassistant (j’arrive de Jeedom). J’ai installé le système il y a quelques minutes seulement sur un vieux RPI3 que j’avais dans un carton pour commencer à faire des tests.
J’ai également un serveur WES et j’aimerais savoir comment créer le script, les probables variables (ce que je suppose être les « frendly_name »), puis les afficher quelque part sur homeassistant.
Existe -t-il un tuto quelque part sur ce sujet spécifique (script + parsing dans les variables) ?

Merci d’avance.
David

Bonjour à tous, et bonjour @flavien
Je me permet de déterrer ce topic, car je me lancer dans HA et je dispose d’un WES.

J’aimerais dans le futur pouvoir automatiser certaines choses, et aussi faire des calcul de prévisions de cout pour l’elec et le gaz, chose que je fais deja avec un excel en exportant des données.

Néanmoins dans un premier temps je souhaite à minima tenter d’afficher dans HA les même infos que dans le WES, à savoir :

  • Puissance en W consommée
  • m3 de gaz instantanée, et cumulé.

Je ne trouve pas ces infos dans les différents fichier CGX du wes,
Est ce que quelqu’un pourrait m’aider à y voir plus clair ?
D’avance merci
Bonne journée

Bonjour,

J’ai démonté mon Wes mais de mémoire tu dois pouvoir trouver les infos dans le fichier data.cgx.

Je captais par exemple la température de la sonde 1 dans HA avec le code suivant.

- platform: rest
  name: Wes_Sonde_1
  scan_interval: 60
  resource: http://admin:wes@192.168.1.110/DATA.CGX
  unit_of_measurement: '°C'
  value_template: '{{ value_json["data"]["temp"]["SONDE1"] }}'

Pour ma part, je remontais les données brutes et je faisait les calculs dans HA.

Salutations

Akoua

Je te remercie pour ta réponse, j’ai un peu avancé hier, je pense avoir compris la logique,
je pense que ce qu’il me manque c’est la compréhension des variables dans les fichiers du WES, surtout le fichier homeval.cgx

Par exemple, dans le code de Flavien , je ne comprend pas du tout, les sensors utilisés ici :

Par contre je ne connaissais pas la commande scan_interval, très interessant :slight_smile:

Merci

Dans la première partie du code , on recupère le json filtré sur quelques termes et on le « stocke » dans la variable « weshomeval »

Dans la seconde partie , on parse le « weshomeval »

states.sensor.weshomeval = tout le json
states.sensor.weshomeval.attributes[« array »] = JSON filtré sur les paragraphes « array »
states.sensor.weshomeval.attributes[« array »][2] = JSON filtré sur le 3eme paragraphes « array » ( car on compte a apartir de 0)
states.sensor.weshomeval.attributes[« array »][2][« value »] = on prends la « value » du JSON filtré sur le 3eme paragraphes

Merci pour ta réponse :slight_smile:

J’avais trouvé depuis mais pas mis à jour le fil de discussion.

Bonjour à tous

venant de basculer de jeedom je me suis servi de vos exemples pour avancer. Donc merci. l’intégration directe du WES est plus simple que de garder Jeedom en passerelle via MQTT

J’utilise pour l’intégration non pas DATA.CGX mais DATA_JEEDOM.CGX (qui avait été déposé sur le WES par le plugin WES Control de Jeedom). le fichier est un peu plus « simple » et lisible il est disponible sur le GIT du plugin Jeedom.

bien entendu le fichier d’origine est tout a fait exploitable avec la même solution.

Coté HA j’utilise l’intégration HACS « multiscraper » pour capturer tous les sensors en un appel.

Dans mon fichier de configuration principal :

image

Le fichier déclarant les sondes

image

et tout fonctionne

il ne reste qu’à multiplier la configuration et valider les unités.

Christophe

2 « J'aime »

Bonjour, je déterre le sujet, car comme d’autres, je viens de migrer de Jeedom à HA, et je souhaite intégrer mon WESv2.
Toutes les réponses pour que cela fonctionne sont avant, mais j’ai quand même bien galéré pour que cela le soit de manière optimum.

  • La première méthode fonctionnelle est celle de @Chris6783 et le Multiscrapper. Mais une valeur importante ne remontait pas : le retour du TIC1 sur la consommation. En effet, celui-ci est formaté sur 9 décimales, les premières étant des 0 chez moi.
    De plus, au bout d’un certain temps, le retour de mes entrées capteurs n’étaient plus rafraîchis.
    Dernière chose, un message d’erreur apparaissait dans les logs sur une possible malformation du fichier Data.cgx .

  • J’ai alors approfondi la méthode de @flavien et les commandes REST, mais directement sur le fichier Data.cgx du Wes. D’ailleurs en lisant d’autres POST sur le forum de Cartelectronique.fr, ils ne conseillent pas de travailler sur un autre fichier de l’arborescence puisque celle-ci peut changer sur une mise à jour.

Donc dans mon configuration.yaml :

sensor: 
  - platform: rest
    name: weshomeval
    resource: http://192.168.XX.XX/Data.cgx
    method: GET
    authentication: basic
    username: admin
    password: !secret Srv_wes_password
    scan_interval: 10
    json_attributes_path: "$.data"
    json_attributes:
      - "info"
      - "tic1"
      - "impulsion"
      - "pince"
      - "temp"
      - "relais"
      - "entree"
      - "analogique"
    value_template: 'OK'

Vous vous retrouvez avec une entité weshomeval qui a directement en arguments toutes les informations brutes du Wes en une seule demande toutes les 10s (je n’ai pas osé aller plus bas pour ne pas saturer le serveur).

C’est plus fastidieux, mais je suis passé par l’outil de création d’entité « Template » de HA pour créer mes capteurs. L’avantage : la modification à la volée des attributs, la modification du nom, un unique Id géré par HA…

  • Par exemple pour le relevé de mon index en kWh directement :
{{ states.sensor.weshomeval.attributes["tic1"]["BASE"] | float / 1000 }}

  • Pour le compteur d’eau en m³ directement plutôt qu’en litre

C’était un peu long, merci de m’avoir lu.
Quand je serai meilleur, j’essayerai d’en faire une intégration.

2 « J'aime »

Hello à tous.

j’ai globalement mis en oeuvre la même méthode que toi @raphale44.

Néanmoins de temps en temps je rencontre un souci majeur qui affecte mon prévisionnel de facturation
Exemple pour ce mois ci :
image

oups … ahah
le problème vient du fait que parfois la valeur du compteur venant du WES tombe à 0, potentiellement suite à des pbm réseau.
image

Dans ce cas la, HA, considère les pics comme de la consommation et le montant de la facture monte en flèche.

Je ne sais pas comment me prémunir de ça intelligemment.

je passe par le fichier tic dans HA

- platform: rest
  name: westic
  scan_interval: 10
  resource: http://192.168.1.53/tic1.cgx
  method: GET
  authentication: basic
  username: xxxx
  password: xxxx
  json_attributes_path: "$.data"
  json_attributes:
  - "tic1"
  value_template: 'OK'

Puis je crée mon sensor

  - sensor:
      name: Index compteur linky
      unit_of_measurement: "kWh"
      icon: mdi:home-analytics
      state: >
        {{states.sensor.westic.attributes["tic1"]["BASE"]| float / 1000.00}}

que je stocke dans un utility meter

  monthly_bill_edf:
    source: sensor.index_compteur_linky
    name: Monthly Bill EDF
    cycle: bimonthly
    offset:
     days: 10

enfin je fais mon estimation de cout dans un autre sensor.

Je suppose de je devrais faire un test de conformité dans mon sensor

Index compteur linky

mais je ne vois pas comment.
il me faudrait un test dans ce gout la je suppose

si valeur t < t-1, alors conserver t-1;

Est ce que vous avez des idées ?

Merci

Hello
après pas mal d’aide sur le forum HA
j’ai résolu mon problème en modifiant mon template

  - sensor:
      name: Index compteur linky
      unit_of_measurement: "kWh"
      icon: mdi:home-analytics
      state: >
        {% set new_value = (state_attr('sensor.westic','tic1') | default(dict(BASE=0), true))['BASE'] |float(0) / 1000.00 %}
        {% set last_value = this.state| float(0) %}
        {% if new_value >= last_value %}
          {{ new_value }}
        {% else %}
          {{ last_value }}
        {% endif %}