Comment bâtir un calculateur ROI solaire avancé : guide complet 2024

L’initiative de créer un calculateur de Retour sur Investissement (ROI) solaire natif et respectueux de la vie privée est louable et s’inscrit parfaitement dans l’esprit du maker. Tandis que ces outils génériques offrent une excellente première approche, la véritable optimisation de votre installation photovoltaïque et la précision du calcul de son ROI résident dans l’analyse de vos propres données, celles de votre maison et de vos panneaux. En tant qu’ingénieurs du Laboratoire SolarLogik, notre mission est de vous équiper pour aller au-delà des estimations en ligne. Ce guide pas-à-pas vous montrera comment construire un système de monitoring et de calcul de ROI local, intégré à votre domotique, vous offrant une vision précise et personnalisée de la performance économique de votre investissement solaire. Vous apprendrez à collecter des données en temps réel, à les stocker, à appliquer une logique de calcul avancée et à visualiser vos résultats de manière intelligible.

Matériel requis

Pour mener à bien ce projet, vous aurez besoin de divers composants matériels et logiciels. L’accent est mis sur la flexibilité et l’utilisation de technologies courantes dans le monde des makers et de la domotique.

  • Mini-ordinateur / Microcontrôleur :
    • Raspberry Pi 4 ou 5 (minimum 4GB RAM) : Idéal pour héberger l’ensemble des services (Home Assistant, InfluxDB, Grafana, Node-RED). Son coût abordable et sa communauté active en font un excellent choix.
    • Alternative : Orange Pi 5, un mini-PC plus puissant avec un bon rapport qualité-prix.
  • Dispositifs de Mesure Énergétique (à choisir selon votre installation) :
    • Shelly EM ou Shelly 3EM : Modules Wi-Fi compacts pour mesurer la consommation électrique totale de la maison ou de circuits spécifiques (production PV, consommation du chauffe-eau, etc.). Faciles à intégrer à Home Assistant via MQTT ou l’intégration native.
    • Sonoff POW Elite : Prises ou modules encastrables connectés Wi-Fi avec mesure de puissance, idéaux pour des appareils individuels ou des circuits secondaires.
    • Intégration Onduleur Solaire :
      • Huawei Sun2000 : Nécessite souvent l’utilisation de l’API locale Modbus TCP via une carte SD ou des intégrations HACS dédiées pour Home Assistant.
      • Victron Energy (Cerbo GX, MultiPlus) : Intégration aisée via le protocole Modbus TCP natif ou l’intégration Home Assistant Victron Energy.
      • Enphase Envoy : Généralement accessible via l’API locale ou des intégrations HACS.
      • EcoFlow PowerStream : Permet souvent la remontée de données via l’application mobile ou des intégrations tierces si supporté.
  • Stockage :
    • Carte MicroSD de haute qualité (32GB minimum, Class 10 U3) : Pour le système d’exploitation du Raspberry Pi. Une carte endurance est recommandée.
    • SSD externe via USB 3.0 (optionnel mais fortement recommandé) : Pour la persistance des données et améliorer significativement les performances et la durée de vie de votre installation, surtout avec InfluxDB.
  • Logiciels / Environnements (déployés sur le mini-ordinateur) :
    • Raspberry Pi OS Lite (64-bit) : Système d’exploitation léger et performant.
    • Docker et Docker Compose : Pour une gestion simplifiée et isolée des applications (Home Assistant, InfluxDB, Grafana, Node-RED).
    • Home Assistant : Cœur de votre système domotique, agrégateur de données.
    • InfluxDB : Base de données spécialisée dans les séries temporelles, idéale pour stocker les données énergétiques.
    • Grafana : Outil de visualisation puissant pour créer des tableaux de bord interactifs.
    • Node-RED : Environnement de programmation visuelle pour la logique de calcul complexe et l’automatisation.

Étapes de construction du calculateur ROI solaire

Étape 1 : Préparation de l’environnement de base

Commencez par préparer l’infrastructure logicielle sur votre Raspberry Pi.

💡 Équipez votre maison pour l’avenir avec SolarLogik !

Découvrez notre sélection de produits recommandés pour optimiser votre installation solaire, réduire vos factures d’énergie et contribuer à un mode de vie plus durable :

En tant que partenaire Amazon, nous réalisons un bénéfice sur les achats qualifiés. Votre soutien nous aide à continuer de fournir des informations précieuses !

  1. Installation de Raspberry Pi OS Lite :
    • Téléchargez l’image depuis le site officiel et flashez-la sur votre carte MicroSD (ou SSD externe) à l’aide de Raspberry Pi Imager.
    • Configurez le Wi-Fi, SSH et un nom d’hôte pendant le flashage pour un accès facile.
    • Après le démarrage, connectez-vous via SSH (ssh pi@adresse_ip_de_votre_pi) et mettez à jour votre système : sudo apt update && sudo apt upgrade -y.
  2. Installation de Docker et Docker Compose :
    • Exécutez la commande d’installation simplifiée de Docker : curl -sSL https://get.docker.com | sh.
    • Ajoutez votre utilisateur au groupe docker pour éviter d’utiliser sudo à chaque fois : sudo usermod -aG docker pi (déconnectez-vous/reconnectez-vous après).
    • Installez Docker Compose : sudo apt install docker-compose -y.
  3. Déploiement des services via Docker Compose :
    • Créez un répertoire pour vos configurations Docker : mkdir ~/solarlogik_roi && cd ~/solarlogik_roi.
    • Créez un fichier docker-compose.yml : nano docker-compose.yml et collez-y une configuration minimale.

      Exemple de structure docker-compose.yml (simplifiée) :

      version: '3'
      services:
        homeassistant:
          container_name: homeassistant
          image: "ghcr.io/home-assistant/raspberrypi4-64-homeassistant:stable"
          volumes:
            - ./homeassistant_config:/config
            - /etc/localtime:/etc/localtime:ro
          restart: unless-stopped
          privileged: true
          network_mode: host # Ou spécifier des ports spécifiques
        influxdb:
          container_name: influxdb
          image: influxdb:1.8
          volumes:
            - ./influxdb_data:/var/lib/influxdb
          ports:
            - "8086:8086"
          restart: unless-stopped
        grafana:
          container_name: grafana
          image: grafana/grafana:latest
          volumes:
            - ./grafana_data:/var/lib/grafana
          ports:
            - "3000:3000"
          restart: unless-stopped
        nodered:
          container_name: nodered
          image: nodered/node-red
          volumes:
            - ./nodered_data:/data
          ports:
            - "1880:1880"
          restart: unless-stopped
      
    • Lancez les conteneurs : docker-compose up -d.
  4. Accès et configuration initiale :
    • Home Assistant : http://adresse_ip_de_votre_pi:8123
    • InfluxDB : Port 8086 (accès API)
    • Grafana : http://adresse_ip_de_votre_pi:3000 (admin/admin par défaut)
    • Node-RED : http://adresse_ip_de_votre_pi:1880

Étape 2 : Collecte des données énergétiques

C’est l’étape cruciale pour alimenter votre calculateur avec des informations réelles.

  1. Intégration des capteurs et onduleurs dans Home Assistant :
    • Shelly EM/3EM : Dans Home Assistant, allez dans « Paramètres » > « Appareils et services » > « Ajouter une intégration ». Recherchez « Shelly » et suivez les instructions. Si vous préférez MQTT, assurez-vous d’avoir un broker MQTT (Mosquitto est un add-on HA populaire) et configurez vos Shelly pour publier leurs données via MQTT vers ce broker. Home Assistant découvrira automatiquement les entités.
    • Onduleurs (Huawei, Victron, Enphase, etc.) :
      • Pour Huawei Sun2000 : L’intégration HACS « Huawei Solar » par Emilv2 est très efficace. Installez HACS (Home Assistant Community Store) d’abord, puis ajoutez l’intégration. Elle se connecte généralement via Modbus TCP ou l’API locale.
      • Pour Victron Energy : L’intégration native « Victron Energy » permet de se connecter au Cerbo GX (ou tout appareil avec Venus OS) via Modbus TCP. Assurez-vous d’activer Modbus TCP dans les paramètres du Cerbo GX.
      • Pour Enphase Envoy : L’intégration HACS « Enphase Envoy » ou l’intégration native si votre version d’Envoy est compatible.
    • Vérification des entités : Une fois intégrés, assurez-vous que Home Assistant a créé des entités comme sensor.production_solaire_journaliere, sensor.consommation_totale_maison, sensor.energie_achetee_reseau, sensor.energie_vendue_reseau. Les noms peuvent varier.
  2. Configuration du Recorder de Home Assistant :
    • Pour un fonctionnement optimal avec InfluxDB, il est conseillé de limiter les données stockées dans la base de données interne de Home Assistant ou d’exclure les entités envoyées à InfluxDB pour éviter la duplication. Dans votre fichier configuration.yaml :
      recorder:
        purge_keep_days: 7 # Garder les données internes seulement 7 jours
        exclude:
          domains:
            - automation
            - script
          entity_globs:
            - sensor.production_* # Exemple : exclure ces entités du recorder HA
            - sensor.consommation_*
      

Étape 3 : Stockage et persistance des données avec InfluxDB

InfluxDB est une base de données optimisée pour les séries temporelles, parfaite pour nos données énergétiques.

  1. Configuration de l’intégration InfluxDB dans Home Assistant :
    • Dans Home Assistant, allez dans « Paramètres » > « Appareils et services » > « Ajouter une intégration ». Recherchez « InfluxDB ».
    • Configurez-la avec les informations de votre serveur InfluxDB (qui tourne dans Docker) :
      • Hôte : adresse_ip_de_votre_pi ou influxdb (si network_mode bridge et résolu via DNS interne Docker).
      • Port : 8086
      • Base de données : Créez une nouvelle base de données appelée solar_data. Vous pouvez le faire via l’interface InfluxDB (si installée) ou via l’API.
      • Utilisateur/Mot de passe : Laissez vide si InfluxDB n’est pas sécurisé pour l’instant (pour un environnement local, cela peut être suffisant).
    • Dans votre configuration.yaml, spécifiez les entités à envoyer à InfluxDB (si vous ne voulez pas tout envoyer) :
      influxdb:
        host: influxdb # ou l'IP de votre Pi
        port: 8086
        database: solar_data
        ssl: false
        verify_ssl: false
        include:
          entities:
            - sensor.production_solaire_journaliere
            - sensor.consommation_totale_maison
            - sensor.energie_achetee_reseau
            - sensor.energie_vendue_reseau
            - sensor.etat_batterie_soc # Si vous avez des batteries
      
    • Redémarrez Home Assistant après ces modifications.
  2. Vérification des données dans InfluxDB :
    • Vous pouvez installer l’interface utilisateur web d’InfluxDB (Chronograf) ou utiliser la CLI Docker pour vérifier.
    • Exemple pour accéder à la CLI InfluxDB depuis votre terminal sur le Pi : docker exec -it influxdb influx.
    • Une fois dans la CLI, tapez use solar_data, puis show measurements pour voir les tables de données et select * from "home_assistant"."autogen"."sensor.production_solaire_journaliere" limit 5 pour voir les 5 dernières entrées.

Étape 4 : Définition de la logique de calcul du ROI avec Node-RED

Node-RED est l’outil idéal pour orchestrer les flux de données et appliquer la logique de calcul de votre ROI.

  1. Installation des nœuds nécessaires :
    • Dans l’interface Node-RED (http://adresse_ip_de_votre_pi:1880), allez dans le menu en haut à droite > « Gérer la palette » > « Installer ».
    • Recherchez et installez node-red-contrib-influxdb.
    • Optionnellement, node-red-contrib-home-assistant-websocket si vous souhaitez interagir plus directement avec Home Assistant.
  2. Création du flux de calcul du ROI :
    • Nœud inject : Configurez-le pour déclencher le flux toutes les heures (ou tous les jours) à un moment fixe.
    • Nœuds influxdb in pour récupérer les données :
      • Configurez-les pour se connecter à votre InfluxDB (port 8086, base solar_data).
      • Utilisez des requêtes InfluxQL (ou Flux si vous avez InfluxDB 2.x) pour récupérer les données pertinentes pour la période souhaitée (jour, mois, année).
        -- Exemple InfluxQL pour la production journalière
        SELECT sum(value) FROM "home_assistant"."autogen"."sensor.production_solaire_journaliere" WHERE time >= now() - 24h GROUP BY time(1h) fill(0)
        
      • Faites des requêtes similaires pour la consommation totale, l’énergie achetée et vendue.
    • Nœud function pour les calculs : C’est le cœur de votre logique.

      Exemple de pseudo-code JavaScript pour le nœud function :

      // Récupération des données passées par les nœuds InfluxDB précédents
      const production = msg.payload[0].sum; // Exemple si un seul résultat
      const consommation_totale = msg.payload[1].sum;
      const energie_achetee = msg.payload[2].sum;
      const energie_vendue = msg.payload[3].sum;
      
      // Définition des constantes (vous pouvez les rendre configurables via Home Assistant input_number)
      const COUT_INSTALLATION_INITIAL = 12000; // Votre coût total d'installation
      const PRIX_ACHAT_KWH_RESEAU = 0.25; // Prix du kWh acheté (en €)
      const PRIX_VENTE_KWH_RESEAU = 0.10; // Prix du kWh vendu (en €)
      const DATE_MISE_EN_SERVICE = new Date('2023-01-01'); // Date de début du calcul
      
      // Calculs clés
      const autoconsommation = Math.min(production, consommation_totale);
      const energie_injectee = production - autoconsommation;
      const energie_non_autoconsommee_achetee = consommation_totale - autoconsommation; // Énergie que vous avez dû acheter en plus de l'autoconsommation
      
      const economies_autoconsommation = autoconsommation * PRIX_ACHAT_KWH_RESEAU;
      const revenus_injection = energie_injectee * PRIX_VENTE_KWH_RESEAU;
      const cout_energie_achetee = energie_non_autoconsommee_achetee * PRIX_ACHAT_KWH_RESEAU;
      
      const benefice_net_periode = economies_autoconsommation + revenus_injection - cout_energie_achetee;
      
      // Stockage des résultats pour InfluxDB
      msg.payload = [
          { measurement: "solar_roi_metrics", fields: {
              production: production,
              consommation_totale: consommation_totale,
              autoconsommation: autoconsommation,
              energie_injectee: energie_injectee,
              energie_achetee_reelle: energie_achetee,
              energie_vendue_reelle: energie_vendue,
              economies_autoconsommation: economies_autoconsommation,
              revenus_injection: revenus_injection,
              cout_energie_achetee: cout_energie_achetee,
              benefice_net_periode: benefice_net_periode
          }}
      ];
      
      // Pour le calcul cumulatif, vous devrez récupérer la dernière valeur cumulée de InfluxDB ou HA
      // et l'ajouter au benefice_net_periode pour obtenir un nouveau cumul.
      // Cela nécessitera un flux légèrement plus complexe ou un capteur cumulatif dans HA.
      
      return msg;
      
    • Nœud influxdb out : Connectez-le au nœud function pour stocker les résultats des calculs (benefice_net_periode, economies_autoconsommation, etc.) dans une nouvelle table InfluxDB, par exemple solar_roi_metrics.
  3. Déploiement du flux : Cliquez sur le bouton « Déployer » en haut à droite de Node-RED.

Étape 5 : Visualisation des résultats avec Grafana

Grafana transformera vos données brutes et calculées en tableaux de bord clairs et esthétiques.

  1. Connexion de Grafana à InfluxDB :
    • Accédez à Grafana (http://adresse_ip_de_votre_pi:3000). Connectez-vous avec admin/admin et changez le mot de passe.
    • Dans le menu latéral gauche, allez sur « Connections » > « Data sources » > « Add new data source ».
    • Sélectionnez « InfluxDB ».
    • Configurez :
      • Name : Solar Data
      • URL : http://influxdb:8086 (si Docker, sinon http://adresse_ip_de_votre_pi:8086)
      • Database : solar_data
      • HTTP Method : GET
    • Cliquez sur « Save & test ». Vous devriez voir « Data source is working ».
  2. Création d’un tableau de bord Grafana :
    • Dans le menu latéral, allez sur « Dashboards » > « New dashboard » > « Add new panel ».
    • Graphique de Production vs Consommation :
      • Sélectionnez votre source de données Solar Data.
      • Écrivez des requêtes InfluxQL pour afficher production_solaire_journaliere et consommation_totale_maison sur un graphique en barres ou en ligne.
      • Exemple de requête pour la production (avec alias pour la légende) : SELECT sum("value") FROM "solar_data"."autogen"."sensor.production_solaire_journaliere" WHERE $timeFilter GROUP BY time($__interval) fill(null)
    • Tableau des métriques ROI :
      • Ajoutez un panneau de type « Stat » ou « Table ».
      • Récupérez les données calculées par Node-RED dans la table solar_roi_metrics (ex: benefice_net_periode, economies_autoconsommation).
      • Affichez la somme cumulée de benefice_net_periode pour avoir un ROI cumulatif.
    • Temps de Retour sur Investissement (TRI) : C’est plus complexe, car il nécessite une logique de cumul sur le bénéfice net par rapport au coût initial. Vous devrez soit calculer un cumul dans Node-RED et le stocker, soit utiliser des fonctions de cumul dans Grafana. Un simple « stat » affichant `COUT_INSTALLATION_INITIAL / benefice_net_annuel_moyen` peut donner une estimation rapide en nombre d’années.
    • Personnalisez les couleurs, titres, unités pour une meilleure lisibilité.
    • Enregistrez votre tableau de bord.

Étape 6 : Affinement et simulation (Optionnel)

Pour un calculateur de ROI encore plus puissant, considérez ces améliorations :

  1. Intégration de prévisions météo :
    • Utilisez l’intégration OpenWeatherMap dans Home Assistant pour obtenir des prévisions d’ensoleillement et de température.
    • Passez ces données à Node-RED pour simuler la production future et affiner les prévisions de ROI sur les jours/semaines à venir.
  2. Simulation de scénarios :
    • Créez des input_number ou input_text dans Home Assistant (ex: input_number.prix_achat_kwh_simule, input_number.augmentation_prix_annuelle).
    • Utilisez ces entités dans vos nœuds function Node-RED pour permettre aux utilisateurs de modifier les paramètres (coût de l’énergie, subventions, inflation) directement depuis l’interface Home Assistant et voir l’impact immédiat sur le ROI.
  3. Gestion de batterie (si applicable) :
    • Si vous avez un système avec batteries (ex: Victron, EcoFlow PowerStream avec batteries, onduleur hybride), intégrez les données de charge/décharge et l’état de charge (SoC) dans vos calculs. L’autoconsommation après stockage doit être valorisée au prix d’achat du kWh.

Dépannage

La mise en place d’un tel système peut rencontrer quelques embûches. Voici les problèmes courants et leurs solutions.

  • Problème : Données manquantes ou incorrectes dans Home Assistant.
    • Solution :
      • Vérifiez la connectivité réseau de vos capteurs (Wi-Fi, Zigbee, Ethernet).
      • Redémarrez les dispositifs physiques (Shelly, onduleurs) et les intégrations correspondantes dans Home Assistant.
      • Consultez les journaux (logs) de Home Assistant (Configuration -> Journaux) pour des messages d’erreur spécifiques liés à l’intégration de vos capteurs.
      • Assurez-vous que les identifiants d’API ou les adresses IP/ports Modbus sont corrects.
  • Problème : Données non stockées dans InfluxDB.
    • Solution :
      • Vérifiez la configuration de l’intégration InfluxDB dans Home Assistant (hôte, port, nom de la base de données).
      • Assurez-vous que le conteneur Docker influxdb est bien en cours d’exécution (docker ps).
      • Vérifiez les logs du conteneur InfluxDB (docker logs influxdb) pour d’éventuels messages d’erreur.
      • Utilisez la CLI InfluxDB (docker exec -it influxdb influx) pour vérifier l’existence de la base de données et des mesures.
  • Problème : Calculs incorrects ou absents dans Node-RED.
    • Solution :
      • Utilisez des nœuds debug après chaque étape de votre flux Node-RED pour inspecter les messages (msg.payload) et vérifier que les données entrantes et sortantes sont conformes à vos attentes.
      • Examinez attentivement le code JavaScript de votre nœud function pour les erreurs de logique, de syntaxe ou les noms de variables incorrects.
      • Assurez-vous que les nœuds influxdb in récupèrent correctement les données avec les bonnes requêtes InfluxQL/Flux.
      • Vérifiez que le nœud inject déclenche bien le flux à la fréquence souhaitée.
  • Problème : Grafana n’affiche pas les données ou les tableaux de bord sont vides.
    • Solution :
      • Dans Grafana, vérifiez que votre source de données InfluxDB est correctement configurée et que le test de connexion est réussi.
      • Vérifiez les requêtes InfluxQL/Flux dans les panneaux Grafana. Une petite erreur de syntaxe ou un nom de mesure incorrect peut empêcher l’affichage des données.
      • Assurez-vous que les données existent réellement dans InfluxDB (voir solution « Données non stockées dans InfluxDB »).
      • Vérifiez les plages de temps sélectionnées dans Grafana; elles sont souvent la cause de « pas de données ».
  • Problème : Le Raspberry Pi ou l’ensemble du système est lent.
    • Solution :
      • Passez à un Raspberry Pi 4 (minimum 4GB RAM) ou 5, voire un mini-PC plus puissant si la charge est trop élevée.
      • Utilisez un SSD externe via USB 3.0 pour héberger le système d’exploitation et les données Docker. C’est le meilleur investissement pour la performance et la fiabilité.
      • Optimisez la configuration de votre InfluxDB (politiques de rétention, compactage).
      • Limitez le nombre d’entités que Home Assistant enregistre dans sa propre base de données interne (recorder) si elles sont déjà envoyées à InfluxDB.

Conclusion

Félicitations ! Vous avez maintenant les bases pour construire un calculateur de Retour sur Investissement solaire non seulement indépendant et respectueux de votre vie privée, mais aussi incroyablement précis et personnalisé. En tirant parti de votre propre infrastructure domotique et des données réelles de votre installation, vous disposez d’un outil puissant pour optimiser la performance économique de vos panneaux photovoltaïques. Cette approche vous offre une flexibilité inégalée pour simuler différents scénarios, adapter vos calculs aux évolutions de votre consommation ou des tarifs énergétiques, et prendre des décisions éclairées pour maximiser votre investissement. Le chemin du maker est celui de l’autonomie et de l’innovation continue. N’hésitez pas à expérimenter et à partager vos améliorations avec la communauté !


Ce tutoriel a ete redige en reponse a un besoin technique identifie sur les forums communautaires. La solution d’ingenierie a ete developpee par le Laboratoire SolarLogik.

🛒 Le Coin du Maker

Les indispensables pour ce projet :

Liens affiliés Amazon (Soutien gratuit).

Boostez votre énergie avec SolarLogik :

Découvrez notre sélection de produits recommandés pour optimiser votre installation solaire et votre maison connectée :

Ces liens sont des liens affiliés. En achetant via ces liens, vous soutenez SolarLogik sans coût supplémentaire pour vous. Merci de votre confiance !


Demandez un devis gratuit pour votre installation solaire !

☀️ Prêt à passer au solaire ?

Demandez votre devis gratuit et personnalisé pour une installation solaire adaptée à vos besoins et commencez à économiser sur vos factures d’énergie dès maintenant !


👉 Obtenir mon Devis Solaire Gratuit ! 👈

Énergie renouvelable, économies garanties, installation simplifiée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *