Solaire Prédictif avec IA
La domotique classique (“Si la production > 2000W, alors allumer le chauffe-eau”) a un défaut majeur : elle est réactive. Elle ne sait pas si un gros nuage arrive dans 10 minutes.
Pour véritablement rentabiliser une installation solaire, il faut anticiper. Dans ce projet, nous allons construire un “Cerveau Énergétique” local. Notre but ? Croiser les données de production solaire (via l’API Enphase), les prévisions météo (via Home Assistant), et utiliser un Small Language Model (SLM) local via Ollama pour prendre des décisions intelligentes d’autoconsommation.
L’Architecture du Projet
L’idée est de créer un script Python (ou une automatisation avancée) qui fait office d’agent IA.
- Home Assistant (HA) : Sert de concentrateur. Il nous fournit les prévisions météo horaires.
- API Enphase Enlighten : Fournit l’historique de production et la capacité de l’installation [1].
- Ollama (Llama 3) : Le cerveau local. Il analyse ces données et nous renvoie une recommandation (ex: “Charge la voiture à 13h”).
1. Préparation des données (Le Code)
Voici le squelette Python de notre Agent. Il récupère les données via les API, construit un prompt complexe et interroge l’IA locale.
Prérequis : pip install requests langchain_community
import requests
import json
from langchain_community.llms import Ollama
# --- 1. Récupération des données Home Assistant (Météo) ---
HA_URL = "http://homeassistant.local:8123/api/states/weather.maison"
HA_TOKEN = "votre_token_long_home_assistant"
headers_ha = {"Authorization": f"Bearer {HA_TOKEN}", "Content-Type": "application/json"}
# On récupère la prévision des prochaines 24h
meteo_response = requests.get(HA_URL, headers=headers_ha).json()
previsions_meteo = meteo_response['attributes']['forecast'][:12] # Les 12 prochaines heures
# --- 2. Récupération des données Enphase (Solaire) ---
# Note : L'API v4 d'Enphase nécessite un système de token OAuth2 complexe.
# Pour l'exemple, on simule l'appel à /api/v4/systems/{system_id}/summary
ENPHASE_API_KEY = "votre_cle_api"
# infos_solaires = requests.get(f"https://developer.enphase.com/", headers={...})
capacite_solaire_max = "3.2 kWc"
historique_recent = "Aujourd'hui : Nuageux, production bridée à 800W max."
# --- 3. Construction du Prompt pour l'IA ---
prompt_agent = f"""
Tu es un expert en gestion de l'énergie domestique (FinOps Solaire).
Ta mission est d'optimiser l'autoconsommation d'une maison sans injecter sur le réseau.
Voici l'état actuel de l'installation :
- Capacité max des panneaux : {capacite_solaire_max}
- Historique récent : {historique_recent}
Voici les prévisions météo des prochaines heures issues de Home Assistant :
{json.dumps(previsions_meteo, indent=2)}
Tâches en attente de l'utilisateur :
- Charger le véhicule électrique (Besoin : 2kW pendant 3h).
- Lancer le chauffe-eau (Besoin : 1.5kW pendant 2h).
Analyse les prévisions nuageuses.
Génère une stratégie d'activation heure par heure.
Réponds UNIQUEMENT au format JSON avec l'heure idéale pour la 'voiture' et le 'chauffe-eau'.
"""
# --- 4. Interrogation du Cerveau Local (Ollama) ---
print("[*] Envoi des données à l'Agent IA (Llama 3)...")
llm = Ollama(model="llama3", temperature=0.1) # Température basse pour être factuel
reponse_ia = llm.invoke(prompt_agent)
print("\n--- STRATÉGIE IA ---")
print(reponse_ia)
# Vous pouvez ensuite parser ce JSON pour envoyer un ordre via l'API de Home Assistant
2. Le défi de l’API Enphase
L’API Enphase est très riche, mais depuis sa version 4, elle impose un flux d’authentification OAuth2 strict. L’astuce technique consiste à créer une petite application “bidon” sur le portail développeur Enphase (Plan Watt gratuit) pour obtenir vos clés Client ID et Client Secret.
Si vous utilisez des passerelles Envoy plus anciennes, il est souvent plus facile d’interroger la passerelle locale (sur le réseau LAN) au lieu de passer par le Cloud, bien que Enphase ait récemment verrouillé cet accès avec des tokens générés depuis leur site.
3. De la recommandation à l’action
L’IA nous a renvoyé un JSON structuré (grâce à notre prompt explicite). La dernière étape de la boucle “Agentic” consiste à récupérer ce JSON dans Python et à faire un appel POST vers Home Assistant pour déclencher les automatisations :
# Exemple de retour de l'IA (après parsing)
# { "voiture": "13:00", "chauffe_eau": "16:00" }
# On envoie l'ordre à Home Assistant pour allumer la prise de la voiture à l'heure dite
payload = {"entity_id": "switch.prise_voiture"}
requests.post("http://homeassistant.local:8123/api/services/switch/turn_on", headers=headers_ha, json=payload)
Conclusion
Nous venons de franchir un cap. Votre maison ne se contente plus de réagir à un capteur de luminositer, elle anticipe en lisant la météo et en planifiant ses gros consommateurs d’énergie comme un véritable gestionnaire de réseau (Smart Grid). Et surtout, grâce à Ollama, toute cette “intelligence” tourne localement, sans abonnement Cloud coûteux et sans partager vos habitudes de vie avec les géants de la tech. C’est l’avenir de la domotique : l’IA prédictive Edge.
Sources
Si vous voulez plus d’information sur l’infrastructure vous pouvez voir l’ repo à ce sujet : https://github.com/ravindrajob/InfraAtHome


