Getting Live Electric Consumption from Hydro Quebec Meters

@ptit-k

J’ai aussi ce lecteur d’Hydro. Je vais tenter ma chance. Toutefois le mien est à plus 40 pieds de la maison. Je vais sans doute utiliser un cable réseau avec POE et adapteur USB pour l’alimenter et un case IP67. De quelle façon maintiens-tu le case sur le devant du lecteur de l’Hydro?

Je demeure dans les Laurentides et les conditions l’hiver peuvent être assez rough…

Actually, the data should be available through API.

Simple and easy tto provide as our date are also available through your acompte.

In North Europe that’s the way they do it as we don’t really have needs to evaluate or seeing it Live. The software architect should travel or read more about innovation in the world in order to make smarter and brighter solution.

Et un peu plus d’effort sur l’apparence pourrait avoir été fait…. Un autre désigner qui n’a jamais voyager pour en arriver à ce design

Le case est un “tight fit” avec la partie qui dépasse du compteur où il y a le signal de pulse.
J’ai mis les fichiers 3d ici: Printables
Je ne sais plus si je l’ai imprimé en PLA ou PETG, mais ça n’a pas bougé depuis que je l’ai installé.

1 Like

Merci pour le fichier.

J’ai un copain qui me l’a imprimé. Comme le mien est à l’extérieur et pas trop loin du chemin j’ai opté pour gris au lieu de noir pour que ce ne soit pas trop visible. Je vais m’assurer que l’intérieur où le capteur sera logé.

@ptit-k J’ai reçu tout mon matériel pour pouvoir faire la lecture du compteur. À quelle distance est le ESP du lecteur optique dans ton setup?

. Pour ma part, mon compteur est à plus de 60 pieds de la maison et je veux voir si je mets seulement le lecteur optique à l’extérieur ou je vais me prendre un petit case IP67 pour le ESP8266

@davisgoodman Le compteur est de l’autre côté du mur de la maison, peut-être un mètre de filage seulement. Le ESP8266 est à l’intérieur et le “Flame Sensor Module IR” est à l’extérieur. Le module traduit le pulse IR en un switch on/off et j’imagine qu’il peut être assez loin. 60 pieds, c’est peut-être un peu beaucoup par contre! D’un autre côté, si tu mets le ESP8266 à l’extérieur, est ce que le signal wifi se rend encore?

@ptit-k J’ai finalement terminé mon kit extérieur avec un case IP67, une antenne et le ESP8266 alimenté via POE.


Toutefois, je semble avoir des doute quant au reading que j’obtiens. Si je vais directement avec le YAML dans le répertoire de home-assistant-glow et en changeant le pulse rate à 139 et le internal_filter à 500ms, la valeur du sensor.power_consumption ne reflète pas du tout la consommation réelle. Cela semble toujours osciller aux alentours de la même valeur qui plus est le unit of measurement est en “W” et j’obtiens des variations entre 39000 et 51000. Je sais que lorsque la sécheuse fonctionne, je suis aux alentours de 12kw et là même si la sécheuse fonctionne cela demeure dans le même range.

J’ai même essayer en allumant tous les radiateurs au sous-sol et les valeurs demeurent à l’intérieur du même range.

Voici une partie du code que j’ai pour le moment qui traite les sensors.

Est-ce bien différent du tien?

sensor:
  # WiFi signal
  - platform: wifi_signal
    name: "${friendly_name} - WiFi Signal"
    update_interval: 120s

  # Pulse meter
  - platform: pulse_meter
    name: '${friendly_name} - Power Consumption'
    id: sensor_energy_pulse_meter
    unit_of_measurement: 'W'
    state_class: measurement
    device_class: power
    icon: mdi:flash-outline
    accuracy_decimals: 0
    pin: ${pulse_pin}
    internal_filter: 500ms
    on_value:
      then:
        - light.turn_on:
            id: led_red
        - delay: 0.5s
        - light.turn_off:
            id: led_red
    filters:
      # multiply value = (60 / imp value) * 1000
      # - multiply: 60
      - lambda: return x * ((60.0 / ${pulse_rate}) * 1000.0);
    total:
      name: '${friendly_name} - Total Energy'
      id: sensor_total_energy
      unit_of_measurement: 'kWh'
      icon: mdi:circle-slice-3
      state_class: total_increasing
      device_class: energy
      accuracy_decimals: 3
      filters:
        # multiply value = 1 / imp value
        # - multiply: 0.001
        - lambda: return x * (1.0 / ${pulse_rate});
  # Total day useage
  - platform: total_daily_energy
    name: '${friendly_name} - Daily Energy'
    id: sensor_total_daily_energy
    power_id: sensor_energy_pulse_meter
    unit_of_measurement: 'kWh'
    icon: mdi:circle-slice-3
    state_class: total_increasing
    device_class: energy
    accuracy_decimals: 3
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001

# Enable time component to reset energy at midnight
# https://esphome.io/components/time.html#home-assistant-time-source
time:
  - platform: homeassistant
    id: homeassistant_time

Ce serait intéressant de savoir si les Landis+Gyr ont aussi le pulse activé. Dans ton cas c’est un Elster? Très beau setup dans tout les cas!

Je l’ai fait pas plus tard qu’il y a un mois et c’est non la réponse. J’ai essayé avec un flame sensor et un em32. Rien n’est détecté.

Oui c’est un Elster. Le même que celui de @ptit-k. Cette semaine je vais essayer un autre lecteur photo-diode pour voir. J’ai aussi une caméra thermique je vais vérifier si je vois quelque chose.

Après quelques semaines, je suis pas mal convaincu que j’ai quelque chose qui n’est pas aligné.

@ptit-k Quelle genre de valeur obtiens-tu dans le history pour le power consumption? Peu importe les valeurs que je mets pour le pulse rate ou le filter, je suis pas mal certain que ce n’est pas le genre de reading que je devrais voir. Même si je part tous les thermostats et que la sécheuse roule, la lecture semble être limitée.

Est-ce tes lectures ressemblent à ceci? ( les différents paliers représentent des changement de settings)

Allo,

Désolé de la réponse tardive @davisgoodman, je n’avais pas vu les messages.
Sur mon flame sensor, il y a deux leds (vertes):

  • pwr-led: qui s’allume dès qu’on le connecte
  • do-led: qui s’allume quand un pulse est détecté
    J’ai joué un peu avec le potentiomètre pour régler le seuil, afin que ça s’allume quand il y a un pulse sur le compteur, mais pas quand le soleil l’illumine. Enfin pour le soleil, j’ai quand même du rajouter un cache, voir ici: Imgur: The magic of the Internet
    Il semble sur ta photo que tu as le même modèle de flame sensor que le mien, et je vois que la pwr-led est bien allumée. Est ce que la seconde flashe aussi? Si oui, à quelle fréquence?
    Chez moi, ça flashe environ une fois par minute quand il n’y a pratiquement aucune conso, et une fois toutes les 3-5 secondes quand la fournaise part.

En tout cas, voici à quoi ressemble mon code esphome.
J’arrondis les valeurs (sur une échelle log) pour réduire ce qui est enregistré dans le recorder. Si deux valeurs sont suffisament proches, avec l’arrondi elles seront égales, et ça ne fera pas d’entrée supplémentaire dans la base de donnée. Par contre, pour calculer l’énergie (intégrale de la puissance) j’utilise la valeur non arrondie.

  - platform: pulse_meter
    name: "${house_friendly_name} Pulse Meter"
    id: power_pulse_meter
    internal: true
    unit_of_measurement: "W"
    pin: ${pulse_pin}
    internal_filter: 500ms
    timeout: 30min
    accuracy_decimals: 6
    filters:
      - filter_out: 0
      - lambda: |-
          float duration = 60.0 / x;
          ESP_LOGI("pulse_meter", "Duration: %f s", duration);
          return duration;
      - lambda: |-
          float pulse_per_min = 60.0 / x;
          ESP_LOGI("pulse_meter", "Pulses per minute: %f pulses/min", pulse_per_min);
          return pulse_per_min;
      - lambda: |-
          float power = x * ((60.0 / ${pulse_rate}) * 1000.0);
          ESP_LOGI("pulse_meter", "Power: %f W", power);
          return power;
    on_value:
      then:
        - sensor.template.publish:
            id: power_template
            state: !lambda |-
              float resolution = 100.0 * powf(2.0, floor(log2(x / 1000.0)));
              //ESP_LOGI("pulse_meter", "Resolution: %f", resolution);
              float power_rounded = roundf(x / resolution) * resolution;
              ESP_LOGI("pulse_meter", "Rounded Power: %f W", power_rounded);
              return(power_rounded);

  - platform: template
    name: "${house_friendly_name} Power"
    id: power_template
    unit_of_measurement: "W"
    state_class: measurement
    device_class: power
    icon: mdi:flash-outline
    accuracy_decimals: 0
    update_interval: never

  - platform: total_daily_energy
    name: "${house_friendly_name} Daily Energy"
    power_id: power_pulse_meter
    #min_save_interval: 15min
    unit_of_measurement: "kWh"
    icon: mdi:circle-slice-3
    state_class: total_increasing
    device_class: energy
    accuracy_decimals: 1
    filters:
      - multiply: 0.001
      #- throttle_average: 15min
      #- filter_out: nan    
      - lambda: |-
          ESP_LOGI("total_daily_energy", "Daily Energy: %f kWh", x);
          return x;

Aucun soucis. Oui effectivement, j’ai remarqué ces deux leds. En fait, j’ai été un peu berné par le fait que la led rouge flashait quand même en semblant lire le lecteur mais je me suis aperçu que la photo diode était branchée à l’envers(!). Dès que j’ai renversé la polarité, la led D0 c’est mise à fonctionner et j’ai pu faire l’ajustement. Toutefois, j’ai une période dans la journée où effectivement le soleil est assez présent même après avoir trouvé ceci sur cults3d Free 3D file Adapter for Hydro-Quebec electric meter・3D printing template to download・Cults.
J’ai contacté la personne pour voir si elle avait le modèle 3D pour que je puisse l’agrandir. Sinon je le ferai moi-même.

Mon lecteur est à 40m de la maison et proche de la route. Au pire l’an prochain, je vais planter un arbre devant qui devrait bloquer le soleil. Pour le moment, quand le soleil n’empêche pas la lecture, c’est assez précis.

Content que ça fonctionne maintenant! Est ce que tu dois aussi avoir un pulse rate de 139 pour matcher avec les données d’hydro?

C’est excellent l’adaptateur avec le cache soleil! ça bien fait plus propre que ma solution.
Quand tu parles de l’agrandir, ça serait pour qu’il soit plus large (pour couvrir la totalité du compteur, pas seulement la moitié de gauche) ou plus profond?

Effectivement, plus grand. C’est dommage, car ce n’est pas exactement la moitié du compteur car j’aurais pu juste faire un mirroir, mais si je n’ai pas de réponse rapidement, je vais, de un essayer de trouver le dessin technique du compteur et au pire je vais prendre les mesures directement sur le compteur.

Pour le pulse rate, ca semble bon quand je n’ai pas de soleil. Je pas pu en comparer beaucoup car les données réelles d’Hydro ne sont pas toujours disponibles mais ceux que j’ai vu, j’étais “right on”. De plus avec la normalisation de ton code ca va sûrement aider.

si jamais tu fais le pare soleil complet, partage le, je serais intéressé!

@ptit-k Bon bien, après avoir ajusté la sensibilié suite à tes commentaires, semblerait que le pare-soleil tel qu’il est présentement fait bien son travail. Le positionnement du compteur fait que dès le lever du soleil il est directement dans son axe et je continue à avoir des lectures bien définies. Donc, ca fonctionne. Je vais sans doute maintenant le réimprimer en PETG gris pour qu’il soit un peu moins voyant. Dans ton cas, étant donné l’emplacement, j’imagine que le noir ferait l’affaire.

@ptit-k
Alors le verdict est que le pare soleil tel qu’il est sans avoir à le modifier fonctionne très bien. Quant à la précision, 139 p/min fonctionne aussi. La seule chose que j’ai modifié pour être encore plus précis par rapport à HQ est le rounding sur le Daily Energy car HQ le donne de cette façon.

  - platform: total_daily_energy
    name: "${friendly_name} Daily Energy"
    power_id: power_pulse_meter
    #min_save_interval: 15min
    unit_of_measurement: "kWh"
    icon: mdi:circle-slice-3
    state_class: total_increasing
    device_class: energy
    accuracy_decimals: 2
    filters:
      - multiply: 0.001
      #- throttle_average: 15min
      #- filter_out: nan    
      - lambda: |-
          ESP_LOGI("total_daily_energy", "Daily Energy: %f kWh", x);
          return x;

Salut, pour ceux qui le souhaitent, il est maintenant possible d’avoir la consomation EXACTE presque temps réel (avec 4 à 5h de retard) sans Hilo et sans materiel qui lit le compteur ! Les données proviennent directement de chez hydroqc voilà pourquoi elle sont “exactes”. Tout se passe ici : https://hydroqc.ca

8 Likes