Pilotage d’une pompe à vitesse variable (Emaux SPV150) avec un régulateur KP basé sur une production photovoltaïque

Hello,

Je souhaitais vous partager la mise en place d’un système de gestion de ma pompe Emaux SPV150.

:face_with_monocle: Un peu d’histoire

J’ai une piscine creusée avec une pompe monophasée que je pilotais via un contact sec on/off. Ce système, assez basique, marchait très bien et m’a permis de consommer mon surplus photovoltaïque l’été, avec quelques automatisations du type off quand la pompe à chaleur s’active (merci le BSB LAN), on quand il y a trop de production, et off quand on allume les plaques de cuisson, avec des conditions de timer.

Malheureusement, ma pompe a rendu l’âme après des années de loyaux services. J’ai donc décidé de passer au niveau supérieur et d’investir dans une pompe à vitesse variable. Le on/off c’est bien, mais je consommais plus que ma production photovoltaïque (1,5 kWc). L’idée était donc de pouvoir choisir la vitesse en fonction du soleil et laisser la pompe tourner plus longtemps.

:robot: Le projet

J’ai cherché des pompes facilement pilotables et je n’ai pas trouvé de modèle Zigbee. Je suis donc parti sur du Wi-Fi.
L’intégration de la pompe Emaux SPV150 n’existant pas sur Home Assistant, mais la pompe disposant d’un serveur web basique, j’ai trouvé les requêtes et créé une intégration dédiée dans HA
:backhand_index_pointing_right: emaux_spv150

J’en ai profité pour apprendre à le faire et la publier dans HACS, avec le logo (ça rigole pas).

J’ai aussi créé dans HA une régulation KP très simple. En entrée, ma puissance réseau et une valeur de consigne souhaitée. Avec l’erreur et un petit gain, j’ajuste la vitesse de la pompe pour coller à la valeur cible.

:rocket: Les résultats

Avec ma première pompe on/off, j’étais en août 2024 à 98 % d’autoconsommation et 36 % d’autosuffisance.
J’utilise un compteur d’énergie Zigbee Tuya, avec des valeurs proches de celles de mon Linky. Je ne le conseille pas forcément en Zigbee, il sature un peu mon réseau et je ne peux pas dépasser une mesure toutes les 10 s, mais c’est un autre sujet.

Avec le nouveau système, en août 2025, je suis passé à 43 % d’autosuffisance, avec une autoconsommation équivalente. Ce gain est aussi valable en septembre.
En moyenne, j’ai gagné environ 10 % d’autosuffisance sur les mois où la piscine tourne par rapport à l’ancienne version. Je suis passé de 425 kWh à 315 kWh de consommation réseau.


Évidemment, ces valeurs sont à prendre avec des pincettes car elles dépendent de nombreux paramètres (météo, consommation de la maison, etc.). Dans tous les cas, j’ai économisé environ 100 kWh sur un mois, soit à peu près 20 € d’économie pour le mois d’août 2025.

Sur la durée de vie de la pompe, estimée entre 10 et 15 ans, avec une utilisation d’environ 5 mois par an, cela représente entre 1 000 € et 1 500 € d’économies par rapport à l’ancienne pompe.

La nouvelle m’a coûté environ 700 €, l’ancienne autour de 300 €. Sur mes factures EDF, je suis aussi passé de 126 € août 2024 à 83 € août 2025 , même si le prix de l’électricité a évolué entre-temps.


Sur l’année je suis passé de 6444 kWh à 5648kWh (alors que j’étais vraiment stable les années précédente). Soit 159€ d’économie sur l’année avec les tarifs bleu EDF 2025.

:ok_hand: Conclusion

L’achat d’une pompe à vitesse variable est rentable.
Il y a sûrement moyen d’optimiser encore le coût en fabriquant soi-même un régulateur, mais attention, on joue avec de la puissance. Il faut bien maîtriser le sujet et être prêt à détériorer sa pompe en cas d’erreur.

A+ en espérant que cella puisse vous aidez :wink:

PS : Le code du régulateur kp dans mon automatisation

alias: Régulateur solaire pompe
description: ""
triggers:
  - entity_id:
      - sensor.puissance_reseau
    trigger: state
conditions:
  - condition: state
    entity_id: switch.pompe_piscine
    state: "on"
actions:
  - data:
      level: info
      message: >
        🌀 Régulation solaire: prod={{ prod }}, error={{ error }}, delta={{
        delta }}, current_speed={{ current_speed }}, updated={{ updated }},
        clamped={{ clamped }}, new_speed={{ new_speed }}
    action: system_log.write
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ new_speed is number }}"
        sequence:
          - data:
              entity_id: number.currentspeed
              value: "{{ new_speed }}"
            action: number.set_value
    default:
      - data:
          message: "Erreur: new_speed invalide => {{ new_speed }}"
          level: error
        action: system_log.write
variables:
  prod: "{{ states('sensor.puissance_reseau') | float(0) }}"
  setpoint: 50
  current_speed: "{{ states('number.currentspeed') | float(0) }}"
  kp: 1
  error: "{{ setpoint - prod }}"
  raw_delta: "{{ kp * error }}"
  delta: |
    {% if error > 50 or error < -50 %}
      {{ [ [ raw_delta, -200 ] | max, 200 ] | min }}
    {% else %}
      0.0
    {% endif %}
  updated: "{{ current_speed + delta }}"
  clamped: |
    {% set limited = updated | float %} {% if limited < 1200 %}
      1200
    {% elif limited > 3400 %}
      3400
    {% else %}
      {{ (limited / 10) | round(0) * 10 }}
    {% endif %}
  new_speed: "{{ clamped | float }}"
mode: single

4 « J'aime »