Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Forum dédié à tous les sujets sans liens avec DomoticZ.
Discuter de tout et de rien, c'est ici.
suisk1ptitmotard
Messages : 42
Inscription : 02 juin 2017, 12:59
Localisation : Essonne 91

Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par suisk1ptitmotard »

Bonjour à tous.

Depuis plusieurs jour je me renseigne sur les kit solaire d'autoconsomation hybride.

Voici un exemple de ce qui ce trouve.

https://solaireshop.fr/kit-solaire-1000 ... 0wodrhwDvQ#

Avez vous déjà étudié cette solution? Je me pose beaucoup de question sur la rentabilité ainsi que le fiabilité de ce système.

Donc pour ceux qui utilise ou qui y réfléchisse et qui souhaite en parler. :D
RPi2 Arduino digicode 12 Capteurs Sirénes Relais TeleInfo ESP8266 ds180b1 bme280 Alim Ininterruptible HPamplificateur
DomoticzV2024.7 Nginx Ramlog Openvpn Fail2ban Iptable MiniDlna Ssmtp Samba Telebot openbeken
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par balajol »

Bonsoir,
La moyenne du "bruit de fond" généralement constaté pour de l'autoconsommation est de 500 Wc, au delà difficilement rentable à court terme.
Pour de plus amples renseignements:

http://gppep.org/

En haut à droite, Guide de l'autoconsommation.
Bonne lecture
Cdt
Bertrand
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par aleph0 »

Je n'ai pas (encore ?) d'expérience, mais je m'y intéresse très fort :) Et comme on est sur un forum domoticz, utilisons domoticz ;)

Pour savoir si un investissement de ce genre serait rentable chez moi, j'ai écris un script lua qui simule la production d'un champs de capteur bosch M60 (il fallait bien choisir un modèle !) installé sur mon toit !

Le script prends en compte :
- La position géographique
- La position des panneaux solaire (orientation, inclinaison)
- La puissance solaire reçue au cours de l'année, en tenant compte de la couverture nuageuse
- La courbe de production du panneau en fonction de la luminosité
- La consommation électrique de la maison, pour savoir quelle part de production est autoconsommée immédiatement

Il ne prends PAS en compte :
- Un masque d'horizon
- D'éventuelles ombres portées
- La diminution de production des panneaux avec l'âge, ni à cause de la poussière qui va s'accumuler dessus

Le script à besoin :
- du script "Solar Sensor" de jm leglise pour calculer la position du soleil de l'irradiation solaire pour le lieu d'habitation (http://www.domoticz.com/wiki/Real-time_ ... _sensor...)
- d'un capteur de consommation électrique de la maison. Selon que l'électricité produite par les panneaux solaire peut-être consommée immédiatement ou non, le rendement du système va être très différent. Il faut donc connaitre la consommation instantannée de la maison pour pouvoir faire la différence entre autoconsommée et non
- un switch heure creuse/heure pleine (quoique la production solaire en heure creuse... bof !) sur planning

Pour le mettre en place il faut commencer par faire fonctionner le script SolarSensor, je vous renvoi au wiki plus haut où tout est expliqué.
Il faut ensuite créer un dummy P1 smart counter qui recevra la consommation des capteurs photovoltaïques

Script Time :

Code : Tout sélectionner

-- Script pour estimer la production d'un champ de capteur solaires bosch M60-270Wc

-- Mesure de la consommation électrique de la maison
local mesure = "owl"
local cst_AdjOwl = 0.9
local dev_HC = "Heures creuses EDF"

-- Récupération des valeurs du script SolarSensor
local dev_sunAlt = "Sun Altitude"
local dev_sunAzt = "Sun Azimuth"
local dev_Lux    = "Lux"

-- Panneaux solaires
local dev_cptPV  = "Estimation PV" -- De type P1 smart counter
local cst_NbPnx  =7   -- Nombre de panneaux. Ici, ~1890 Wc
local cst_InclPnx=30  -- Angle d'inclinaison des panneaux
local cst_AztPnx =180 -- Azimuth des panneaux
local cst_EffUPS =0.9 --Efficacité de l'onduleur

-- Variables internes
local debug = 0

-- Bibliothèque de fonctions
function UpdateP1(device,HC,conso,prod,freq)
    -- Met à jour le P1 smart counter
    -- device : nom du compteur
    -- HC     : "On" si heures creuses, "Off" si heures pleines
    -- conso  : consommation instantannée
    -- prod   : production instantannée
    -- freq   : frequence d'exécution du script (en minutes) 
    
    local u1, u2, p1, p2
    local dbg=0
    
    u1, u2, p1, p2 = string.match(otherdevices_svalues[device],"(.-);(.-);(.-);(.-);.*")
    
    -- Utile pour les compteurs nouvellement crées
    u1=u1 or 0
    u2=u2 or 0
    p1=p1 or 0
    p2=p2 or 0

    if dbg == 1 then
        print("Mise à jour de "..tostring(device))
        print("u1 "..tostring(u1))
        print("u2 "..tostring(u2))
        print("p1 "..tostring(p1))
        print("p2 "..tostring(p2))
        print("conso "..tostring(conso))
        print("prod "..tostring(prod))
    end

    if otherdevices[HC] == 'Off' then
        -- svalue=USAGE1;USAGE2;RETURN1;RETURN2;CONS;PROD
        commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[device]..'|0|'..tostring(u1+conso*freq/60)..';'..tostring(u2)..';'..tostring(p1+prod*freq/60)..';'..tostring(p2)..';'..tostring(conso)..';'..tostring(prod)}
    else
        commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[device]..'|0|'..tostring(u1)..';'..tostring(u2+conso*freq/60)..';'..tostring(p1)..';'..tostring(p2+prod*freq/60)..';'..tostring(conso)..';'..tostring(prod)}
    end
end
-- Fin biliothèque de fonctions

commandArray = {}

actual_conso, compteur, dum2 = string.match(otherdevices_svalues[mesure],"(%d+.%d*);(%d+).(%d*)")

-- Run every minutes
-- Simulation panneaux solaires
-- Bosh M60 270Wc
-- Production=0.272*Indidence solaire-1.374 W
-- Incidence solaire =0.0079*Lux du script SolarSensor
rad_sunAlt =math.rad(otherdevices[dev_sunAlt])
rad_sunAzt =math.rad(otherdevices[dev_sunAzt])
rad_InclPnx=math.rad(cst_InclPnx)
rad_AztPnx =math.rad(cst_AztPnx)

-- coef=cos de l'angle d'incidence des rayons solaires sur le panneau
-- (Capderou, tome1, vol 1, p.66)
coef=math.sin(rad_sunAzt)*math.sin(rad_InclPnx)*math.sin(rad_AztPnx)*math.cos(rad_sunAlt)
     +math.cos(rad_sunAzt)*math.sin(rad_InclPnx)*math.cos(rad_AztPnx)*math.cos(rad_sunAlt)
     +math.cos(rad_InclPnx)*math.sin(rad_sunAlt)

ProdM60=round(cst_EffUPS*cst_NbPnx*math.max(0,0.272*otherdevices[dev_Lux]*0.0079*coef-1.374),0)

-- répartition de la production en utile et perdue selon la consommation de la maison
ProdUtile=math.min(ProdM60,actual_conso*cst_AdjOwl)
ProdPerdue=ProdM60-ProdUtile

if debug == 1 then
    print("Production M60")
    print("consommation     : "..tostring(actual_conso).." W")
    print("Production brute : "..tostring(ProdM60).." W")
    print("Production utile : "..tostring(ProdUtile).." W")
    print("Production perdue: "..tostring(ProdPerdue).." W")
end

UpdateP1(dev_cptPV,dev_HC,ProdPerdue,ProdUtile,1)

return commandArray
Et ça donne un résultat comme ça :

Image
Image

La partie de production en vert correspond à la partie autoconsommée immédiatement, et en bleu on retrouve l'excédent (if any !). Du coup, dans les rapports, on lit dans "retour T1" l'électricité autoconsommée (et du coup, l'économie réalisée) et dans "Utilisation T1" la production exédentaire. le "coût total" n'a donc pas de sens : ignorez le !

A partir de là, on peut analyser la rentabilité de l'investissement, et envisager plusieurs cas pour l'électricité exédentaire.
- Soit on la cède gratuitement à EdF (le plus simple !)
- Soit on modifie ses habitudes de consommations pour mieux profiter de la production des panneaux, par exemple en faisant marcher un chauffe eau à accumulation pendant les périodes d'exédent (domoticz peut être précieux pour piloter ça automatiquement)
- Soit on la revends à EdF (coût à prévoir pour le 2nd compteur, le consuel, etc -> étudier la rentabilitié)
- Soit on la stocke sur batterie pour la consommer plus tard (coût à prévoir pour onduleur plus cher, batteries qu'il faut remplacer, rendement de la chaine stockage/destockage -> étudier aussi la rentabilité)

Voilà mes 2 ¢ ;) A vos question !
Dernière modification par aleph0 le 14 mars 2020, 10:23, modifié 1 fois.
suisk1ptitmotard
Messages : 42
Inscription : 02 juin 2017, 12:59
Localisation : Essonne 91

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par suisk1ptitmotard »

C'est une super idée ce script :D . Un panneau de 270w me semble suffisant, mais c'est dommage de monter sur le toit pour un seul panneau ! Plus le coût des fixations.

J’essaie déjà de mettre en place le script solarsensor, dans la log cela semble fonctionner mais les capteurs virtuels reste à 0.

2017-06-12 22:25:00.704 EventSystem: Script event triggered: script_time_SolarSensor
2017-06-12 22:27:53.446 EventSystem: reset all events...
2017-06-12 22:30:00.564 LUA: Lat: 48.xxxxxxLong: 2.xxxxxxAlt: 70.1
2017-06-12 22https://translate.google.com/#en/fr/Set%20your%20port.%20(Not%20the%20universal%20IP:30:00.565 LUA:
2017-06-12 22:30:00.565 LUA: 2017-06-12 22:30:00
2017-06-12 22:30:00.566 LUA: Mxxxxx, latitude:4x.xxxxxx, longitude:2.xxxxx
2017-06-12 22:30:00.566 LUA: Home altitude = 89 m
2017-06-12 22:30:00.566 LUA: number Of Day = 163
2017-06-12 22:30:00.566 LUA: 2017 is not a leap year
2017-06-12 22:30:00.566 LUA: Angular Speed = 0.98562628336756 per day
2017-06-12 22:30:00.566 LUA: Declinaison = 23.170541559898°
2017-06-12 22:30:00.566 LUA: Universel Coordinated Time (UTC)20.5 H.dd
2017-06-12 22:30:00.566 LUA: Solar Hour 20.662295733333 H.dd
2017-06-12 22:30:00.566 LUA: Altitude of the sun = -5.4814521043746°
2017-06-12 22:30:00.566 LUA: Angular hourly = -129.934436°
2017-06-12 22:30:00.566 LUA: Azimuth of the sun = 314.91397349451°
2017-06-12 22:30:00.566 LUA: Duration of the sunstroke of the day = 15.87 H.dd
2017-06-12 22:30:00.566 LUA: Radiation max in atmosphere = 1317.31 W/m²
2017-06-12 22:30:00.567 LUA: Local relative pressure = 1020 hPa
2017-06-12 22:30:00.567 LUA: Absolute pressure in atmosphere = 1009.3 hPa
2017-06-12 22:30:00.567 LUA: Coefficient of mitigation M = 128.32763830716 M0:126.98145621903
2017-06-12 22:30:00.567 LUA: curl "http://www.ogimet.com/cgi-bin/getsynop? ... 1706121900"
2017-06-12 22:30:00.694 LUA: ogimet:07149,2017,06,12,19,00,AAXX 12191 07149 22/79 13103 10194 20087 30093 40199 56004 333 30/// 55310 20500 58044 60005 81076 91004 90710 91107 555 90730 91108==
07149,2017,06,12,20,00,AAXX 12204 07149 22975 03406 10181 20086 30096 40203 53001 333 60005 90710 91113 93100=
2017-06-12 22:30:00.694 LUA: Station SYNOP = 07149
2017-06-12 22:30:00.694 LUA: 1 Octa
2017-06-12 22:30:00.694 LUA: Kc = 0.99936238972415
2017-06-12 22:30:00.695 LUA: Direct Radiation = 0 W/m²
2017-06-12 22:30:00.695 LUA: Scattered Radiation = 0 W/m²
2017-06-12 22:30:00.695 LUA: Total radiation = 1.2 W/m²
2017-06-12 22:30:00.695 LUA: Total Radiation in lux = 151.85 Lux
2017-06-12 22:30:00.695 LUA: and at last, Total weighted lux = 151.76 Lux
RPi2 Arduino digicode 12 Capteurs Sirénes Relais TeleInfo ESP8266 ds180b1 bme280 Alim Ininterruptible HPamplificateur
DomoticzV2024.7 Nginx Ramlog Openvpn Fail2ban Iptable MiniDlna Ssmtp Samba Telebot openbeken
suisk1ptitmotard
Messages : 42
Inscription : 02 juin 2017, 12:59
Localisation : Essonne 91

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par suisk1ptitmotard »

Ca fonctionne maintenant, certainement que cela ne fonctionne pas quand la 1er exécution ce fait de nuit?

Peux tu me confirmer dans ton script que local mesure = "owl" correspond au nom de la teleinfo edf par exemple?
RPi2 Arduino digicode 12 Capteurs Sirénes Relais TeleInfo ESP8266 ds180b1 bme280 Alim Ininterruptible HPamplificateur
DomoticzV2024.7 Nginx Ramlog Openvpn Fail2ban Iptable MiniDlna Ssmtp Samba Telebot openbeken
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par aleph0 »

Salut !

Le local mesure="owl" correspond a un analyseur de consommation USB de marque owl. Tu peux le remplacer par n'importe quel dispositif qui mesure la conso d'électricité de la maison, mais tu devra adapter en conséquence la ligne

Code : Tout sélectionner

actual_conso, compteur, dum2 = string.match(otherdevices_svalues[mesure],"(%d+.%d*);(%d+).(%d*)")
de manière à récupérer la consommation instantanée dans la variable actual_conso (en watts)

Je n'ai pas d'expérience avec la teleinfo d'EDF : Ça envoi une mesure tout les combien ? Plus les mesures sont fréquentes, plus l'estimation du script sera précise. Sur l'owl c'est ~1x/min
suisk1ptitmotard
Messages : 42
Inscription : 02 juin 2017, 12:59
Localisation : Essonne 91

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par suisk1ptitmotard »

Le téléinformation envoi un flux de donnée en continue, index intensité en cours. J'ai des graphiques au pas de 5min.
Avec une tramme du type "ADCO 031128049974 G OPTARIF HC.. < ISOUSC 45 ? HCHC 008563072 % HCHP 010010179 & PTEC HP.. IINST 002 Y IMAX 045 H PAPP 00410 & HHPHC C . MOTDETAT 000000 B" arrive sur un port usb du rpi.

Le CounterToday s'actualise tout les 10s environ. Voici pour 2 relevés à une minute d'interval avec une conso de 60 - 70w en bruit de front (vmc freebox rpi chaudiére en veille).

L'usage en Watt est different de 0 pour une consommation plus conséquente frigo + tv + ordi, sinon ca ne bouge pas.
--------------------------------------------------------------------------------
{
"ActTime" : 1497346624,
"ServerTime" : "2017-06-13 11:37:04",
"Sunrise" : "05:48",
"Sunset" : "21:51",
"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"Counter" : "40222.977",
"CounterDeliv" : "0.000",
"CounterDelivToday" : "0.000 kWh",
"CounterToday" : "1.060 kWh",
"CustomImage" : 0,
"Data" : "40222975;0;0;0;0;0",
"Description" : "",
"Favorite" : 1,
"HardwareID" : 7,
"HardwareName" : "Electricite",
"HardwareType" : "Teleinfo EDF USB",
"HardwareTypeVal" : 19,
"HaveTimeout" : false,
"ID" : "1",
"LastUpdate" : "2017-06-13 11:37:01",
"Name" : "Electricite",
"Notifications" : "true",
"PlanID" : "0",
"PlanIDs" : [ 0 ],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"SubType" : "Energy",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "P1 Smart Meter",
"TypeImg" : "counter",
"Unit" : 1,
"Usage" : "0 Watt",
"UsageDeliv" : "0 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "31"
}
],
"status" : "OK",
"title" : "Devices"
}
--------------------------------------------------------------------------------
{
"ActTime" : 1497346684,
"ServerTime" : "2017-06-13 11:38:04",
"Sunrise" : "05:48",
"Sunset" : "21:51",
"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"Counter" : "40222.977",
"CounterDeliv" : "0.000",
"CounterDelivToday" : "0.000 kWh",
"CounterToday" : "1.062 kWh",
"CustomImage" : 0,
"Data" : "40222977;0;0;0;0;0",
"Description" : "",
"Favorite" : 1,
"HardwareID" : 7,
"HardwareName" : "Electricite",
"HardwareType" : "Teleinfo EDF USB",
"HardwareTypeVal" : 19,
"HaveTimeout" : false,
"ID" : "1",
"LastUpdate" : "2017-06-13 11:38:03",
"Name" : "Electricite",
"Notifications" : "true",
"PlanID" : "0",
"PlanIDs" : [ 0 ],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"SubType" : "Energy",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "P1 Smart Meter",
"TypeImg" : "counter",
"Unit" : 1,
"Usage" : "0 Watt",
"UsageDeliv" : "0 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "31"
}
],
"status" : "OK",
"title" : "Devices"
}
--------------------------------------------------------------------------------
Pièces jointes
Electricite-Domoticz.png
Electricite-Domoticz.png (250.78 Kio) Consulté 19357 fois
RPi2 Arduino digicode 12 Capteurs Sirénes Relais TeleInfo ESP8266 ds180b1 bme280 Alim Ininterruptible HPamplificateur
DomoticzV2024.7 Nginx Ramlog Openvpn Fail2ban Iptable MiniDlna Ssmtp Samba Telebot openbeken
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par deennoo »

Merci pour le tuto/script

J'utilise également la teleinfo mais depuis une wemos

elle envoie a domoticz
index HC
Index HP
et conso actuel toute les minutes;

J'utilise un dummy smart P1

les données sont ainsi :

Code : Tout sélectionner

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=USAGE1;USAGE2;RETURN1;RETURN2;CONS;PROD
IDX = id of your device (This number can be found in the devices tab in the column "IDX")
USAGE1= energy usage meter tariff 1
USAGE2= energy usage meter tariff 2
RETURN1= energy return meter tariff 1
RETURN2= energy return meter tariff 2
CONS= actual usage power (Watt)
PROD= actual return power (Watt)
Par chance j'ai aussi acces a un OWL capté par un rflink.

Que ce soit avec l'un ou l'autre je rencontre une erreur :

Code : Tout sélectionner

Error: EventSystem: in Retour PV: [string "-- Script pour estimer la production d'un cha..."]:82: attempt to call global 'round' (a nil value)
Une idée stp ?
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par aleph0 »

Argh, oui ! Autant pour moi, j'ai oublié d'expliciter une fonction en postant le script :(

Il faut rajouter le code suivant juste après la ligne
"-- Bibliothèque de fonctions" :

Code : Tout sélectionner

function round(num, dec)
    if num == 0 then
        return 0
    else
        local mult = 10^(dec or 0)
        return math.floor(num * mult + 0.5) / mult
    end
end
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

Re: Retour d'expérience sur les kit solaire d'autoconsommation autoproduction

Message par deennoo »

aleph0 a écrit :Argh, oui ! Autant pour moi, j'ai oublié d'expliciter une fonction en postant le script :(

Il faut rajouter le code suivant juste après la ligne
"-- Bibliothèque de fonctions" :

Code : Tout sélectionner

function round(num, dec)
    if num == 0 then
        return 0
    else
        local mult = 10^(dec or 0)
        return math.floor(num * mult + 0.5) / mult
    end
end
en meme temps si j'ai pris le temps de lire le script, je l'aurais vu...merci
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
Répondre