Skip to content

Optimize self consumption of solar panel energy production

Notifications You must be signed in to change notification settings

loudemer/PVOptimizer

Repository files navigation

PVOptimizer

Cette application Appdaemon de Home Assistant permet de maximiser l’auto consommation de la production d’énergie de vos panneaux solaires. Elle permet de contrôler les gros appareils électroménagers, tels que lave-vaisselle ou lave-linge avec de simples switch, mais aussi des appareils plus complexes à gérer, tels que la filtration de piscine ou le contrôle de pompe à chaleur au travers d’applications communicantes dédiées nécessitant des mécanismes de contrôle multiparamétriques.

Elle est écrite en python sous appdaemon et devrait être facilement accessible à ceux qui ont des notions de programmation. Ce qui devrait permettre de la modifier facilement pour l’améliorer et l’adapter à ses propres besoins.

Caractéristiques

  • Prise en compte des abonnements : Tempo, Heures Creuses, Base
  • Prise en compte du prix de revente EDF OA
  • Calcul du seuil de déclenchement des appareils en fonction du tarif heure creuse heure pleine et du prix de revente
  • Programmation automatique des appareils qui n’ont pu être mise en route dans la journée en heure creuse la nuit.
  • Peut fonctionner avec un routeur de ballon d’eau chaude, s’il est possible de récupérer la puissance instantanée, délivrée à ce dernier. L’adjonction d’un routeur est même recommandée.
  • Permet de contrôler des systèmes complexes, type filtration de piscine, ou pompe à chaleur, au travers d’applications séparées qui dialoguent avec l’optimiseur.
  • Gère les périodes HP/HC multiples dans une journée (Après-midi, Nuit)

Icon

Prérequis

Installation de l’add-on appdaemon

Puissance solaire disponible 

Elle se mesure à l’aide d’une pince ampèremétrique branchée sur le câble d’alimentation de la maison. Cette mesure peut être positive en cas de prélèvement sur le réseau ou négative en cas d’exportation. Si vous disposez d’un routeur ECS, il faut pouvoir disposer de la puissance envoyée sur le ballon, afin d’avoir la puissance solaire disponible, exacte. P disponible = P export + P ballon ECS.

Couleur du jour pour les abonnements tempo

On peut utiliser l’API RTE par exemple.

Fonctionnement

Chaque appareil est décrit dans l’application par :

  • son nom,
  • sa puissance,
  • sa durée de fonctionnement,
  • le switch qui le commande,
  • l’heure de mise en route en heure creuse si nécessaire.

Le programme effectue toutes les minutes, un recueil de la puissance solaire disponible. Il arrête les appareils qui ont atteint leur durée de fonctionnement programmée et essaie de mettre en route les appareils en attente en fonction de la puissance disponible.

La mise en route de l’appareil se fait à partir d’un seuil de puissance, qui dépend du coût de fonctionnement comparé à celui des heures creuses.Le calcul du seuil de puissance nécessaire à la mise en route, se fait selon la formule :

P seuil = P appareil \* (1-(Prix HC – Prix rachat) / Prix HP). Cette modalité permet d’abaisser la puissance de mise en route et de voir s’il est plus avantageux de démarrer de jour ou en heures creuses

En cas de production solaire limitée du fait de la couverture nuageuse, le système programme, tous les appareils qui n’ont pu être mis en route pendant les heures creuses la nuit aux horaires définis dans le fichier de configuration.

Lorsqu’un appareil est mis en route, il effectue la totalité de son cycle, même si la puissance solaire disponible diminue. En effet, par exemple, il n’est pas logique d’arrêter un lave-vaisselle ou lave-linge en plein cycle.

Pour ceux qui ont un abonnement tempo, l’optimiseur ne fonctionne pas les jours rouges afin d’éviter des dépenses importantes liées à des diminutions de production solaire.

Installation

  1. Installer l’add-on appdaemon à partir de paramètres / modules complémentaires si cela n’est pas déjà fait.
  2. Télécharger le dépôt
  3. Mettre les fichiers PVOptimizer.py et PVOptimiser.yaml dans le répertoire addon_configs/a0d7b954_appdaemon/apps
  4. Mettre le fichier optimizerentities.yaml dans le répertoire /config/ de HA ou dans un sous répertoire dédié au fichiers yaml si vous en avez un.

Configuration

  1. Ajouter dans le fichier addon\_configs/a0d7b954\_appdaemon/appdaemon.yaml
       pvoptimizer_log :
         name: PVOptimizerLog
         filename: /homeassistant/log/pvoptimizer.log
         log_generations: 3
         log_size: 100000 

Ceci vous permet de lire les log de l’application dans le fichier /config/ pvoptimizer_log ou directement dans http://ip_ha:5050

  1. Compléter le fichier /addon_configs/a0d7b954_appdaemon/apps/PVOptimiser.yaml : a. nom de votre sensor qui donne l’énergie solaire disponible dans available_energy : b. type d’abonnement électrique dans subscription : Tempo, HeuresCreuses, Base c. sensor qui donne la couleur du jour tempo dans journée_tempo : mettre deux double quote si vous avez un autre type d’abonnement d. les prix du Kwh en Centimes ou en Euros. Pour un abonnement Heures creuses mettre les prix : prix_bleu_hc et prix_bleu_hp.

  2. **Décrire chaque appareil dans my_devices : en respectant bien l’indentation comme décrite ci-dessous. Le fichier est prérempli avec un appareil à titre d’exemple que vous pouvez modifier.

     my_devices:
       lave_vaisselle:
         name: lave_vaisselle
         power: 2000
         duration: 180
         switch_entity: switch.lave_vaisselle
         night_time_on: "00:30:00"    

La puissance( power) est en Watt, la durée (duration) en minutes, l’heure de mise en route night_time_on doit être mise à None s’il s’agit d’une autre application type filtration piscine par exemple.

  1. Recharger la configuration yaml dans outils/toute la configuration
  2. Créer le dashboard de contrôle des appareils ou adapter celui donné dans le dépôt.

Le Dashboard

A titre d’exemple vous trouverez dans le dépôt un fichier yaml d’exemple de configuration de base tout à fait perfectible. Il contient 4 entités par appareil :

  • La demande de mise en route : input_boolean.device_request_1,
  • Le sensor switch de commande de l’appareil switch.<appareil> ,
  • Le sensor power de l’appareil sensor.<power appareil>
  • Le sensor de durée d’exécution : input_text.device_duration_1.

Les sensors input_boolean.device_request_x et input_text.device_duration_x sont prédéfinis dans le fichier optimizerentities.yaml. x correspond au rang de définition de l’appareil . Il faudra ajouter une entrée sur le dashboard pour le sensor input_boolean.enable_solar_optimizer qui permet de désactiver l’application si nécessaire.

Icon

Mode d’emploi de base

Une fois l’installation réalisée, l’intégration est opérationnelle. Cette partie concerne les appareils qui sont uniquement commandés par un switch.

Pour demander la mise en route d'un appareil, il faut cliquer sur l'icône de l'appareil, à gauche. Il passe du gris au vert. Si la production solaire est suffisante, l'appareil est mis en route, le deuxième icône devient vert et la puissance de fonctionnement s'affiche sur le 3eme icône et la durée de fonctionnement sur le 4ème icône.

Activation d’un appareil

Pour effectuer une demande de mise en route d’un appareil, il suffit de cliquer sur le premier sensor (Request). Si l’énergie solaire disponible est suffisante, le switch de l’appareil va être activé, la puissance délivrée va s’afficher et le décompte du temps d’exécution va débuter et s’afficher toutes les minutes. Il est possible de forcer le démarrage d’un appareil, même si la puissance solaire disponible n’est pas suffisante en cliquant directement sur le switch. Les entités de l’appareil s’afficheront alors comme si le démarrage avait été effectué par l’intégration.

Arrêt d’un appareil

L’appareil va s’arrêter lorsque le temps d’exécution planifié sera écoulé. On peut forcer l’arrêt en cliquant sur le switch.

Programmation en heure creuse

Tous les appareils pour lesquels une demande n’a pas été satisfaite dans la journée, faute d’énergie suffisante sont automatiquement reprogrammés la nuit en heure creuse. Pour cela il faut veiller à mettre dans la configuration des horaires de démarrage en période creuse.

Visualisation des problèmes éventuels

L’intégration génère un fichier de log qui est stocké dans le fichier /config/log/pvoptimizer.log. Il est possible aussi d’avoir plus de détails en appelant directement la console de debug d’appdaemon : http://<ip_homeassistant>:5050

Vous pourrez alors voir le démarrage et l’arrêt de l’intégration dans main_log, les erreurs éventuelles dans error_log et le déroulement de l’activité de l’intégration dans pvoptimizer_log.

Utilisation avancée

L’intégration, PVOptimizer permet de piloter des appareils qui nécessitent des paramètres de régulation supplémentaires.

Par exemple, pour une piscine, il faut prendre en compte la température de l’eau pour déterminer la durée et le séquencement des cycles de filtration journalière. Pour cela, il est plus simple de piloter le fonctionnement de l’appareil dans une application appdaemon séparée qui communique avec PVOptimizer. L’application séparée va alors demander la mise en route de l’appareil auprès de PVOptimizer en basculant input_boolean.device_request_x à true.

PVOptimizer va alors donner l’autorisation d’activation en basculant input_boolean.start.device_x à true. L’application séparée va alors gérer le fonctionnement de l’appareil et l’arrêter si besoin avant le délai imparti. Elle pourra demander au besoin ultérieurement d’autres mises en route.

Trois applications qui sont publiées dans mon dépôt :

Désinstallation

Il faut retirer les 2 fichiers PVOptimizer.py et PVOptimiser.yaml dans le répertoire addon_configs/a0d7b954_appdaemon/apps/ Puis le fichier optimizerentities.yaml dans le répertoire /config/ de HA, Retirer aussi le dashboard PVOptimizer Redémarrer HA.

Performances

L’intégration tourne depuis 4 mois avec une installation solaire de 3 KWc. Pour l’instant je suis à 95% d’autoconsommation. Il reste à évaluer le comportement en été.

Mises à jour

version 1.1.0

Elle prend en compte les périodes multiples Heures creuses en effectuant un bilan de programmation des appareils en attente au début de chaque basculement en heure creuse. Pour cela il faut veiller à paramétrer les horaires des appareils dans les périodes d'heure creuse.

Par exemple si vous avez une période Heure creuse l'apès midi entre 14h et 17h et que vous désirez que votre lave linge fonctionne l'après midi s'il n'y a pas eu assez de production solaire le matin paramétrez une heure de démarrage entre 14h et 17h dans le fichier PVOptimizer.yaml dans l'item night_time.

ATTENTION pour la mise à niveau, cette nouvelle version nécessite l'ajout d'une ligne dans le fichier PVOptimizer.yaml:

       off_peak: binary_sensor.heure_creuse 

Releases

No releases published

Packages

No packages published

Languages