<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lowtechlab.dokit.app/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bababa</id>
	<title>Wiki Test 1.43 - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lowtechlab.dokit.app/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bababa"/>
	<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/wiki/Sp%C3%A9cial:Contributions/Bababa"/>
	<updated>2026-09-22T17:17:45Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Dimensionner_et_faire_un_tracker_solaire_photovolat%C3%AFque_low_tech&amp;diff=152057</id>
		<title>Dimensionner et faire un tracker solaire photovolatïque low tech</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Dimensionner_et_faire_un_tracker_solaire_photovolat%C3%AFque_low_tech&amp;diff=152057"/>
		<updated>2025-11-29T09:50:19Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240723_184804.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:99,&amp;quot;top&amp;quot;:-95,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.14,&amp;quot;scaleY&amp;quot;:0.14,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/f/fc/Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240723_184804.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&lt;br /&gt;
Construction d&#039;un tracker photovoltaique à partir d&#039;un leve plaque&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Hard&lt;br /&gt;
|Duration=4&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=600&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=tracker, photovoltaique, phtv, dimensionnement&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_leveplaque.jpg&lt;br /&gt;
|Material=&lt;br /&gt;
tracker:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leve plaque BRD : 150€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
verin &amp;quot;Actionneur linéaire 12V DC , 1320LBS(6000N) 20 pouces (500mm) moteur électrique&amp;quot;  : 69€ sur aliexpress, disponible sur amazon un peu plus cher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hbridge L298n 7a: 11€ livré sur aliexpress (&amp;quot;Moteur d&#039;entrainement PWM 160W 7A 12V 24V, Module de commande L298, Signal de commande logique, optocoupleur, frein&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2 Pignon chaine 92T: &amp;quot;Pignon arrière 25H JO98/108/138 maillons 55T 65T 68T 70T 80T 92T, pour 47CC 49CC Mini Moto RL facades D343 Pit Pocket Bike&amp;quot; : 40€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2 Pignons &amp;quot;Pignon pour scooter électrique 8T 9T 11T 13T 25H 410 420, pour moteur à courant continu 25H JOMotor MY1020 BM1109 MY1016Z MY1018&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2 Pignons &amp;quot;Pignon de moteur électrique pour Pit-Bike, pignon de moteur à courant continu, pièces RL, D343, 9T, 11T, 13T, 25H, JOMotor 25H&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moteur &amp;quot;Moteur à engrenages CC à vis sans fin autobloquant, couple de bain, moteur de boîte de vitesses turbo en métal, inversé, basse vitesse, DC 12V, 24V, 200kg.cm&amp;quot; 62€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Module&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Module photovoltaique Voltech 2mx1m 375W: 200€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pilotage:&lt;br /&gt;
&lt;br /&gt;
raspberry: environ 100€&lt;br /&gt;
|Tools=&lt;br /&gt;
metre facom: 20€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
kit de poids soviétique: 60€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
niveau à bulle: 5€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
equerre alu: 6€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ebarbeuse: 50€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
perceuse: 50€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
poste à souder: 100€&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Dimensionner : mesurer les moments d&#039;inertie&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Nous posons deux axes pour notre module:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
un axe Oz perpendiculaire au plan du module (vertical lorsque le module est à plat) et un axe Ox paralelle au plan du module (horizontal lorsque le module est à plat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caractéristiques du module:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
poids 21,2kg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Longueur: 1,8m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Largeur: 1m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La théorie de wikipedia nous dit que le moment d&#039;inertie selon l&#039;axe Oz est donc :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jdelta=1/12*m*L (avec m masse du module et L longueur du module)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jdelta=1/12*1,8*21,2=3,18Nm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ndt: on assimile le module à une &amp;quot;barre&amp;quot; car ici l&#039;axe de rotatation est l&#039;axe paralelle au plan du rectangle formé par le module et non l&#039;axe perpendiculaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On verifie maintenant experiementalement :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Centrer le module sur le leve plaque et le mettre horizontalement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
verifier qu&#039;il n&#039;y a pas de vent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
faire le niveau de la surface sur laquelle le mat du leve plaque est posé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fixer un repere horizontal au niveau du bas du module&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
poser un poids de 500g à l&#039;extremité du module&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mesurer la distance entre la position à l&#039;équilibre et la position avec le poids&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On a:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jdelta=d*F&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec d distance en metre à l&#039;axe de rotation (bras de levier)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F force appliquée au solide (ici mg avec m masse du solide en kg, et g constance gravitationelle)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On a donc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jdelta=0,9*0,5*9,8=4,41Nm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On mesure la rotation : dans notre cas, la distance de rotation à l&#039;extrémité du module varie entre 3 et 10 cm. Les variations importantes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sont dus aux frotements de l&#039;axe qui peut etre en force ou coulisser plus librement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;ordre de grandeur du moment d&#039;inertie est bien vérifié.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le moment d&#039;inertie selon l&#039;axe Ox, il est plus difficile de vérifier expérimentalement, car l&#039;axe du lève plaque ne permet pas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
d&#039;avoir une position à l&#039;équilibre avec le poids du module (qui viendra caler sur la butée en subissant son poids)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On se contentera donc de la théorie:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La theorie nous dit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jdelta=1/12*m(b²+c²) avec m masse du module, b longueur du petit coté, c longueur du grand coté&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jdelta=1/12*21,2*(1,8²+1²)=7,49NM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce resultat theorique étant tres fortement inferieur au poids du module, on dimensionnera à partir de la force necessaire pour soulever le poids du module (l&#039;axe etant soumis au poids):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F=mg=21,2*9,8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Soit 200Nm en ordre de grandeur (1m de bras de levier en ordre de grandeur)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On a donc maintenant les caractéristiques pour dimensionner les moteurs d&#039;entrainement de notre module selon les deux axes de rotation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mais les trackers ont une prise au vent conséquente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si on souhaite prendre en compte la résitance au vent il faut mesurer la force appliqué au module selon la vitesse du vent:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fp​=1/2*ρ*v²*S*Cp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avec ​ρ densité de l&#039;air egal à 1,2 kg/m3 en ordre de grandeur pour des conditions de temperature et de pressions &amp;quot;standards&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
v vitesse du vent en m/s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
S surface de l&#039;objet en m²&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cp coefficient de pression sans dimension égal à 2 pour une plaque rectangulaire en métal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On a donc :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fp=1/2*1,2*1,8*2*v²=2,16*v²&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chatgpt nous donne les abaques des vitesses de vent en km/h et leurs conversions en m/s et le nom generique en météorologie:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calme : Moins de 1 km/h (Moins de 0.3 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Très légère brise : 1-5 km/h (0.3-1.5 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Légère brise : 6-11 km/h (1.6-3.0 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Petite brise : 12-19 km/h (3.4-5.4 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jolie brise : 20-28 km/h (5.5-7.9 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bonne brise : 29-38 km/h (8.0-10.7 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vent frais : 39-49 km/h (10.8-13.8 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vent modéré : 50-61 km/h (13.9-16.9 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vent assez fort : 62-74 km/h (17.2-20.6 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fort vent : 75-88 km/h (20.8-24.4 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tempête : 89-102 km/h (24.7-28.3 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Violente tempête : 103-117 km/h (28.6-32.5 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ouragan : Au moins 118 km/h (Au moins 32.8 m/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc une Force Fp qui peut varier de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un ordre de grandeur de 20N pour une legere brise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
à&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un ordre de grandeur de 2000N pour une tempete&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Ndt: la force de gravité d&#039;1 kg est d&#039;environ 10N donc la force de 2000N correspond en ordre de grandeur à la force de gravité de 200kg).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les moments d&#039;inertie sur les axes sont du meme ordre de grandeur (20Nm et 2000Nm) puisque les dimensions du modules sont de l&#039;ordre du metre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez construire un tracker qui resiste donc à des conditions de tempete, il est conseillé de dimensionner le tracker en conséquence&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
d&#039;une part avec des attaches au sol suffisante, d&#039;autres part avec une armature adaptée -voir astuce caravane a la fin de cette etape-, et désactiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lors des vents de tempetes ou plus important.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le dimensionnement pour la résistance au vent est une des raisons pour lesquelles les trackers sont cher et donc moins répandus que les installations photovoltaïques fixes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les moteurs pas à pas et servomoteurs (step motors en anglais) qui ont un couple suffisant pour résister à des vents importants sont chers, et ca peut se comprendre pour des moteurs conçu pour de la précision dans les pas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(par exemple là: &amp;lt;nowiki&amp;gt;https://www.distrelec.fr/fr/automatisation/moteurs-et-entrainements/moteurs-pas-pas-et-servocommandes/c/cat-L3D_525513&amp;lt;/nowiki&amp;gt; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour les verins (hydraulic cylinder en anglais), la force de poussée est généralement dans des ordres de grandeurs suffisant pour resister aux tempetes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Pour notre tutoriel low-tech, on sait que les moteurs de carotteuse ont des couples (torque en anglais) d&#039;un ordre de grandeur suffisant pour résiter à des tempêtes (1W correspond à 1 newton que multiplie 1 mètre par seconde, une carotteuse de 2000W devrait donc avoir un couple d&#039;un ordre de grandeur plus ou moins dans les 2000Nm).&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après vérification sur les caractéristiques techniques des perceuses, visseuses à choc, et caroteuses, et une vérification manuelle des résistances (frein/embreillage) lorsque le moteur n&#039;est pas alimenté, ce type de moteur ne conviendra pas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir dimensionner une résistance à des vents entre la violente tempête et l&#039;ouragan, on va donc procéder différemment:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
on trouve sur aliexpress à des prix abordables (70€) des moteurs pas à pas ou des moteurs à engrenage/vis sans fin dont le torque (le couple) est d&#039;un ordre de grandeur de 20Nm (200kgcm). On va donc utiliser ce moteur avec deux réducteurs 1:10 pour obtenir un couple résistant à 2000Nm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rappel : le couple exprimé en Nm est une force de rotation produite par le moteur qui se calcule selon le meme principe que le moment d&#039;inertie: la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les transmissions par couroie ou chaine permettent de réduire ce torque/couple, et cela se calcule très simplement:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C1=(R1/R2)*C2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avec C1 couple sur la poulie 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R1 rayon de la poulie 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C2 couple sur la poulie2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R2 rayon de la poulie 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le rayon etant directement proportionnel aux nombre de dents d&#039;une roue dentée (un pignon de vélo ou de moto par exemple), on peut facilement calculer les rapports de transmission en divisant le nombre de dents du grand pignon par le nombre de dents du petit pignon (en vérifiant que cest bien le meme standard de dents).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi une transmission 80 dents/10 dents (80T / 10T en anglais avec T pour tooth) produira une réduction de 1:8, comme ici sur amazon pour du vélo électrique (&amp;quot;Keenso Kit Chaîne et Pignon 80T 25H 34mm 3 Trous Pignon 10T H Trou Chaîne Pignon 146 Maillons Chaîne&amp;quot;) à 30€.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On remarquera que les transmission de vélo standard ont des rapport de réduction maximum de 50dents/11dents, soit une réduction de 1:5, ce qui est insuffisant pour des réductions efficaces sans multiplier les poulies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est difficile de trouver des transmissions avec des réductions de 1:10, mais on en trouve sur aliexpress et on pourra assez facilement adapter un pédalier de vélo sur lequel on va venir souder des pignons, ce qui nous permettra de faire une reduction 1:100 avec un seul axe ajouté en plus de l&#039;axe principal et de l&#039;axe du moteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On va donc à utiliser un moteur pas à pas ou un moteur à engrenage avec vis sans fin (test de résistance non alimenté à réception des pièces) commandé par un raspberry pi (mais le porte plaque etant sur roulette, on prendra la précaution de ranger le tracker en cas de tempete ;))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Astuce caravane: pour dimensionner l&#039;épaisseur de l&#039;armature en métal, les normes modernes semblent être moins faites sur des bases scientifiques que sur des bases commerciales pour faite vendre. On pourra donc utilement mesurer l&#039;épaisseur de vieux matériel (années 70). Par exemple l&#039;armature de cette vieille caravane homologuée carte grise 750kg a une armature métal de 5mm d&#039;épaisseur. On pourra ensuite faire une règle de 3 pour vérifier que l&#039;épaisseur de notre armature est convenable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C&#039;est rustique (les calculs de resistance des matériaux rigoureux sont complexes), mais ca permet d&#039;avoir une première approximation &amp;quot;a visto de nas&amp;quot; comme on dit en gascon&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie1.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie3.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie4.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie5.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie6.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240530_093819.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Test la resistance des moteurs&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Voir vidéos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le moteur rotatif (&amp;quot;Moteur à engrenages CC à vis sans fin autobloquant, couple de bain, moteur de boîte de vitesses turbo en métal, inversé, basse vitesse, DC 12V, 24V, 200kg.cm&amp;quot; sur aliexpress) tient bien à 20Nmà vide hors tension et en rotation sous tension.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rappel : torque ou couple = moment d&#039;inertie engendré par le moteur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=force*distance à l&#039;axe du moteur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ici 4kg à 0,5m=9,8*4*0,5=20Nm (en ordre de grandeur)&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_resistance_a_vide_VID_20240529_185214.mp4&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_resistance_sous_tension_VID_20240529_185517.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Dimensionner : mesurer les angles et débattements&lt;br /&gt;
|Step_Content=&lt;br /&gt;
On va d&#039;abord s&#039;interesser à la trajectoire solaire ou solar trajectory en anglais.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On mesure typiquement la position du soleil selon deux systemes de coordonnées:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le systeme equatorial avec des coordonnées exprimées en:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ascension droite equivalente à la longitude terrestre mesurée en heures minutes secondes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
déclinaison équivalente à la latitude terrestre mesurée en degré minutes secondes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le systeme horizontal avec des coordonnées exprimées en:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
degré d&#039;azimut&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
degré d&#039;altitude ou de hauteur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les abaques de trajectoire solaire (par exemple disponibles ici : https://www.astrolabe-science.fr/diagramme-solaire-azimut-hauteur ) nous donnent les trajectoires du soleil dans une journée (généralement plusieurs journées typiques de plusieurs saisons) exprimées en degrés horizontal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour lire un graphique de ce type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
si on suit le graphique inséré dans ce tuto et issu du lien ci-dessus, lorsqu&#039;on suit par exemple la courbe rouge pour paris, voici ce qu&#039;on peut lire:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le 21 décembre, lorsqu&#039;on regarde le sud, le soleil suit une trajectoire qui commence à -50° d&#039;azimut (vers l&#039;Est sur l&#039;axe horizontal) lorsque le soleil se lève, puis lorsque le soleil va vers l&#039;ouest tout au long de la journée (on suit la courbe rouge), il prend de la hauteur jusqu&#039;à atteindre 17° de hauteur (sur l&#039;axe vertical) à midi (position 0° d&#039;azimut sur l&#039;axe horizontal) puis redescend jusqu&#039;à 0° de heuteur lorsqu&#039;il se couche (vers l&#039;Ouest sur l&#039;axe horizontal).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour paris, on a :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
un degré d&#039;azimut qui varie de -130° à +130° selon l&#039;heure et la saison&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
un degré d&#039;altitude ou de hauteur qui varie de 0° à 64° selon l&#039;heure et la saison&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour notre tracker,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour calculer notre débattement horizontal (selon un axe Oz vertical si le module est posé au sol), on n&#039;a pas vraiment de contrainte sur le lève plaque utilisé puisque l&#039;axe tourne à 360° sans probleme. Donc on pourra suivre le soleil de -130° d&#039;azimut à +130° d&#039;azimut sans probleme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour calculer notre debattement vertical  (selon l&#039;axe Ox horizontal si le module est posé au sol), on a une contrainte sur l&#039;angle maximal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
N&#039;ayant pas de décimetre sous la main, on va utiliser pythagore (voir photo):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
64cm*150cm*134cm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
socatoa:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sinus phi=opposé/hypothenus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sinus phi=134/150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sinus phi=0,8933&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
phi=1,1046 rad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
phi=1,1046*180/pi=63°&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On a donc une contrainte pour notre leve plaque qui accepte des angles selon l&#039;axe Ox de 0° à 63°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le tracker est à son angle maximum (63°), on est perpendiculaire au soleil lorsque le soleil est à un angle phi de &lt;br /&gt;
phi=180-63-90=27°&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le soleil a un angle plus faible que 27°, le tracker ne pourra pas suivre en étant perpendiculaire au soleil.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On voit cependant que la butée est assurée par le ressort (sur la photo on voit la marque au niveau de la peinture). On peut donc gagner en amplitude sur la butée en perçant et en faisant une encoche dans la potence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La mesure manuelle du débattement entre l&#039;axe du tube sur lequel est fixé la manivelle et le dos du module lorsque le leve plaque est incliné à son angle maximum nous donne 42cm. (voir photo)&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pythagore1.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pythagore2.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pythagore3.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_butee1.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_butee2.JPG&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_debattement.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Installer le verin sur l&#039;axe horizontal&lt;br /&gt;
|Step_Content=&lt;br /&gt;
On va fixer une potence sur la partie fixe du porte plaque qui tourne avec l&#039;axe vertical, afin d&#039;y fixer une tige sur laquelle on fixera le verin qui pourra tourner avec l&#039;axe vertical afin d&#039;ajuster l&#039;angle sur l&#039;axe horizontal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On commence par fixer la potence en metal en la soudant à la partie fixe vis à vis de l&#039;axe vertical. Il faut bien poncer la peinture avant de faire la soudure. (voir photo). On fait ici une soudure à l&#039;arc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On perce ensuite une tige en metal qu&#039;on vient boulonner à la potence (voir photo).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On perce et on fixe également une tige en métal qu&#039;on vient boulonner à la partie mobile qui ajuste l&#039;angle sur l&#039;axe horizontal, cad les &amp;quot;bras&amp;quot; qui permettent de porter la plaque ou le module photovoltaïque (voir photo).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On fixe ensuite le verin aux deux tiges en métal. Le verin est équipé de fixations avec des chevilles qui permettent de &amp;quot;suivre&amp;quot; l&#039;angle pris par les tiges sur lesquelles il est fixé. (voir photo)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remarquez qu&#039;on a pris une tige en métal en angle droit afin d&#039;éviter que cette fixation soit entièrement libre. Elle vient buter sur une partie de la tige, ce qui permet par la suite d&#039;étaloner plus précisément l&#039;amplitude du verin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On teste ensuite la course du verin. Il faudra faire attention, car on arrive sur la butée du porte plaque à une avancée du verin d&#039;environ 40cm et ce modèle a une course de 50cm. (voir photos)&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_potence.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_tige1.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_tige2.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_verin1.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_verin2.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_verincourse.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Augmenter l&#039;angle maximum du lève plaque&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Après observation des éléments bloquant, on va modifier la potence pour éviter la butée lorsque le soleil a un degré d&#039;altitude inférieur à 27°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour cela on va :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-laisser passer le ressort en évidant la potence (pour éviter que le ressort fasse butée)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-augmenter l&#039;angle en abaissant la fixation du ressort en perçant la potence&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-augmenter l&#039;angle en coupant les bords de la potence&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir photos :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1/2: observation dessus/dessous&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3/4: demontage potence&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4/5 : observation dessous, angle max à l&#039;equerre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On arrive ainsi à un angle maximum de quasi 90° et on peut donc suivre le soleil sous tous les angles!&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_observation_dessus.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_observation_dessous.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_demontee1.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_demontee2.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_apres_dessous.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_apres_angle_max_90.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Tester les commandes du verin et du moteur rotatif&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Pour controller le verin, on va utiliser un raspberry pi, l&#039;ordinateur monocarte le plus répandu.&lt;br /&gt;
Il est doté de d&#039;une série 40 pins, qu&#039;on peut connecter à divers appareils, appelés &amp;quot;controlleur GPIO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Une première lecture des tutos et librairies disponibles pour utiliser le gpio et des un certain temps passer à tester des hypothèses éronnées pour installer correctement en utilisant les bonnes versions m&#039;amène à vous &lt;br /&gt;
exposer les options possibles:&lt;br /&gt;
&lt;br /&gt;
-système d&#039;exploitation :&lt;br /&gt;
&lt;br /&gt;
*dietpi  images (debian) disponibles ici:  https://dietpi.com/#download  (voir mon autre tuto ici pour l&#039;installation et l&#039;activation du wifi : https://wiki.lowtechlab.org/wiki/Serveur_orangepi-raspberry_nextcloud_en_photovolta%C3%AFque_autonome)&lt;br /&gt;
&lt;br /&gt;
*raspberry pi os (systeme d&#039;exploitation par défaut) images disponibles ici: https://www.raspberrypi.com/software/operating-systems/&lt;br /&gt;
&lt;br /&gt;
Archives et versions de systemes d&#039;exploitation utiles pour la rétrocompatibilité (tout lecteur soucieux de l&#039;informatique low tech est incité à télécharger et garder des copies en local de ces archives et les partager en torrent!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;dietpi:&lt;br /&gt;
&lt;br /&gt;
https://dietpi.com/downloads/images/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;raspberry pi os:&lt;br /&gt;
&lt;br /&gt;
https://downloads.raspberrypi.org/raspbian/images&lt;br /&gt;
&lt;br /&gt;
si vous utilisez wheezy,&lt;br /&gt;
&lt;br /&gt;
attention à bien mettre a jour votre /etc/apt/sources.list en faisant:&lt;br /&gt;
&amp;lt;pre&amp;gt;echo &amp;quot;deb http://legacy.raspbian.org/raspbian/ wheezy main contrib non-free rpi&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: ChatGPT nous donne les dates suivantes de sortie des raspberry:&lt;br /&gt;
&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model B&#039;&#039;&#039; : 29 février 2012&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model A&#039;&#039;&#039; : 4 février 2013&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model B+&#039;&#039;&#039; : 14 juillet 2014&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model A+&#039;&#039;&#039; : 10 novembre 2014&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 2 Model B&#039;&#039;&#039; : 2 février 2015&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Zero&#039;&#039;&#039; : 30 novembre 2015&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 3 Model B&#039;&#039;&#039; : 29 février 2016&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Zero W&#039;&#039;&#039; : 28 février 2017&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 3 Model B+&#039;&#039;&#039; : 14 mars 2018&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 3 Model A+&#039;&#039;&#039; : 15 novembre 2018&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 4 Model B&#039;&#039;&#039; : 24 juin 2019&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 400&#039;&#039;&#039; : 2 novembre 2020&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Pico&#039;&#039;&#039; : 21 janvier 2021&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Zero 2 W&#039;&#039;&#039; : 28 octobre 2021&lt;br /&gt;
&lt;br /&gt;
On espère que c&#039;est vrai (ca vient de chatgpt), mais vous pouvez vérifier sur ce qui est écrit sur le pcb de votre carte.&lt;br /&gt;
&lt;br /&gt;
Pour vérifier la version de votre raspberry sous raspberry pi os si vous ne savez pas quelle version cest(voir photo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo usermod -a G gpio pi&lt;br /&gt;
pinout&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajustez avec le système d&#039;exploitation qui vous parait le plus pertinent au regard des filtres de pertinence que vous utilisez. Vous avez la liste des anciennes versions d&#039;os de dietpi et de raspberry pi os au cas où les versions les plus récentes ne fonctionneraient plus (et je me repette : tout lecteur soucieux de l&#039;informatique low tech est incité à télécharger et garder des copies en local de ces archives et les partager en torrent!).&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;install, comme d&#039;habitude, telecharger balenaetcher, flasher une clé usb avec l&#039;image téléchargée,&lt;br /&gt;
booter.&lt;br /&gt;
Les login/mdp par défaut pour dietpi sont root/dietpi et pour raspberry pi os pi/raspberry (attention au clavier en qwerty par défaut sous raspberry pi os au démmarage).&lt;br /&gt;
Pour configurer le clavier, les locales, la timezone et le wifi, faire &lt;br /&gt;
&amp;lt;pre&amp;gt;sudo dietpi-config&amp;lt;/pre&amp;gt; sous dietpi et &amp;lt;pre&amp;gt;sudo raspi-config&amp;lt;/pre&amp;gt; sous raspberry pi.&lt;br /&gt;
&lt;br /&gt;
-driver utilisé pour controler le gpio&lt;br /&gt;
&lt;br /&gt;
*RPi.GPIO(dev independant) ou RPi.GPIO2(dev redhat, repo recent)&lt;br /&gt;
&lt;br /&gt;
Essais infructueux avec pip et le depot pypi (erreur de compilations etc.). &lt;br /&gt;
Installer en passant en root avec la commande &lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -s &amp;lt;/pre&amp;gt;&lt;br /&gt;
le plus simple est alors d&#039;installer une version déjà compilée avec apt:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-rpi.gpio&amp;lt;/pre&amp;gt;&lt;br /&gt;
faire un test pour voir si ca fonctionne bien (toujours en etant utilisateur root):&lt;br /&gt;
&amp;lt;pre&amp;gt;python3&lt;br /&gt;
import RPi.GPIO&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se reporter à la doc de sourceforge, plus explicite que celle de pypi:&lt;br /&gt;
http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*gpiozero&lt;br /&gt;
&lt;br /&gt;
installé par défaut sous raspberry pi&lt;br /&gt;
 &lt;br /&gt;
sous dietpi faire &lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3 python3-venv python3-pip&lt;br /&gt;
python3 -m venv venv&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
pip install lgpio gpiozero&lt;br /&gt;
ou&lt;br /&gt;
sudo apt install python3-gpiozero&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le premier point à comprendre est la numérotation des fiches:&lt;br /&gt;
les pins (fiches) ont chacune un numéro qui va de 1 à 40 en suivant un ordre de bas en haut et de gauche à droite, et chaque pin a également un numéro GPIO qui est différent du numero de pin.&lt;br /&gt;
&lt;br /&gt;
Pour cela on peut chercher les infos sur internet: &lt;br /&gt;
https://wiki.lowtechlab.org/wiki/Serveur_orangepi-raspberry_nextcloud_en_photovolta%C3%AFque_autonome&lt;br /&gt;
ou taper les commande suivantes dans raspberry pi os (voir image)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo usermod -aG gpio votre_user&lt;br /&gt;
pinout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans ce tuto, que ce soit avec gpiozero ou RPi.GPIO, on utilisera la numerotation GPIO et pas la numérotation pin&lt;br /&gt;
&lt;br /&gt;
On branche les GPIO 2 et 4 (alim +5V) aux deux fiches +5V du HBrdige &lt;br /&gt;
On branche les GPIO 6 et 7 (Ground, la terre) aux deux fiches GND du HBrdige&lt;br /&gt;
On branche les GPIO 23 et 16 à l&#039;interrupteur 3 du HBridge &lt;br /&gt;
Pour tester le &amp;quot;enable&amp;quot; du HBridge, on branche les GPIO 20 et 21 au ENA du HBridge&lt;br /&gt;
&lt;br /&gt;
On  utilise ensuite les scripts suivants :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import time&lt;br /&gt;
import RPi.GPIO as GPIO&lt;br /&gt;
import gpiozero&lt;br /&gt;
&lt;br /&gt;
def forwardzero(wait):&lt;br /&gt;
    led16=gpiozero.LED(16) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    led20=gpiozero.LED(20) #enable&lt;br /&gt;
    led21=gpiozero.LED(21) #enable&lt;br /&gt;
    led1=gpiozero.LED(1)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forwardzero&amp;quot;)&lt;br /&gt;
        #cas où le hbridge necessite un signal enable&lt;br /&gt;
        led21.off()&lt;br /&gt;
        led20.on()&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #mettre un signal sur l&#039;interrupteur 1&lt;br /&gt;
        led23.on()&lt;br /&gt;
        led16.off()&lt;br /&gt;
        #laisser le signal actif le temps de wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #eteindre le signal sur l&#039;interrupteur&lt;br /&gt;
        led23.off()&lt;br /&gt;
        led20.off()&lt;br /&gt;
    except KeyboardnInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur l&#039;interrupteur 1&lt;br /&gt;
        led16.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        led20.off()&lt;br /&gt;
        led21.off()&lt;br /&gt;
def backwardzero(wait):&lt;br /&gt;
    led1=gpiozero.LED(1)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    led16=gpiozero.LED(16) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    led20=gpiozero.LED(20) #enable&lt;br /&gt;
    led21=gpiozero.LED(21) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backwardzero&amp;quot;)&lt;br /&gt;
        #signal zero sur interupteur 1&lt;br /&gt;
        led16.on()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #cas où le hbrige necessite un signal sur enable&lt;br /&gt;
        led20.off()&lt;br /&gt;
        led21.on()&lt;br /&gt;
        #signal sur interrupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #signal off sur interrupteur&lt;br /&gt;
        led16.off()&lt;br /&gt;
        led21.off()&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 1&lt;br /&gt;
        led16.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur l&#039;interupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        led20.off()&lt;br /&gt;
        led21.off()&lt;br /&gt;
&lt;br /&gt;
#pin16 gpio23&lt;br /&gt;
#pin36 gpio25&lt;br /&gt;
&lt;br /&gt;
def forward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(16,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(1,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forward&amp;quot;)&lt;br /&gt;
        GPIO.output(1,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.LOW)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi, ca n&#039;enleve pas les +3V&lt;br /&gt;
def backward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(1,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(16,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backward&amp;quot;)&lt;br /&gt;
        GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi ca n&#039;enleve pas les +3V&lt;br /&gt;
forward(2) #rotation horaire motor2&lt;br /&gt;
backward(2) #rotation antihoraire motor2&lt;br /&gt;
forwardzero(10) #verin extension motor1 111 max&lt;br /&gt;
backwardzero(10) #verin retractation motor1 107 max&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GPIO.BCM permet d&#039;utiliser la numerotation GPIO&lt;br /&gt;
GPIO.HIGH envoie un signal de +3V dans la fiche concernée&lt;br /&gt;
GPIO.LOW remet le signal à 0V (GND, la terre)&lt;br /&gt;
gpiozero fait la meme chose avec les methodes .on() et .off()&lt;br /&gt;
&lt;br /&gt;
Update 31.05.24 : vous l&#039;attendiez, voilà l&#039;update du jour avec le hbridge made in europe, ca roule, voir vidéo! :)&lt;br /&gt;
Update de l&#039;étalonnage rapidement à reception d&#039;un truc pour mesurer les angles un peu pratique.&lt;br /&gt;
&lt;br /&gt;
Remarquez que les fiches 20 et 21 ne sont pas branchées au hbridge. &lt;br /&gt;
Le &amp;quot;pwm&amp;quot; (pulse width modulation) n&#039;est pas utilisé &lt;br /&gt;
pour &amp;quot;activer&amp;quot; (enable dans le code) le moteur car des cavaliers placés sur les &lt;br /&gt;
deux fiches ENA du hbridge suffisent (ici on n&#039;a pas besoin de moduler la vitesse du moteur).&lt;br /&gt;
&lt;br /&gt;
Update 17.12.24:&lt;br /&gt;
&lt;br /&gt;
Chez moi, la configuration qui semble passer les interférences est la suivante:&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi Model B&lt;br /&gt;
&lt;br /&gt;
Dietpi&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_apt_install.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pinout.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_cablage_pi.JPG&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_moteurs_pi.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Verin hydraulique pour la rotation d&#039;axe vertical&lt;br /&gt;
|Step_Content=&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;s&amp;gt;&amp;lt;big&amp;gt;Fixer les poulies et la transmission 1:100 pour le moteur rotatif&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;On commence par récupérer deux pédaliers sur des vélos d&#039;occasion à l&#039;ébarbeuse en prenant soin de garder une tige du cadre.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
On va venir y souder les pignons 92T (92 dents).&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;On soude ensuite les pignons 8T (8 dents) dessus.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;On soude un pignon 8T sur un pignon avec une clavette qui s&#039;adapte à l&#039;axe du moteur.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;On découpe une tige en fer et on soude un aplat le long de l&#039;axe du lève plaque sur lequel on va venir fixer avec des boulons les tiges découpées dans les cadres de vélo qui prolongent le pédalier ainsi qu&#039;une tige sur laquelle on va fixer le moteur.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;On assemble et on boulonne.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Update à réceptiond de la 3eme chaine et en attendant de réfléchir à un moyen de régler les tensions de chaine.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Update du 11.6.24: les contraintes de l&#039;axe du leve plaque font qu&#039;on ne peut y fixer un grand pignon pour bénéficier d&#039;un rapport de réduction favorable sur la derniere chaine de transmission. Malgré les réductions des transmissions des autres poulies, le lève plaque n&#039;est pas entrainé en rotation (voir vidéo).&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;update du 16.6.24: réception du verin supplémentaire, date livraison estimée : 28 juin-2juillet&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
On va donc entrainer la rotation avec deux verins. Update à réception des verins fin juin (en stage et non dispo pour update ces prochaines semaines)&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La tension de chaine etant mauvaise, on remplace les transmissions par un verrin hydraulique permettant de faire la rotation mais sur un angle réduit (environ 70° faute de verrin telescopique à plusieurs brins)&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_134410.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_174848.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_175050.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_202715.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240715_133706.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240723_184821.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Etalonner les moteurs&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Le code mis à jour est le suivant: on définit des dictionnaire qui associe chaque angle recherché à un temps d&#039;activation du moteur (à tester à la main et à mesurer)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Etalonnage&lt;br /&gt;
#dict_angle_rotation= sun_degre_azimut:motoractivationtime&lt;br /&gt;
dict_angle_verin={1:0,&lt;br /&gt;
                2:0,&lt;br /&gt;
                3:0,&lt;br /&gt;
                4:0,&lt;br /&gt;
                5:0,&lt;br /&gt;
                6:0,&lt;br /&gt;
                7:0,&lt;br /&gt;
                8:0,&lt;br /&gt;
                9:0,&lt;br /&gt;
                10:0,&lt;br /&gt;
                11:1,&lt;br /&gt;
                12:1,&lt;br /&gt;
                13:2,&lt;br /&gt;
                14:3,&lt;br /&gt;
                15:4,&lt;br /&gt;
                16:5,&lt;br /&gt;
                17:6,&lt;br /&gt;
                18:7,&lt;br /&gt;
                19:8,&lt;br /&gt;
                20:9,&lt;br /&gt;
                21:10,&lt;br /&gt;
                22:11,&lt;br /&gt;
                23:12,&lt;br /&gt;
                24:13,&lt;br /&gt;
                25:14,&lt;br /&gt;
                26:15,&lt;br /&gt;
                27:16,&lt;br /&gt;
                28:16,&lt;br /&gt;
                29:17,&lt;br /&gt;
                30:18,&lt;br /&gt;
                31:19,&lt;br /&gt;
                32:20,&lt;br /&gt;
                33:21,&lt;br /&gt;
                34:22,&lt;br /&gt;
                35:23,&lt;br /&gt;
                36:24,&lt;br /&gt;
                37:25,&lt;br /&gt;
                38:27,&lt;br /&gt;
                39:28,&lt;br /&gt;
                40:29,&lt;br /&gt;
                41:30,&lt;br /&gt;
                42:32,&lt;br /&gt;
                43:33,&lt;br /&gt;
                44:34,&lt;br /&gt;
                45:35,&lt;br /&gt;
                46:37,&lt;br /&gt;
                47:38,&lt;br /&gt;
                48:39,&lt;br /&gt;
                49:41,&lt;br /&gt;
                50:42,&lt;br /&gt;
                51:44,&lt;br /&gt;
                52:45,&lt;br /&gt;
                53:47,&lt;br /&gt;
                54:48,&lt;br /&gt;
                55:50,&lt;br /&gt;
                56:51,&lt;br /&gt;
                57:52,&lt;br /&gt;
                58:54,&lt;br /&gt;
                59:56,&lt;br /&gt;
                60:58,&lt;br /&gt;
                61:59,&lt;br /&gt;
                62:59,&lt;br /&gt;
                63:59,&lt;br /&gt;
                64:60,&lt;br /&gt;
                65:63,&lt;br /&gt;
                66:64,&lt;br /&gt;
                67:65,&lt;br /&gt;
                68:66,&lt;br /&gt;
                69:68,&lt;br /&gt;
                70:68,&lt;br /&gt;
                71:71,&lt;br /&gt;
                72:73,&lt;br /&gt;
                73:75,&lt;br /&gt;
                74:77,&lt;br /&gt;
                75:79,&lt;br /&gt;
                76:81,&lt;br /&gt;
                77:82,&lt;br /&gt;
                78:83,&lt;br /&gt;
                79:85,&lt;br /&gt;
                80:86,&lt;br /&gt;
                81:87,&lt;br /&gt;
                82:89,&lt;br /&gt;
                83:91,&lt;br /&gt;
                84:94,&lt;br /&gt;
                85:96,&lt;br /&gt;
                86:98,&lt;br /&gt;
                87:100}&lt;br /&gt;
dict_angle_rotation={&lt;br /&gt;
                0:41,&lt;br /&gt;
                1:42,&lt;br /&gt;
                2:43,&lt;br /&gt;
                3:44,&lt;br /&gt;
                4:45,&lt;br /&gt;
                5:46,&lt;br /&gt;
                6:47,&lt;br /&gt;
                7:48,&lt;br /&gt;
                8:49,&lt;br /&gt;
                9:50,&lt;br /&gt;
                10:52,&lt;br /&gt;
                11:53,&lt;br /&gt;
                12:54,&lt;br /&gt;
                13:55,&lt;br /&gt;
                14:56,&lt;br /&gt;
                15:57,&lt;br /&gt;
                16:58,&lt;br /&gt;
                17:59,&lt;br /&gt;
                18:60,&lt;br /&gt;
                19:61,&lt;br /&gt;
                20:63,&lt;br /&gt;
                21:64,&lt;br /&gt;
                22:65,&lt;br /&gt;
                23:66,&lt;br /&gt;
                24:67,&lt;br /&gt;
                25:68,&lt;br /&gt;
                26:69,&lt;br /&gt;
                27:70,&lt;br /&gt;
                28:71,&lt;br /&gt;
                29:72,&lt;br /&gt;
                30:73,&lt;br /&gt;
                31:75,&lt;br /&gt;
                32:76,&lt;br /&gt;
                33:77,&lt;br /&gt;
                34:78,&lt;br /&gt;
                35:79,&lt;br /&gt;
                36:82,&lt;br /&gt;
                37:82,&lt;br /&gt;
                38:82,&lt;br /&gt;
                39:82,&lt;br /&gt;
                40:82,&lt;br /&gt;
                41:82,&lt;br /&gt;
                42:82,&lt;br /&gt;
                43:82,&lt;br /&gt;
                44:82,&lt;br /&gt;
                45:82,&lt;br /&gt;
                46:82,&lt;br /&gt;
                47:82,&lt;br /&gt;
                -1:39,&lt;br /&gt;
                -2:37,&lt;br /&gt;
                -3:35,&lt;br /&gt;
                -4:33,&lt;br /&gt;
                -5:32,&lt;br /&gt;
                -6:30,&lt;br /&gt;
                -7:29,&lt;br /&gt;
                -8:27,&lt;br /&gt;
                -9:26,&lt;br /&gt;
                -10:25,&lt;br /&gt;
                -11:23,&lt;br /&gt;
                -12:22,&lt;br /&gt;
                -13:19,&lt;br /&gt;
                -14:18,&lt;br /&gt;
                -15:17,&lt;br /&gt;
                -16:16,&lt;br /&gt;
                -17:15,&lt;br /&gt;
                -18:14,&lt;br /&gt;
                -19:6,&lt;br /&gt;
                -20:2,&lt;br /&gt;
                -21:1,&lt;br /&gt;
                -22:0,&lt;br /&gt;
                }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240604_134029.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Coder le tracking en &amp;quot;dur&amp;quot;&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Le code mis à jour est le suivant&lt;br /&gt;
Maj 21.12.24: raspberry model b, 2 vérins, ut datetime, code commenté (utile pour se rappeler de ce qu&#039;on a codé il y a 6 mois!).&lt;br /&gt;
&lt;br /&gt;
video du re-etalonage du 21.12.24 qui montre que les deux verins fonctionnent (enfin!). Mais ca ne marche pas, le module suit le soleil mais avec des angles corrompus : sun.az et sun.alt ne sont pas bons, possiblement probleme de datetime ou de système de coordonnées pas adaptés à l&#039;exercice.&lt;br /&gt;
&lt;br /&gt;
Possible fix: faire un dispositif de tracking qui actionne les verins avec 4 celulles photovoltaïques:&lt;br /&gt;
&lt;br /&gt;
deux celulle alignées horizontalement coté gauche et droit du panneau, deux celulles alignées verticalement coté haut et bas du panneau. Calculer le differentiel de tension entre les deux paires de celulles, relier chaque paire à un hbridge electronique qui active le verin lorsque le differentiel de tension dépasse un &amp;quot;treshold&amp;quot; (hypothese differentiel nul quand le panneau est perpendiculaire au soleil, et positif ou négatif dans le cas contraire), trouver un hbridge dont le treshold est adapté pour pas que ca actionne continuellement les verins autour de la position d&#039;équilibre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import time&lt;br /&gt;
import RPi.GPIO as GPIO&lt;br /&gt;
import gpiozero&lt;br /&gt;
import ephem&lt;br /&gt;
import datetime&lt;br /&gt;
def forwardzero(wait):&lt;br /&gt;
    led24=gpiozero.LED(24) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    #led20=gpiozero.LED(20) #enable&lt;br /&gt;
    #led21=gpiozero.LED(21) #enable&lt;br /&gt;
    led8=gpiozero.LED(8)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forwardzero&amp;quot;)&lt;br /&gt;
        #cas où le hbridge necessite un signal enable&lt;br /&gt;
        #led21.on()&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #mettre un signal sur l&#039;interrupteur 1&lt;br /&gt;
        led23.on()&lt;br /&gt;
        led24.off()&lt;br /&gt;
        #laisser le signal actif le temps de wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #eteindre le signal sur l&#039;interrupteur&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #eteindre le hbridge enable&lt;br /&gt;
        #led21.off()&lt;br /&gt;
        #led20.off()&lt;br /&gt;
    except KeyboardnInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur l&#039;interrupteur 1&lt;br /&gt;
        led24.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #led21.off()&lt;br /&gt;
def backwardzero(wait):&lt;br /&gt;
    led8=gpiozero.LED(8)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    led24=gpiozero.LED(24) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    #cas où le hbridge necessite un signal enable&lt;br /&gt;
    #led20=gpiozero.LED(20) #enable&lt;br /&gt;
    #led21=gpiozero.LED(21) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backwardzero&amp;quot;)&lt;br /&gt;
        #signal zero sur interupteur 1&lt;br /&gt;
        led24.on()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #cas où le hbrige necessite un signal sur enable&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #led21.on()&lt;br /&gt;
        #signal sur interrupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #signal off sur interrupteur&lt;br /&gt;
        led24.off()&lt;br /&gt;
        #hbridge enable&lt;br /&gt;
        #led21.off()&lt;br /&gt;
        #led20.off()&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 1&lt;br /&gt;
        led24.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur l&#039;interupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #led21.off()&lt;br /&gt;
&lt;br /&gt;
#pin16 gpio23&lt;br /&gt;
#pin36 gpio25&lt;br /&gt;
&lt;br /&gt;
def forward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(24,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(8,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    #GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    #GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forward&amp;quot;)&lt;br /&gt;
        GPIO.output(8,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi, ca n&#039;enleve pas les +3V&lt;br /&gt;
def backward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(8,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(24,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1    &lt;br /&gt;
    #GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    #GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backward&amp;quot;)&lt;br /&gt;
        #GPIO.output(21,GPIO.HIGH)        &lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)        &lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi ca n&#039;enleve pas les +3V&lt;br /&gt;
&lt;br /&gt;
#Courses min max:&lt;br /&gt;
#forward(41) #rotation horaire motor2&lt;br /&gt;
#backward(90) #rotation antihoraire motor2&lt;br /&gt;
#forwardzero(10) #verin extension motor1 111 max&lt;br /&gt;
#backwardzero(2) #verin retractation motor1 107 max&lt;br /&gt;
#forwardzero(90)&lt;br /&gt;
&lt;br /&gt;
#Etalonnage:&lt;br /&gt;
#dict_angle_verin formating: &amp;quot;degre_alt:motor activation time (retractation)&amp;quot;&lt;br /&gt;
dict_angle_verin={1:0,&lt;br /&gt;
                2:0,&lt;br /&gt;
                3:0,&lt;br /&gt;
                4:0,&lt;br /&gt;
                5:0,&lt;br /&gt;
                6:0,&lt;br /&gt;
                7:0,&lt;br /&gt;
                8:0,&lt;br /&gt;
                9:0,&lt;br /&gt;
                10:0,&lt;br /&gt;
                11:1,&lt;br /&gt;
                12:1,&lt;br /&gt;
                13:2,&lt;br /&gt;
                14:3,&lt;br /&gt;
                15:4,&lt;br /&gt;
                16:5,&lt;br /&gt;
                17:6,&lt;br /&gt;
                18:7,&lt;br /&gt;
                19:8,&lt;br /&gt;
                20:9,&lt;br /&gt;
                21:10,&lt;br /&gt;
                22:11,&lt;br /&gt;
                23:12,&lt;br /&gt;
                24:13,&lt;br /&gt;
                25:14,&lt;br /&gt;
                26:15,&lt;br /&gt;
                27:16,&lt;br /&gt;
                28:16,&lt;br /&gt;
                29:17,&lt;br /&gt;
                30:18,&lt;br /&gt;
                31:19,&lt;br /&gt;
                32:20,&lt;br /&gt;
                33:21,&lt;br /&gt;
                34:22,&lt;br /&gt;
                35:23,&lt;br /&gt;
                36:24,&lt;br /&gt;
                37:25,&lt;br /&gt;
                38:27,&lt;br /&gt;
                39:28,&lt;br /&gt;
                40:29,&lt;br /&gt;
                41:30,&lt;br /&gt;
                42:32,&lt;br /&gt;
                43:33,&lt;br /&gt;
                44:34,&lt;br /&gt;
                45:35,&lt;br /&gt;
                46:37,&lt;br /&gt;
                47:38,&lt;br /&gt;
                48:39,&lt;br /&gt;
                49:41,&lt;br /&gt;
                50:42,&lt;br /&gt;
                51:44,&lt;br /&gt;
                52:45,&lt;br /&gt;
                53:47,&lt;br /&gt;
                54:48,&lt;br /&gt;
                55:50,&lt;br /&gt;
                56:51,&lt;br /&gt;
                57:52,&lt;br /&gt;
                58:54,&lt;br /&gt;
                59:56,&lt;br /&gt;
                60:58,&lt;br /&gt;
                61:59,&lt;br /&gt;
                62:59,&lt;br /&gt;
                63:59,&lt;br /&gt;
                64:60,&lt;br /&gt;
                65:63,&lt;br /&gt;
                66:64,&lt;br /&gt;
                67:65,&lt;br /&gt;
                68:66,&lt;br /&gt;
                69:68,&lt;br /&gt;
                70:68,&lt;br /&gt;
                71:71,&lt;br /&gt;
                72:73,&lt;br /&gt;
                73:75,&lt;br /&gt;
                74:77,&lt;br /&gt;
                75:79,&lt;br /&gt;
                76:81,&lt;br /&gt;
                77:82,&lt;br /&gt;
                78:83,&lt;br /&gt;
                79:85,&lt;br /&gt;
                80:86,&lt;br /&gt;
                81:87,&lt;br /&gt;
                82:89,&lt;br /&gt;
                83:91,&lt;br /&gt;
                84:94,&lt;br /&gt;
                85:96,&lt;br /&gt;
                86:98,&lt;br /&gt;
                87:100}&lt;br /&gt;
#dict angle rotation formating: &amp;quot;degre azimut - 180: motor activation time (retractation)&amp;quot;&lt;br /&gt;
dict_angle_rotation={&lt;br /&gt;
                0:41,&lt;br /&gt;
                1:42,&lt;br /&gt;
                2:43,&lt;br /&gt;
                3:44,&lt;br /&gt;
                4:45,&lt;br /&gt;
                5:46,&lt;br /&gt;
                6:47,&lt;br /&gt;
                7:48,&lt;br /&gt;
                8:49,&lt;br /&gt;
                9:50,&lt;br /&gt;
                10:52,&lt;br /&gt;
                11:53,&lt;br /&gt;
                12:54,&lt;br /&gt;
                13:55,&lt;br /&gt;
                14:56,&lt;br /&gt;
                15:57,&lt;br /&gt;
                16:58,&lt;br /&gt;
                17:59,&lt;br /&gt;
                18:60,&lt;br /&gt;
                19:61,&lt;br /&gt;
                20:63,&lt;br /&gt;
                21:64,&lt;br /&gt;
                22:65,&lt;br /&gt;
                23:66,&lt;br /&gt;
                24:67,&lt;br /&gt;
                25:68,&lt;br /&gt;
                26:69,&lt;br /&gt;
                27:70,&lt;br /&gt;
                28:71,&lt;br /&gt;
                29:72,&lt;br /&gt;
                30:73,&lt;br /&gt;
                31:75,&lt;br /&gt;
                32:76,&lt;br /&gt;
                33:77,&lt;br /&gt;
                34:78,&lt;br /&gt;
                35:79,&lt;br /&gt;
                36:82,&lt;br /&gt;
                37:82,&lt;br /&gt;
                38:82,&lt;br /&gt;
                39:82,&lt;br /&gt;
                40:82,&lt;br /&gt;
                41:82,&lt;br /&gt;
                42:82,&lt;br /&gt;
                43:82,&lt;br /&gt;
                44:82,&lt;br /&gt;
                45:82,&lt;br /&gt;
                46:82,&lt;br /&gt;
                47:82,&lt;br /&gt;
                -1:39,&lt;br /&gt;
                -2:37,&lt;br /&gt;
                -3:35,&lt;br /&gt;
                -4:33,&lt;br /&gt;
                -5:32,&lt;br /&gt;
                -6:30,&lt;br /&gt;
                -7:29,&lt;br /&gt;
                -8:27,&lt;br /&gt;
                -9:26,&lt;br /&gt;
                -10:25,&lt;br /&gt;
                -11:23,&lt;br /&gt;
                -12:22,&lt;br /&gt;
                -13:19,&lt;br /&gt;
                -14:18,&lt;br /&gt;
                -15:17,&lt;br /&gt;
                -16:16,&lt;br /&gt;
                -17:15,&lt;br /&gt;
                -18:14,&lt;br /&gt;
                -19:6,&lt;br /&gt;
                -20:2,&lt;br /&gt;
                -21:1,&lt;br /&gt;
                -22:0,&lt;br /&gt;
                }&lt;br /&gt;
def sun_position(lat,lon):&lt;br /&gt;
    &amp;quot;calcule la position degre azimut, degre horizontal du soleil avec pyephem&amp;quot;&lt;br /&gt;
    now_here = ephem.Observer()&lt;br /&gt;
    now_here.lat = lat&lt;br /&gt;
    now_here.lon = lon&lt;br /&gt;
    #Ajustement heure en UT pour la france&lt;br /&gt;
    #PyEphem only processes and returns dates that are in Universal Time (UT), which is simliar to Standard Time in Greenwich, England, on the Earth&#039;s Prime Meridian&lt;br /&gt;
    #Europe/Paris is GMT+2&lt;br /&gt;
    utc_now=datetime.datetime.utcnow()&lt;br /&gt;
    is_dst=datetime.datetime(year=utc_now.year,month=utc_now.month,day=utc_now.day).dst()&lt;br /&gt;
    time_diff=datetime.timedelta(hours=(1 if not is_dst else 2))&lt;br /&gt;
    time_diff_gmt2=datetime.timedelta(hours=2)&lt;br /&gt;
    now_here.date = utc_now - time_diff - time_diff_gmt2 #formatting is &#039;2007/12/13 00:50:22&#039;&lt;br /&gt;
    sun=ephem.Sun()&lt;br /&gt;
    sun.compute(now_here)&lt;br /&gt;
    sun_degre_azimut=int(sun.az*180/3.141592653589793)&lt;br /&gt;
    sun_degre_alt=int(sun.alt*180/3.141592653589793)&lt;br /&gt;
    return([sun_degre_alt,sun_degre_azimut])&lt;br /&gt;
&lt;br /&gt;
def init():&lt;br /&gt;
    &amp;quot;fonction qui active les verins pour les placer en debut(vertical) et fin(horizontal) de course&amp;quot; &lt;br /&gt;
    print(&amp;quot;init&amp;quot;)&lt;br /&gt;
    #forward(100)&lt;br /&gt;
    #forwardzero(82)&lt;br /&gt;
def track(lat,lon):&lt;br /&gt;
    &amp;quot;fonction qui active les verins du tracker pour orienter le module solaire perpendiculaire au soleil&amp;quot;&lt;br /&gt;
    init()&lt;br /&gt;
    sun_degre_alt,sun_degre_azimut=sun_position(lat,lon)&lt;br /&gt;
    print(f&amp;quot;sun degre azimut: {sun_degre_azimut}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;sun degre alt: {sun_degre_alt}&amp;quot;)&lt;br /&gt;
    #calage sur etalonage verin vertical avec angle max et degre 0 au nord (referentiel 0 au sud dans ephem)&lt;br /&gt;
    sun_degre_alt=min(sun_degre_alt,87)&lt;br /&gt;
    #calage angle sur etalonage verin horizontal (angle 0 panneau plat) avec courses min et max&lt;br /&gt;
    sun_degre_azimut=sun_degre_azimut-180&lt;br /&gt;
    sun_degre_azimut=max(-47,sun_degre_azimut)&lt;br /&gt;
    sun_degre_azimut=min(sun_degre_azimut,22)&lt;br /&gt;
    #print&lt;br /&gt;
    print(f&amp;quot;sun degre azimut ajusté: {sun_degre_azimut}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;sun degre alt ajusté: {sun_degre_alt}&amp;quot;)&lt;br /&gt;
    #verin vertical. angle 0 verin retracté panneau plat.&lt;br /&gt;
    print(f&amp;quot;retractation verticale backward {dict_angle_verin[sun_degre_alt]}&amp;quot;)&lt;br /&gt;
    backward(dict_angle_verin[sun_degre_alt])&lt;br /&gt;
    #verin horizontal. angle 0 referentiel ephem au nord. angle 0 verin à mi course panneau vers le sud.&lt;br /&gt;
    print(f&amp;quot;retractation horizontale backwardzero {dict_angle_rotation[sun_degre_azimut]}&amp;quot;)&lt;br /&gt;
    backwardzero(dict_angle_rotation[sun_degre_azimut])&lt;br /&gt;
#test Agen&lt;br /&gt;
lat=44.2&lt;br /&gt;
lon=0.6&lt;br /&gt;
#test forward backward(alt,vertical) &lt;br /&gt;
print(&amp;quot;forward 4&amp;quot;)&lt;br /&gt;
forward(4)&lt;br /&gt;
print(&amp;quot;backward 4&amp;quot;)&lt;br /&gt;
backward(4)&lt;br /&gt;
#test forwardzero backwardzero(az,horizontal)&lt;br /&gt;
print(&amp;quot;forwardzero 4&amp;quot;)&lt;br /&gt;
forwardzero(4)&lt;br /&gt;
print(&amp;quot;backwardzero 4&amp;quot;)&lt;br /&gt;
backwardzero(4)&lt;br /&gt;
#placer le tracker direction sud (verin horizontal à mi course)&lt;br /&gt;
#forwardzero(41)&lt;br /&gt;
#time.sleep(100)&lt;br /&gt;
while True:&lt;br /&gt;
    track(lat,lon)&lt;br /&gt;
    time.sleep(10*60) #activer le tracking toutes les 10 minutes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_tracking_capricieux.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Coder le tracking avec une IA&lt;br /&gt;
|Step_Content=&lt;br /&gt;
On va maintenant coder une &amp;quot;IA lowtech&amp;quot; pour le côté pédagogique (du ML pour machine learning, comme utilisé massivement depuis une quinzaine d&#039;année dans de nombreux secteurs d&#039;activité, cad pas l&#039;ia au sens chatgptesque du terme en 2024). On pourrait dire que l&#039;ia lowtech est l&#039;ia dont les résultats ne relèvent pas de la pensée magique, dont les data et le code sont open source, non volés, dont les data sont à nous, par nous et pour nous et sur laquelle on a la main (ce dernier point est essentiel mais l&#039;expérience de sortir du rang me pousse au pessimisme à ce sujet car la vérification s&#039;il y a interférence ou pas dans les résultats du machine learning est assez difficile à détecter)&lt;br /&gt;
&lt;br /&gt;
On branche une webcam, on enregistre les images comme données d&#039;entrée, on traite l&#039;image pour en faire un tableaux de chiffres correspondant à des variables avec lesquelles on va chercher à corréler avec un signal positif ou négatif (tourner le moter dans un sens ou moteur à l&#039;arret).&lt;br /&gt;
&lt;br /&gt;
Ici, les données d&#039;entrées sont uniquement les 640*480*3=921600 variables des pixels des images de la vidéo (921600 colonnes/variables par lignes, à partir desquelles on cherche une corrélation avec le signal positif 1 ou 0 de la dernière colonne).&lt;br /&gt;
&lt;br /&gt;
Pour faire fonctionner le tracker, ca ne fonctionnera pas bien, il faudrait faire du &amp;quot;feature engineering&amp;quot; (nom compliqué pour dire rajouter des colones de variables plus proabablement corrélées au signal positif) en rajoutant la luminosité et/ou la date et l&#039;heure, sur des échantillons de vidéos couvrant toutes les saisons sur plusieurs années.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez apprendre les bases sur lesquelles reposent ce code, je recommande le cours &amp;quot;Applied Data Science with Python&amp;quot; de l&#039;université du michigan dans lequelvous apprendrez des bases de python,pandas, et machine learning &amp;quot;no bullshit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import cv2&lt;br /&gt;
import time&lt;br /&gt;
import numpy as np&lt;br /&gt;
import os&lt;br /&gt;
import argparse&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
import seaborn as sns&lt;br /&gt;
import sklearn.model_selection&lt;br /&gt;
import sklearn.metrics&lt;br /&gt;
import sklearn.decomposition&lt;br /&gt;
from sklearn.neighbors import KNeighborsClassifier&lt;br /&gt;
from sklearn.naive_bayes import GaussianNB&lt;br /&gt;
from sklearn.ensemble import RandomForestClassifier&lt;br /&gt;
from sklearn.ensemble import GradientBoostingClassifier&lt;br /&gt;
from sklearn.neural_network import MLPClassifier&lt;br /&gt;
&lt;br /&gt;
def enregistrer_video(out_file,fps,capture_duration):&lt;br /&gt;
    # Open the webcam&lt;br /&gt;
    cap = cv2.VideoCapture(0)  # Use 0 for default webcam&lt;br /&gt;
&lt;br /&gt;
fourcc = cv2.VideoWriter_fourcc(*&#039;XVID&#039;)  # Codec (e.g., XVID)&lt;br /&gt;
&lt;br /&gt;
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # Get webcam frame width&lt;br /&gt;
    frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # Get webcam frame height&lt;br /&gt;
&lt;br /&gt;
# Check if webcam opened successfully&lt;br /&gt;
    if not cap.isOpened():&lt;br /&gt;
        print(&amp;quot;Error opening webcam&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
# Create the VideoWriter object&lt;br /&gt;
    out = cv2.VideoWriter(out_file, fourcc, fps, (frame_width, frame_height))&lt;br /&gt;
&lt;br /&gt;
# Start time for tracking duration&lt;br /&gt;
    start_time = time.time()&lt;br /&gt;
    while time.time() - start_time &amp;lt; capture_duration:&lt;br /&gt;
        # Capture frame-by-frame&lt;br /&gt;
        ret, frame = cap.read()&lt;br /&gt;
&lt;br /&gt;
# Check if frame captured successfully&lt;br /&gt;
        if not ret:&lt;br /&gt;
            print(&amp;quot;Error capturing frame&amp;quot;)&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
# Write the frame to the video file&lt;br /&gt;
        out.write(frame)&lt;br /&gt;
    &lt;br /&gt;
        # Display the captured frame (optional)&lt;br /&gt;
        cv2.imshow(&#039;Webcam Video&#039;, frame)&lt;br /&gt;
    &lt;br /&gt;
        # Check if the user wants to quit (press &#039;q&#039;)&lt;br /&gt;
        if cv2.waitKey(1) &amp;amp; 0xFF == ord(&#039;q&#039;):&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
# Close resources&lt;br /&gt;
    cap.release()&lt;br /&gt;
    out.release()&lt;br /&gt;
    cv2.destroyAllWindows()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;1 minute video saved successfully as {out_file}!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def charger_images_video(video_filename):&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Charge les images vidéo d&#039;un fichier.&lt;br /&gt;
&lt;br /&gt;
Args:&lt;br /&gt;
      video_filename: Le chemin d&#039;accès au fichier vidéo.&lt;br /&gt;
&lt;br /&gt;
Returns:&lt;br /&gt;
      Un tableau NumPy contenant les images vidéo (3D array: frames, rows, cols).&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ouvrir la vidéo avec OpenCV&lt;br /&gt;
  cap = cv2.VideoCapture(video_filename)&lt;br /&gt;
&lt;br /&gt;
# Vérifier l&#039;ouverture réussie&lt;br /&gt;
  if not cap.isOpened():&lt;br /&gt;
      print(&amp;quot;Erreur d&#039;ouverture du fichier vidéo:&amp;quot;, video_filename)&lt;br /&gt;
      return None&lt;br /&gt;
&lt;br /&gt;
# Liste vide pour stocker les images vidéo&lt;br /&gt;
  images_list = []&lt;br /&gt;
&lt;br /&gt;
# Lire les images vidéo image par image&lt;br /&gt;
  while True:&lt;br /&gt;
      ret, frame = cap.read()&lt;br /&gt;
&lt;br /&gt;
# Vérifier la lecture de l&#039;image&lt;br /&gt;
      if not ret:&lt;br /&gt;
          break&lt;br /&gt;
&lt;br /&gt;
# Convertir l&#039;image en nuance de gris (optionnel pour la normalisation)&lt;br /&gt;
      # frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # Décommenter si nécessaire&lt;br /&gt;
&lt;br /&gt;
# Ajouter l&#039;image à la liste&lt;br /&gt;
      images_list.append(frame)&lt;br /&gt;
&lt;br /&gt;
# Fermer la capture vidéo&lt;br /&gt;
  cap.release()&lt;br /&gt;
&lt;br /&gt;
return images_list&lt;br /&gt;
&lt;br /&gt;
def flatten_images_video(images_array):&lt;br /&gt;
    &lt;br /&gt;
    # Initier une liste de resultat&lt;br /&gt;
    result=[]&lt;br /&gt;
    &lt;br /&gt;
    # Iterer sur le numpy array en input&lt;br /&gt;
    for k in images_array:&lt;br /&gt;
        result.append(k.flatten())&lt;br /&gt;
    # convertir la liste np.array&lt;br /&gt;
    result=np.asarray(result)&lt;br /&gt;
&lt;br /&gt;
return result&lt;br /&gt;
&lt;br /&gt;
# Exemple d&#039;utilisation&lt;br /&gt;
# Define video parameters&lt;br /&gt;
out_file = &amp;quot;webcam_video_1min.mp4&amp;quot;  # Output video filename&lt;br /&gt;
fps = 20.0  # Frames per second&lt;br /&gt;
capture_duration = 60  # Seconds&lt;br /&gt;
#enregistrer_video(out_file,fps,capture_duration)&lt;br /&gt;
images_video = charger_images_video(&amp;quot;webcam_video_1min.mp4&amp;quot;)  # Fonction pour charger les images vidéo&lt;br /&gt;
print(images_video)&lt;br /&gt;
print(len(images_video))&lt;br /&gt;
&lt;br /&gt;
# Flattening and normalizing&lt;br /&gt;
images_video = flatten_images_video(images_video)&lt;br /&gt;
print(images_video[0])&lt;br /&gt;
print(len(images_video[0]))&lt;br /&gt;
&lt;br /&gt;
# compression/normalisation&lt;br /&gt;
scaling_factor = 1.0 / 255.0  # Divide by 255 to normalize between 0 and 1&lt;br /&gt;
images_video = images_video * scaling_factor&lt;br /&gt;
print(images_video[0])&lt;br /&gt;
print(len(images_video[0]))&lt;br /&gt;
&lt;br /&gt;
# checking data shape&lt;br /&gt;
#np.set_printoptions(threshold=np.inf)  # Set threshold to infinity&lt;br /&gt;
#print(np.array2string(images_video[0], suppress_small=True))&lt;br /&gt;
#print(len(images_video[0]))&lt;br /&gt;
&lt;br /&gt;
# Get the array shape&lt;br /&gt;
image_shape = images_video.shape&lt;br /&gt;
&lt;br /&gt;
# Print the dimensions&lt;br /&gt;
print(&amp;quot;Image shape&amp;quot;, image_shape)&lt;br /&gt;
print(&amp;quot;Number of dimensions:&amp;quot;, len(image_shape))&lt;br /&gt;
print(&amp;quot;Image height:&amp;quot;, image_shape[0])   &lt;br /&gt;
print(&amp;quot;Image width:&amp;quot;, image_shape[1])&lt;br /&gt;
print(&amp;quot;Number of color channels:&amp;quot;, image_shape[2])&lt;br /&gt;
&lt;br /&gt;
# Total number of elements (height x width x color channels)&lt;br /&gt;
total_elements = image_shape[0] * image_shape[1] * image_shape[2]&lt;br /&gt;
print(&amp;quot;Total elements:&amp;quot;, total_elements)E&lt;br /&gt;
&lt;br /&gt;
# création du dataset pour dire &amp;quot;oui&amp;quot; pour tourner à gauche (par exemple)&lt;br /&gt;
# ND: c&#039;est à cette étape que les géants de la tech emploient des kenyans sous payés&lt;br /&gt;
# dans une forme d&#039;esclavage moderne&lt;br /&gt;
# il s&#039;agit de définir, pour chaque image, si on doit activer le moteur vers &lt;br /&gt;
# la gauche (cad définir un signal positif pour que la machine fasse des corrélations&lt;br /&gt;
# positives avec cette image)&lt;br /&gt;
&lt;br /&gt;
positives=np.zeros_like(images_video)&lt;br /&gt;
#Si les 14 premieres images définissent un signal positif, on fera:&lt;br /&gt;
#en réalité il faudra traiter des segments de vidéos positivement en définissant&lt;br /&gt;
#chaque image auxquelles on va associer le signal positif&lt;br /&gt;
positives[0:14] = 1&lt;br /&gt;
&lt;br /&gt;
class ML():&lt;br /&gt;
    @staticmethod&lt;br /&gt;
    def ml(X,y,classifier):&lt;br /&gt;
        &amp;quot;process machine learning on X data set, y yes/no data with classifier&amp;quot;&lt;br /&gt;
        # dataset&lt;br /&gt;
        #X = images_video&lt;br /&gt;
        #y = positives&lt;br /&gt;
        # classifier model training&lt;br /&gt;
        clf = ML.dico_classifier[classifier]()&lt;br /&gt;
        X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(&lt;br /&gt;
            X, y, random_state=0)&lt;br /&gt;
        clf.fit(X_train, y_train)&lt;br /&gt;
        # predictions&lt;br /&gt;
        _predicted = clf.predict(X_test)&lt;br /&gt;
        # scores&lt;br /&gt;
        _accuracy, _precision, _recall = ML.compute_scores(y_test, _predicted,&lt;br /&gt;
                                                        classifier)&lt;br /&gt;
        # confusion matrix&lt;br /&gt;
        ML.compute_confusion_matrix(y_test, _predicted, _accuracy, classifier)&lt;br /&gt;
        # courbes precision-recall&lt;br /&gt;
        ML.plot_precision_recall(clf, X_test, y_test, classifier, _predicted)&lt;br /&gt;
        # roc&lt;br /&gt;
        roc_auc_clf = ML.plot_roc(clf, X_test, y_test, classifier)[0]&lt;br /&gt;
        return pd.DataFrame(data=(_accuracy, _precision, _recall, roc_auc_clf),&lt;br /&gt;
                            index=[&#039;accuracy&#039;, &#039;precision&#039;, &#039;recall&#039;, &#039;AUC&#039;],&lt;br /&gt;
                            columns=[classifier])&lt;br /&gt;
&lt;br /&gt;
@staticmethod&lt;br /&gt;
    def compute_scores(y_test, _predicted, classifier):&lt;br /&gt;
        &amp;quot;compute machine learning scores&amp;quot;&lt;br /&gt;
        _accuracy = sklearn.metrics.accuracy_score(y_test, _predicted)&lt;br /&gt;
        _precision = sklearn.metrics.precision_score(y_test, _predicted)&lt;br /&gt;
        _recall = sklearn.metrics.recall_score(y_test, _predicted)&lt;br /&gt;
        print(str(classifier) + &#039; Accuracy: {:.2f}&#039;.format(_accuracy))&lt;br /&gt;
        print(str(classifier) + &#039; Precision: {:.2f}&#039;.format(_precision))&lt;br /&gt;
        print(str(classifier) + &#039; Recall: {:.2f}&#039;.format(_recall))&lt;br /&gt;
        return (_accuracy, _precision, _recall)&lt;br /&gt;
&lt;br /&gt;
@staticmethod&lt;br /&gt;
    def compute_confusion_matrix(y_test, _predicted, _accuracy, classifier):&lt;br /&gt;
        &amp;quot;compute confusion matrix&amp;quot;&lt;br /&gt;
        confusion_clf = sklearn.metrics.confusion_matrix(y_test, _predicted)&lt;br /&gt;
        df_clf = pd.DataFrame(confusion_clf,&lt;br /&gt;
                              index=list(range(0, 2)),&lt;br /&gt;
                              columns=list(range(0, 2)))&lt;br /&gt;
        plt.figure(figsize=(5.5, 4))&lt;br /&gt;
        ax_heatmap=sns.heatmap(df_clf, annot=True, vmin=0, vmax=11, cmap=&amp;quot;Blues&amp;quot;)&lt;br /&gt;
        plt.title(str(classifier) + &#039; \nAccuracy:{0:.3f}&#039;.format(_accuracy))&lt;br /&gt;
        plt.ylabel(&#039;True label&#039;)&lt;br /&gt;
        plt.xlabel(&#039;Predicted label&#039;)&lt;br /&gt;
        return df_clf,ax_heatmap&lt;br /&gt;
    @staticmethod&lt;br /&gt;
    def plot_precision_recall(clf, X_test, y_test, classifier, _predicted):&lt;br /&gt;
        &amp;quot;plot precision recall curve&amp;quot;&lt;br /&gt;
        _precision = sklearn.metrics.precision_score(y_test, _predicted)&lt;br /&gt;
        _recall = sklearn.metrics.recall_score(y_test, _predicted)&lt;br /&gt;
        y_score_clf = clf.predict_proba(X_test)&lt;br /&gt;
        y_score_df = pd.DataFrame(data=y_score_clf)&lt;br /&gt;
        precision, recall, thresholds = sklearn.metrics.precision_recall_curve(&lt;br /&gt;
            y_test, y_score_df[1])&lt;br /&gt;
        closest_zero = np.argmin(np.abs(thresholds))&lt;br /&gt;
        closest_zero_p = precision[closest_zero]&lt;br /&gt;
        closest_zero_r = recall[closest_zero]&lt;br /&gt;
        plt.figure()&lt;br /&gt;
        plt.xlim([0.0, 1.01])&lt;br /&gt;
        plt.ylim([0.0, 1.01])&lt;br /&gt;
        result,=plt.plot(precision, recall)&lt;br /&gt;
        plt.title(&lt;br /&gt;
            str(classifier) +&lt;br /&gt;
            &#039; Precision-Recall Curve \nprecision :{:0.2f}&#039;.format(_precision) +&lt;br /&gt;
            &#039; recall: {:0.2f}&#039;.format(_recall))&lt;br /&gt;
        plt.plot(closest_zero_p,&lt;br /&gt;
                 closest_zero_r,&lt;br /&gt;
                 &#039;o&#039;,&lt;br /&gt;
                 markersize=12,&lt;br /&gt;
                 fillstyle=&#039;none&#039;,&lt;br /&gt;
                 c=&#039;r&#039;,&lt;br /&gt;
                 mew=3)&lt;br /&gt;
        plt.xlabel(&#039;Precision&#039;, fontsize=16)&lt;br /&gt;
        plt.ylabel(&#039;Recall&#039;, fontsize=16)&lt;br /&gt;
        plt.show()&lt;br /&gt;
        return result&lt;br /&gt;
    @staticmethod&lt;br /&gt;
    def plot_roc(clf, X_test, y_test, classifier):&lt;br /&gt;
        &amp;quot;plot roc curve&amp;quot;&lt;br /&gt;
        y_score_clf = clf.predict_proba(X_test)&lt;br /&gt;
        y_score_df = pd.DataFrame(data=y_score_clf)&lt;br /&gt;
        fpr_clf, tpr_clf, _ = sklearn.metrics.roc_curve(y_test, y_score_df[1])&lt;br /&gt;
        roc_auc_clf = sklearn.metrics.auc(fpr_clf, tpr_clf)&lt;br /&gt;
        plt.figure()&lt;br /&gt;
        plt.xlim([-0.01, 1.00])&lt;br /&gt;
        plt.ylim([-0.01, 1.01])&lt;br /&gt;
        result,=plt.plot(fpr_clf,&lt;br /&gt;
                 tpr_clf,&lt;br /&gt;
                 lw=3,&lt;br /&gt;
                 label=str(classifier) +&lt;br /&gt;
                 &#039; ROC curve (area = {:0.2f})&#039;.format(roc_auc_clf))&lt;br /&gt;
        plt.xlabel(&#039;False Positive Rate&#039;, fontsize=16)&lt;br /&gt;
        plt.ylabel(&#039;True Positive Rate&#039;, fontsize=16)&lt;br /&gt;
        plt.title(&#039;ROC curve &#039; + str(classifier) +&lt;br /&gt;
                  &#039; \nAUC:{0:.3f}&#039;.format(roc_auc_clf),&lt;br /&gt;
                  fontsize=16)&lt;br /&gt;
        plt.legend(loc=&#039;lower right&#039;, fontsize=13)&lt;br /&gt;
        plt.plot([0, 1], [0, 1], color=&#039;navy&#039;, lw=3, linestyle=&#039;--&#039;)&lt;br /&gt;
        plt.show()&lt;br /&gt;
        return roc_auc_clf,result&lt;br /&gt;
&lt;br /&gt;
dico_classifier = { &#039;knn&#039;: KNeighborsClassifier,&lt;br /&gt;
                        &#039;naiveb&#039;: GaussianNB,&lt;br /&gt;
                        &#039;randomforest&#039;: RandomForestClassifier,&lt;br /&gt;
                        &#039;gtree&#039;: GradientBoostingClassifier,&lt;br /&gt;
                        &#039;neural&#039;: MLPClassifier}&lt;br /&gt;
&lt;br /&gt;
@staticmethod&lt;br /&gt;
    def plot_heatmap(dataframe):&lt;br /&gt;
        &amp;quot;plot heatmap of accuracy, precision, recall, AUC&amp;quot;&lt;br /&gt;
        plt.figure()&lt;br /&gt;
        sns.heatmap(dataframe, annot=True, vmin=0, vmax=1, cmap=&amp;quot;Blues&amp;quot;)&lt;br /&gt;
        plt.title(&#039;scores des classifiers &#039;)&lt;br /&gt;
        plt.ylabel(&#039;scores&#039;)&lt;br /&gt;
        plt.xlabel(&#039;modeles&#039;)&lt;br /&gt;
        plt.show()&lt;br /&gt;
&lt;br /&gt;
#process machine learning for all classifiers in dico_classifier&lt;br /&gt;
#and plot a heatmap of their accuracy, precision, recall, AUC&lt;br /&gt;
df_result = pd.DataFrame(data=(0, 0, 0, 0),&lt;br /&gt;
                                 columns=[&#039;init&#039;],&lt;br /&gt;
                                 index=[&#039;accuracy&#039;, &#039;precision&#039;, &#039;recall&#039;, &#039;AUC&#039;])&lt;br /&gt;
for clf in ML.dico_classifier:&lt;br /&gt;
    print(clf)&lt;br /&gt;
    result_ml = ML.ml(images_video, positives, clf)&lt;br /&gt;
    df_result = pd.merge(df_result,&lt;br /&gt;
                                 result_ml,&lt;br /&gt;
                                 right_index=True,&lt;br /&gt;
                                 left_index=True)&lt;br /&gt;
df_result.drop(&#039;init&#039;, axis=1, inplace=True)&lt;br /&gt;
ML.plot_heatmap(df_result)&lt;br /&gt;
return df_result&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Conclusion:&lt;br /&gt;
Voilà, maintenant que vous savez coder une IA, vous pouvez la critiquer d&#039;autant mieux,et promouvoir les lowtech en connaissance de cause.&lt;br /&gt;
&lt;br /&gt;
Vous noterez que les algorithmes d&#039;ia sont open sources et assez faciles à utiliser en tant que développeur &amp;quot;simple utilisateur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Et aussi que sans data, l&#039;ia ne sert absolument à rien.&lt;br /&gt;
&lt;br /&gt;
C&#039;est pour cette raison que les géants de la tech veulent toujours plus de données et emploient des gens dans des conditions proches de l&#039;esclavage dans de nombreux pays pour les traiter avant d&#039;entrainer leurs modèles.&lt;br /&gt;
&lt;br /&gt;
Tout comme pour les &amp;quot;données personnelles&amp;quot;, la question clé des ia repose sur les données.&lt;br /&gt;
&lt;br /&gt;
Voir l&#039;excellente conf de benjamin bayart &amp;quot; Géopolitique de la data (Benjamin BAYART) &amp;quot; sur youtube ou en vidéo ici.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez aussi faire un tracker lowtech, mais aussi adapter le code pour créer un véhicule  autonome lowtech avec 4 datasets/signaux positifs distincts pour entrainer l&#039;activation de &amp;quot;tourner à gauche&amp;quot;,&amp;quot;accélérer&amp;quot;, &amp;quot;tourner à droite&amp;quot;, &amp;quot;freiner&amp;quot;.  C&#039;est ce qu&#039;a fait [https://fr.wikipedia.org/wiki/George_Hotz#Conduite_autonome George Hotz] en proclamant qu&#039;il suffisait d&#039;une trentaine d&#039;heures de vidéos de conduite en enregistrant avec des capteurs pour avoir les signaux positifs correspondant aux images enregistrées pour que le machine learning fonctionne.&lt;br /&gt;
&lt;br /&gt;
Evidemment, on espere qu&#039;il n&#039;y aura pas de hack ou que le système n&#039;a pas de controle commande à distance sur ce type d&#039;algorithme.&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_G_opolitique_de_la_data_Benjamin_BAYART_.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Serveur_orangepi-raspberry_nextcloud_en_photovolta%C3%AFque_autonome&amp;diff=152036</id>
		<title>Serveur orangepi-raspberry nextcloud en photovoltaïque autonome</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Serveur_orangepi-raspberry_nextcloud_en_photovolta%C3%AFque_autonome&amp;diff=152036"/>
		<updated>2025-11-28T20:46:42Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-20,&amp;quot;top&amp;quot;:11,&amp;quot;width&amp;quot;:4032,&amp;quot;height&amp;quot;:3024,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/e9/Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450.16574585635357,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Tutoriel pour mettre en place un serveur nextcloud (équivalent drive google mais libre et adapté à l&#039;organisation collective) sur un ordinateur monocarte autonome (alimenté en photovoltaïque avec stockage)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ce tutoriel n&#039;est pas tout à fait &amp;quot;lowtech&amp;quot; en première approche dans la mesure où il s&#039;agit d&#039;informatique et de photovoltaique.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, il se veut le plus didactique possible et rejoint la philosophie lowtech de partager les savoirs faires, éviter la tech inaccessible par la rétention d&#039;information, la complexification by design ou la dépendance propriétaire by design.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On donne aussi un outil de dimensionnement photovoltaïque avec quelques explication. A vous de dimensionner pour une informatique lowtech, qui ne fonctionne que sur une plage horaire calé sur les rythmes du soleil, cad qui respecte les temporalités humaines.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nextcloud (service accessible sur framasoft ici : https://www.frama.space/abc/fr/) est un service assez cool pour s&#039;organiser à plusieurs et permet de partager des fichiers, avoir un annuaire, un chat, de travailler en cooperation sur des fichiers libreoffice voire même de faire des visios.&lt;br /&gt;
On peut aussi imaginer des infokiosques mobiles sur ce principe.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Le tuto remet en question le marché des vpns, le photovoltaique avec stockage neuf et cher (en réalité le photovoltaique est devenu trop competitif face au pétrole et encore plus face au nucléaire!), et le marché des gafam et leur design de surveillance nocif pour la confiance et le lien social.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Les commandes sont celles pour un systeme debian&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Enfin, le tuto est fait avec un modem 4G (et connexion filaire à un orange pi qui n&#039;a pas de carte wifi par défaut), et mis a jour ce 10 avril pour raspberry pi connecté au &amp;quot;partage wifi&amp;quot; de votre téléphone. (voir etap 6 pour wifi en wpa3 et etap 16 pour wifi en wpa2)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy, Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=3&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=165&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=debian, photovoltaique, nextcloud, ordinateur monocarte, orange pi&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tuto_Attachments={{Tuto Attachments&lt;br /&gt;
|Attachment=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_autonomie_.ods&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Materiel&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192859_778.jpg&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192848_031.jpg&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192924_391.jpg&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192908_135.jpg&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171056_521.jpg&lt;br /&gt;
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_DRL.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Installation de nextcloud 1/4&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_10.png&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_02.png&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_01.jpg&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_02.jpg&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_03.jpg&lt;br /&gt;
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_04.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Installation de nextcloud 2/4&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_05.jpg&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_06.jpg&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_07.jpg&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_08.jpg&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_09.jpg&lt;br /&gt;
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_10.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
Installation de nextcloud 3/4&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_11.jpg&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_12.jpg&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_13.jpg&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_14.jpg&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_15.jpg&lt;br /&gt;
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_16.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
Installation de nextcloud 4/4&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_17.jpg&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_18.jpg&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_19.jpg&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_20.jpg&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_21.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
configuration du reseau local ethernet ou wifi&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_change-ubuntu-ip-address-step-7.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
configuration d&#039;un vpn wireguard pour rendre accessible votre serveur depuis une box 4g ou un modem 4g&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_1.png&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_2.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
configuration d&#039;un vpn openvpn pour rendre accessible votre serveur depuis une box 4g ou un modem 4g&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen1.png&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen2.png&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen3.png&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.png&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.1.png&lt;br /&gt;
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen6.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
Rediriger les requetes du serveur vpn vers le orange pi-raspberry pi&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
Nom de domaine et adresse fixe&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi3.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
Configuration https sur serveur gandi vpn&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_Capture_d_cran_du_2023-08-21_18-47-32.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:254--&amp;gt;&lt;br /&gt;
Configuration https sur dietpi si vous etes branché en box&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:256--&amp;gt;&lt;br /&gt;
Rendre votre serveur nomade et autonome énergétiquement en photovoltaique&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_2.6kWc.png&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_9kWc.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:372--&amp;gt;&lt;br /&gt;
Montage et test&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171458_820.jpg&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171056_521.jpg&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_173010_697.jpg&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_172639_858.jpg&lt;br /&gt;
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_montage_avec_DRL.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:382--&amp;gt;&lt;br /&gt;
Securisation du serveur&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:489--&amp;gt;&lt;br /&gt;
Activer le wifi lors de l&#039;installation (par exemple avec un raspberry)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_wifi2.jpg&lt;br /&gt;
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_wifi3.jpg&lt;br /&gt;
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_wifiscan.jpg&lt;br /&gt;
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_wifiscan2.jpg&lt;br /&gt;
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_wifiscan3.jpg&lt;br /&gt;
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_wifiscan4.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Dimensionner_la_r%C3%A9cup%C3%A9ration_d%27eau_de_pluie_pour_%C3%AAtre_autonome&amp;diff=152033</id>
		<title>Dimensionner la récupération d&#039;eau de pluie pour être autonome</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Dimensionner_la_r%C3%A9cup%C3%A9ration_d%27eau_de_pluie_pour_%C3%AAtre_autonome&amp;diff=152033"/>
		<updated>2025-11-28T20:11:17Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Dimensionner_la_r_cup_ration_d_eau_de_pluie_pour__tre_autonome_IMG_20240227_173849_315.jpg&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&lt;br /&gt;
Dimensionner la récupération d&#039;eau de pluie hors réseau&lt;br /&gt;
|Area=Water&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=0&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=dimensionnement, eau de pluie, récupération, stockage, eau, eau de pluie, récupération&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
Dans des cas où on souhaite être 100% autonome hors réseau, la question de l&#039;eau est essentielle.&lt;br /&gt;
&lt;br /&gt;
C&#039;est d&#039;ailleurs le premier élément à considérer par exemple dans les démarches de permaculture (phase d&#039;observation).&lt;br /&gt;
&lt;br /&gt;
J&#039;ai initialement fait les calculs ci dessous pour &amp;quot;autonomiser&amp;quot; un mobile home avec l&#039;idée d&#039;utiliser des modules photovoltaïques dans un assemblage récupérateur d&#039;eau, comme le proposait le concept ulta chaata (https://www.facebook.com/weultachaata/?locale=fr_FR et https://fr.futuroprossimo.it/2023/03/ulta-chaata-ombrello-magico-che-puo-dare-acqua-e-luce-allindia/) avant d&#039;être récupérée à Los Angeles.&lt;br /&gt;
&lt;br /&gt;
On peut s&#039;interroger sur la façon adéquate de dimensionner des installations pour récupérer de l&#039;eau de pluie.&lt;br /&gt;
&lt;br /&gt;
Pour cela, on peut utiliser les données de Météo France afin d&#039;avoir un regard rétrospectif sur les précipitations saisonnières et ajuster ainsi les dimensions des récupérateurs.&lt;br /&gt;
&lt;br /&gt;
Démo web interactive ici :&lt;br /&gt;
&lt;br /&gt;
https://vpn.matangi.dev/water&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&lt;br /&gt;
|Tools=&lt;br /&gt;
|Tuto_Attachments={{Tuto Attachments}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Prérequis logiciel&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Dans ce tuto, on utilise des données météos synop disponibles ici :&lt;br /&gt;
&lt;br /&gt;
http://data.cquest.org/meteo-france/synop/ dont vous trouverez la description ici:&lt;br /&gt;
&lt;br /&gt;
http://data.cquest.org/meteo-france/synop/doc_parametres_synop_168.pdf&lt;br /&gt;
&lt;br /&gt;
Vous pouvez également les télécharger sur le site de Meteo France:&lt;br /&gt;
&lt;br /&gt;
https://donneespubliques.meteofrance.fr/?fond=produit&amp;amp;id_produit=90&amp;amp;id_rubrique=32&lt;br /&gt;
&lt;br /&gt;
Télécharger tous les fichiers csv des années et mois à partir desquels vous souhaitez que les calculs soient effectués, placer les dans un repertoire de votre choix et dezipper les (format archive gz). Placer également dans ce répertoire le fichier processing.py contenant le code partagé dans ce tutoriel.&lt;br /&gt;
&lt;br /&gt;
Exemple en ligne de commande linux debian pour télécharger et dézipper tous les csv de l&#039;année 2020 dans un repertoire ~/synop:&lt;br /&gt;
&lt;br /&gt;
(Dans la suite du tutoriel on utilise toutes les données des années 2010 à 2020)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd ~&lt;br /&gt;
&lt;br /&gt;
mkdir -p synop &amp;amp;&amp;amp; cd synop&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202001.csv.gz &amp;amp;&amp;amp; gzip -d synop.202001.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202002.csv.gz &amp;amp;&amp;amp; gzip -d synop.202002.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202003.csv.gz &amp;amp;&amp;amp; gzip -d synop.202003.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202004.csv.gz &amp;amp;&amp;amp; gzip -d synop.202004.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202005.csv.gz &amp;amp;&amp;amp; gzip -d synop.202005.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202006.csv.gz &amp;amp;&amp;amp; gzip -d synop.202006.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202007.csv.gz &amp;amp;&amp;amp; gzip -d synop.202007.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202008.csv.gz &amp;amp;&amp;amp; gzip -d synop.202008.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202009.csv.gz &amp;amp;&amp;amp; gzip -d synop.202009.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202010.csv.gz &amp;amp;&amp;amp; gzip -d synop.202010.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202011.csv.gz &amp;amp;&amp;amp; gzip -d synop.202011.csv.gz&lt;br /&gt;
&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202012.csv.gz &amp;amp;&amp;amp; gzip -d synop.202012.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour utiliser python sous un autre os que linux, débrouillez vous avec vos daubes propriétaires intrusives.&lt;br /&gt;
&lt;br /&gt;
Sous linux, python est généralement installé et pour utiliser le code partagé dans &lt;br /&gt;
ce tuto, il suffira de copier coller le code dans un fichier processing.py puis entrer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
python processing.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cependant, il faut installer la librairie pandas qui est très largement utilisé &lt;br /&gt;
dans le monde de la finance et dans le monde scientifique, notamment pour sa &lt;br /&gt;
gestion efficace des séries temporelles et sa capacité de vectorisation des données.&lt;br /&gt;
&lt;br /&gt;
Pour cela voici les commandes à entrer dans linux debian avant de lancer le &lt;br /&gt;
script processing.py pour être tranquille:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt install python3 python3-venv python3-pip python-is-python3&lt;br /&gt;
&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; python -m venv venv&lt;br /&gt;
&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
pip install pandas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Penser ensuite à activer l&#039;environnement virtuel dans lequel est installé &lt;br /&gt;
pandas chaque fois que vous utilisez le script (apres un reboot ou si vous &lt;br /&gt;
fermez et reouvrez votre terminal) en lançant la commande:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous sommes en 2024 et si vous êtes cibles d&#039;entraves anti éco-terroristes &lt;br /&gt;
de psychopathes comme moi, et en bon scientifique qui se respecte vous &lt;br /&gt;
inspectez vos instruments de mesures avant de les utiliser, vous pouvez &lt;br /&gt;
inspectez le code source de pandas qui est évidemment logiciel libre ici : &lt;br /&gt;
https://github.com/pandas-dev/pandas , ou vous pouvez faire l&#039;hypothèse &lt;br /&gt;
discutable qu&#039;on peut avoir confiance dans un logiciel aussi massivement &lt;br /&gt;
utilisé dans le monde de la finance et de la science.&lt;br /&gt;
&lt;br /&gt;
Python reposant sur des librairies C pour un certains nombres d&#039;opérations &lt;br /&gt;
de base, le hack, y compris le hack scientifique, n&#039;est jamais impossible &lt;br /&gt;
mais on laissera de coté ces considérations pro-lowtech qui n&#039;entrent pas &lt;br /&gt;
dans le champ de réflexion de ce tutoriel.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Evaluer les besoins&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Pour évaluer les besoins pour des installations domestiques, rien de plus efficace que le compteur d&#039;eau. Une première approche peut être de faire une règle de trois à partir de votre consommation hebdomadaire. Vous pouvez aussi mesurer individuellement chaque poste de consommation (douche, machine à laver, cuisine, jardin, wc, etc) afin de faire des projections saisonnières plus justes.&lt;br /&gt;
&lt;br /&gt;
Pour un mobile home avec toilettes sèches on a :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conso solo - 2 douches semaine (L)&lt;br /&gt;
&lt;br /&gt;
douche (L)			50&lt;br /&gt;
&lt;br /&gt;
boisson				4&lt;br /&gt;
&lt;br /&gt;
vaisselle			10&lt;br /&gt;
&lt;br /&gt;
cuisine				4&lt;br /&gt;
&lt;br /&gt;
machine a laver			50&lt;br /&gt;
&lt;br /&gt;
semaine (2douches, 1 machine)	276&lt;br /&gt;
&lt;br /&gt;
journalier			39&lt;br /&gt;
&lt;br /&gt;
trimestre (13 semaines)		3588&lt;br /&gt;
&lt;br /&gt;
conso à deux - 4 douches semaine (L)&lt;br /&gt;
&lt;br /&gt;
douche				50&lt;br /&gt;
&lt;br /&gt;
boisson				4&lt;br /&gt;
&lt;br /&gt;
vaisselle			10&lt;br /&gt;
&lt;br /&gt;
cuisine				4&lt;br /&gt;
&lt;br /&gt;
machine a laver			50&lt;br /&gt;
&lt;br /&gt;
semaine (4douches, 1 machine)	752&lt;br /&gt;
&lt;br /&gt;
journalier			107&lt;br /&gt;
&lt;br /&gt;
trimestre (13 semaines)		9776&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Calculer rétrospectivement les précipitations journalieres et saisonnieres&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Pour dimensionner correctement le stockage, il convient d&#039;abord d&#039;avoir des informations sur les précipitations &amp;quot;moyennes&amp;quot; des années précédentes.&lt;br /&gt;
&lt;br /&gt;
Pour cela, on fournit le bout de code python suivant (valable avec les données météo france mais adaptable à d&#039;autres données météos ailleurs, le synop étant un encodage de données utilisé par l&#039;OMM):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
import os&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# Attention si vous utilisez ce bout de code dans d&#039;autres pays que la france, il faut ajouter&lt;br /&gt;
# les stations météos adhoc&lt;br /&gt;
&lt;br /&gt;
# Processing des data&lt;br /&gt;
print(&amp;quot;\nprocessing des data\n&amp;quot;)&lt;br /&gt;
files=os.listdir(&#039;.&#039;)&lt;br /&gt;
csv=[a for a in files if a[-3:]==&#039;csv&#039;]&lt;br /&gt;
combined_df = pd.concat((pd.read_csv(f,sep=&#039;;&#039;) for f in csv), ignore_index=True)&lt;br /&gt;
#07510 bordeaux&lt;br /&gt;
#07535 gourdon&lt;br /&gt;
&lt;br /&gt;
#stations météos &amp;quot;hard coded&amp;quot;&lt;br /&gt;
stations=[{&#039;ID&#039;: &#039;07005&#039;, &#039;Nom&#039;: &#039;ABBEVILLE&#039;, &#039;Latitude&#039;: &#039;50.136000&#039;, &#039;Longitude&#039;: &#039;1.834000&#039;, &#039;Altitude&#039;: &#039;69&#039;}, {&#039;ID&#039;: &#039;07015&#039;, &#039;Nom&#039;: &#039;LILLE-LESQUIN&#039;, &#039;Latitude&#039;: &#039;50.570000&#039;, &#039;Longitude&#039;: &#039;3.097500&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07020&#039;, &#039;Nom&#039;: &#039;PTE DE LA HAGUE&#039;, &#039;Latitude&#039;: &#039;49.725167&#039;, &#039;Longitude&#039;: &#039;-1.939833&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;07027&#039;, &#039;Nom&#039;: &#039;CAEN-CARPIQUET&#039;, &#039;Latitude&#039;: &#039;49.180000&#039;, &#039;Longitude&#039;: &#039;-0.456167&#039;, &#039;Altitude&#039;: &#039;67&#039;}, {&#039;ID&#039;: &#039;07037&#039;, &#039;Nom&#039;: &#039;ROUEN-BOOS&#039;, &#039;Latitude&#039;: &#039;49.383000&#039;, &#039;Longitude&#039;: &#039;1.181667&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07072&#039;, &#039;Nom&#039;: &#039;REIMS-PRUNAY&#039;, &#039;Latitude&#039;: &#039;49.209667&#039;, &#039;Longitude&#039;: &#039;4.155333&#039;, &#039;Altitude&#039;: &#039;95&#039;}, {&#039;ID&#039;: &#039;07110&#039;, &#039;Nom&#039;: &#039;BREST-GUIPAVAS&#039;, &#039;Latitude&#039;: &#039;48.444167&#039;, &#039;Longitude&#039;: &#039;-4.412000&#039;, &#039;Altitude&#039;: &#039;94&#039;}, {&#039;ID&#039;: &#039;07117&#039;, &#039;Nom&#039;: &amp;quot;PLOUMANAC&#039;H&amp;quot;, &#039;Latitude&#039;: &#039;48.825833&#039;, &#039;Longitude&#039;: &#039;-3.473167&#039;, &#039;Altitude&#039;: &#039;55&#039;}, {&#039;ID&#039;: &#039;07130&#039;, &#039;Nom&#039;: &#039;RENNES-ST JACQUES&#039;, &#039;Latitude&#039;: &#039;48.068833&#039;, &#039;Longitude&#039;: &#039;-1.734000&#039;, &#039;Altitude&#039;: &#039;36&#039;}, {&#039;ID&#039;: &#039;07139&#039;, &#039;Nom&#039;: &#039;ALENCON&#039;, &#039;Latitude&#039;: &#039;48.445500&#039;, &#039;Longitude&#039;: &#039;0.110167&#039;, &#039;Altitude&#039;: &#039;143&#039;}, {&#039;ID&#039;: &#039;07149&#039;, &#039;Nom&#039;: &#039;ORLY&#039;, &#039;Latitude&#039;: &#039;48.716833&#039;, &#039;Longitude&#039;: &#039;2.384333&#039;, &#039;Altitude&#039;: &#039;89&#039;}, {&#039;ID&#039;: &#039;07168&#039;, &#039;Nom&#039;: &#039;TROYES-BARBEREY&#039;, &#039;Latitude&#039;: &#039;48.324667&#039;, &#039;Longitude&#039;: &#039;4.020000&#039;, &#039;Altitude&#039;: &#039;112&#039;}, {&#039;ID&#039;: &#039;07181&#039;, &#039;Nom&#039;: &#039;NANCY-OCHEY&#039;, &#039;Latitude&#039;: &#039;48.581000&#039;, &#039;Longitude&#039;: &#039;5.959833&#039;, &#039;Altitude&#039;: &#039;336&#039;}, {&#039;ID&#039;: &#039;07190&#039;, &#039;Nom&#039;: &#039;STRASBOURG-ENTZHEIM&#039;, &#039;Latitude&#039;: &#039;48.549500&#039;, &#039;Longitude&#039;: &#039;7.640333&#039;, &#039;Altitude&#039;: &#039;150&#039;}, {&#039;ID&#039;: &#039;07207&#039;, &#039;Nom&#039;: &#039;BELLE ILE-LE TALUT&#039;, &#039;Latitude&#039;: &#039;47.294333&#039;, &#039;Longitude&#039;: &#039;-3.218333&#039;, &#039;Altitude&#039;: &#039;34&#039;}, {&#039;ID&#039;: &#039;07222&#039;, &#039;Nom&#039;: &#039;NANTES-BOUGUENAIS&#039;, &#039;Latitude&#039;: &#039;47.150000&#039;, &#039;Longitude&#039;: &#039;-1.608833&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;07240&#039;, &#039;Nom&#039;: &#039;TOURS&#039;, &#039;Latitude&#039;: &#039;47.444500&#039;, &#039;Longitude&#039;: &#039;0.727333&#039;, &#039;Altitude&#039;: &#039;108&#039;}, {&#039;ID&#039;: &#039;07255&#039;, &#039;Nom&#039;: &#039;BOURGES&#039;, &#039;Latitude&#039;: &#039;47.059167&#039;, &#039;Longitude&#039;: &#039;2.359833&#039;, &#039;Altitude&#039;: &#039;161&#039;}, {&#039;ID&#039;: &#039;07280&#039;, &#039;Nom&#039;: &#039;DIJON-LONGVIC&#039;, &#039;Latitude&#039;: &#039;47.267833&#039;, &#039;Longitude&#039;: &#039;5.088333&#039;, &#039;Altitude&#039;: &#039;219&#039;}, {&#039;ID&#039;: &#039;07299&#039;, &#039;Nom&#039;: &#039;BALE-MULHOUSE&#039;, &#039;Latitude&#039;: &#039;47.614333&#039;, &#039;Longitude&#039;: &#039;7.510000&#039;, &#039;Altitude&#039;: &#039;263&#039;}, {&#039;ID&#039;: &#039;07314&#039;, &#039;Nom&#039;: &#039;PTE DE CHASSIRON&#039;, &#039;Latitude&#039;: &#039;46.046833&#039;, &#039;Longitude&#039;: &#039;-1.411500&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;07335&#039;, &#039;Nom&#039;: &#039;POITIERS-BIARD&#039;, &#039;Latitude&#039;: &#039;46.593833&#039;, &#039;Longitude&#039;: &#039;0.314333&#039;, &#039;Altitude&#039;: &#039;123&#039;}, {&#039;ID&#039;: &#039;07434&#039;, &#039;Nom&#039;: &#039;LIMOGES-BELLEGARDE&#039;, &#039;Latitude&#039;: &#039;45.861167&#039;, &#039;Longitude&#039;: &#039;1.175000&#039;, &#039;Altitude&#039;: &#039;402&#039;}, {&#039;ID&#039;: &#039;07460&#039;, &#039;Nom&#039;: &#039;CLERMONT-FD&#039;, &#039;Latitude&#039;: &#039;45.786833&#039;, &#039;Longitude&#039;: &#039;3.149333&#039;, &#039;Altitude&#039;: &#039;331&#039;}, {&#039;ID&#039;: &#039;07471&#039;, &#039;Nom&#039;: &#039;LE PUY-LOUDES&#039;, &#039;Latitude&#039;: &#039;45.074500&#039;, &#039;Longitude&#039;: &#039;3.764000&#039;, &#039;Altitude&#039;: &#039;833&#039;}, {&#039;ID&#039;: &#039;07481&#039;, &#039;Nom&#039;: &#039;LYON-ST EXUPERY&#039;, &#039;Latitude&#039;: &#039;45.726500&#039;, &#039;Longitude&#039;: &#039;5.077833&#039;, &#039;Altitude&#039;: &#039;235&#039;}, {&#039;ID&#039;: &#039;07510&#039;, &#039;Nom&#039;: &#039;BORDEAUX-MERIGNAC&#039;, &#039;Latitude&#039;: &#039;44.830667&#039;, &#039;Longitude&#039;: &#039;-0.691333&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07535&#039;, &#039;Nom&#039;: &#039;GOURDON&#039;, &#039;Latitude&#039;: &#039;44.745000&#039;, &#039;Longitude&#039;: &#039;1.396667&#039;, &#039;Altitude&#039;: &#039;260&#039;}, {&#039;ID&#039;: &#039;07558&#039;, &#039;Nom&#039;: &#039;MILLAU&#039;, &#039;Latitude&#039;: &#039;44.118500&#039;, &#039;Longitude&#039;: &#039;3.019500&#039;, &#039;Altitude&#039;: &#039;712&#039;}, {&#039;ID&#039;: &#039;07577&#039;, &#039;Nom&#039;: &#039;MONTELIMAR&#039;, &#039;Latitude&#039;: &#039;44.581167&#039;, &#039;Longitude&#039;: &#039;4.733000&#039;, &#039;Altitude&#039;: &#039;73&#039;}, {&#039;ID&#039;: &#039;07591&#039;, &#039;Nom&#039;: &#039;EMBRUN&#039;, &#039;Latitude&#039;: &#039;44.565667&#039;, &#039;Longitude&#039;: &#039;6.502333&#039;, &#039;Altitude&#039;: &#039;871&#039;}, {&#039;ID&#039;: &#039;07607&#039;, &#039;Nom&#039;: &#039;MONT-DE-MARSAN&#039;, &#039;Latitude&#039;: &#039;43.909833&#039;, &#039;Longitude&#039;: &#039;-0.500167&#039;, &#039;Altitude&#039;: &#039;59&#039;}, {&#039;ID&#039;: &#039;07621&#039;, &#039;Nom&#039;: &#039;TARBES-OSSUN&#039;, &#039;Latitude&#039;: &#039;43.188000&#039;, &#039;Longitude&#039;: &#039;0.000000&#039;, &#039;Altitude&#039;: &#039;360&#039;}, {&#039;ID&#039;: &#039;07627&#039;, &#039;Nom&#039;: &#039;ST GIRONS&#039;, &#039;Latitude&#039;: &#039;43.005333&#039;, &#039;Longitude&#039;: &#039;1.106833&#039;, &#039;Altitude&#039;: &#039;414&#039;}, {&#039;ID&#039;: &#039;07630&#039;, &#039;Nom&#039;: &#039;TOULOUSE-BLAGNAC&#039;, &#039;Latitude&#039;: &#039;43.621000&#039;, &#039;Longitude&#039;: &#039;1.378833&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07643&#039;, &#039;Nom&#039;: &#039;MONTPELLIER&#039;, &#039;Latitude&#039;: &#039;43.577000&#039;, &#039;Longitude&#039;: &#039;3.963167&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07650&#039;, &#039;Nom&#039;: &#039;MARIGNANE&#039;, &#039;Latitude&#039;: &#039;43.437667&#039;, &#039;Longitude&#039;: &#039;5.216000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;07661&#039;, &#039;Nom&#039;: &#039;CAP CEPET&#039;, &#039;Latitude&#039;: &#039;43.079333&#039;, &#039;Longitude&#039;: &#039;5.940833&#039;, &#039;Altitude&#039;: &#039;115&#039;}, {&#039;ID&#039;: &#039;07690&#039;, &#039;Nom&#039;: &#039;NICE&#039;, &#039;Latitude&#039;: &#039;43.648833&#039;, &#039;Longitude&#039;: &#039;7.209000&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07747&#039;, &#039;Nom&#039;: &#039;PERPIGNAN&#039;, &#039;Latitude&#039;: &#039;42.737167&#039;, &#039;Longitude&#039;: &#039;2.872833&#039;, &#039;Altitude&#039;: &#039;42&#039;}, {&#039;ID&#039;: &#039;07761&#039;, &#039;Nom&#039;: &#039;AJACCIO&#039;, &#039;Latitude&#039;: &#039;41.918000&#039;, &#039;Longitude&#039;: &#039;8.792667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;07790&#039;, &#039;Nom&#039;: &#039;BASTIA&#039;, &#039;Latitude&#039;: &#039;42.540667&#039;, &#039;Longitude&#039;: &#039;9.485167&#039;, &#039;Altitude&#039;: &#039;10&#039;}, {&#039;ID&#039;: &#039;61968&#039;, &#039;Nom&#039;: &#039;GLORIEUSES&#039;, &#039;Latitude&#039;: &#039;-11.582667&#039;, &#039;Longitude&#039;: &#039;47.289667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;61970&#039;, &#039;Nom&#039;: &#039;JUAN DE NOVA&#039;, &#039;Latitude&#039;: &#039;-17.054667&#039;, &#039;Longitude&#039;: &#039;42.712000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;61972&#039;, &#039;Nom&#039;: &#039;EUROPA&#039;, &#039;Latitude&#039;: &#039;-22.344167&#039;, &#039;Longitude&#039;: &#039;40.340667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;61976&#039;, &#039;Nom&#039;: &#039;TROMELIN&#039;, &#039;Latitude&#039;: &#039;-15.887667&#039;, &#039;Longitude&#039;: &#039;54.520667&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;61980&#039;, &#039;Nom&#039;: &#039;GILLOT-AEROPORT&#039;, &#039;Latitude&#039;: &#039;-20.892500&#039;, &#039;Longitude&#039;: &#039;55.528667&#039;, &#039;Altitude&#039;: &#039;8&#039;}, {&#039;ID&#039;: &#039;61996&#039;, &#039;Nom&#039;: &#039;NOUVELLE AMSTERDAM&#039;, &#039;Latitude&#039;: &#039;-37.795167&#039;, &#039;Longitude&#039;: &#039;77.569167&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;61997&#039;, &#039;Nom&#039;: &#039;CROZET&#039;, &#039;Latitude&#039;: &#039;-46.432500&#039;, &#039;Longitude&#039;: &#039;51.856667&#039;, &#039;Altitude&#039;: &#039;146&#039;}, {&#039;ID&#039;: &#039;61998&#039;, &#039;Nom&#039;: &#039;KERGUELEN&#039;, &#039;Latitude&#039;: &#039;-49.352333&#039;, &#039;Longitude&#039;: &#039;70.243333&#039;, &#039;Altitude&#039;: &#039;29&#039;}, {&#039;ID&#039;: &#039;67005&#039;, &#039;Nom&#039;: &#039;PAMANDZI&#039;, &#039;Latitude&#039;: &#039;-12.805500&#039;, &#039;Longitude&#039;: &#039;45.282833&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;71805&#039;, &#039;Nom&#039;: &#039;ST-PIERRE&#039;, &#039;Latitude&#039;: &#039;46.766333&#039;, &#039;Longitude&#039;: &#039;-56.179167&#039;, &#039;Altitude&#039;: &#039;21&#039;}, {&#039;ID&#039;: &#039;78890&#039;, &#039;Nom&#039;: &#039;LA DESIRADE METEO&#039;, &#039;Latitude&#039;: &#039;16.335000&#039;, &#039;Longitude&#039;: &#039;-61.004000&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;78894&#039;, &#039;Nom&#039;: &#039;ST-BARTHELEMY METEO&#039;, &#039;Latitude&#039;: &#039;17.901500&#039;, &#039;Longitude&#039;: &#039;-62.852167&#039;, &#039;Altitude&#039;: &#039;44&#039;}, {&#039;ID&#039;: &#039;78897&#039;, &#039;Nom&#039;: &#039;LE RAIZET AERO&#039;, &#039;Latitude&#039;: &#039;16.264000&#039;, &#039;Longitude&#039;: &#039;-61.516333&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;78922&#039;, &#039;Nom&#039;: &#039;TRINITE-CARAVEL&#039;, &#039;Latitude&#039;: &#039;14.774500&#039;, &#039;Longitude&#039;: &#039;-60.875333&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;78925&#039;, &#039;Nom&#039;: &#039;LAMENTIN-AERO&#039;, &#039;Latitude&#039;: &#039;14.595333&#039;, &#039;Longitude&#039;: &#039;-60.995667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;81401&#039;, &#039;Nom&#039;: &#039;SAINT LAURENT&#039;, &#039;Latitude&#039;: &#039;5.485500&#039;, &#039;Longitude&#039;: &#039;-54.031667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;81405&#039;, &#039;Nom&#039;: &#039;CAYENNE-MATOURY&#039;, &#039;Latitude&#039;: &#039;4.822333&#039;, &#039;Longitude&#039;: &#039;-52.365333&#039;, &#039;Altitude&#039;: &#039;4&#039;}, {&#039;ID&#039;: &#039;81408&#039;, &#039;Nom&#039;: &#039;SAINT GEORGES&#039;, &#039;Latitude&#039;: &#039;3.890667&#039;, &#039;Longitude&#039;: &#039;-51.804667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;81415&#039;, &#039;Nom&#039;: &#039;MARIPASOULA&#039;, &#039;Latitude&#039;: &#039;3.640167&#039;, &#039;Longitude&#039;: &#039;-54.028333&#039;, &#039;Altitude&#039;: &#039;106&#039;}, {&#039;ID&#039;: &#039;89642&#039;, &#039;Nom&#039;: &amp;quot;DUMONT D&#039;URVILLE&amp;quot;, &#039;Latitude&#039;: &#039;-66.663167&#039;, &#039;Longitude&#039;: &#039;140.001000&#039;, &#039;Altitude&#039;: &#039;43&#039;}]&lt;br /&gt;
&lt;br /&gt;
def distance(lat1, lon1, lat2, lon2):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Calcule la distance entre deux points géographiques en utilisant la formule de la distance euclidienne.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return math.sqrt((lat2 - lat1)**2 + (lon2 - lon1)**2)&lt;br /&gt;
&lt;br /&gt;
def station_la_plus_proche(x, y, stations):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Trouve la station météo la plus proche en utilisant les coordonnées x et y (latitude et longitude).&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    distance_min = float(&#039;inf&#039;)&lt;br /&gt;
    station_proche = None&lt;br /&gt;
    &lt;br /&gt;
    for station in stations:&lt;br /&gt;
        lat_station = float(station[&#039;Latitude&#039;])&lt;br /&gt;
        lon_station = float(station[&#039;Longitude&#039;])&lt;br /&gt;
        d = distance(x, y, lat_station, lon_station)&lt;br /&gt;
        if d &amp;lt; distance_min:&lt;br /&gt;
            distance_min = d&lt;br /&gt;
            station_proche = station&lt;br /&gt;
    &lt;br /&gt;
    return station_proche&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la latitude et la longitude&lt;br /&gt;
x_input = input(&amp;quot;Entrez la latitude de votre lieux: &amp;quot;)&lt;br /&gt;
y_input = input(&amp;quot;Entrez la longitude de votre lieux: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
x_input = float(x_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
y_input = float(y_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
# Utilisez les valeurs entrées par l&#039;utilisateur comme variables x et y pour trouver la station météo la plus proche&lt;br /&gt;
station_proche = station_la_plus_proche(x_input, y_input, stations)&lt;br /&gt;
print(&amp;quot;La station météo la plus proche est:&amp;quot;, station_proche[&#039;Nom&#039;])&lt;br /&gt;
&lt;br /&gt;
result=combined_df[combined_df[&#039;numer_sta&#039;]==int(station_proche[&#039;ID&#039;])]&lt;br /&gt;
&lt;br /&gt;
# Convertir la colonne &#039;date_column&#039; dans un format datetime et la mettre en index trié&lt;br /&gt;
result[&#039;datetime&#039;] = pd.to_datetime(result[&#039;date&#039;], format=&#039;%Y%m%d%H%M%S&#039;)&lt;br /&gt;
result.set_index(&#039;datetime&#039;, inplace=True)&lt;br /&gt;
result = result.sort_index()&lt;br /&gt;
&lt;br /&gt;
# remplacer les données manquantes par 0&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].replace(&#039;mq&#039;,&#039;0&#039;)&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].astype(&#039;float&#039;)&lt;br /&gt;
&lt;br /&gt;
# Ne garder que la colonne des précipitations des 3 dernieres heures&lt;br /&gt;
result=result[&#039;rr3&#039;]&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par jour&lt;br /&gt;
resultday=result.resample(&#039;D&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour (mm):\n&amp;quot;, resultday.mean())&lt;br /&gt;
print(&amp;quot;Minimum par jour (mm):\n&amp;quot;, resultday.min())&lt;br /&gt;
print(&amp;quot;Maximum par jour  (mm):\n&amp;quot;, resultday.max())&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par semaine&lt;br /&gt;
resultweek=result.resample(&#039;W&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par mois&lt;br /&gt;
resultmonth=result.resample(&#039;ME&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par trimestre&lt;br /&gt;
resulttrim=result.resample(&#039;QE&#039;).sum()&lt;br /&gt;
resulttrim=resulttrim.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
print(resulttrim)&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par an&lt;br /&gt;
resultyear=result.resample(&#039;YE&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nPrécipitations annuelles moyennes (mm):\n&amp;quot;,resultyear.mean())&lt;br /&gt;
&lt;br /&gt;
# Calculer le nombre de jours consécutifs maximum sans pluie&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
for value in resultday:&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        current_streak = 0  # Reset the streak if the value is not zero&lt;br /&gt;
print(f&amp;quot;\nNombre de jours consecutifs maximum sans pluie: {max_streak}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Moyenne par trimestre pour chaque trimestre&lt;br /&gt;
moyenne_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).mean()&lt;br /&gt;
&lt;br /&gt;
# Minimum par trimestre pour chaque trimestre&lt;br /&gt;
min_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).min()&lt;br /&gt;
&lt;br /&gt;
# Maximum par trimestre pour chaque trimestre&lt;br /&gt;
max_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).max()&lt;br /&gt;
&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre (mm):\n&amp;quot;, moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMinimum par trimestre pour chaque trimestre (mm):\n&amp;quot;, min_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par trimestre pour chaque trimestre (mm):\n&amp;quot;, max_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
# Minimum par jour pour chaque trimestre&lt;br /&gt;
min_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).min()&lt;br /&gt;
min_par_jour_par_trimestre=min_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
# Maximum par jour pour chaque trimestre&lt;br /&gt;
max_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).max()&lt;br /&gt;
max_par_jour_par_trimestre=max_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
# Moyenne par jour pour chaque trimestre&lt;br /&gt;
moyenne_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).mean()&lt;br /&gt;
moyenne_par_jour_par_trimestre=moyenne_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMinimum par jour pour chaque trimestre (mm):\n&amp;quot;, min_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par jour pour chaque trimestre (mm):\n&amp;quot;, max_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour pour chaque trimestre (mm):\n&amp;quot;, moyenne_par_jour_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour la latitude 44.2 et longitude 0.6 on obtient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processing des data&lt;br /&gt;
&lt;br /&gt;
Entrez la latitude de votre lieux: 44.2&lt;br /&gt;
Entrez la longitude de votre lieux: 0.6&lt;br /&gt;
La station météo la plus proche est: GOURDON&lt;br /&gt;
&lt;br /&gt;
Moyenne par jour (mm):&lt;br /&gt;
 2.022896963663514&lt;br /&gt;
Minimum par jour (mm):&lt;br /&gt;
 -0.6000000000000001&lt;br /&gt;
Maximum par jour  (mm):&lt;br /&gt;
 55.0&lt;br /&gt;
trimestre&lt;br /&gt;
2010-03-31    202.0&lt;br /&gt;
2010-06-30    245.4&lt;br /&gt;
2010-09-30    132.2&lt;br /&gt;
2010-12-31    201.2&lt;br /&gt;
2011-03-31    126.7&lt;br /&gt;
2011-06-30    102.2&lt;br /&gt;
2011-09-30    164.6&lt;br /&gt;
2011-12-31    207.0&lt;br /&gt;
2012-03-31     99.8&lt;br /&gt;
2012-06-30    341.0&lt;br /&gt;
2012-09-30    100.0&lt;br /&gt;
2012-12-31    188.8&lt;br /&gt;
2013-03-31    248.4&lt;br /&gt;
2013-06-30    307.5&lt;br /&gt;
2013-09-30    136.6&lt;br /&gt;
2013-12-31    247.8&lt;br /&gt;
2014-03-31    253.8&lt;br /&gt;
2014-06-30    201.8&lt;br /&gt;
2014-09-30    192.8&lt;br /&gt;
2014-12-31    139.0&lt;br /&gt;
2015-03-31    176.4&lt;br /&gt;
2015-06-30    155.7&lt;br /&gt;
2015-09-30    184.6&lt;br /&gt;
2015-12-31     82.6&lt;br /&gt;
2016-03-31    322.1&lt;br /&gt;
2016-06-30    300.4&lt;br /&gt;
2016-09-30     29.0&lt;br /&gt;
2016-12-31    115.1&lt;br /&gt;
2017-03-31    213.0&lt;br /&gt;
2017-06-30    216.3&lt;br /&gt;
2017-09-30    133.2&lt;br /&gt;
2017-12-31    155.3&lt;br /&gt;
2018-03-31    252.8&lt;br /&gt;
2018-06-30    251.9&lt;br /&gt;
2018-09-30    103.7&lt;br /&gt;
2018-12-31    199.3&lt;br /&gt;
2019-03-31    100.1&lt;br /&gt;
2019-06-30    203.5&lt;br /&gt;
2019-09-30    138.8&lt;br /&gt;
2019-12-31    350.9&lt;br /&gt;
2020-03-31    149.5&lt;br /&gt;
2020-06-30    150.9&lt;br /&gt;
2020-09-30     66.9&lt;br /&gt;
2020-12-31    237.4&lt;br /&gt;
Freq: QE-DEC, Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Précipitations annuelles moyennes (mm):&lt;br /&gt;
 738.9090909090909&lt;br /&gt;
&lt;br /&gt;
Nombre de jours consecutifs maximum sans pluie: 44&lt;br /&gt;
&lt;br /&gt;
Moyenne par trimestre pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    194.963636&lt;br /&gt;
2    225.145455&lt;br /&gt;
3    125.672727&lt;br /&gt;
4    193.127273&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Minimum par trimestre pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1     99.8&lt;br /&gt;
2    102.2&lt;br /&gt;
3     29.0&lt;br /&gt;
4     82.6&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Maximum par trimestre pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    322.1&lt;br /&gt;
2    341.0&lt;br /&gt;
3    192.8&lt;br /&gt;
4    350.9&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Minimum par jour pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1   -0.6&lt;br /&gt;
2   -0.4&lt;br /&gt;
3   -0.3&lt;br /&gt;
4   -0.5&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Maximum par jour pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    42.8&lt;br /&gt;
2    55.0&lt;br /&gt;
3    50.2&lt;br /&gt;
4    28.0&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Moyenne par jour pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    2.159718&lt;br /&gt;
2    2.474126&lt;br /&gt;
3    1.366008&lt;br /&gt;
4    2.099209&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Dimensionner la surfce de récupération et le stockage&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Pour dimensionner, le stockage, on se rappellera utilement que 1m2 de surface donne un équivalent d&#039;1L pour 1mm de précipitations.&lt;br /&gt;
&lt;br /&gt;
On peut alors faire des calculs avec les précipitations moyennes précédemment estimées et les consommations moyennes précédemment mesurées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exemple pour 1m2:&lt;br /&gt;
&lt;br /&gt;
annuel (L)				739&lt;br /&gt;
&lt;br /&gt;
max jour (L)				55&lt;br /&gt;
&lt;br /&gt;
min trimestre (L)			29&lt;br /&gt;
&lt;br /&gt;
max trimestre (L)			350&lt;br /&gt;
&lt;br /&gt;
moyenne min trimestre(L)		125&lt;br /&gt;
&lt;br /&gt;
Besoins:&lt;br /&gt;
&lt;br /&gt;
Max 44 j sans pluie solo (L)		1735&lt;br /&gt;
&lt;br /&gt;
Max 44 j sans pluie duo (L)		4727&lt;br /&gt;
&lt;br /&gt;
consommation solo trimestre		3549&lt;br /&gt;
&lt;br /&gt;
consommation duo trimestre		9669&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estimation &amp;quot;grosse louche&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
conso trimestre/precipitations moyenne min trimestre  =&lt;br /&gt;
&lt;br /&gt;
solo : 3588/125=29&lt;br /&gt;
&lt;br /&gt;
duo: 9776/125=78&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; Il faut 29m2 pour satisfaire les besoins solo avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; Il faut 78m2 pour satisfaire les besoins duo avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
Les fortes précipitations sont généralement regroupées (grand écartype a la moyenne),&lt;br /&gt;
&lt;br /&gt;
et on prendra par conséquent un réservoir minimum dimensionné à deux fois et demi&lt;br /&gt;
&lt;br /&gt;
ce qui est nécessaire pour la précipitation journalière maximum.&lt;br /&gt;
&lt;br /&gt;
Contraintes précipitations importantes:&lt;br /&gt;
&lt;br /&gt;
Il faut a minima un reservoir de 3987L en solo (2.5*précipitations journaliere max*29)&lt;br /&gt;
&lt;br /&gt;
et 10725L en duo (2.5*précipitations max *78)&lt;br /&gt;
&lt;br /&gt;
Mais il faut également un minimum pour les périodes de sécheresses:&lt;br /&gt;
&lt;br /&gt;
1735L en solo (44j consécutifs max sans pluie) de réserve avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
4727L en duo (44j consécutifs max sans pluie) de réserve avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
ce qui est satisfait avec la contrainte précédente.&lt;br /&gt;
&lt;br /&gt;
On va maintenant utiliser ces résultats de surface minimum et de stockage minimum&lt;br /&gt;
&lt;br /&gt;
comme hypothèse de base et ajouter un &amp;quot;data-test&amp;quot; avec des itérations (50% de la surface min&lt;br /&gt;
&lt;br /&gt;
et 100% du volume min comme points de depart de l&#039;iteration) sur la surface&lt;br /&gt;
&lt;br /&gt;
de récupération et le volume de stockage pour vérifier qu&#039;on n&#039;a pas de tarissement&lt;br /&gt;
&lt;br /&gt;
de notre stockage (on fait l&#039;hypothèse qu&#039;il y a une gestion du trop plein et qu&#039;on n&#039;a donc&lt;br /&gt;
&lt;br /&gt;
pas de problèmes de réservoir qui déborde) et qu&#039;on satisfait les besoins de consommation.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Optimiser le stockage et prendre en compte une utilisation supplémentaire d&#039;eau en periode estivale&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Le bout de code python amélioré est le suivant (les commentaires expliquent chaque etape).&lt;br /&gt;
&lt;br /&gt;
Pour expliquer un peu l’étape de l’itération :&lt;br /&gt;
On démarre aux volume0 de capacité et surface0 de surface précalculées dans l’étape précédente.&lt;br /&gt;
On fait des boucles d&#039;itérations sur les données de précipitations et chaque jour on fait la soustraction &lt;br /&gt;
eau recupérée-consommation journalière+consommation estivale si en periode estivale&lt;br /&gt;
En cas de tarissement: &lt;br /&gt;
on a une première boucle d’iteration 6 fois de +33 % de la surface, et pour chaque itération de surface, on a une deuxième boucle d’iteration 40 fois de +50 % du volume. On s’arrete à chaque boucle d’iteration dès que le dimensionnement convient et on enregistre le resultat.&lt;br /&gt;
On affiche les résultats à la fin des itérations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
import os&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import time&lt;br /&gt;
# Attention si vous utilisez ce bout de code dans d&#039;autres pays que la france, il faut ajouter&lt;br /&gt;
# les stations météos adhoc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Processing des data&lt;br /&gt;
print(&amp;quot;\nprocessing des data\n&amp;quot;)&lt;br /&gt;
files=os.listdir(&#039;.&#039;)&lt;br /&gt;
csv=[a for a in files if a[-3:]==&#039;csv&#039;]&lt;br /&gt;
combined_df = pd.concat((pd.read_csv(f,sep=&#039;;&#039;) for f in csv), ignore_index=True)&lt;br /&gt;
#07510 bordeaux&lt;br /&gt;
#07535 gourdon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#stations météos &amp;quot;hard coded&amp;quot;&lt;br /&gt;
stations=[{&#039;ID&#039;: &#039;07005&#039;, &#039;Nom&#039;: &#039;ABBEVILLE&#039;, &#039;Latitude&#039;: &#039;50.136000&#039;, &#039;Longitude&#039;: &#039;1.834000&#039;, &#039;Altitude&#039;: &#039;69&#039;}, {&#039;ID&#039;: &#039;07015&#039;, &#039;Nom&#039;: &#039;LILLE-LESQUIN&#039;, &#039;Latitude&#039;: &#039;50.570000&#039;, &#039;Longitude&#039;: &#039;3.097500&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07020&#039;, &#039;Nom&#039;: &#039;PTE DE LA HAGUE&#039;, &#039;Latitude&#039;: &#039;49.725167&#039;, &#039;Longitude&#039;: &#039;-1.939833&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;07027&#039;, &#039;Nom&#039;: &#039;CAEN-CARPIQUET&#039;, &#039;Latitude&#039;: &#039;49.180000&#039;, &#039;Longitude&#039;: &#039;-0.456167&#039;, &#039;Altitude&#039;: &#039;67&#039;}, {&#039;ID&#039;: &#039;07037&#039;, &#039;Nom&#039;: &#039;ROUEN-BOOS&#039;, &#039;Latitude&#039;: &#039;49.383000&#039;, &#039;Longitude&#039;: &#039;1.181667&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07072&#039;, &#039;Nom&#039;: &#039;REIMS-PRUNAY&#039;, &#039;Latitude&#039;: &#039;49.209667&#039;, &#039;Longitude&#039;: &#039;4.155333&#039;, &#039;Altitude&#039;: &#039;95&#039;}, {&#039;ID&#039;: &#039;07110&#039;, &#039;Nom&#039;: &#039;BREST-GUIPAVAS&#039;, &#039;Latitude&#039;: &#039;48.444167&#039;, &#039;Longitude&#039;: &#039;-4.412000&#039;, &#039;Altitude&#039;: &#039;94&#039;}, {&#039;ID&#039;: &#039;07117&#039;, &#039;Nom&#039;: &amp;quot;PLOUMANAC&#039;H&amp;quot;, &#039;Latitude&#039;: &#039;48.825833&#039;, &#039;Longitude&#039;: &#039;-3.473167&#039;, &#039;Altitude&#039;: &#039;55&#039;}, {&#039;ID&#039;: &#039;07130&#039;, &#039;Nom&#039;: &#039;RENNES-ST JACQUES&#039;, &#039;Latitude&#039;: &#039;48.068833&#039;, &#039;Longitude&#039;: &#039;-1.734000&#039;, &#039;Altitude&#039;: &#039;36&#039;}, {&#039;ID&#039;: &#039;07139&#039;, &#039;Nom&#039;: &#039;ALENCON&#039;, &#039;Latitude&#039;: &#039;48.445500&#039;, &#039;Longitude&#039;: &#039;0.110167&#039;, &#039;Altitude&#039;: &#039;143&#039;}, {&#039;ID&#039;: &#039;07149&#039;, &#039;Nom&#039;: &#039;ORLY&#039;, &#039;Latitude&#039;: &#039;48.716833&#039;, &#039;Longitude&#039;: &#039;2.384333&#039;, &#039;Altitude&#039;: &#039;89&#039;}, {&#039;ID&#039;: &#039;07168&#039;, &#039;Nom&#039;: &#039;TROYES-BARBEREY&#039;, &#039;Latitude&#039;: &#039;48.324667&#039;, &#039;Longitude&#039;: &#039;4.020000&#039;, &#039;Altitude&#039;: &#039;112&#039;}, {&#039;ID&#039;: &#039;07181&#039;, &#039;Nom&#039;: &#039;NANCY-OCHEY&#039;, &#039;Latitude&#039;: &#039;48.581000&#039;, &#039;Longitude&#039;: &#039;5.959833&#039;, &#039;Altitude&#039;: &#039;336&#039;}, {&#039;ID&#039;: &#039;07190&#039;, &#039;Nom&#039;: &#039;STRASBOURG-ENTZHEIM&#039;, &#039;Latitude&#039;: &#039;48.549500&#039;, &#039;Longitude&#039;: &#039;7.640333&#039;, &#039;Altitude&#039;: &#039;150&#039;}, {&#039;ID&#039;: &#039;07207&#039;, &#039;Nom&#039;: &#039;BELLE ILE-LE TALUT&#039;, &#039;Latitude&#039;: &#039;47.294333&#039;, &#039;Longitude&#039;: &#039;-3.218333&#039;, &#039;Altitude&#039;: &#039;34&#039;}, {&#039;ID&#039;: &#039;07222&#039;, &#039;Nom&#039;: &#039;NANTES-BOUGUENAIS&#039;, &#039;Latitude&#039;: &#039;47.150000&#039;, &#039;Longitude&#039;: &#039;-1.608833&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;07240&#039;, &#039;Nom&#039;: &#039;TOURS&#039;, &#039;Latitude&#039;: &#039;47.444500&#039;, &#039;Longitude&#039;: &#039;0.727333&#039;, &#039;Altitude&#039;: &#039;108&#039;}, {&#039;ID&#039;: &#039;07255&#039;, &#039;Nom&#039;: &#039;BOURGES&#039;, &#039;Latitude&#039;: &#039;47.059167&#039;, &#039;Longitude&#039;: &#039;2.359833&#039;, &#039;Altitude&#039;: &#039;161&#039;}, {&#039;ID&#039;: &#039;07280&#039;, &#039;Nom&#039;: &#039;DIJON-LONGVIC&#039;, &#039;Latitude&#039;: &#039;47.267833&#039;, &#039;Longitude&#039;: &#039;5.088333&#039;, &#039;Altitude&#039;: &#039;219&#039;}, {&#039;ID&#039;: &#039;07299&#039;, &#039;Nom&#039;: &#039;BALE-MULHOUSE&#039;, &#039;Latitude&#039;: &#039;47.614333&#039;, &#039;Longitude&#039;: &#039;7.510000&#039;, &#039;Altitude&#039;: &#039;263&#039;}, {&#039;ID&#039;: &#039;07314&#039;, &#039;Nom&#039;: &#039;PTE DE CHASSIRON&#039;, &#039;Latitude&#039;: &#039;46.046833&#039;, &#039;Longitude&#039;: &#039;-1.411500&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;07335&#039;, &#039;Nom&#039;: &#039;POITIERS-BIARD&#039;, &#039;Latitude&#039;: &#039;46.593833&#039;, &#039;Longitude&#039;: &#039;0.314333&#039;, &#039;Altitude&#039;: &#039;123&#039;}, {&#039;ID&#039;: &#039;07434&#039;, &#039;Nom&#039;: &#039;LIMOGES-BELLEGARDE&#039;, &#039;Latitude&#039;: &#039;45.861167&#039;, &#039;Longitude&#039;: &#039;1.175000&#039;, &#039;Altitude&#039;: &#039;402&#039;}, {&#039;ID&#039;: &#039;07460&#039;, &#039;Nom&#039;: &#039;CLERMONT-FD&#039;, &#039;Latitude&#039;: &#039;45.786833&#039;, &#039;Longitude&#039;: &#039;3.149333&#039;, &#039;Altitude&#039;: &#039;331&#039;}, {&#039;ID&#039;: &#039;07471&#039;, &#039;Nom&#039;: &#039;LE PUY-LOUDES&#039;, &#039;Latitude&#039;: &#039;45.074500&#039;, &#039;Longitude&#039;: &#039;3.764000&#039;, &#039;Altitude&#039;: &#039;833&#039;}, {&#039;ID&#039;: &#039;07481&#039;, &#039;Nom&#039;: &#039;LYON-ST EXUPERY&#039;, &#039;Latitude&#039;: &#039;45.726500&#039;, &#039;Longitude&#039;: &#039;5.077833&#039;, &#039;Altitude&#039;: &#039;235&#039;}, {&#039;ID&#039;: &#039;07510&#039;, &#039;Nom&#039;: &#039;BORDEAUX-MERIGNAC&#039;, &#039;Latitude&#039;: &#039;44.830667&#039;, &#039;Longitude&#039;: &#039;-0.691333&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07535&#039;, &#039;Nom&#039;: &#039;GOURDON&#039;, &#039;Latitude&#039;: &#039;44.745000&#039;, &#039;Longitude&#039;: &#039;1.396667&#039;, &#039;Altitude&#039;: &#039;260&#039;}, {&#039;ID&#039;: &#039;07558&#039;, &#039;Nom&#039;: &#039;MILLAU&#039;, &#039;Latitude&#039;: &#039;44.118500&#039;, &#039;Longitude&#039;: &#039;3.019500&#039;, &#039;Altitude&#039;: &#039;712&#039;}, {&#039;ID&#039;: &#039;07577&#039;, &#039;Nom&#039;: &#039;MONTELIMAR&#039;, &#039;Latitude&#039;: &#039;44.581167&#039;, &#039;Longitude&#039;: &#039;4.733000&#039;, &#039;Altitude&#039;: &#039;73&#039;}, {&#039;ID&#039;: &#039;07591&#039;, &#039;Nom&#039;: &#039;EMBRUN&#039;, &#039;Latitude&#039;: &#039;44.565667&#039;, &#039;Longitude&#039;: &#039;6.502333&#039;, &#039;Altitude&#039;: &#039;871&#039;}, {&#039;ID&#039;: &#039;07607&#039;, &#039;Nom&#039;: &#039;MONT-DE-MARSAN&#039;, &#039;Latitude&#039;: &#039;43.909833&#039;, &#039;Longitude&#039;: &#039;-0.500167&#039;, &#039;Altitude&#039;: &#039;59&#039;}, {&#039;ID&#039;: &#039;07621&#039;, &#039;Nom&#039;: &#039;TARBES-OSSUN&#039;, &#039;Latitude&#039;: &#039;43.188000&#039;, &#039;Longitude&#039;: &#039;0.000000&#039;, &#039;Altitude&#039;: &#039;360&#039;}, {&#039;ID&#039;: &#039;07627&#039;, &#039;Nom&#039;: &#039;ST GIRONS&#039;, &#039;Latitude&#039;: &#039;43.005333&#039;, &#039;Longitude&#039;: &#039;1.106833&#039;, &#039;Altitude&#039;: &#039;414&#039;}, {&#039;ID&#039;: &#039;07630&#039;, &#039;Nom&#039;: &#039;TOULOUSE-BLAGNAC&#039;, &#039;Latitude&#039;: &#039;43.621000&#039;, &#039;Longitude&#039;: &#039;1.378833&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07643&#039;, &#039;Nom&#039;: &#039;MONTPELLIER&#039;, &#039;Latitude&#039;: &#039;43.577000&#039;, &#039;Longitude&#039;: &#039;3.963167&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07650&#039;, &#039;Nom&#039;: &#039;MARIGNANE&#039;, &#039;Latitude&#039;: &#039;43.437667&#039;, &#039;Longitude&#039;: &#039;5.216000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;07661&#039;, &#039;Nom&#039;: &#039;CAP CEPET&#039;, &#039;Latitude&#039;: &#039;43.079333&#039;, &#039;Longitude&#039;: &#039;5.940833&#039;, &#039;Altitude&#039;: &#039;115&#039;}, {&#039;ID&#039;: &#039;07690&#039;, &#039;Nom&#039;: &#039;NICE&#039;, &#039;Latitude&#039;: &#039;43.648833&#039;, &#039;Longitude&#039;: &#039;7.209000&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07747&#039;, &#039;Nom&#039;: &#039;PERPIGNAN&#039;, &#039;Latitude&#039;: &#039;42.737167&#039;, &#039;Longitude&#039;: &#039;2.872833&#039;, &#039;Altitude&#039;: &#039;42&#039;}, {&#039;ID&#039;: &#039;07761&#039;, &#039;Nom&#039;: &#039;AJACCIO&#039;, &#039;Latitude&#039;: &#039;41.918000&#039;, &#039;Longitude&#039;: &#039;8.792667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;07790&#039;, &#039;Nom&#039;: &#039;BASTIA&#039;, &#039;Latitude&#039;: &#039;42.540667&#039;, &#039;Longitude&#039;: &#039;9.485167&#039;, &#039;Altitude&#039;: &#039;10&#039;}, {&#039;ID&#039;: &#039;61968&#039;, &#039;Nom&#039;: &#039;GLORIEUSES&#039;, &#039;Latitude&#039;: &#039;-11.582667&#039;, &#039;Longitude&#039;: &#039;47.289667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;61970&#039;, &#039;Nom&#039;: &#039;JUAN DE NOVA&#039;, &#039;Latitude&#039;: &#039;-17.054667&#039;, &#039;Longitude&#039;: &#039;42.712000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;61972&#039;, &#039;Nom&#039;: &#039;EUROPA&#039;, &#039;Latitude&#039;: &#039;-22.344167&#039;, &#039;Longitude&#039;: &#039;40.340667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;61976&#039;, &#039;Nom&#039;: &#039;TROMELIN&#039;, &#039;Latitude&#039;: &#039;-15.887667&#039;, &#039;Longitude&#039;: &#039;54.520667&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;61980&#039;, &#039;Nom&#039;: &#039;GILLOT-AEROPORT&#039;, &#039;Latitude&#039;: &#039;-20.892500&#039;, &#039;Longitude&#039;: &#039;55.528667&#039;, &#039;Altitude&#039;: &#039;8&#039;}, {&#039;ID&#039;: &#039;61996&#039;, &#039;Nom&#039;: &#039;NOUVELLE AMSTERDAM&#039;, &#039;Latitude&#039;: &#039;-37.795167&#039;, &#039;Longitude&#039;: &#039;77.569167&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;61997&#039;, &#039;Nom&#039;: &#039;CROZET&#039;, &#039;Latitude&#039;: &#039;-46.432500&#039;, &#039;Longitude&#039;: &#039;51.856667&#039;, &#039;Altitude&#039;: &#039;146&#039;}, {&#039;ID&#039;: &#039;61998&#039;, &#039;Nom&#039;: &#039;KERGUELEN&#039;, &#039;Latitude&#039;: &#039;-49.352333&#039;, &#039;Longitude&#039;: &#039;70.243333&#039;, &#039;Altitude&#039;: &#039;29&#039;}, {&#039;ID&#039;: &#039;67005&#039;, &#039;Nom&#039;: &#039;PAMANDZI&#039;, &#039;Latitude&#039;: &#039;-12.805500&#039;, &#039;Longitude&#039;: &#039;45.282833&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;71805&#039;, &#039;Nom&#039;: &#039;ST-PIERRE&#039;, &#039;Latitude&#039;: &#039;46.766333&#039;, &#039;Longitude&#039;: &#039;-56.179167&#039;, &#039;Altitude&#039;: &#039;21&#039;}, {&#039;ID&#039;: &#039;78890&#039;, &#039;Nom&#039;: &#039;LA DESIRADE METEO&#039;, &#039;Latitude&#039;: &#039;16.335000&#039;, &#039;Longitude&#039;: &#039;-61.004000&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;78894&#039;, &#039;Nom&#039;: &#039;ST-BARTHELEMY METEO&#039;, &#039;Latitude&#039;: &#039;17.901500&#039;, &#039;Longitude&#039;: &#039;-62.852167&#039;, &#039;Altitude&#039;: &#039;44&#039;}, {&#039;ID&#039;: &#039;78897&#039;, &#039;Nom&#039;: &#039;LE RAIZET AERO&#039;, &#039;Latitude&#039;: &#039;16.264000&#039;, &#039;Longitude&#039;: &#039;-61.516333&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;78922&#039;, &#039;Nom&#039;: &#039;TRINITE-CARAVEL&#039;, &#039;Latitude&#039;: &#039;14.774500&#039;, &#039;Longitude&#039;: &#039;-60.875333&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;78925&#039;, &#039;Nom&#039;: &#039;LAMENTIN-AERO&#039;, &#039;Latitude&#039;: &#039;14.595333&#039;, &#039;Longitude&#039;: &#039;-60.995667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;81401&#039;, &#039;Nom&#039;: &#039;SAINT LAURENT&#039;, &#039;Latitude&#039;: &#039;5.485500&#039;, &#039;Longitude&#039;: &#039;-54.031667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;81405&#039;, &#039;Nom&#039;: &#039;CAYENNE-MATOURY&#039;, &#039;Latitude&#039;: &#039;4.822333&#039;, &#039;Longitude&#039;: &#039;-52.365333&#039;, &#039;Altitude&#039;: &#039;4&#039;}, {&#039;ID&#039;: &#039;81408&#039;, &#039;Nom&#039;: &#039;SAINT GEORGES&#039;, &#039;Latitude&#039;: &#039;3.890667&#039;, &#039;Longitude&#039;: &#039;-51.804667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;81415&#039;, &#039;Nom&#039;: &#039;MARIPASOULA&#039;, &#039;Latitude&#039;: &#039;3.640167&#039;, &#039;Longitude&#039;: &#039;-54.028333&#039;, &#039;Altitude&#039;: &#039;106&#039;}, {&#039;ID&#039;: &#039;89642&#039;, &#039;Nom&#039;: &amp;quot;DUMONT D&#039;URVILLE&amp;quot;, &#039;Latitude&#039;: &#039;-66.663167&#039;, &#039;Longitude&#039;: &#039;140.001000&#039;, &#039;Altitude&#039;: &#039;43&#039;}]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def distance(lat1, lon1, lat2, lon2):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Calcule la distance entre deux points géographiques en utilisant la formule de la distance euclidienne.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return math.sqrt((lat2 - lat1)**2 + (lon2 - lon1)**2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def station_la_plus_proche(x, y, stations):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Trouve la station météo la plus proche en utilisant les coordonnées x et y (latitude et longitude).&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    distance_min = float(&#039;inf&#039;)&lt;br /&gt;
    station_proche = None&lt;br /&gt;
    &lt;br /&gt;
    for station in stations:&lt;br /&gt;
        lat_station = float(station[&#039;Latitude&#039;])&lt;br /&gt;
        lon_station = float(station[&#039;Longitude&#039;])&lt;br /&gt;
        d = distance(x, y, lat_station, lon_station)&lt;br /&gt;
        if d &amp;lt; distance_min:&lt;br /&gt;
            distance_min = d&lt;br /&gt;
            station_proche = station&lt;br /&gt;
    &lt;br /&gt;
    return station_proche&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la latitude et la longitude&lt;br /&gt;
x_input = input(&amp;quot;Entrez la latitude de votre lieux: &amp;quot;)&lt;br /&gt;
y_input = input(&amp;quot;Entrez la longitude de votre lieux: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
x_input = float(x_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
y_input = float(y_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Utilisez les valeurs entrées par l&#039;utilisateur comme variables x et y pour trouver la station météo la plus proche&lt;br /&gt;
station_proche = station_la_plus_proche(x_input, y_input, stations)&lt;br /&gt;
print(&amp;quot;\nLa station météo la plus proche est:&amp;quot;, station_proche[&#039;Nom&#039;])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer sa consommation d&#039;eau hebdomadaire&lt;br /&gt;
waterconsohebdo = input(&amp;quot;Entrez la consommation d&#039;eau hebdomadaire constante(L): &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
waterconsohebdo = float(waterconsohebdo.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calcul consommation journaliere moyenne&lt;br /&gt;
waterconsojour = waterconsohebdo/7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer le mois de debut de la periode estivale&lt;br /&gt;
moisdebutete = input(&amp;quot;Entrez le mois de début pour la consommation d&#039;eau hebdomadaire supplémentaire en periode estivale (1,2,3,4,5,6,7,8,9,10,11,12): &amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=int(moisdebutete)&lt;br /&gt;
    moisdebutete=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    moisdebutete=5&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de moisdebutete={moisdebutete}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer le mois de fin de la periode estivale&lt;br /&gt;
moisfinete = input(&amp;quot;Entrez le mois de fin pour la consommation d&#039;eau hebdomadaire supplémentaire en periode estivale (1,2,3,4,5,6,7,8,9,10,11,12): &amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=int(moisfinete)&lt;br /&gt;
    moisfinete=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    moisfinete=9&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de moisfinete={moisfinete}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la consommation d&#039;eau supplémentaire en periode estivale&lt;br /&gt;
waterconsohebdoete = input(&amp;quot;Entrez la consommation d&#039;eau hebdomadaire supplémentaire en periode estivale (L) - 0 L par defaut: &amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(waterconsohebdoete.replace(&#039;,&#039;, &#039;.&#039;)) # Remplacer les virgules par des points&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
waterconsohebdoete=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    waterconsohebdoete=0&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de waterconsohebdoete={waterconsohebdoete}L&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calcul consommation journaliere moyenne&lt;br /&gt;
waterconsojourete = waterconsohebdoete/7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
result=combined_df[combined_df[&#039;numer_sta&#039;]==int(station_proche[&#039;ID&#039;])]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Convertir la colonne &#039;date_column&#039; dans un format datetime et la mettre en index trié&lt;br /&gt;
result[&#039;datetime&#039;] = pd.to_datetime(result[&#039;date&#039;], format=&#039;%Y%m%d%H%M%S&#039;)&lt;br /&gt;
result.set_index(&#039;datetime&#039;, inplace=True)&lt;br /&gt;
result = result.sort_index()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# remplacer les données manquantes par 0&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].replace(&#039;mq&#039;,&#039;0&#039;)&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].astype(&#039;float&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Ne garder que la colonne des précipitations des 3 dernieres heures&lt;br /&gt;
result=result[&#039;rr3&#039;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par jour&lt;br /&gt;
resultday=result.resample(&#039;D&#039;).sum()&lt;br /&gt;
resultdaymonthindex=resultday.copy()&lt;br /&gt;
resultdaymonthindex.index=resultdaymonthindex.index.month&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour (mm):\n&amp;quot;, resultday.mean())&lt;br /&gt;
print(&amp;quot;Minimum par jour (mm):\n&amp;quot;, resultday.min())&lt;br /&gt;
print(&amp;quot;Maximum par jour  (mm):\n&amp;quot;, resultday.max())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par semaine&lt;br /&gt;
resultweek=result.resample(&#039;W&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par mois&lt;br /&gt;
resultmonth=result.resample(&#039;ME&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par trimestre&lt;br /&gt;
resulttrim=result.resample(&#039;QE&#039;).sum()&lt;br /&gt;
resulttrim=resulttrim.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
print(resulttrim)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de précipitations par an&lt;br /&gt;
resultyear=result.resample(&#039;YE&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nPrécipitations annuelles moyennes (mm):\n&amp;quot;,resultyear.mean())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Calculer le nombre de jours consécutifs maximum sans pluie&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
for value in resultday:&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        current_streak = 0  # Reset the streak if the value is not zero&lt;br /&gt;
print(f&amp;quot;\nNombre de jours consecutifs maximum sans pluie: {max_streak}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Moyenne par trimestre pour chaque trimestre&lt;br /&gt;
moyenne_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).mean()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Minimum par trimestre pour chaque trimestre&lt;br /&gt;
min_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).min()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Maximum par trimestre pour chaque trimestre&lt;br /&gt;
max_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).max()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre (mm):\n&amp;quot;, moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMinimum par trimestre pour chaque trimestre (mm):\n&amp;quot;, min_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par trimestre pour chaque trimestre (mm):\n&amp;quot;, max_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Prise en comptes changement climatiques (hypothèses conservatrices multimodeles drias precipitations):&lt;br /&gt;
# Definir les impacts sur les volumes de précipitations par saison&lt;br /&gt;
adjustments = {0: -15, 1: -10, 2: -50, 3: -15}  # Adjust line 1 by -15%, line 2 by -10%, line 3 by -50%, line 4 by -15%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Appliquer les impacts sur les précipitations moyennes par trimestres:&lt;br /&gt;
cc_moyenne_trimestrielle_par_trimestre=moyenne_trimestrielle_par_trimestre.copy()&lt;br /&gt;
for line, adjustment in adjustments.items():&lt;br /&gt;
    cc_moyenne_trimestrielle_par_trimestre.iloc[line] = cc_moyenne_trimestrielle_par_trimestre.iloc[line]+cc_moyenne_trimestrielle_par_trimestre.iloc[line]*adjustment/100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre avec prise en compte du changement climatique (mm):\n&amp;quot;, cc_moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Minimum par jour pour chaque trimestre&lt;br /&gt;
min_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).min()&lt;br /&gt;
min_par_jour_par_trimestre=min_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Maximum par jour pour chaque trimestre&lt;br /&gt;
max_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).max()&lt;br /&gt;
max_par_jour_par_trimestre=max_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Moyenne par jour pour chaque trimestre&lt;br /&gt;
moyenne_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).mean()&lt;br /&gt;
moyenne_par_jour_par_trimestre=moyenne_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMinimum par jour pour chaque trimestre (mm):\n&amp;quot;, min_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par jour pour chaque trimestre (mm):\n&amp;quot;, max_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour pour chaque trimestre (mm):\n&amp;quot;, moyenne_par_jour_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Calcul seuil mini surface de recuperation:&lt;br /&gt;
surf0=(1/2)*math.ceil((13*waterconsohebdo)/min(moyenne_trimestrielle_par_trimestre))&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Seuil surface recuperation avec hypothèse entrée et données fournies par l&#039;utilisateur (m2)&lt;br /&gt;
hypothese:(conso trimestre / precipitations moyenne min trimestre)&lt;br /&gt;
{int(math.ceil(surf0))} m2&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Calcul seuil mini reservoir:&lt;br /&gt;
contraintejourmax=(resultday.max())*surf0&lt;br /&gt;
contraintejourszero=max_streak*waterconsojour&lt;br /&gt;
volume0=math.ceil(max(2.5*contraintejourmax,contraintejourszero))&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil volume avec hypothèse entrée et données fournies par l&#039;utilisateur (L)&lt;br /&gt;
hypothèse: max((2.5*précipitations journaliere maxi*Seuil surface recuperation),(44j consécutifs max sans pluie*conso journaliere))&lt;br /&gt;
{int(math.ceil(volume0))} L&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
surf0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de surface (m2) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(surf0_input)&lt;br /&gt;
    surf0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de surf0={surf0}m2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
volume0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de volume (L) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(volume0_input)&lt;br /&gt;
    volume0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de volume0={volume0}L&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Itérations algorithmiques stockage&amp;amp;consommation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#hypothèse récupérateur 2/3 plein à t0&lt;br /&gt;
water=(2/3)*volume0&lt;br /&gt;
resultsurfvolume=(volume0,surf0)&lt;br /&gt;
#boucle iteration&lt;br /&gt;
listsurf0=[surf0*(1+i*0.33) for i in range(0,999)]&lt;br /&gt;
listvolume0=[volume0*(1+i*0.5) for i in range(0,999)]&lt;br /&gt;
listeday=list(resultday)&lt;br /&gt;
listemonth=list(resultdaymonthindex.index)&lt;br /&gt;
listresult=[]&lt;br /&gt;
#fonction check surface volume&lt;br /&gt;
def iterv(data, v0,s0):&lt;br /&gt;
    &amp;quot;fonction check surface volume&amp;quot;&lt;br /&gt;
    water=(2/3)*v0&lt;br /&gt;
    for k in range(0,len(data)):&lt;br /&gt;
        recupday=data[k]*s0&lt;br /&gt;
        #print(f&#039;recupday:{recupday}&#039;)&lt;br /&gt;
        if listemonth[k] in range(moisdebutete, moisfinete + 1):&lt;br /&gt;
            consoday = waterconsojour + waterconsojourete&lt;br /&gt;
        else:&lt;br /&gt;
            consoday = waterconsojour&lt;br /&gt;
        water=water+recupday-consoday&lt;br /&gt;
        #print(f&#039;water:{water}&#039;)&lt;br /&gt;
        if water&amp;gt;v0:&lt;br /&gt;
            print(&amp;quot;récupérateur plein&amp;quot;)&lt;br /&gt;
            water=v0 #hypothese gestion du trop plein ok&lt;br /&gt;
            continue&lt;br /&gt;
        if water&amp;lt;0:&lt;br /&gt;
            print(&amp;quot;récupérateur vide&amp;quot;)&lt;br /&gt;
            #time.sleep(1)&lt;br /&gt;
            return (0,0)&lt;br /&gt;
    print(&amp;quot;les surfaces et volumes permettent de subvenir à la consommation d&#039;eau sur le dataset&amp;quot;)&lt;br /&gt;
    return (v0,s0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for i in range(0,6): #boucle iteration surface&lt;br /&gt;
    for k in range(0,len(listeday)):&lt;br /&gt;
        recupday=listeday[k]*listsurf0[i]&lt;br /&gt;
        print(f&#039;recupday:{recupday}&#039;)&lt;br /&gt;
        if listemonth[k] in range(moisdebutete,moisfinete+1):&lt;br /&gt;
            consoday=waterconsojour+waterconsojourete&lt;br /&gt;
        else:&lt;br /&gt;
            consoday = waterconsojour&lt;br /&gt;
        water=water+recupday-consoday&lt;br /&gt;
        print(f&#039;water:{water}&#039;)&lt;br /&gt;
        if water&amp;gt;volume0:&lt;br /&gt;
            print(&amp;quot;récupérateur plein&amp;quot;)&lt;br /&gt;
            water=volume0 #hypothese gestion du trop plein ok&lt;br /&gt;
            continue&lt;br /&gt;
        if water&amp;lt;0:&lt;br /&gt;
            print(&amp;quot;récupérateur vide, iteration avec hypothèse volume de récupération plus grand&amp;quot;)&lt;br /&gt;
            #time.sleep(1)&lt;br /&gt;
            for j in range (1,i+40):&lt;br /&gt;
                resultsurfvolume=iterv(listeday,listvolume0[j],listsurf0[i])&lt;br /&gt;
                if resultsurfvolume!=(0,0):&lt;br /&gt;
                    listresult.append(resultsurfvolume)&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    continue&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for k in listresult:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de {int(k[0])}L et &lt;br /&gt;
une surface de {int(k[1])}m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs ({waterconsohebdo}L/semaine constant) &lt;br /&gt;
et {waterconsohebdoete}L/semaine en periode estivale (du mois {moisdebutete} au mois {moisfinete})&lt;br /&gt;
entrées en hypothèse\n&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On fait le test avec les hypothèses ci dessus (latitude 44.2, longitude 0.6, solo 276L semaine, duo 752L semaine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On obtient les résultats suivants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
solo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 7976L et &lt;br /&gt;
une surface de 19m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 5982L et &lt;br /&gt;
une surface de 24m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 4985L et &lt;br /&gt;
une surface de 28m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 3988L et &lt;br /&gt;
une surface de 33m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 3988L et &lt;br /&gt;
une surface de 38m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
solo avec 600L/semaine en periode estivale: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 15642L et &lt;br /&gt;
une surface de 45m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 15642L et &lt;br /&gt;
une surface de 60m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 75m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 90m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 105m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 120m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
duo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 24133L et &lt;br /&gt;
une surface de 51m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 16089L et &lt;br /&gt;
une surface de 64m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 13407L et &lt;br /&gt;
une surface de 77m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 10726L et &lt;br /&gt;
une surface de 90m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 10726L et &lt;br /&gt;
une surface de 103m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
duo avec 600L/semaine en periode estivale: : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 33687L et &lt;br /&gt;
une surface de 70m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 24062L et &lt;br /&gt;
une surface de 93m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 116m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 139m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 162m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 185m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Utiliser des data du changement climatique&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Comme très bien expliqué dans cet autre tuto : [[Estimer la quantité d&#039;eau de pluie récupérable grâce à une toiture, dimensionner son stockage en prenant en compte les changements climatiques]], le changement climatique va perturber les précipitations en termes de quantités mais surtout de fréquences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour de la récupération/stockage, c&#039;est particulièrement important notamment pour les périodes de sécheresses qui risques de s&#039;accentuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Techniquement, on peut &amp;quot;data-tester&amp;quot; au jour le jour avec les données de prévisions du portail drias (https://drias-climat.fr/). Cependant, il faudrait d&#039;une part data tester avec plusieurs set de données car les modèles sont tres différents les uns des autres, et d&#039;autres part il s&#039;agit de modèles climatiques et pas météorologiques, ce qui limite la pertinence d&#039;utiliser des résultats comme input meteo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En attendant que les scientifiques affinent leurs modèles pour la prospective à échelle plus fine (spatiale et temporelle), on peut reprendre les estimations d&#039;impact sur les volumes de précipitations par saisons à partir des modèles drias 2070-2100 rcp 8.5 (+10% à -10% selon modèles au printemps, -50% à +20% en été,-15% à +5% en automne, -15% à +30% en hiver)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En étant prudent pour chaque saison, c&#039;est à dire en prenant l&#039;hypothèse la plus conservatrice pour chaque saison, on obtient des volumes réduits de :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-10% au printemps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-50% en été&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-15% en automne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-15% en hiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On peut alors mettre à jour l&#039;algorithme :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous noterez qu&#039;on a déjà ajouté les lignes suivantes dans le code de l&#039;etape 5 juste avant le calcul de # Moyenne par trimestre pour chaque trimestre:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Prise en comptes changement climatiques (hypothèses conservatrices multimodeles drias precipitations):&lt;br /&gt;
# Definir les impacts sur les volumes de précipitations par saison&lt;br /&gt;
adjustments = {0: -15, 1: -10, 2: -50, 3: -15}  # Adjust line 1 by -15%, line 2 by -10%, line 3 by -50%, line 4 by -15%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Appliquer les impacts sur les précipitations moyennes par trimestres:&lt;br /&gt;
cc_moyenne_trimestrielle_par_trimestre=moyenne_trimestrielle_par_trimestre.copy()&lt;br /&gt;
for line, adjustment in adjustments.items():&lt;br /&gt;
    cc_moyenne_trimestrielle_par_trimestre.iloc[line] = cc_moyenne_trimestrielle_par_trimestre.iloc[line]+cc_moyenne_trimestrielle_par_trimestre.iloc[line]*adjustment/100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre avec prise en compte du changement climatique (mm):\n&amp;quot;, cc_moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce qui affiche:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Moyenne par trimestre pour chaque trimestre avec prise en compte du changement climatique (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    165.719091&lt;br /&gt;
2    202.630909&lt;br /&gt;
3     62.836364&lt;br /&gt;
4    164.158182&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On n&#039;effectue pas le data-test au jour le jour compte tenu des biais trop importants induits par le choix d&#039;un seul modèle de prévision.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En première approximation l&#039;impact sur les résultats est de doubler la surface de récupération nécessaire à partir de la méthode décrite dans les étapes précédentes.&lt;br /&gt;
|Step_Picture_00=Dimensionner_la_r_cup_ration_d_eau_de_pluie_pour_tre_autonome_drias.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Dimensionner_une_installation_photovolta%C3%AFque_autonome&amp;diff=152030</id>
		<title>Dimensionner une installation photovoltaïque autonome</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Dimensionner_une_installation_photovolta%C3%AFque_autonome&amp;diff=152030"/>
		<updated>2025-11-28T19:56:51Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Dimensionner_une_installation_photovolta_que_autonome_P1090053.JPG&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:0,&amp;quot;top&amp;quot;:3,&amp;quot;width&amp;quot;:4592,&amp;quot;height&amp;quot;:3448,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.13,&amp;quot;scaleY&amp;quot;:0.13,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/8/8c/Dimensionner_une_installation_photovolta_que_autonome_P1090053.JPG&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.5601173020528,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&lt;br /&gt;
Outils pour dimensionner une installation photovoltaïque hors réseau&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=0&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=photovoltaïque, off-grid, hors-réseau, dimensionnement&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
La plupart des installations photovoltaïques sont aujourd&#039;hui&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
branchées sur le réseau électrique erdf/enedis, que ce soit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sur des formules commerciales dites en &amp;quot;injection du surplus&amp;quot;, ou&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
en &amp;quot;injection totale&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avec les vieux compteurs, il est encore possible de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;faire tourner à l&#039;envers&amp;quot; le compteur electrique lorsque&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
les panneaux produisent (un peu comme si linky soustrayait&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
de votre consommation ce que vos panneaux produisent quelle que&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
soit l&#039;heure à laquelle la production a lieu)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le recours au réseau électrique est très pratique car cela évite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le besoin de stocker l&#039;électricité produite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cependant, que ce soit pour des raisons d&#039;évolution sociétale (laissons nous&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le droit de rêver à autre modèle urbanistique où les sites autonomes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
écologiques sans besoins d&#039;infrastructures sont encouragés), pour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
des raisons de contraintes naturelles, ou par choix, on peut souhaiter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
être indépendant des réseaux, 100% autonome en énergie électrique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
J&#039;ai initialement fait un petit bout de code pour dimensionner correctement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
en réseau autonome un mobilhome que je souhaitais rendre autonome,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
puis pour brancher un frigo et un congélateur (qui nécessitent un&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
approvisionnement relativement constant, c&#039;est à dire sans coupure)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;ines propose déjà des outils ici:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://ines.solaire.free.fr/pvisole_1.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
et ici:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://autocalsol.ines-solaire.org/etude/localisation/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cependant, les hypothèses sont à 1kWh produit par kWc en hiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pour le premier lien et on n&#039;a que des moyennes pour le second lien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En outre, on n&#039;a pas de possibilité de &amp;quot;data-tester&amp;quot; le nombre de jours de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
blackout selon le dimensionnement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce tuto permet donc de dimensionner en &amp;quot;data-testant&amp;quot;, c&#039;est à dire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec des hypothèses de production en hiver au jour le jour,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
moins &amp;quot;moyénée&amp;quot;, et permet aussi de tester des dimensionnement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plus économes en capacité de batterie (qui coutent encore cher en 2024).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compte tenu du nombre de brevets déposés dans le domaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
du stockage électrique des 15 dernieres années, et compte tenu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
des évolutions géopolitiques au sein des brics, il est probable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
qu&#039;on aboutisse à des coûts de stockage nettement diminués&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dans les prochaines années et l&#039;algorithme pour optimiser&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le dimensionnement au stockage au plus juste sera peut&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
être moins pertinent économiquement parlant dans les années&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
à venir.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mais un stockage à très bas coût remettrait très fortement en question&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le système pétro dollar, donc on a sans doute le temps de voir venir ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, les batteries usagées produisant pas mal de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
déchet, cela reste intéressant d&#039;avoir ce bout de logique pour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dimensionner au plus juste et etre dans une optique low-tech&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
en évitant le surdimensionnement lorsqu&#039;on peut se permettre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
de rares épisodes sans électricité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Démo web interactive ici:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://vpn.matangi.dev/sun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&lt;br /&gt;
|Tools=&lt;br /&gt;
|Tuto_Attachments={{Tuto Attachments&lt;br /&gt;
|Attachment=Dimensionner_une_installation_photovolta_que_autonome_jrc_a_u_t_o_n_o_m_i_e.ods&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
évaluer les besoins&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Il s&#039;agit dans un premier temps d&#039;estimer votre consommation électrique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour cela, il convient de prendre en compte les bonnes échelles temporelles:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
consommation moyenne d&#039;une part, mais aussi les variations journalières (la consommation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
selon l&#039;heure de la journée) et saisonnières (la consommation en hiver et en été).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cet exercice est intéressant à la fois pour dimensionner adéquatement la production,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mais aussi pour penser comment réduire sa consommation. Par exemple, il est aberrant de chauffer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec des radiateurs éléctriques si votre source d&#039;énergie est uniquement photovoltaïque.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un autre exemple est le chauffe-eau électrique qui consomme des quantités conséquentes d&#039;énergie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
qui sont relativement linéaires du nombres de douches chaudes que vous prenez et&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
qui peuvent interroger la source d&#039;énergie pertinente pour chauffer votre eau ou le nombre de douches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pertinents pour une production non fossile (on pourra utilement s&#039;interroger sur l&#039;opportunité de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
basculer sur une source d&#039;énergie solaire thermique et/ou chauffer au bois ou au biogaz)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: pour une douche de 10min à 40°C, il faut environ 3kWh, soit environ le biomethane générable par les fientes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
journalieres d&#039;une centaine de poules (en ordre de grandeur)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour mesurer votre consommation, vous pouvez utiliser votre compteur electrique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ainsi mesurer votre consommation journalière mais aussi la consommation horaire de chaque&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
appareil électrique (le plus simple étant d&#039;enlever le fusible au compteur de tous les appareils&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
électriques qu&#039;on veut sortir de la mesure).&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
dimensionner le stockage&lt;br /&gt;
|Step_Content=&lt;br /&gt;
En site autonome, le chemin des électrons produits par les panneaux photovoltaïque est celui qui va&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
à la moindre résistance. Ainsi, si les électrons doivent &amp;quot;choisir&amp;quot; entre une appareil électrique en fonctionnement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
et les batteries, ils iront alimenter l&#039;appareil branché.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette considération peut être importante si vous avez une consommation électrique importante en journée (lorsque les panneaux produisent),&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mais dans la plupart des cas, les variations de production journalière et la différence horaire entre la production et&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la consommation font qu&#039;on dimensionne les batteries sur le besoin journalier maximum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple: besoin journalier de 4kWh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On prend le pourcentage maximum de décharge accepté par les batteries selon la technologie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
utilisée. Par exemple 80% pour des batteries lithium.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple: (besoin journalier)/(pourcentage decharge max)=(4)/(0,8)=5kWh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: les capacités des batteries sont souvent exprimées en Ah. Pour obtenir les Ah à partir de la capacité&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
en kWh, simplement diviser les Wh par la tension aux bornes de vos batteries. Par exemple en 24V:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
500Wh/24V=208Ah&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour dimensionner le stockage correctement en fonction du besoin journalier maximum, on va ensuite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
chercher à savoir combien de jours sans soleil le stockage doit pouvoir tenir vos besoins journaliers maximum&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour trouver le nombre de jours maximum sans soleil, vous pouvez soit mesurer vous même l&#039;ensoleillement (se reporter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
à mon autre tuto ici : [[Mesure de l&#039;ensoleillement-luminosité avec un ordinateur monocarte (raspberry-orangepi)]],&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
soit utiliser les données téléchargeable de la modélisation jrc européenne pvgis qui font référence (attention, il s&#039;agit d&#039;une modélisation,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modif 27/02: apres verification, il s&#039;agit de données satellites horaires mondiales donc des données empiriques en entrée nottamment pour les nuages mais les hypothèses du modele sur la quantité d&#039;irradiation qui passe à traver les nuages sont peu explicitées, voir https://joint-research-centre.ec.europa.eu/photovoltaic-geographical-information-system-pvgis/getting-started-pvgis/pvgis-data-sources-calculation-methods_en?prefLang=fr)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour télécharger les données jrc, taper cette commande dans votre terminal linux:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget --max-redirect=10 -O output.csv &amp;quot;&amp;lt;nowiki&amp;gt;https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.203142&amp;amp;lon=0.616363&amp;amp;loss=14&amp;amp;angle=45&amp;amp;aspect=0&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les parametres lat= et lon= vous permettent d&#039;ajuster la latitude et la longitude à votre lieu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
startyear= et endyear= sont les bornes de début et de fin de la periode considéré (ici 15 ans entre 2005 et 2020)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
peakpower= correspond à la puissance photovoltaique en kWc (ici 1kWc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On utilise ensuite un bout de code python/pandas pour obtenir le nombre de jours consécutifs maximum pour qu&#039;1 kWc produise 1000Wh, 2000Wh et 3000Wh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, on obtient:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.1124367317425885 j&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.2801404603979711 j&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 1.4647827920708563 j&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Que nous disent ces chiffres?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Que le nombre maximal de jours avec un faible ensoleillement varie de 4 à 7j selon le niveau d&#039;ensoleillement espéré.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mais aussi que le nombre d&#039;occurences est relativement faible: 1 à 3 occurences seulement de ces épisodes avec tres tres peu de luminosité et de production sur 15 ans.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(si vous n&#039;etes pas entierement satisfait des données modélisées au regard de votre expérience de la production photovoltaïque en fonction de la météo, et mon hypothèse est&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
que les panneaux produisent plus que ce que les données de la modélisation jrc nous donne, je vous encourage à&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
utiliser des données empiriques en utilisant mon autre tuto ici: [[Mesure de l&#039;ensoleillement-luminosité avec un ordinateur monocarte (raspberry-orangepi)]] )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et enfin que le nombre de jours moyens pour qu&#039;un kWc de module produise 1kWh à 3kWh est compris entre 1 et 1,5 j.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On a alors le choix:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-soit surdimensionner le stockage pour tenir 4j de besoins pour faire face à ces épisodes rares sans soleil : 20kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-soit dimensionner le stockage pour tenir 1 à 2j et avoir une source électrique d&#039;appoint à base de groupe electrogene fossile : 5 à 10kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pour éviter un surdimensionnement coûteux pour de très rares occasions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-soit, si la criticité des besoins n&#039;est pas trop importante, dimensionner le stockage pour tenir 1 à 2j et&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
se débrouiller sans électricité lorsqu&#039;il y a des épisodes long sans soleil : 5 à 10kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-(ou jouer sur l&#039;augmentation du dimensionnement de la production -le kWh produit étant tres nettement moins cher que le kWh stocké en 2024 - dans l&#039;étape suivante pour tout recharger dès le premier jour de soleil suivant les episodes peu ensoleillés)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous somme en mai 2024, et on sort juste du consensus informel industriel à 1€/Wh pour les batteries &amp;quot;performantes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous voulez dimensionner votre stockage &amp;quot;à l&#039;échelle&amp;quot; après avoir réduit vos besoins électriques, le mieux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
est encore de faire de la récupération de batterie de voitures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir photos issus de l&#039;atelier lowtech de l&#039;astrolab pour de la récupération de batterie de voiture lithium ion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En mai 2024, on s&#039;en tire à 3k€ pour 14kWh.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est encore difficile de se passer de BMS à cause des normes sécuritaires,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mais on peut en trouver sur aliexpress (voir photo pour les references).&lt;br /&gt;
|Step_Picture_00=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_163416.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_202913.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_202927.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_une_installation_photovolta_que_autonome_IMG-20240513-WA0011.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_170834.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240511_102229.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
dimensionner la production&lt;br /&gt;
|Step_Content=&lt;br /&gt;
On suppose qu&#039;on dimensionne les batteries à 10kWh pour 4kWh de besoin -soit 2j d&#039;autonomie-&lt;br /&gt;
&lt;br /&gt;
On peut dimensionner la production de plusieurs façon:&lt;br /&gt;
1. De façon à ce que les batteries soient entièrement rechargées sur un intervalle moyen en décembre/janvier (les mois les moins ensoleillés de l&#039;année)&lt;br /&gt;
2. De façon à ce que les batteries soient entièrement rechargées en un jour d&#039;ensoleillement &amp;quot;moyéné&amp;quot; en décembre/janvier&lt;br /&gt;
&lt;br /&gt;
On notera que le dimensionnement calé sur les mois d&#039;hiver permet de produire suffisamment pour subvenir aux besoin toute l&#039;année, mais &lt;br /&gt;
entraine une surproduction d&#039;énergie en été qu&#039;il serait utile de récupérer (par exemple en hydrolisant de l&#039;eau pour produire de l&#039;hydrogene puis en transformant&lt;br /&gt;
l&#039;hydrogene en méthane, cf scenario negawatt 2011) notamment si ce type d&#039;installation venait à se généraliser.&lt;br /&gt;
&lt;br /&gt;
On va réutiliser le bout de code précédent et l&#039;adapter pour trouver les memes statistiques que précédemment mais uniquemnet en comptant les mois &lt;br /&gt;
de décembre et janvier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
dec_jan_data = daily_data[(daily_data.index.month == 12) &amp;lt;span&amp;gt;&amp;amp;#124;&amp;lt;/span&amp;gt; (daily_data.index.month == 1)]&lt;br /&gt;
print(&amp;quot;Production moyenne journalière en janvier et décembre&amp;quot;)&lt;br /&gt;
print(str(dec_jan_data[&#039;P&#039;].mean()/1000)+&amp;quot; kWh&amp;quot;)&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, on obtient:&lt;br /&gt;
&lt;br /&gt;
Production moyenne journalière en janvier et décembre&lt;br /&gt;
1.9924362701612903 kWh&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.3539192399049882 j&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.8022598870056497 j&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 2.263157894736842 j&lt;br /&gt;
&lt;br /&gt;
1. En dimensionnant sur l&#039;intervalle moyen d&#039;1kWh: 1kWc produit en moyenne 1kWh en 1,35j, soit 0,74kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/0,74=13,5kWc&lt;br /&gt;
En dimensionnant sur l&#039;intervalle moyen de 2kWh: 1kWc produit en moyenne 2kWh en 1,8j, soit 1,11kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/1,11=9kWc&lt;br /&gt;
En dimensionnant sur l&#039;intervalle moyen de 3kWh: 1kWc produit en moyenne 3kWh en 2,26j, soit 1,33kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/1,33=7,5kWc&lt;br /&gt;
&lt;br /&gt;
2. En dimensionnant sur un jour moyéné, 1kWc produit en moyenne 1,99kWh par jour, soit un besoin de 10kWh/1,99=5kWc&lt;br /&gt;
&lt;br /&gt;
On remarque que les données de références de l&#039;ines pour la production d&#039;1kWc en décembre correspondent à 1kWc===1kWh environ.&lt;br /&gt;
(https://autocalsol.ines-solaire.org/etude/localisation/ et http://ines.solaire.free.fr/pvisole_1.php pour site isolés)&lt;br /&gt;
&lt;br /&gt;
On peut ici parler d&#039;hypothèses plus ou moins &amp;quot;conservatrices&amp;quot;, c&#039;est à dire d&#039;hypothèses plus ou moins &amp;quot;prudentes&amp;quot;, afin d&#039;avoir des batteries toujours rechargées en hiver.&lt;br /&gt;
On remarquera que quelles que soit l&#039;hypothèse retenue pour satisfaire les besoins de façon continue, y compris en hiver, on se retrouvera avec des surproductions importantes en été. &lt;br /&gt;
Il est alors judicieux d&#039;utiliser des systèmes de récupération de la surproduction en l&#039;absence de réseau dans lequel on peut injecter le surplus (par exemple en hydrolisant de l&#039;eau pour produire de l&#039;hydrogene puis en transformant&lt;br /&gt;
l&#039;hydrogene en méthane, cf scenario negawatt 2011).&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
dimensionner le régulateur de charge&lt;br /&gt;
|Step_Content=&lt;br /&gt;
rappel de base: branchement en série (+ sur - et + sur -) on ajoute le voltage et on garde le meme amperage, branchement en paralelle (+ sur +, - sur -) on ajoute l&#039;amperage et on garde le meme voltage&lt;br /&gt;
&lt;br /&gt;
idem pour les batteries: à mettre en paralelle pour garder la meme tension (voltage)&lt;br /&gt;
&lt;br /&gt;
La première problématique du photovoltaïque lowtech autonome est le dimensionnement de l&#039;installation.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez utiliser la feuille libreoffice en piece jointe en haut de ce tutoriel pour du dimensionnement &amp;quot;bricolé&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les étapes précédentes ont permis de calculer à partir du modèle jrc la taille de la batterie et la production moyenne en hiver d&#039;un kWc .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez lire les caractéristiques des panneaux qu&#039;on vous a donné ou trouvés sur leboncoin à pas cher:&lt;br /&gt;
&lt;br /&gt;
-puissance crete: elles s&#039;aditionnent pour obtenir la puissance nécessaire trouvée lors de la phase de dimensionnement.&lt;br /&gt;
&lt;br /&gt;
-tension : 12V,24V ou 48V. voir regles série/paralelle pour leur additions&lt;br /&gt;
&lt;br /&gt;
-intensité: variable selon les modèles mais souvent inferieure à 10A. voir regles série/paralelle pour leur additions&lt;br /&gt;
&lt;br /&gt;
Pour recharger des batteries, en principe, si vous connectez votre panneaux en direct sur une batterie, il suffit que la tension à la sortie de vos panneaux soit la même que celles de vos batter  ie, et ca devrait charger.&lt;br /&gt;
&lt;br /&gt;
Il y a un composant important à retenir pour charger correctement vos batteries:&lt;br /&gt;
&lt;br /&gt;
le regulateur ou controleur de charge (nb: generalement, les onduleurs dits &amp;quot;hybrides&amp;quot;, cad avec une sortie batterie et une sortie reseau, integrent un regulateur de charge, le plus souvent mppt, qui conditionne les specifications des batteries qu&#039;on peut lui brancher)&lt;br /&gt;
&lt;br /&gt;
il en existe de trois sortes: les tor (tout ou rien) les mppt (Maximum power point tracking) et les pwm (Pulse Width Modulation)&lt;br /&gt;
&lt;br /&gt;
Ils sont composés d&#039;un adaptateur DC/DC (courant continu vers courant continu) et d&#039;un coupe circuit. Le mppt comprend également un adaptateur d&#039;impédence (il a une résistance pour adapter l&#039;amperage injecté dans la batterie). Les mppt accepte des puissances nominales plus élevées, cad des tensions et intensité plus élevées.&lt;br /&gt;
&lt;br /&gt;
Le régulateur ou controleur de charge permet principalement de couper le circuit quand la batterie est rechargée en surveillant la tension et l&#039;intensité de charge. Il coupe le circuit si leurs valeurs dépassent les intervalles de référence (pour cela le regulateur arrete la charge temporairement et mesure la tension aux bornes des batteries).&lt;br /&gt;
&lt;br /&gt;
Le mppt a un &amp;quot;algorithme&amp;quot; électronique intégré qui va chercher le point de puissance optimal grace a son adaptateur de resistance.&lt;br /&gt;
&lt;br /&gt;
Si vous connectez plusieurs panneaux et plusieurs batteries, il est recommandé d&#039;avoir un regulateur pour couper la charge correctement lorsque la batterie est chargée.&lt;br /&gt;
&lt;br /&gt;
Les tensions de charge de référence sont 12V,24V et 48V.&lt;br /&gt;
&lt;br /&gt;
Cependant, les prix des modèles augmentent avec la puissance nominales (qui va dépendre de l&#039;amperage) qu&#039;ils acceptent.&lt;br /&gt;
&lt;br /&gt;
Pour limiter l&#039;intensité du courant de la production photovoltaïque, il est plus judicieux d&#039;utiliser des panneaux de plus forte puissance qui sont généralement à des tensions plus élevées&lt;br /&gt;
&lt;br /&gt;
(rappel P=U*I,&lt;br /&gt;
&lt;br /&gt;
rappel E=P*t se conserve dans un systeme fermé).&lt;br /&gt;
&lt;br /&gt;
note: si le systeme de stockage par batterie ou l&#039;appareil connecté à vos panneaux n&#039;absorbe pas toute la puissance produite, et si le régulateur de charge ne coupe pas le circuit, le reste sera dégagé en chaleur.&lt;br /&gt;
&lt;br /&gt;
L&#039;amperage va aussi dependre de la capacité de stockage de vos batteries, dimensionnées pour couvrir vos besoins pendant une periode définie au dimensionnement.&lt;br /&gt;
&lt;br /&gt;
Le courant de charge est calculé en divisant par 4 ou 5 la capacité nominale de la batterie exprimée en Ah qui devrait alors se recharger en 4 ou 5h. Cependant une batterie se rechargera aussi avec un courant de charge de la capacité nominale de la batterie divisée par 20 mais plus lentement (en 20h).&lt;br /&gt;
&lt;br /&gt;
Pour dimensionner correctement le regulateur de charge on peut :&lt;br /&gt;
&lt;br /&gt;
-soit monter tous les panneaux en série (ce qui fait fortement augmenter la tension et il faudra peut etre un transfo ensuite pour trouver un regulateur qui accepte cette tension)&lt;br /&gt;
&lt;br /&gt;
-soit monter tous les panneaux en paralelle (ce qui fait fortement augmenter l&#039;intensité)&lt;br /&gt;
&lt;br /&gt;
-soit monter les panneaux en serie/parelle pour ajuster tension et intensité aux caractéristiques de votre régulateur.&lt;br /&gt;
&lt;br /&gt;
Il y a enfin un dernier point sur lequel être attentif: le déclenchement de la recharge de la batterie par le regulateur/controleur de charge (qui déclenche quand la tension de la batterie diminue en dessous d&#039;un certain seuil).&lt;br /&gt;
&lt;br /&gt;
En effet, si la puissance soutirée à la batterie est trop faible, il est possible que le temps nécessaire à la décharger avec votre consommation journalière pour déclencher la recharge dans le régulateur dépasse le temps d&#039;ensoleillement journalier. La batterie ne se recharge alors pas du tout pendant la journée.&lt;br /&gt;
&lt;br /&gt;
Dans ce cas, votre batterie ne se rechargera qu&#039;un jour sur deux ou sur trois (selon le seuil de déclenchement de la recharge du regulateur).&lt;br /&gt;
&lt;br /&gt;
C&#039;est un paramètre à prendre en compte dans le dimensionnement (non inclus dans la feuille de calcul).&lt;br /&gt;
&lt;br /&gt;
Le régulateur a 3 phases:&lt;br /&gt;
&lt;br /&gt;
bulk: le regulateur laisse passer le courant&lt;br /&gt;
&lt;br /&gt;
floating: le regulateur alterne interupteur fermée et ouvert à une fréquence donnée pour maintenir la batterie chargée&lt;br /&gt;
&lt;br /&gt;
En outre il faut prendre des précautions car la charge des batteries présente certains risques.&lt;br /&gt;
&lt;br /&gt;
absorption (pour les mppt): la tension de charge augmente un peu pour créer une difference de potentiel suffisante pour continuer à charger la batterie presque pleine.&lt;br /&gt;
&lt;br /&gt;
En théorie le courant de charge diminue lorsque la batterie est presque rechargée (courant de queue etc.)&lt;br /&gt;
&lt;br /&gt;
La charge de batteries en paralelle ou en série sur des batteries usagées qui n&#039;ont pas les mêmes tensions ou intensité présente en théorie des risques. En effet vous lirez un peu partout que la résistance des fils pour relier ces batteries&lt;br /&gt;
&lt;br /&gt;
créee des différences de potentiels entre les batteries qui produisent des décharges d&#039;une batterie envers une autre etc.&lt;br /&gt;
&lt;br /&gt;
créant des risques d&#039;explosion, de degazage pour les batteries plomb etc.&lt;br /&gt;
&lt;br /&gt;
Il faut bien se rapeller que les batteries sont des assemblages de composants unitaires de faible tension mis en séries et en paralelle pour obtenir un générateur de l&#039;intensité et la tension voulue et qu&#039;à priori faire de même avec des batterie entiere ne présente pas vraiment de risques..&lt;br /&gt;
&lt;br /&gt;
On parle souvent de &amp;quot;battery management system&amp;quot; (bms) &amp;quot;intégré&amp;quot; pour les batteries lithium ion.&lt;br /&gt;
&lt;br /&gt;
En réalité le régulateur de charge est déjà un &amp;quot;bms&amp;quot;. En théorie, le bms intégré s&#039;assure que les tensions et les intensités de chaque unité composant la batterie est la même et la rééquilibre au besoin.&lt;br /&gt;
&lt;br /&gt;
On peut bien sûr s&#039;interroger si tout ceci n&#039;est pas une façon de rendre le stockage de l&#039;énergie plus cher avec des composants BMS artificiellement chers et si ce n&#039;est pas une façon d&#039;éviter de réutiliser des unités de batteries usagées.&lt;br /&gt;
&lt;br /&gt;
Il est par exemple étonnant qu&#039;il n&#039;existe pas de BMS pour rééquilibrer automatiquement des batteries plomb acide, ce qui rendrait utilisable toutes les batteries mises au rebut de l&#039;industrie automobile pour stocker l&#039;énergie photovoltaïque sans risque!&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, si vous réutilisez des batteries au plomb, utilisez un régulateur pour éviter de continuer à charger vos batteries rechargées (risques de production d&#039;hydrogene) -ou si vous n&#039;en utilisez pas dimensionnez avec beaucoup de soin-, évitez les décharges profondes, et maintenez les batteries à une temperature constante autant que possible.&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Optimiser le dimensionnement&lt;br /&gt;
|Step_Content=&lt;br /&gt;
On va maintenant utiliser un bout de code python pour itérer (un peu sur le principe &lt;br /&gt;
d&#039;essais et erreurs) en augmentant progressivement la puissance des modules, la &lt;br /&gt;
capacité de la batterie, et le nombre de jours de blackout admissibles et en &lt;br /&gt;
testant au jour le jour le résultat stockage - consommation electrique + production&lt;br /&gt;
sur les données jrc précédemment téléchargées.&lt;br /&gt;
&lt;br /&gt;
Explications : &lt;br /&gt;
Le code est commenté pour expliquer ce qui est fait et les noms des variables&lt;br /&gt;
sont relativement explicites.&lt;br /&gt;
&lt;br /&gt;
Pour la boucle d&#039;itération: &lt;br /&gt;
On démarre à puissance0=(consommation journaliere)/2 (hypothese hiver 1 kWc produit 2kWh en moyenne) &lt;br /&gt;
On démarre à batterie0=consommation journaliere/0,8 au lithium et consommation journaliere/0,5 au plomb&lt;br /&gt;
&lt;br /&gt;
On itere 14 fois les puissances par pas de 1/3*puissance0 kWc&lt;br /&gt;
On itere 40 fois les capacités de batterie par pas de 1/2*batterie0 kWh&lt;br /&gt;
On itere 20 fois les jours admissibles de blackout par pas de 1j&lt;br /&gt;
&lt;br /&gt;
On demarre à batterie pleine et on teste chaque jour si le stock d&#039;électricité dans la batterie moins &lt;br /&gt;
la consommation plus la production photovoltaique aboutit à un blackout ou permet de subvenir à la &lt;br /&gt;
consommation journaliere. S&#039;il y a black out, on arrete la boucle au bout du nombre de jours consécutifs &lt;br /&gt;
admissibles de black out.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Pré-requis logiciels:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour utiliser python sous un autre os que linux, débrouillez vous avec vos daubes propriétaires intrusives.&lt;br /&gt;
&lt;br /&gt;
Sous linux, python est généralement installé et pour utiliser le code partagé dans &lt;br /&gt;
ce tuto, il suffira de copier coller le code dans un fichier processing.py puis entrer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
python processing.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cependant, il faut installer la librairie pandas qui est très largement utilisé &lt;br /&gt;
dans le monde de la finance et dans le monde scientifique, notamment pour sa &lt;br /&gt;
gestion efficace des séries temporelles et sa capacité de vectorisation des données.&lt;br /&gt;
&lt;br /&gt;
Pour cela voici les commandes à entrer dans linux debian avant de lancer le &lt;br /&gt;
script processing.py pour être tranquille:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sudo apt install python3 python3-venv python3-pip python-is-python3&lt;br /&gt;
&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; python -m venv venv&lt;br /&gt;
&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
pip install pandas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Penser ensuite à activer l&#039;environnement virtuel dans lequel est installé &lt;br /&gt;
pandas chaque fois que vous utilisez le script (apres un reboot ou si vous &lt;br /&gt;
fermez et reouvrez votre terminal) en lançant la commande:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous sommes en 2024 et si vous êtes cibles d&#039;entraves anti éco-terroristes &lt;br /&gt;
de psychopathes comme moi, et en bon scientifique qui se respecte vous &lt;br /&gt;
inspectez vos instruments de mesures avant de les utiliser, vous pouvez &lt;br /&gt;
inspectez le code source de pandas qui est évidemment logiciel libre ici : &lt;br /&gt;
https://github.com/pandas-dev/pandas , ou vous pouvez faire l&#039;hypothèse &lt;br /&gt;
discutable qu&#039;on peut avoir confiance dans un logiciel aussi massivement &lt;br /&gt;
utilisé dans le monde de la finance et de la science.&lt;br /&gt;
&lt;br /&gt;
Python reposant sur des librairies C pour un certains nombres d&#039;opérations &lt;br /&gt;
de base, le hack, y compris le hack scientifique, n&#039;est jamais impossible &lt;br /&gt;
mais on laissera de coté ces considérations pro-lowtech qui n&#039;entrent pas &lt;br /&gt;
dans le champ de réflexion de ce tutoriel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;bout de code: (update 8.4.24: ajout commentaires, input angle&amp;amp;orientation&amp;amp;% decharge batterie)&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import sys&lt;br /&gt;
import os&lt;br /&gt;
import math&lt;br /&gt;
import time&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la latitude et la longitude&lt;br /&gt;
x_input = input(&amp;quot;Entrez la latitude de votre lieux: &amp;quot;)&lt;br /&gt;
y_input = input(&amp;quot;Entrez la longitude de votre lieux: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
x_input = float(x_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
y_input = float(y_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
#Entrer l&#039;orientation de votre lieu&lt;br /&gt;
aspect_input=input(&amp;quot;Entrer l&#039;orientation de votre lieux (est,ouest,nord,sud)&amp;quot;)&lt;br /&gt;
dictaspect={&#039;est&#039;:-90,&#039;ouest&#039;:90,&#039;nord&#039;:180,&#039;sud&#039;:0}&lt;br /&gt;
if aspect_input in dictaspect:&lt;br /&gt;
    aspect=dictaspect[aspect_input]&lt;br /&gt;
else:&lt;br /&gt;
    aspect=0&lt;br /&gt;
&lt;br /&gt;
#Entrer l&#039;angle des modules&lt;br /&gt;
angle_input=input(&amp;quot;Entre l&#039;angle des modules en °&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    angle=float(angle_input)&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&#039;{err} error, angle utilisé: 45°&#039;)&lt;br /&gt;
    angle=45&lt;br /&gt;
    &lt;br /&gt;
# Telecharger les données&lt;br /&gt;
try:&lt;br /&gt;
    os.system(f&#039;wget --max-redirect=10 -O output.csv &amp;quot;https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat={x_input}&amp;amp;lon={y_input}&amp;amp;loss=14&amp;amp;angle={angle}&amp;amp;aspect={aspect}&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&amp;quot;&#039;)&lt;br /&gt;
except:&lt;br /&gt;
    print(&amp;quot;les données n&#039;ont pas pu être téléchargée, exiting&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
daily_data[&#039;P&#039;]=daily_data[&#039;P&#039;]/1000&lt;br /&gt;
#Production d&#039;un kWh à partir des data jrc:&lt;br /&gt;
resultday=daily_data[&#039;P&#039;].resample(&#039;D&#039;).sum()&lt;br /&gt;
resultday.index=pd.to_datetime(resultday.index,format=&amp;quot;%Y%m%d&amp;quot;)&lt;br /&gt;
print(&amp;quot;\nProduction moyenne par jour (kWh):\n&amp;quot;, resultday.mean())&lt;br /&gt;
print(&amp;quot;Production minimum par jour (kWh):\n&amp;quot;, resultday.min())&lt;br /&gt;
print(&amp;quot;Production maximum par jour  (kWh):\n&amp;quot;, resultday.max())&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de production par semaine&lt;br /&gt;
resultweek=daily_data[&#039;P&#039;].resample(&#039;W&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de production par mois&lt;br /&gt;
resultmonth=daily_data[&#039;P&#039;].resample(&#039;M&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de production par trimestre&lt;br /&gt;
resulttrim=resultday.resample(&#039;Q&#039;).sum()&lt;br /&gt;
resulttrim=resulttrim.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
print(&amp;quot;\nProduction par trimestre (kWh):\n&amp;quot;,resulttrim.to_string())&lt;br /&gt;
&lt;br /&gt;
# Calculer les sommes de production par an&lt;br /&gt;
resultyear=daily_data[&#039;P&#039;].resample(&#039;Y&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nProduction annuelle moyennes d&#039;1kWc (kWh):\n&amp;quot;,resultyear.mean())&lt;br /&gt;
&lt;br /&gt;
# Calculer le nombre de jours consécutifs maximum sans production&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
for value in resultday:&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        current_streak = 0  # Reset the streak if the value is not zero&lt;br /&gt;
print(f&amp;quot;\nNombre de jours consecutifs maximum à production 0: {max_streak}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Moyenne par trimestre pour chaque trimestre&lt;br /&gt;
moyenne_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).mean()&lt;br /&gt;
&lt;br /&gt;
# Minimum par trimestre pour chaque trimestre&lt;br /&gt;
min_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).min()&lt;br /&gt;
&lt;br /&gt;
# Maximum par trimestre pour chaque trimestre&lt;br /&gt;
max_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).max()&lt;br /&gt;
&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre (kWh):\n&amp;quot;, moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMinimum par trimestre pour chaque trimestre (kWh):\n&amp;quot;, min_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par trimestre pour chaque trimestre (kWh):\n&amp;quot;, max_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer sa consommation d&#039;electricité journaliere&lt;br /&gt;
inputelecconsoday = input(&amp;quot;Entrez la consommation d&#039;électricité journaliere (kWh): &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
inputelecconsoday = float(inputelecconsoday.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur batterie plomb ou lithium&lt;br /&gt;
typebatterie = input(&amp;quot;Voulez vous utiliser des batteries au plomb? Taper oui ou o pour repondre oui (Lithium par défaut si rien n&#039;est indiqué)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Dimensionnement batterie initiale pour avoir 24h d&#039;autonomie:&lt;br /&gt;
if typebatterie==&amp;quot;oui&amp;quot; or typebatterie==&amp;quot;o&amp;quot; or typebatterie==&amp;quot;y&amp;quot; or typebatterie==&amp;quot;yes&amp;quot;:&lt;br /&gt;
    batterie0=int(math.ceil(inputelecconsoday/0.5))&lt;br /&gt;
    typebatterie=&amp;quot;plomb&amp;quot;&lt;br /&gt;
else:&lt;br /&gt;
    batterie0=int(math.ceil(inputelecconsoday/0.8))&lt;br /&gt;
    typebatterie=&amp;quot;lithium&amp;quot;&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Seuil batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur (batterie {typebatterie}))&lt;br /&gt;
hypothese:(conso elec journaliere / 0.8 au lithium et conso elec journaliere / 0.5 au plomb)&lt;br /&gt;
{batterie0} kWh&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Pourcentage de décharge maximum&lt;br /&gt;
d_input=input(&#039;Entrer le pourcentage de décharge maximum autorisé (20% si vous voulez que votre batterie ne se décharge pas à moins de 20%. Appuyer sur entree si vous voulez utiliser les valeurs par défaut de 50% pour le plomb et de 0% sinon (hypothese solid state battery)&#039;)&lt;br /&gt;
try:&lt;br /&gt;
    d=float(d_input)/100&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    if typebatterie==&#039;plomb&#039;:&lt;br /&gt;
        d=0.5&lt;br /&gt;
    else:&lt;br /&gt;
        d=0&lt;br /&gt;
&lt;br /&gt;
# Demander à l&#039;utilisateur combien de jours sans elec il ou elle peut supporter&lt;br /&gt;
inputjnoelec = input(&amp;quot;Combien de jours maximum consécutifs sans electricité (ou avec un groupe electrogene) pouvez vous supporter (0 par défaut si reponse vide)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    jnoelec=int(inputjnoelec)&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    jnoelec=0&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Nombre de jours maximum consécutifs sans electricité (ou avec un groupe electrogene)  pris en hypothèse &lt;br /&gt;
{jnoelec} j&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Dimensionnement puissance crete des modules (kWc) initiale pour produire suffisamment en hiver (hypothese 2kWh par kWc par jour):&lt;br /&gt;
puissance0=int(math.ceil(inputelecconsoday/2))&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil puissance initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/2 (2kWh produit par kWc en hiver)&lt;br /&gt;
{puissance0} kWc&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil volume de batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/0.8 au lithium et 0.5 au plomb&lt;br /&gt;
{batterie0} kWh&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
batterie0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de batterie (kWh) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(batterie0_input)&lt;br /&gt;
    batterie0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de batterie0={batterie0}kWh&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
puissance0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de puissance (kWc) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(puissance0_input)&lt;br /&gt;
    puissance0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de puissance0={puissance0}kWc&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Itérations algorithmiques stockage&amp;amp;consommation&lt;br /&gt;
&lt;br /&gt;
#fonction check surface volume&lt;br /&gt;
def iter(data,consoelecday,v0,p0,joursnoelec):&lt;br /&gt;
    #elec est l&#039;energie dans la batterie : electricite initiale=v0 (volume de batterie à t0)&lt;br /&gt;
    elec=v0&lt;br /&gt;
    #current_streak est le nombre de jours de blackout consécutif&lt;br /&gt;
    current_streak = 0&lt;br /&gt;
    #listjnoelec est la liste dans laquelle on enregistre les jours de blackout&lt;br /&gt;
    listjnoelec=[]&lt;br /&gt;
    #boucle sur la date entrée en argulent de la fonction&lt;br /&gt;
    for i in range(len(data)):&lt;br /&gt;
        #recupday est l&#039;électricite recupérée (produite) au jour i (la puissance d&#039;1kWc*p0)&lt;br /&gt;
        #p0 est la puissance crete entree en argument&lt;br /&gt;
        recupday=data.iloc[i]*p0&lt;br /&gt;
        #consoday est la consommation electrique du jour i entree en argument de la fonction&lt;br /&gt;
        consoday=consoelecday&lt;br /&gt;
        #energie mise à jour avec consoday et recupday&lt;br /&gt;
        elec=elec+recupday-consoday&lt;br /&gt;
        #si l&#039;énergie mise à jour est superieure au volume de batterie&lt;br /&gt;
        if elec&amp;gt;v0:&lt;br /&gt;
            #print(&amp;quot;batterie pleine&amp;quot;)&lt;br /&gt;
            #le nombre de jours de balckout consécutif est remis à zero&lt;br /&gt;
            current_streak=0&lt;br /&gt;
            #l&#039;énergie est égale au volume de la batterie&lt;br /&gt;
            elec=v0 #hypothese gestion du trop plein ok&lt;br /&gt;
            continue&lt;br /&gt;
        #si l&#039;énergie mise à jour est inférieure au pourcentage max de decharge et le nombre de jours consécutifs de blackout est inférieure au nombre de jours toléré&lt;br /&gt;
        elif elec&amp;lt;d*v0 and current_streak&amp;lt;joursnoelec:&lt;br /&gt;
            #si le nombre de jours consécutifs de blackout est égal à zero&lt;br /&gt;
            if current_streak==0:&lt;br /&gt;
                #ajouter la date du jour et un compteur à la liste listjnoelec&lt;br /&gt;
                listjnoelec.append([data.index[i].strftime(&#039;%d-%m-%Y&#039;),1])&lt;br /&gt;
            #sinon&lt;br /&gt;
            else:&lt;br /&gt;
                #incrementer le compteur de la dernier entree de listjnoelec&lt;br /&gt;
                listjnoelec[-1][-1]+=1&lt;br /&gt;
            #remise à zero de la valeur négative de elec    &lt;br /&gt;
            elec=0&lt;br /&gt;
            #incrementation du nombre de jours consécutifs de blackout&lt;br /&gt;
            current_streak+=1&lt;br /&gt;
            continue&lt;br /&gt;
        #si l&#039;énergie est inférieure au pourcentage max de decharge et le nombre de jours consécutifs de blackout supérieur au nombre de jours tolérés&lt;br /&gt;
        elif elec&amp;lt;d*v0 and current_streak&amp;gt;=joursnoelec:&lt;br /&gt;
            #la fonction renvoie une valeur nulle&lt;br /&gt;
            return (0,0)&lt;br /&gt;
        #sinon&lt;br /&gt;
        else:&lt;br /&gt;
            #remise à zero du nombre de jours consécutifs de blackout&lt;br /&gt;
            current_streak=0&lt;br /&gt;
    #variable nombre d&#039;épisode de blackout = longueur de la la liste listjnoelec        &lt;br /&gt;
    nb_episode_no_elec=len(listjnoelec)&lt;br /&gt;
    #si listjnoelec n&#039;est pas vide&lt;br /&gt;
    if len(listjnoelec)!=0:&lt;br /&gt;
        #liste des durees des épisodes sans elec&lt;br /&gt;
        list_duree_episode_no_elec=[length[1] for length in listjnoelec]&lt;br /&gt;
        #moyenne de cette liste&lt;br /&gt;
        duree_moy_episode_no_elec=sum(list_duree_episode_no_elec)/len(list_duree_episode_no_elec)&lt;br /&gt;
    #sinon    &lt;br /&gt;
    else:&lt;br /&gt;
        #duree moyenne egale à zero&lt;br /&gt;
        duree_moy_episode_no_elec=0&lt;br /&gt;
    #print(&amp;quot;les puissances et batteries permettent de subvenir à la consommation d&#039;electricité sur le dataset&amp;quot;)&lt;br /&gt;
    #renvoyer les variables necessaires au traitement des résultats&lt;br /&gt;
    return (v0,p0,joursnoelec,nb_episode_no_elec,duree_moy_episode_no_elec,listjnoelec)&lt;br /&gt;
#hypothèse récupérateur plein à t0&lt;br /&gt;
elec=batterie0&lt;br /&gt;
resultpuissancevolume=(batterie0,puissance0,jnoelec,0)&lt;br /&gt;
&lt;br /&gt;
#boucle iteration&lt;br /&gt;
listpuissance0=[puissance0*(1+i*0.33) for i in range(0,999)]&lt;br /&gt;
listbatterie0=[batterie0*(1+i*0.5) for i in range(0,999)]&lt;br /&gt;
listresult_0blackout=[]&lt;br /&gt;
listresult_blackout=[]&lt;br /&gt;
&lt;br /&gt;
# increment avec hypothèse jnoelec=0 (k in range 0,1)&lt;br /&gt;
for i in range(0,14): #boucle iteration surface modules&lt;br /&gt;
    for j in range (0,i+40):#boucle iteration volume batterie&lt;br /&gt;
        for k in range(0,1):&lt;br /&gt;
            resultpuissancevolume=iter(resultday,inputelecconsoday,listbatterie0[j],listpuissance0[i],k)&lt;br /&gt;
            #si les resultats ne sont pas nuls &lt;br /&gt;
            if resultpuissancevolume!=(0,0):&lt;br /&gt;
                #ajouter les resultats à une liste de resultats&lt;br /&gt;
                listresult_0blackout.append(resultpuissancevolume)&lt;br /&gt;
                #arreter la boucle k&lt;br /&gt;
                break&lt;br /&gt;
            else:#sinon continuer&lt;br /&gt;
                continue&lt;br /&gt;
        #arreter la boucle j si les resultats ne sont pas nul    &lt;br /&gt;
        if resultpuissancevolume!=(0,0):&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
#idem avec increment hypothèse jnoelec entre 0 et 13 (i in range 0,14)&lt;br /&gt;
for i in range(0,14):&lt;br /&gt;
    for j in range (0,i+40):&lt;br /&gt;
        for k in range(0,21):&lt;br /&gt;
            resultpuissancevolume=iter(resultday,inputelecconsoday,listbatterie0[j],listpuissance0[i],k)&lt;br /&gt;
            if resultpuissancevolume!=(0,0):&lt;br /&gt;
                listresult_blackout.append(resultpuissancevolume)&lt;br /&gt;
                break&lt;br /&gt;
            else:&lt;br /&gt;
                continue&lt;br /&gt;
        if resultpuissancevolume!=(0,0):&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
# Affichage des résultats des boucles d&#039;itérations&lt;br /&gt;
for k in listresult_0blackout:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de {k[0]}kWh &lt;br /&gt;
    et une puissance crete de {k[1]}kWc,&lt;br /&gt;
    et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
    et {k[3]} episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    {k[5]}&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
    on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for k in listresult_blackout:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de {k[0]}kWh &lt;br /&gt;
    et une puissance crete de {k[1]}kWc,&lt;br /&gt;
    et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
    et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    {k[5]}&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
    on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&#039;\n\n\n\n&#039;)&lt;br /&gt;
print(&#039;affichage des résultats optimisés&#039;)&lt;br /&gt;
# Optimisation résultats:&lt;br /&gt;
&lt;br /&gt;
# premier résultat en incrémentant la puissance crete dont la capacité de batterie est minimale&lt;br /&gt;
batterie_0blackout=[k[0] for k in listresult_0blackout]&lt;br /&gt;
minbatterie_0blackout=min(batterie_0blackout)&lt;br /&gt;
for k in listresult_0blackout:&lt;br /&gt;
    if k[0]==minbatterie_0blackout:&lt;br /&gt;
        print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de {k[0]}kWh &lt;br /&gt;
        et une puissance crete de {k[1]}kWc,&lt;br /&gt;
        et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
        et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        {k[5]}&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
        on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
# premier résultat en incrémentant la puissance crete fournissant un nb de jours de blackout inferieur ou égal&lt;br /&gt;
# à celui entrée par l&#039;utilisateur&lt;br /&gt;
for k in listresult_blackout:&lt;br /&gt;
    if k[2]&amp;lt;=jnoelec:&lt;br /&gt;
        print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de {k[0]}kWh &lt;br /&gt;
        et une puissance crete de {k[1]}kWc,&lt;br /&gt;
        et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
        et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        {k[5]}&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
        on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
Resultats optimisés&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Pour notre exemple, on aboutit aux résultats suivant (avec 1j de blackout authorisé):&lt;br /&gt;
Les &amp;quot;résultats optimisés sont tout en bas&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entrez la latitude de votre lieux: 44.2&lt;br /&gt;
Entrez la longitude de votre lieux: 0.6&lt;br /&gt;
Entrer l&#039;orientation de votre lieux (est,ouest,nord,sud)sud&lt;br /&gt;
Entre l&#039;angle des modules en °45&lt;br /&gt;
--2024-04-08 20:04:29--  https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.2&amp;amp;lon=0.6&amp;amp;loss=14&amp;amp;angle=45.0&amp;amp;aspect=0&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&lt;br /&gt;
Résolution de re.jrc.ec.europa.eu (re.jrc.ec.europa.eu)… 64:ff9b::8bbf:dd12, 139.191.221.18&lt;br /&gt;
Connexion à re.jrc.ec.europa.eu (re.jrc.ec.europa.eu)|64:ff9b::8bbf:dd12|:443… connecté.&lt;br /&gt;
requête HTTP transmise, en attente de la réponse… 200 OK&lt;br /&gt;
Taille : 6291134 (6,0M) [text/html]&lt;br /&gt;
Enregistre : «output.csv»&lt;br /&gt;
&lt;br /&gt;
output.csv          100%[===================&amp;gt;]   6,00M  1,03MB/s    ds 7,2s&lt;br /&gt;
&lt;br /&gt;
2024-04-08 20:04:43 (852 KB/s) - «output.csv» enregistré [6291134/6291134]&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.1124367317425885 j&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.2801404603979711 j&lt;br /&gt;
&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 1.4647827920708563 j&lt;br /&gt;
&lt;br /&gt;
Production moyenne par jour (kWh):&lt;br /&gt;
 3.4641937012320336&lt;br /&gt;
Production minimum par jour (kWh):&lt;br /&gt;
 0.0&lt;br /&gt;
Production maximum par jour  (kWh):&lt;br /&gt;
 6.65871&lt;br /&gt;
&lt;br /&gt;
Production par trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
2005-03-31    270.56038&lt;br /&gt;
2005-06-30    375.15833&lt;br /&gt;
2005-09-30    399.84068&lt;br /&gt;
2005-12-31    227.76775&lt;br /&gt;
2006-03-31    247.03158&lt;br /&gt;
2006-06-30    406.70165&lt;br /&gt;
2006-09-30    389.10805&lt;br /&gt;
2006-12-31    233.93622&lt;br /&gt;
2007-03-31    229.46528&lt;br /&gt;
2007-06-30    348.05120&lt;br /&gt;
2007-09-30    390.13982&lt;br /&gt;
2007-12-31    250.21269&lt;br /&gt;
2008-03-31    250.87365&lt;br /&gt;
2008-06-30    347.15819&lt;br /&gt;
2008-09-30    385.60970&lt;br /&gt;
2008-12-31    202.44585&lt;br /&gt;
2009-03-31    286.11329&lt;br /&gt;
2009-06-30    350.51328&lt;br /&gt;
2009-09-30    397.86835&lt;br /&gt;
2009-12-31    237.76417&lt;br /&gt;
2010-03-31    270.32507&lt;br /&gt;
2010-06-30    366.21454&lt;br /&gt;
2010-09-30    394.93503&lt;br /&gt;
2010-12-31    236.08537&lt;br /&gt;
2011-03-31    271.73968&lt;br /&gt;
2011-06-30    400.68298&lt;br /&gt;
2011-09-30    374.99079&lt;br /&gt;
2011-12-31    255.64396&lt;br /&gt;
2012-03-31    294.48135&lt;br /&gt;
2012-06-30    344.82346&lt;br /&gt;
2012-09-30    394.74104&lt;br /&gt;
2012-12-31    217.83773&lt;br /&gt;
2013-03-31    259.24581&lt;br /&gt;
2013-06-30    323.20427&lt;br /&gt;
2013-09-30    402.14528&lt;br /&gt;
2013-12-31    228.40704&lt;br /&gt;
2014-03-31    268.96648&lt;br /&gt;
2014-06-30    385.06742&lt;br /&gt;
2014-09-30    388.64375&lt;br /&gt;
2014-12-31    252.08195&lt;br /&gt;
2015-03-31    242.45034&lt;br /&gt;
2015-06-30    402.47347&lt;br /&gt;
2015-09-30    400.23336&lt;br /&gt;
2015-12-31    273.02084&lt;br /&gt;
2016-03-31    248.06779&lt;br /&gt;
2016-06-30    354.35530&lt;br /&gt;
2016-09-30    411.73628&lt;br /&gt;
2016-12-31    224.28598&lt;br /&gt;
2017-03-31    267.90392&lt;br /&gt;
2017-06-30    410.47864&lt;br /&gt;
2017-09-30    363.44330&lt;br /&gt;
2017-12-31    251.00240&lt;br /&gt;
2018-03-31    231.96132&lt;br /&gt;
2018-06-30    362.16785&lt;br /&gt;
2018-09-30    426.21631&lt;br /&gt;
2018-12-31    219.18595&lt;br /&gt;
2019-03-31    313.23495&lt;br /&gt;
2019-06-30    368.76834&lt;br /&gt;
2019-09-30    407.61175&lt;br /&gt;
2019-12-31    201.18704&lt;br /&gt;
2020-03-31    283.16855&lt;br /&gt;
2020-06-30    389.45566&lt;br /&gt;
2020-09-30    395.65480&lt;br /&gt;
2020-12-31    240.10074&lt;br /&gt;
Freq: Q-DEC&lt;br /&gt;
&lt;br /&gt;
Production annuelle moyennes d&#039;1kWc (kWh):&lt;br /&gt;
 1265.2967493749998&lt;br /&gt;
&lt;br /&gt;
Nombre de jours consecutifs maximum à production 0: 2&lt;br /&gt;
&lt;br /&gt;
Moyenne par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    264.724340&lt;br /&gt;
2    370.954661&lt;br /&gt;
3    395.182393&lt;br /&gt;
4    234.435355&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Minimum par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    229.46528&lt;br /&gt;
2    323.20427&lt;br /&gt;
3    363.44330&lt;br /&gt;
4    201.18704&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
&lt;br /&gt;
Maximum par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    313.23495&lt;br /&gt;
2    410.47864&lt;br /&gt;
3    426.21631&lt;br /&gt;
4    273.02084&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
Entrez la consommation d&#039;électricité journaliere (kWh): 4&lt;br /&gt;
Voulez vous utiliser des batteries au plomb? Taper oui ou o pour repondre oui (Lithium par défaut si rien n&#039;est indiqué)&lt;br /&gt;
Seuil batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur (batterie lithium))&lt;br /&gt;
hypothese:(conso elec journaliere / 0.8 au lithium et conso elec journaliere / 0.5 au plomb)&lt;br /&gt;
5 kWh&lt;br /&gt;
Entrer le pourcentage de décharge maximum autorisé (20% si vous voulez que votre batterie ne se décharge pas à moins de 20%. Appuyer sur entree si vous voulez utiliser les valeurs par défaut de 50% pour le plomb et de 0% sinon (hypothese solid state battery)&lt;br /&gt;
Combien de jours maximum consécutifs sans electricité (ou avec un groupe electrogene) pouvez vous supporter (0 par défaut si reponse vide)1&lt;br /&gt;
Nombre de jours maximum consécutifs sans electricité (ou avec un groupe electrogene)  pris en hypothèse &lt;br /&gt;
1 j&lt;br /&gt;
&lt;br /&gt;
Seuil puissance initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/2 (2kWh produit par kWc en hiver)&lt;br /&gt;
2 kWc&lt;br /&gt;
&lt;br /&gt;
Seuil volume de batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/0.8 au lithium et 0.5 au plomb&lt;br /&gt;
5 kWh&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez corriger la valeur initiale de batterie (kWh) pour les itérations, entrer votre valeur, sinon appuyer sur entree&lt;br /&gt;
&lt;br /&gt;
erreur de type ou valeur utilisateur vide, poursuite avec utilisation de batterie0=5kWh&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez corriger la valeur initiale de puissance (kWc) pour les itérations, entrer votre valeur, sinon appuyer sur entree&lt;br /&gt;
&lt;br /&gt;
erreur de type ou valeur utilisateur vide, poursuite avec utilisation de puissance0=2kWc&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 75.0kWh &lt;br /&gt;
    et une puissance crete de 2.0kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 22.5kWh &lt;br /&gt;
    et une puissance crete de 2.66kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 17.5kWh &lt;br /&gt;
    et une puissance crete de 3.3200000000000003kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 15.0kWh &lt;br /&gt;
    et une puissance crete de 3.98kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 12.5kWh &lt;br /&gt;
    et une puissance crete de 4.640000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 12.5kWh &lt;br /&gt;
    et une puissance crete de 5.300000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 5.96kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 6.62kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 7.28kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 7.94kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 8.600000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 9.260000000000002kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 9.92kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 10.58kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 2.0kWc,&lt;br /&gt;
    et une hypothèse de 10j sans elec possible&lt;br /&gt;
    et 185 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;14-01-2005&#039;, 1], [&#039;19-01-2005&#039;, 3], [&#039;23-01-2005&#039;, 2], [&#039;01-02-2005&#039;, 1], [&#039;11-02-2005&#039;, 3], [&#039;17-11-2005&#039;, 1], [&#039;26-11-2005&#039;, 3], [&#039;02-12-2005&#039;, 1], [&#039;04-12-2005&#039;, 2], [&#039;07-12-2005&#039;, 2], [&#039;12-12-2005&#039;, 6], [&#039;22-12-2005&#039;, 2], [&#039;25-12-2005&#039;, 3], [&#039;31-12-2005&#039;, 2], [&#039;03-01-2006&#039;, 10], [&#039;18-01-2006&#039;, 4], [&#039;29-01-2006&#039;, 7], [&#039;23-02-2006&#039;, 1], [&#039;09-03-2006&#039;, 2], [&#039;21-11-2006&#039;, 2], [&#039;25-11-2006&#039;, 2], [&#039;28-11-2006&#039;, 1], [&#039;30-11-2006&#039;, 5], [&#039;08-12-2006&#039;, 3], [&#039;20-12-2006&#039;, 7], [&#039;08-01-2007&#039;, 1], [&#039;20-01-2007&#039;, 4], [&#039;30-01-2007&#039;, 4], [&#039;06-02-2007&#039;, 3], [&#039;08-10-2007&#039;, 1], [&#039;10-10-2007&#039;, 1], [&#039;01-12-2007&#039;, 1], [&#039;07-12-2007&#039;, 3], [&#039;15-12-2007&#039;, 1], [&#039;25-12-2007&#039;, 5], [&#039;01-01-2008&#039;, 3], [&#039;05-01-2008&#039;, 5], [&#039;11-01-2008&#039;, 1], [&#039;18-01-2008&#039;, 2], [&#039;22-01-2008&#039;, 2], [&#039;30-01-2008&#039;, 1], [&#039;01-02-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;11-03-2008&#039;, 2], [&#039;17-05-2008&#039;, 2], [&#039;28-10-2008&#039;, 1], [&#039;30-10-2008&#039;, 2], [&#039;02-11-2008&#039;, 2], [&#039;06-11-2008&#039;, 2], [&#039;15-11-2008&#039;, 9], [&#039;30-11-2008&#039;, 2], [&#039;03-12-2008&#039;, 2], [&#039;12-12-2008&#039;, 9], [&#039;25-12-2008&#039;, 2], [&#039;04-01-2009&#039;, 9], [&#039;14-01-2009&#039;, 1], [&#039;23-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 2], [&#039;16-08-2009&#039;, 1], [&#039;11-11-2009&#039;, 1], [&#039;02-12-2009&#039;, 1], [&#039;04-12-2009&#039;, 1], [&#039;06-12-2009&#039;, 3], [&#039;14-12-2009&#039;, 3], [&#039;23-12-2009&#039;, 2], [&#039;28-12-2009&#039;, 2], [&#039;04-01-2010&#039;, 4], [&#039;09-01-2010&#039;, 4], [&#039;14-01-2010&#039;, 1], [&#039;16-01-2010&#039;, 2], [&#039;05-05-2010&#039;, 2], [&#039;01-11-2010&#039;, 1], [&#039;04-11-2010&#039;, 3], [&#039;08-11-2010&#039;, 5], [&#039;25-11-2010&#039;, 1], [&#039;28-11-2010&#039;, 1], [&#039;02-12-2010&#039;, 2], [&#039;17-12-2010&#039;, 2], [&#039;22-12-2010&#039;, 3], [&#039;07-01-2011&#039;, 3], [&#039;13-01-2011&#039;, 3], [&#039;31-01-2011&#039;, 2], [&#039;04-02-2011&#039;, 1], [&#039;23-02-2011&#039;, 4], [&#039;02-03-2011&#039;, 2], [&#039;29-10-2011&#039;, 1], [&#039;05-11-2011&#039;, 4], [&#039;25-11-2011&#039;, 4], [&#039;04-12-2011&#039;, 5], [&#039;14-12-2011&#039;, 3], [&#039;21-12-2011&#039;, 3], [&#039;13-01-2012&#039;, 3], [&#039;23-01-2012&#039;, 1], [&#039;08-02-2012&#039;, 1], [&#039;15-02-2012&#039;, 1], [&#039;20-10-2012&#039;, 2], [&#039;06-11-2012&#039;, 1], [&#039;20-11-2012&#039;, 4], [&#039;25-11-2012&#039;, 5], [&#039;14-12-2012&#039;, 1], [&#039;22-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;19-01-2013&#039;, 1], [&#039;22-01-2013&#039;, 1], [&#039;26-01-2013&#039;, 2], [&#039;08-11-2013&#039;, 1], [&#039;10-11-2013&#039;, 1], [&#039;15-11-2013&#039;, 1], [&#039;17-11-2013&#039;, 3], [&#039;23-11-2013&#039;, 3], [&#039;03-12-2013&#039;, 4], [&#039;25-01-2014&#039;, 3], [&#039;01-02-2014&#039;, 1], [&#039;15-02-2014&#039;, 1], [&#039;24-11-2014&#039;, 3], [&#039;01-12-2014&#039;, 3], [&#039;06-12-2014&#039;, 1], [&#039;13-12-2014&#039;, 8], [&#039;24-12-2014&#039;, 2], [&#039;27-12-2014&#039;, 2], [&#039;03-01-2015&#039;, 4], [&#039;10-01-2015&#039;, 1], [&#039;24-01-2015&#039;, 1], [&#039;29-01-2015&#039;, 2], [&#039;03-03-2015&#039;, 1], [&#039;12-11-2015&#039;, 5], [&#039;19-11-2015&#039;, 1], [&#039;26-11-2015&#039;, 1], [&#039;04-12-2015&#039;, 2], [&#039;03-01-2016&#039;, 8], [&#039;21-01-2016&#039;, 3], [&#039;01-02-2016&#039;, 2], [&#039;16-10-2016&#039;, 2], [&#039;05-11-2016&#039;, 1], [&#039;18-11-2016&#039;, 1], [&#039;22-11-2016&#039;, 4], [&#039;20-12-2016&#039;, 1], [&#039;24-12-2016&#039;, 3], [&#039;30-12-2016&#039;, 6], [&#039;11-01-2017&#039;, 2], [&#039;06-12-2017&#039;, 3], [&#039;10-12-2017&#039;, 2], [&#039;13-12-2017&#039;, 6], [&#039;22-12-2017&#039;, 4], [&#039;28-12-2017&#039;, 3], [&#039;03-01-2018&#039;, 5], [&#039;14-01-2018&#039;, 3], [&#039;20-01-2018&#039;, 4], [&#039;30-01-2018&#039;, 2], [&#039;05-02-2018&#039;, 2], [&#039;08-02-2018&#039;, 1], [&#039;20-02-2018&#039;, 1], [&#039;28-03-2018&#039;, 1], [&#039;28-10-2018&#039;, 2], [&#039;02-11-2018&#039;, 1], [&#039;09-11-2018&#039;, 2], [&#039;04-12-2018&#039;, 1], [&#039;09-12-2018&#039;, 1], [&#039;13-12-2018&#039;, 4], [&#039;21-12-2018&#039;, 5], [&#039;29-12-2018&#039;, 4], [&#039;08-01-2019&#039;, 1], [&#039;13-01-2019&#039;, 2], [&#039;22-01-2019&#039;, 1], [&#039;30-01-2019&#039;, 2], [&#039;23-10-2019&#039;, 2], [&#039;02-11-2019&#039;, 1], [&#039;04-11-2019&#039;, 5], [&#039;16-11-2019&#039;, 3], [&#039;01-12-2019&#039;, 2], [&#039;07-12-2019&#039;, 3], [&#039;12-12-2019&#039;, 3], [&#039;23-12-2019&#039;, 3], [&#039;04-01-2020&#039;, 2], [&#039;29-02-2020&#039;, 1], [&#039;04-03-2020&#039;, 2], [&#039;23-04-2020&#039;, 1], [&#039;12-05-2020&#039;, 1], [&#039;06-10-2020&#039;, 1], [&#039;03-12-2020&#039;, 2], [&#039;10-12-2020&#039;, 2], [&#039;13-12-2020&#039;, 3], [&#039;18-12-2020&#039;, 2], [&#039;21-12-2020&#039;, 5], [&#039;28-12-2020&#039;, 2]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 2.5513513513513515j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 2.66kWc,&lt;br /&gt;
    et une hypothèse de 8j sans elec possible&lt;br /&gt;
    et 103 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;19-01-2005&#039;, 3], [&#039;23-01-2005&#039;, 1], [&#039;01-02-2005&#039;, 1], [&#039;12-02-2005&#039;, 2], [&#039;26-11-2005&#039;, 3], [&#039;05-12-2005&#039;, 1], [&#039;08-12-2005&#039;, 1], [&#039;12-12-2005&#039;, 6], [&#039;23-12-2005&#039;, 1], [&#039;26-12-2005&#039;, 2], [&#039;31-12-2005&#039;, 1], [&#039;04-01-2006&#039;, 4], [&#039;09-01-2006&#039;, 4], [&#039;20-01-2006&#039;, 2], [&#039;29-01-2006&#039;, 4], [&#039;03-02-2006&#039;, 2], [&#039;22-11-2006&#039;, 1], [&#039;04-12-2006&#039;, 1], [&#039;10-12-2006&#039;, 1], [&#039;22-12-2006&#039;, 5], [&#039;22-01-2007&#039;, 2], [&#039;30-01-2007&#039;, 4], [&#039;08-02-2007&#039;, 1], [&#039;01-12-2007&#039;, 1], [&#039;08-12-2007&#039;, 2], [&#039;26-12-2007&#039;, 4], [&#039;03-01-2008&#039;, 1], [&#039;06-01-2008&#039;, 4], [&#039;11-01-2008&#039;, 1], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;07-11-2008&#039;, 1], [&#039;16-11-2008&#039;, 8], [&#039;01-12-2008&#039;, 1], [&#039;04-12-2008&#039;, 1], [&#039;15-12-2008&#039;, 6], [&#039;26-12-2008&#039;, 1], [&#039;05-01-2009&#039;, 8], [&#039;24-01-2009&#039;, 1], [&#039;19-04-2009&#039;, 2], [&#039;16-08-2009&#039;, 1], [&#039;11-11-2009&#039;, 1], [&#039;08-12-2009&#039;, 1], [&#039;14-12-2009&#039;, 3], [&#039;23-12-2009&#039;, 2], [&#039;05-01-2010&#039;, 3], [&#039;09-01-2010&#039;, 2], [&#039;12-01-2010&#039;, 1], [&#039;06-05-2010&#039;, 1], [&#039;05-11-2010&#039;, 2], [&#039;12-11-2010&#039;, 1], [&#039;22-12-2010&#039;, 3], [&#039;08-01-2011&#039;, 1], [&#039;31-01-2011&#039;, 2], [&#039;06-11-2011&#039;, 3], [&#039;25-11-2011&#039;, 4], [&#039;07-12-2011&#039;, 2], [&#039;21-12-2011&#039;, 3], [&#039;14-01-2012&#039;, 2], [&#039;20-10-2012&#039;, 2], [&#039;21-11-2012&#039;, 2], [&#039;25-11-2012&#039;, 2], [&#039;28-11-2012&#039;, 1], [&#039;14-12-2012&#039;, 1], [&#039;22-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;19-01-2013&#039;, 1], [&#039;18-11-2013&#039;, 2], [&#039;24-11-2013&#039;, 2], [&#039;04-12-2013&#039;, 2], [&#039;25-01-2014&#039;, 3], [&#039;25-11-2014&#039;, 2], [&#039;02-12-2014&#039;, 2], [&#039;14-12-2014&#039;, 7], [&#039;05-01-2015&#039;, 2], [&#039;13-11-2015&#039;, 2], [&#039;04-01-2016&#039;, 5], [&#039;10-01-2016&#039;, 1], [&#039;23-01-2016&#039;, 1], [&#039;17-10-2016&#039;, 1], [&#039;23-11-2016&#039;, 1], [&#039;25-11-2016&#039;, 1], [&#039;20-12-2016&#039;, 1], [&#039;25-12-2016&#039;, 2], [&#039;31-12-2016&#039;, 5], [&#039;12-01-2017&#039;, 1], [&#039;22-12-2017&#039;, 4], [&#039;29-12-2017&#039;, 1], [&#039;04-01-2018&#039;, 3], [&#039;16-01-2018&#039;, 1], [&#039;21-01-2018&#039;, 3], [&#039;31-01-2018&#039;, 1], [&#039;04-12-2018&#039;, 1], [&#039;15-12-2018&#039;, 2], [&#039;22-12-2018&#039;, 4], [&#039;30-12-2018&#039;, 3], [&#039;31-01-2019&#039;, 1], [&#039;17-11-2019&#039;, 2], [&#039;02-12-2019&#039;, 1], [&#039;08-12-2019&#039;, 1], [&#039;13-12-2019&#039;, 2], [&#039;29-12-2020&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 2.203883495145631j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 3.3200000000000003kWc,&lt;br /&gt;
    et une hypothèse de 6j sans elec possible&lt;br /&gt;
    et 66 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;20-01-2005&#039;, 2], [&#039;23-01-2005&#039;, 1], [&#039;01-02-2005&#039;, 1], [&#039;12-02-2005&#039;, 2], [&#039;27-11-2005&#039;, 1], [&#039;12-12-2005&#039;, 6], [&#039;27-12-2005&#039;, 1], [&#039;06-01-2006&#039;, 2], [&#039;09-01-2006&#039;, 1], [&#039;11-01-2006&#039;, 2], [&#039;29-01-2006&#039;, 3], [&#039;03-02-2006&#039;, 2], [&#039;24-12-2006&#039;, 3], [&#039;23-01-2007&#039;, 1], [&#039;01-02-2007&#039;, 2], [&#039;27-12-2007&#039;, 3], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;16-11-2008&#039;, 4], [&#039;21-11-2008&#039;, 1], [&#039;23-11-2008&#039;, 1], [&#039;19-12-2008&#039;, 2], [&#039;26-12-2008&#039;, 1], [&#039;05-01-2009&#039;, 1], [&#039;07-01-2009&#039;, 6], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;14-12-2009&#039;, 3], [&#039;24-12-2009&#039;, 1], [&#039;05-01-2010&#039;, 1], [&#039;10-01-2010&#039;, 1], [&#039;12-01-2010&#039;, 1], [&#039;05-11-2010&#039;, 2], [&#039;23-12-2010&#039;, 2], [&#039;01-02-2011&#039;, 1], [&#039;07-11-2011&#039;, 1], [&#039;26-11-2011&#039;, 3], [&#039;21-12-2011&#039;, 3], [&#039;14-01-2012&#039;, 1], [&#039;20-10-2012&#039;, 2], [&#039;21-11-2012&#039;, 1], [&#039;26-11-2012&#039;, 1], [&#039;14-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;24-11-2013&#039;, 2], [&#039;05-12-2013&#039;, 1], [&#039;26-01-2014&#039;, 2], [&#039;26-11-2014&#039;, 1], [&#039;02-12-2014&#039;, 2], [&#039;17-12-2014&#039;, 3], [&#039;13-11-2015&#039;, 1], [&#039;05-01-2016&#039;, 1], [&#039;07-01-2016&#039;, 2], [&#039;17-10-2016&#039;, 1], [&#039;23-11-2016&#039;, 1], [&#039;01-01-2017&#039;, 4], [&#039;23-12-2017&#039;, 3], [&#039;06-01-2018&#039;, 1], [&#039;22-01-2018&#039;, 2], [&#039;31-01-2018&#039;, 1], [&#039;16-12-2018&#039;, 1], [&#039;23-12-2018&#039;, 3], [&#039;30-12-2018&#039;, 3], [&#039;02-12-2019&#039;, 1], [&#039;14-12-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.8636363636363635j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 3.98kWc,&lt;br /&gt;
    et une hypothèse de 6j sans elec possible&lt;br /&gt;
    et 43 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;20-01-2005&#039;, 2], [&#039;01-02-2005&#039;, 1], [&#039;13-02-2005&#039;, 1], [&#039;12-12-2005&#039;, 5], [&#039;27-12-2005&#039;, 1], [&#039;07-01-2006&#039;, 1], [&#039;12-01-2006&#039;, 1], [&#039;29-01-2006&#039;, 1], [&#039;31-01-2006&#039;, 1], [&#039;04-02-2006&#039;, 1], [&#039;25-12-2006&#039;, 2], [&#039;02-02-2007&#039;, 1], [&#039;28-12-2007&#039;, 2], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;16-11-2008&#039;, 4], [&#039;21-11-2008&#039;, 1], [&#039;08-01-2009&#039;, 2], [&#039;11-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 2], [&#039;24-12-2009&#039;, 1], [&#039;05-01-2010&#039;, 1], [&#039;10-01-2010&#039;, 1], [&#039;06-11-2010&#039;, 1], [&#039;23-12-2010&#039;, 2], [&#039;01-02-2011&#039;, 1], [&#039;26-11-2011&#039;, 3], [&#039;22-12-2011&#039;, 2], [&#039;21-10-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;25-11-2013&#039;, 1], [&#039;26-01-2014&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;17-10-2016&#039;, 1], [&#039;01-01-2017&#039;, 4], [&#039;23-12-2017&#039;, 3], [&#039;23-01-2018&#039;, 1], [&#039;23-12-2018&#039;, 1], [&#039;25-12-2018&#039;, 1], [&#039;30-12-2018&#039;, 3]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.697674418604651j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 4.640000000000001kWc,&lt;br /&gt;
    et une hypothèse de 4j sans elec possible&lt;br /&gt;
    et 22 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;12-12-2005&#039;, 1], [&#039;14-12-2005&#039;, 3], [&#039;27-12-2005&#039;, 1], [&#039;26-12-2006&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;17-11-2008&#039;, 3], [&#039;09-01-2009&#039;, 1], [&#039;11-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 2], [&#039;23-12-2010&#039;, 2], [&#039;27-11-2011&#039;, 2], [&#039;23-12-2011&#039;, 1], [&#039;06-01-2013&#039;, 4], [&#039;25-11-2013&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;02-01-2017&#039;, 3], [&#039;24-12-2017&#039;, 2], [&#039;23-12-2018&#039;, 1], [&#039;01-01-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.6818181818181819j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 5.300000000000001kWc,&lt;br /&gt;
    et une hypothèse de 4j sans elec possible&lt;br /&gt;
    et 16 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;14-12-2005&#039;, 3], [&#039;27-12-2005&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;17-11-2008&#039;, 3], [&#039;09-01-2009&#039;, 1], [&#039;12-01-2009&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 1], [&#039;24-12-2010&#039;, 1], [&#039;28-11-2011&#039;, 1], [&#039;06-01-2013&#039;, 4], [&#039;25-11-2013&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;03-01-2017&#039;, 2], [&#039;01-01-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.5625j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 5.96kWc,&lt;br /&gt;
    et une hypothèse de 2j sans elec possible&lt;br /&gt;
    et 10 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;15-12-2005&#039;, 2], [&#039;17-05-2008&#039;, 2], [&#039;18-11-2008&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 1], [&#039;24-12-2010&#039;, 1], [&#039;06-01-2013&#039;, 2], [&#039;09-01-2013&#039;, 1], [&#039;03-12-2014&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.4j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 6.62kWc,&lt;br /&gt;
    et une hypothèse de 2j sans elec possible&lt;br /&gt;
    et 5 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;16-12-2005&#039;, 1], [&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;06-01-2013&#039;, 2]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.2j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 7.28kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 7.94kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 8.600000000000001kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 9.260000000000002kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 9.92kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 10.58kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
affichage des résultats optimisés&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de 10.0kWh &lt;br /&gt;
        et une puissance crete de 5.96kWc,&lt;br /&gt;
        et une hypothèse de 0j sans elec possible&lt;br /&gt;
        et 0 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        []&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
        on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de 5.0kWh &lt;br /&gt;
        et une puissance crete de 7.28kWc,&lt;br /&gt;
        et une hypothèse de 1j sans elec possible&lt;br /&gt;
        et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
        on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Dimensionner_une_installation_photovolta%C3%AFque_autonome&amp;diff=152029</id>
		<title>Dimensionner une installation photovoltaïque autonome</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Dimensionner_une_installation_photovolta%C3%AFque_autonome&amp;diff=152029"/>
		<updated>2025-11-28T19:45:22Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Dimensionner_une_installation_photovolta_que_autonome_P1090053.JPG&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:0,&amp;quot;top&amp;quot;:3,&amp;quot;width&amp;quot;:4592,&amp;quot;height&amp;quot;:3448,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.13,&amp;quot;scaleY&amp;quot;:0.13,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/8/8c/Dimensionner_une_installation_photovolta_que_autonome_P1090053.JPG&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.5601173020528,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&lt;br /&gt;
Outils pour dimensionner une installation photovoltaïque hors réseau&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=0&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=photovoltaïque, off-grid, hors-réseau, dimensionnement&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
La plupart des installations photovoltaïques sont aujourd&#039;hui&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
branchées sur le réseau électrique erdf/enedis, que ce soit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sur des formules commerciales dites en &amp;quot;injection du surplus&amp;quot;, ou&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
en &amp;quot;injection totale&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avec les vieux compteurs, il est encore possible de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;faire tourner à l&#039;envers&amp;quot; le compteur electrique lorsque&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
les panneaux produisent (un peu comme si linky soustrayait&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
de votre consommation ce que vos panneaux produisent quelle que&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
soit l&#039;heure à laquelle la production a lieu)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le recours au réseau électrique est très pratique car cela évite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le besoin de stocker l&#039;électricité produite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cependant, que ce soit pour des raisons d&#039;évolution sociétale (laissons nous&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le droit de rêver à autre modèle urbanistique où les sites autonomes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
écologiques sans besoins d&#039;infrastructures sont encouragés), pour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
des raisons de contraintes naturelles, ou par choix, on peut souhaiter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
être indépendant des réseaux, 100% autonome en énergie électrique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
J&#039;ai initialement fait un petit bout de code pour dimensionner correctement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
en réseau autonome un mobilhome que je souhaitais rendre autonome,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
puis pour brancher un frigo et un congélateur (qui nécessitent un&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
approvisionnement relativement constant, c&#039;est à dire sans coupure)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;ines propose déjà des outils ici:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://ines.solaire.free.fr/pvisole_1.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
et ici:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://autocalsol.ines-solaire.org/etude/localisation/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cependant, les hypothèses sont à 1kWh produit par kWc en hiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pour le premier lien et on n&#039;a que des moyennes pour le second lien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En outre, on n&#039;a pas de possibilité de &amp;quot;data-tester&amp;quot; le nombre de jours de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
blackout selon le dimensionnement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce tuto permet donc de dimensionner en &amp;quot;data-testant&amp;quot;, c&#039;est à dire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec des hypothèses de production en hiver au jour le jour,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
moins &amp;quot;moyénée&amp;quot;, et permet aussi de tester des dimensionnement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plus économes en capacité de batterie (qui coutent encore cher en 2024).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compte tenu du nombre de brevets déposés dans le domaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
du stockage électrique des 15 dernieres années, et compte tenu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
des évolutions géopolitiques au sein des brics, il est probable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
qu&#039;on aboutisse à des coûts de stockage nettement diminués&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dans les prochaines années et l&#039;algorithme pour optimiser&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le dimensionnement au stockage au plus juste sera peut&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
être moins pertinent économiquement parlant dans les années&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
à venir.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mais un stockage à très bas coût remettrait très fortement en question&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le système pétro dollar, donc on a sans doute le temps de voir venir ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, les batteries usagées produisant pas mal de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
déchet, cela reste intéressant d&#039;avoir ce bout de logique pour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dimensionner au plus juste et etre dans une optique low-tech&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
en évitant le surdimensionnement lorsqu&#039;on peut se permettre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
de rares épisodes sans électricité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Démo web interactive ici:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://vpn.matangi.dev/sun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&lt;br /&gt;
|Tools=&lt;br /&gt;
|Tuto_Attachments={{Tuto Attachments&lt;br /&gt;
|Attachment=Dimensionner_une_installation_photovolta_que_autonome_jrc_a_u_t_o_n_o_m_i_e.ods&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
évaluer les besoins&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Il s&#039;agit dans un premier temps d&#039;estimer votre consommation électrique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour cela, il convient de prendre en compte les bonnes échelles temporelles:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
consommation moyenne d&#039;une part, mais aussi les variations journalières (la consommation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
selon l&#039;heure de la journée) et saisonnières (la consommation en hiver et en été).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cet exercice est intéressant à la fois pour dimensionner adéquatement la production,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mais aussi pour penser comment réduire sa consommation. Par exemple, il est aberrant de chauffer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avec des radiateurs éléctriques si votre source d&#039;énergie est uniquement photovoltaïque.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un autre exemple est le chauffe-eau électrique qui consomme des quantités conséquentes d&#039;énergie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
qui sont relativement linéaires du nombres de douches chaudes que vous prenez et&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
qui peuvent interroger la source d&#039;énergie pertinente pour chauffer votre eau ou le nombre de douches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pertinents pour une production non fossile (on pourra utilement s&#039;interroger sur l&#039;opportunité de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
basculer sur une source d&#039;énergie solaire thermique et/ou chauffer au bois ou au biogaz)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: pour une douche de 10min à 40°C, il faut environ 3kWh, soit environ le biomethane générable par les fientes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
journalieres d&#039;une centaine de poules (en ordre de grandeur)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour mesurer votre consommation, vous pouvez utiliser votre compteur electrique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ainsi mesurer votre consommation journalière mais aussi la consommation horaire de chaque&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
appareil électrique (le plus simple étant d&#039;enlever le fusible au compteur de tous les appareils&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
électriques qu&#039;on veut sortir de la mesure).&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
dimensionner le stockage&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
En site autonome, le chemin des électrons produits par les panneaux photovoltaïque est celui qui va&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
à la moindre résistance. Ainsi, si les électrons doivent &amp;quot;choisir&amp;quot; entre une appareil électrique en fonctionnement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
et les batteries, ils iront alimenter l&#039;appareil branché.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
Cette considération peut être importante si vous avez une consommation électrique importante en journée (lorsque les panneaux produisent),&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
mais dans la plupart des cas, les variations de production journalière et la différence horaire entre la production et&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
la consommation font qu&#039;on dimensionne les batteries sur le besoin journalier maximum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
Exemple: besoin journalier de 4kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
On prend le pourcentage maximum de décharge accepté par les batteries selon la technologie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
utilisée. Par exemple 80% pour des batteries lithium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
Exemple: (besoin journalier)/(pourcentage decharge max)=(4)/(0,8)=5kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
NB: les capacités des batteries sont souvent exprimées en Ah. Pour obtenir les Ah à partir de la capacité&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
en kWh, simplement diviser les Wh par la tension aux bornes de vos batteries. Par exemple en 24V:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
500Wh/24V=208Ah&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
Pour dimensionner le stockage correctement en fonction du besoin journalier maximum, on va ensuite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
chercher à savoir combien de jours sans soleil le stockage doit pouvoir tenir vos besoins journaliers maximum&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
Pour trouver le nombre de jours maximum sans soleil, vous pouvez soit mesurer vous même l&#039;ensoleillement (se reporter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
à mon autre tuto ici : [[Mesure de l&#039;ensoleillement-luminosité avec un ordinateur monocarte (raspberry-orangepi)]],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
soit utiliser les données téléchargeable de la modélisation jrc européenne pvgis qui font référence (attention, il s&#039;agit d&#039;une modélisation,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Modif 27/02: apres verification, il s&#039;agit de données satellites horaires mondiales donc des données empiriques en entrée nottamment pour les nuages mais les hypothèses du modele sur la quantité d&#039;irradiation qui passe à traver les nuages sont peu explicitées, voir https://joint-research-centre.ec.europa.eu/photovoltaic-geographical-information-system-pvgis/getting-started-pvgis/pvgis-data-sources-calculation-methods_en?prefLang=fr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
Pour télécharger les données jrc, taper cette commande dans votre terminal linux:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget --max-redirect=10 -O output.csv &amp;quot;&amp;lt;nowiki&amp;gt;https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.203142&amp;amp;lon=0.616363&amp;amp;loss=14&amp;amp;angle=45&amp;amp;aspect=0&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
Les parametres lat= et lon= vous permettent d&#039;ajuster la latitude et la longitude à votre lieu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
startyear= et endyear= sont les bornes de début et de fin de la periode considéré (ici 15 ans entre 2005 et 2020)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
peakpower= correspond à la puissance photovoltaique en kWc (ici 1kWc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
On utilise ensuite un bout de code python/pandas pour obtenir le nombre de jours consécutifs maximum pour qu&#039;1 kWc produise 1000Wh, 2000Wh et 3000Wh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
Dans notre cas, on obtient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.1124367317425885 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.2801404603979711 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 1.4647827920708563 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Que nous disent ces chiffres?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
Que le nombre maximal de jours avec un faible ensoleillement varie de 4 à 7j selon le niveau d&#039;ensoleillement espéré.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Mais aussi que le nombre d&#039;occurences est relativement faible: 1 à 3 occurences seulement de ces épisodes avec tres tres peu de luminosité et de production sur 15 ans.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
(si vous n&#039;etes pas entierement satisfait des données modélisées au regard de votre expérience de la production photovoltaïque en fonction de la météo, et mon hypothèse est&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
que les panneaux produisent plus que ce que les données de la modélisation jrc nous donne, je vous encourage à&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
utiliser des données empiriques en utilisant mon autre tuto ici: [[Mesure de l&#039;ensoleillement-luminosité avec un ordinateur monocarte (raspberry-orangepi)]] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
Et enfin que le nombre de jours moyens pour qu&#039;un kWc de module produise 1kWh à 3kWh est compris entre 1 et 1,5 j.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
On a alors le choix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
-soit surdimensionner le stockage pour tenir 4j de besoins pour faire face à ces épisodes rares sans soleil : 20kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
-soit dimensionner le stockage pour tenir 1 à 2j et avoir une source électrique d&#039;appoint à base de groupe electrogene fossile : 5 à 10kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
pour éviter un surdimensionnement coûteux pour de très rares occasions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
-soit, si la criticité des besoins n&#039;est pas trop importante, dimensionner le stockage pour tenir 1 à 2j et&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
se débrouiller sans électricité lorsqu&#039;il y a des épisodes long sans soleil : 5 à 10kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
-(ou jouer sur l&#039;augmentation du dimensionnement de la production -le kWh produit étant tres nettement moins cher que le kWh stocké en 2024 - dans l&#039;étape suivante pour tout recharger dès le premier jour de soleil suivant les episodes peu ensoleillés)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
Nous somme en mai 2024, et on sort juste du consensus informel industriel à 1€/Wh pour les batteries &amp;quot;performantes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
Si vous voulez dimensionner votre stockage &amp;quot;à l&#039;échelle&amp;quot; après avoir réduit vos besoins électriques, le mieux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
est encore de faire de la récupération de batterie de voitures.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
Voir photos issus de l&#039;atelier lowtech de l&#039;astrolab pour de la récupération de batterie de voiture lithium ion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
En mai 2024, on s&#039;en tire à 3k€ pour 14kWh.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
Il est encore difficile de se passer de BMS à cause des normes sécuritaires,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
mais on peut en trouver sur aliexpress (voir photo pour les references).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_163416.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_202913.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_202927.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_une_installation_photovolta_que_autonome_IMG-20240513-WA0011.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_170834.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240511_102229.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
dimensionner la production&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
On suppose qu&#039;on dimensionne les batteries à 10kWh pour 4kWh de besoin -soit 2j d&#039;autonomie-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
On peut dimensionner la production de plusieurs façon:&lt;br /&gt;
1. De façon à ce que les batteries soient entièrement rechargées sur un intervalle moyen en décembre/janvier (les mois les moins ensoleillés de l&#039;année)&lt;br /&gt;
2. De façon à ce que les batteries soient entièrement rechargées en un jour d&#039;ensoleillement &amp;quot;moyéné&amp;quot; en décembre/janvier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
On notera que le dimensionnement calé sur les mois d&#039;hiver permet de produire suffisamment pour subvenir aux besoin toute l&#039;année, mais &lt;br /&gt;
entraine une surproduction d&#039;énergie en été qu&#039;il serait utile de récupérer (par exemple en hydrolisant de l&#039;eau pour produire de l&#039;hydrogene puis en transformant&lt;br /&gt;
l&#039;hydrogene en méthane, cf scenario negawatt 2011) notamment si ce type d&#039;installation venait à se généraliser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
On va réutiliser le bout de code précédent et l&#039;adapter pour trouver les memes statistiques que précédemment mais uniquemnet en comptant les mois &lt;br /&gt;
de décembre et janvier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
dec_jan_data = daily_data[(daily_data.index.month == 12) &amp;lt;span&amp;gt;&amp;amp;#124;&amp;lt;/span&amp;gt; (daily_data.index.month == 1)]&lt;br /&gt;
print(&amp;quot;Production moyenne journalière en janvier et décembre&amp;quot;)&lt;br /&gt;
print(str(dec_jan_data[&#039;P&#039;].mean()/1000)+&amp;quot; kWh&amp;quot;)&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
Dans notre cas, on obtient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
Production moyenne journalière en janvier et décembre&lt;br /&gt;
1.9924362701612903 kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.3539192399049882 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.8022598870056497 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 2.263157894736842 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
1. En dimensionnant sur l&#039;intervalle moyen d&#039;1kWh: 1kWc produit en moyenne 1kWh en 1,35j, soit 0,74kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/0,74=13,5kWc&lt;br /&gt;
En dimensionnant sur l&#039;intervalle moyen de 2kWh: 1kWc produit en moyenne 2kWh en 1,8j, soit 1,11kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/1,11=9kWc&lt;br /&gt;
En dimensionnant sur l&#039;intervalle moyen de 3kWh: 1kWc produit en moyenne 3kWh en 2,26j, soit 1,33kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/1,33=7,5kWc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
2. En dimensionnant sur un jour moyéné, 1kWc produit en moyenne 1,99kWh par jour, soit un besoin de 10kWh/1,99=5kWc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
On remarque que les données de références de l&#039;ines pour la production d&#039;1kWc en décembre correspondent à 1kWc===1kWh environ.&lt;br /&gt;
(https://autocalsol.ines-solaire.org/etude/localisation/ et http://ines.solaire.free.fr/pvisole_1.php pour site isolés)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
On peut ici parler d&#039;hypothèses plus ou moins &amp;quot;conservatrices&amp;quot;, c&#039;est à dire d&#039;hypothèses plus ou moins &amp;quot;prudentes&amp;quot;, afin d&#039;avoir des batteries toujours rechargées en hiver.&lt;br /&gt;
On remarquera que quelles que soit l&#039;hypothèse retenue pour satisfaire les besoins de façon continue, y compris en hiver, on se retrouvera avec des surproductions importantes en été. &lt;br /&gt;
Il est alors judicieux d&#039;utiliser des systèmes de récupération de la surproduction en l&#039;absence de réseau dans lequel on peut injecter le surplus (par exemple en hydrolisant de l&#039;eau pour produire de l&#039;hydrogene puis en transformant&lt;br /&gt;
l&#039;hydrogene en méthane, cf scenario negawatt 2011).&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
dimensionner le régulateur de charge&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
rappel de base: branchement en série (+ sur - et + sur -) on ajoute le voltage et on garde le meme amperage, branchement en paralelle (+ sur +, - sur -) on ajoute l&#039;amperage et on garde le meme voltage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
idem pour les batteries: à mettre en paralelle pour garder la meme tension (voltage)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
La première problématique du photovoltaïque lowtech autonome est le dimensionnement de l&#039;installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
Vous pouvez utiliser la feuille libreoffice en piece jointe en haut de ce tutoriel pour du dimensionnement &amp;quot;bricolé&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
Les étapes précédentes ont permis de calculer à partir du modèle jrc la taille de la batterie et la production moyenne en hiver d&#039;un kWc .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:296--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
Vous pouvez lire les caractéristiques des panneaux qu&#039;on vous a donné ou trouvés sur leboncoin à pas cher:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
-puissance crete: elles s&#039;aditionnent pour obtenir la puissance nécessaire trouvée lors de la phase de dimensionnement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
-tension : 12V,24V ou 48V. voir regles série/paralelle pour leur additions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
-intensité: variable selon les modèles mais souvent inferieure à 10A. voir regles série/paralelle pour leur additions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
Pour recharger des batteries, en principe, si vous connectez votre panneaux en direct sur une batterie, il suffit que la tension à la sortie de vos panneaux soit la même que celles de vos batter  ie, et ca devrait charger.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
Il y a un composant important à retenir pour charger correctement vos batteries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
le regulateur ou controleur de charge (nb: generalement, les onduleurs dits &amp;quot;hybrides&amp;quot;, cad avec une sortie batterie et une sortie reseau, integrent un regulateur de charge, le plus souvent mppt, qui conditionne les specifications des batteries qu&#039;on peut lui brancher)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
il en existe de trois sortes: les tor (tout ou rien) les mppt (Maximum power point tracking) et les pwm (Pulse Width Modulation)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
Ils sont composés d&#039;un adaptateur DC/DC (courant continu vers courant continu) et d&#039;un coupe circuit. Le mppt comprend également un adaptateur d&#039;impédence (il a une résistance pour adapter l&#039;amperage injecté dans la batterie). Les mppt accepte des puissances nominales plus élevées, cad des tensions et intensité plus élevées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
Le régulateur ou controleur de charge permet principalement de couper le circuit quand la batterie est rechargée en surveillant la tension et l&#039;intensité de charge. Il coupe le circuit si leurs valeurs dépassent les intervalles de référence (pour cela le regulateur arrete la charge temporairement et mesure la tension aux bornes des batteries).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
Le mppt a un &amp;quot;algorithme&amp;quot; électronique intégré qui va chercher le point de puissance optimal grace a son adaptateur de resistance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
Si vous connectez plusieurs panneaux et plusieurs batteries, il est recommandé d&#039;avoir un regulateur pour couper la charge correctement lorsque la batterie est chargée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
Les tensions de charge de référence sont 12V,24V et 48V.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
Cependant, les prix des modèles augmentent avec la puissance nominales (qui va dépendre de l&#039;amperage) qu&#039;ils acceptent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
Pour limiter l&#039;intensité du courant de la production photovoltaïque, il est plus judicieux d&#039;utiliser des panneaux de plus forte puissance qui sont généralement à des tensions plus élevées&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
(rappel P=U*I,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
rappel E=P*t se conserve dans un systeme fermé).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
note: si le systeme de stockage par batterie ou l&#039;appareil connecté à vos panneaux n&#039;absorbe pas toute la puissance produite, et si le régulateur de charge ne coupe pas le circuit, le reste sera dégagé en chaleur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
L&#039;amperage va aussi dependre de la capacité de stockage de vos batteries, dimensionnées pour couvrir vos besoins pendant une periode définie au dimensionnement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
Le courant de charge est calculé en divisant par 4 ou 5 la capacité nominale de la batterie exprimée en Ah qui devrait alors se recharger en 4 ou 5h. Cependant une batterie se rechargera aussi avec un courant de charge de la capacité nominale de la batterie divisée par 20 mais plus lentement (en 20h).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
Pour dimensionner correctement le regulateur de charge on peut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
-soit monter tous les panneaux en série (ce qui fait fortement augmenter la tension et il faudra peut etre un transfo ensuite pour trouver un regulateur qui accepte cette tension)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
-soit monter tous les panneaux en paralelle (ce qui fait fortement augmenter l&#039;intensité)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
-soit monter les panneaux en serie/parelle pour ajuster tension et intensité aux caractéristiques de votre régulateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
Il y a enfin un dernier point sur lequel être attentif: le déclenchement de la recharge de la batterie par le regulateur/controleur de charge (qui déclenche quand la tension de la batterie diminue en dessous d&#039;un certain seuil).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
En effet, si la puissance soutirée à la batterie est trop faible, il est possible que le temps nécessaire à la décharger avec votre consommation journalière pour déclencher la recharge dans le régulateur dépasse le temps d&#039;ensoleillement journalier. La batterie ne se recharge alors pas du tout pendant la journée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
Dans ce cas, votre batterie ne se rechargera qu&#039;un jour sur deux ou sur trois (selon le seuil de déclenchement de la recharge du regulateur).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
C&#039;est un paramètre à prendre en compte dans le dimensionnement (non inclus dans la feuille de calcul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
Le régulateur a 3 phases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
bulk: le regulateur laisse passer le courant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
floating: le regulateur alterne interupteur fermée et ouvert à une fréquence donnée pour maintenir la batterie chargée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:195--&amp;gt;&lt;br /&gt;
En outre il faut prendre des précautions car la charge des batteries présente certains risques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:196--&amp;gt;&lt;br /&gt;
absorption (pour les mppt): la tension de charge augmente un peu pour créer une difference de potentiel suffisante pour continuer à charger la batterie presque pleine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
En théorie le courant de charge diminue lorsque la batterie est presque rechargée (courant de queue etc.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
La charge de batteries en paralelle ou en série sur des batteries usagées qui n&#039;ont pas les mêmes tensions ou intensité présente en théorie des risques. En effet vous lirez un peu partout que la résistance des fils pour relier ces batteries&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:199--&amp;gt;&lt;br /&gt;
créee des différences de potentiels entre les batteries qui produisent des décharges d&#039;une batterie envers une autre etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
créant des risques d&#039;explosion, de degazage pour les batteries plomb etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:201--&amp;gt;&lt;br /&gt;
Il faut bien se rapeller que les batteries sont des assemblages de composants unitaires de faible tension mis en séries et en paralelle pour obtenir un générateur de l&#039;intensité et la tension voulue et qu&#039;à priori faire de même avec des batterie entiere ne présente pas vraiment de risques..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:202--&amp;gt;&lt;br /&gt;
On parle souvent de &amp;quot;battery management system&amp;quot; (bms) &amp;quot;intégré&amp;quot; pour les batteries lithium ion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:203--&amp;gt;&lt;br /&gt;
En réalité le régulateur de charge est déjà un &amp;quot;bms&amp;quot;. En théorie, le bms intégré s&#039;assure que les tensions et les intensités de chaque unité composant la batterie est la même et la rééquilibre au besoin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:204--&amp;gt;&lt;br /&gt;
On peut bien sûr s&#039;interroger si tout ceci n&#039;est pas une façon de rendre le stockage de l&#039;énergie plus cher avec des composants BMS artificiellement chers et si ce n&#039;est pas une façon d&#039;éviter de réutiliser des unités de batteries usagées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
Il est par exemple étonnant qu&#039;il n&#039;existe pas de BMS pour rééquilibrer automatiquement des batteries plomb acide, ce qui rendrait utilisable toutes les batteries mises au rebut de l&#039;industrie automobile pour stocker l&#039;énergie photovoltaïque sans risque!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:206--&amp;gt;&lt;br /&gt;
Dans tous les cas, si vous réutilisez des batteries au plomb, utilisez un régulateur pour éviter de continuer à charger vos batteries rechargées (risques de production d&#039;hydrogene) -ou si vous n&#039;en utilisez pas dimensionnez avec beaucoup de soin-, évitez les décharges profondes, et maintenez les batteries à une temperature constante autant que possible.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
Optimiser le dimensionnement&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:208--&amp;gt;&lt;br /&gt;
On va maintenant utiliser un bout de code python pour itérer (un peu sur le principe &lt;br /&gt;
d&#039;essais et erreurs) en augmentant progressivement la puissance des modules, la &lt;br /&gt;
capacité de la batterie, et le nombre de jours de blackout admissibles et en &lt;br /&gt;
testant au jour le jour le résultat stockage - consommation electrique + production&lt;br /&gt;
sur les données jrc précédemment téléchargées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
Explications : &lt;br /&gt;
Le code est commenté pour expliquer ce qui est fait et les noms des variables&lt;br /&gt;
sont relativement explicites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
Pour la boucle d&#039;itération: &lt;br /&gt;
On démarre à puissance0=(consommation journaliere)/2 (hypothese hiver 1 kWc produit 2kWh en moyenne) &lt;br /&gt;
On démarre à batterie0=consommation journaliere/0,8 au lithium et consommation journaliere/0,5 au plomb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
On itere 14 fois les puissances par pas de 1/3*puissance0 kWc&lt;br /&gt;
On itere 40 fois les capacités de batterie par pas de 1/2*batterie0 kWh&lt;br /&gt;
On itere 20 fois les jours admissibles de blackout par pas de 1j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:212--&amp;gt;&lt;br /&gt;
On demarre à batterie pleine et on teste chaque jour si le stock d&#039;électricité dans la batterie moins &lt;br /&gt;
la consommation plus la production photovoltaique aboutit à un blackout ou permet de subvenir à la &lt;br /&gt;
consommation journaliere. S&#039;il y a black out, on arrete la boucle au bout du nombre de jours consécutifs &lt;br /&gt;
admissibles de black out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Pré-requis logiciels:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
Pour utiliser python sous un autre os que linux, débrouillez vous avec vos daubes propriétaires intrusives.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
Sous linux, python est généralement installé et pour utiliser le code partagé dans &lt;br /&gt;
ce tuto, il suffira de copier coller le code dans un fichier processing.py puis entrer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
python processing.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
Cependant, il faut installer la librairie pandas qui est très largement utilisé &lt;br /&gt;
dans le monde de la finance et dans le monde scientifique, notamment pour sa &lt;br /&gt;
gestion efficace des séries temporelles et sa capacité de vectorisation des données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
Pour cela voici les commandes à entrer dans linux debian avant de lancer le &lt;br /&gt;
script processing.py pour être tranquille:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
sudo apt install python3 python3-venv python3-pip python-is-python3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:223--&amp;gt;&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; python -m venv venv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:225--&amp;gt;&lt;br /&gt;
pip install pandas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
Penser ensuite à activer l&#039;environnement virtuel dans lequel est installé &lt;br /&gt;
pandas chaque fois que vous utilisez le script (apres un reboot ou si vous &lt;br /&gt;
fermez et reouvrez votre terminal) en lançant la commande:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:229--&amp;gt;&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:230--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:231--&amp;gt;&lt;br /&gt;
Nous sommes en 2024 et si vous êtes cibles d&#039;entraves anti éco-terroristes &lt;br /&gt;
de psychopathes comme moi, et en bon scientifique qui se respecte vous &lt;br /&gt;
inspectez vos instruments de mesures avant de les utiliser, vous pouvez &lt;br /&gt;
inspectez le code source de pandas qui est évidemment logiciel libre ici : &lt;br /&gt;
https://github.com/pandas-dev/pandas , ou vous pouvez faire l&#039;hypothèse &lt;br /&gt;
discutable qu&#039;on peut avoir confiance dans un logiciel aussi massivement &lt;br /&gt;
utilisé dans le monde de la finance et de la science.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
Python reposant sur des librairies C pour un certains nombres d&#039;opérations &lt;br /&gt;
de base, le hack, y compris le hack scientifique, n&#039;est jamais impossible &lt;br /&gt;
mais on laissera de coté ces considérations pro-lowtech qui n&#039;entrent pas &lt;br /&gt;
dans le champ de réflexion de ce tutoriel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;bout de code: (update 8.4.24: ajout commentaires, input angle&amp;amp;orientation&amp;amp;% decharge batterie)&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import sys&lt;br /&gt;
import os&lt;br /&gt;
import math&lt;br /&gt;
import time&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la latitude et la longitude&lt;br /&gt;
x_input = input(&amp;quot;Entrez la latitude de votre lieux: &amp;quot;)&lt;br /&gt;
y_input = input(&amp;quot;Entrez la longitude de votre lieux: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
x_input = float(x_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
y_input = float(y_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:236--&amp;gt;&lt;br /&gt;
#Entrer l&#039;orientation de votre lieu&lt;br /&gt;
aspect_input=input(&amp;quot;Entrer l&#039;orientation de votre lieux (est,ouest,nord,sud)&amp;quot;)&lt;br /&gt;
dictaspect={&#039;est&#039;:-90,&#039;ouest&#039;:90,&#039;nord&#039;:180,&#039;sud&#039;:0}&lt;br /&gt;
if aspect_input in dictaspect:&lt;br /&gt;
    aspect=dictaspect[aspect_input]&lt;br /&gt;
else:&lt;br /&gt;
    aspect=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
#Entrer l&#039;angle des modules&lt;br /&gt;
angle_input=input(&amp;quot;Entre l&#039;angle des modules en °&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    angle=float(angle_input)&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&#039;{err} error, angle utilisé: 45°&#039;)&lt;br /&gt;
    angle=45&lt;br /&gt;
    &lt;br /&gt;
# Telecharger les données&lt;br /&gt;
try:&lt;br /&gt;
    os.system(f&#039;wget --max-redirect=10 -O output.csv &amp;quot;https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat={x_input}&amp;amp;lon={y_input}&amp;amp;loss=14&amp;amp;angle={angle}&amp;amp;aspect={aspect}&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&amp;quot;&#039;)&lt;br /&gt;
except:&lt;br /&gt;
    print(&amp;quot;les données n&#039;ont pas pu être téléchargée, exiting&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:240--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:241--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
daily_data[&#039;P&#039;]=daily_data[&#039;P&#039;]/1000&lt;br /&gt;
#Production d&#039;un kWh à partir des data jrc:&lt;br /&gt;
resultday=daily_data[&#039;P&#039;].resample(&#039;D&#039;).sum()&lt;br /&gt;
resultday.index=pd.to_datetime(resultday.index,format=&amp;quot;%Y%m%d&amp;quot;)&lt;br /&gt;
print(&amp;quot;\nProduction moyenne par jour (kWh):\n&amp;quot;, resultday.mean())&lt;br /&gt;
print(&amp;quot;Production minimum par jour (kWh):\n&amp;quot;, resultday.min())&lt;br /&gt;
print(&amp;quot;Production maximum par jour  (kWh):\n&amp;quot;, resultday.max())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:243--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par semaine&lt;br /&gt;
resultweek=daily_data[&#039;P&#039;].resample(&#039;W&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par mois&lt;br /&gt;
resultmonth=daily_data[&#039;P&#039;].resample(&#039;M&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:245--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par trimestre&lt;br /&gt;
resulttrim=resultday.resample(&#039;Q&#039;).sum()&lt;br /&gt;
resulttrim=resulttrim.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
print(&amp;quot;\nProduction par trimestre (kWh):\n&amp;quot;,resulttrim.to_string())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:246--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par an&lt;br /&gt;
resultyear=daily_data[&#039;P&#039;].resample(&#039;Y&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nProduction annuelle moyennes d&#039;1kWc (kWh):\n&amp;quot;,resultyear.mean())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
# Calculer le nombre de jours consécutifs maximum sans production&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
for value in resultday:&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        current_streak = 0  # Reset the streak if the value is not zero&lt;br /&gt;
print(f&amp;quot;\nNombre de jours consecutifs maximum à production 0: {max_streak}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:248--&amp;gt;&lt;br /&gt;
# Moyenne par trimestre pour chaque trimestre&lt;br /&gt;
moyenne_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).mean()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:249--&amp;gt;&lt;br /&gt;
# Minimum par trimestre pour chaque trimestre&lt;br /&gt;
min_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).min()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:250--&amp;gt;&lt;br /&gt;
# Maximum par trimestre pour chaque trimestre&lt;br /&gt;
max_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).max()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:251--&amp;gt;&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre (kWh):\n&amp;quot;, moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMinimum par trimestre pour chaque trimestre (kWh):\n&amp;quot;, min_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par trimestre pour chaque trimestre (kWh):\n&amp;quot;, max_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:252--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer sa consommation d&#039;electricité journaliere&lt;br /&gt;
inputelecconsoday = input(&amp;quot;Entrez la consommation d&#039;électricité journaliere (kWh): &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:253--&amp;gt;&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
inputelecconsoday = float(inputelecconsoday.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:254--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur batterie plomb ou lithium&lt;br /&gt;
typebatterie = input(&amp;quot;Voulez vous utiliser des batteries au plomb? Taper oui ou o pour repondre oui (Lithium par défaut si rien n&#039;est indiqué)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:255--&amp;gt;&lt;br /&gt;
# Dimensionnement batterie initiale pour avoir 24h d&#039;autonomie:&lt;br /&gt;
if typebatterie==&amp;quot;oui&amp;quot; or typebatterie==&amp;quot;o&amp;quot; or typebatterie==&amp;quot;y&amp;quot; or typebatterie==&amp;quot;yes&amp;quot;:&lt;br /&gt;
    batterie0=int(math.ceil(inputelecconsoday/0.5))&lt;br /&gt;
    typebatterie=&amp;quot;plomb&amp;quot;&lt;br /&gt;
else:&lt;br /&gt;
    batterie0=int(math.ceil(inputelecconsoday/0.8))&lt;br /&gt;
    typebatterie=&amp;quot;lithium&amp;quot;&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Seuil batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur (batterie {typebatterie}))&lt;br /&gt;
hypothese:(conso elec journaliere / 0.8 au lithium et conso elec journaliere / 0.5 au plomb)&lt;br /&gt;
{batterie0} kWh&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:256--&amp;gt;&lt;br /&gt;
# Pourcentage de décharge maximum&lt;br /&gt;
d_input=input(&#039;Entrer le pourcentage de décharge maximum autorisé (20% si vous voulez que votre batterie ne se décharge pas à moins de 20%. Appuyer sur entree si vous voulez utiliser les valeurs par défaut de 50% pour le plomb et de 0% sinon (hypothese solid state battery)&#039;)&lt;br /&gt;
try:&lt;br /&gt;
    d=float(d_input)/100&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    if typebatterie==&#039;plomb&#039;:&lt;br /&gt;
        d=0.5&lt;br /&gt;
    else:&lt;br /&gt;
        d=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:257--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur combien de jours sans elec il ou elle peut supporter&lt;br /&gt;
inputjnoelec = input(&amp;quot;Combien de jours maximum consécutifs sans electricité (ou avec un groupe electrogene) pouvez vous supporter (0 par défaut si reponse vide)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:258--&amp;gt;&lt;br /&gt;
try:&lt;br /&gt;
    jnoelec=int(inputjnoelec)&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    jnoelec=0&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Nombre de jours maximum consécutifs sans electricité (ou avec un groupe electrogene)  pris en hypothèse &lt;br /&gt;
{jnoelec} j&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:259--&amp;gt;&lt;br /&gt;
# Dimensionnement puissance crete des modules (kWc) initiale pour produire suffisamment en hiver (hypothese 2kWh par kWc par jour):&lt;br /&gt;
puissance0=int(math.ceil(inputelecconsoday/2))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:260--&amp;gt;&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil puissance initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/2 (2kWh produit par kWc en hiver)&lt;br /&gt;
{puissance0} kWc&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:261--&amp;gt;&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil volume de batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/0.8 au lithium et 0.5 au plomb&lt;br /&gt;
{batterie0} kWh&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:262--&amp;gt;&lt;br /&gt;
batterie0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de batterie (kWh) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(batterie0_input)&lt;br /&gt;
    batterie0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de batterie0={batterie0}kWh&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
puissance0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de puissance (kWc) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(puissance0_input)&lt;br /&gt;
    puissance0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de puissance0={puissance0}kWc&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:264--&amp;gt;&lt;br /&gt;
# Itérations algorithmiques stockage&amp;amp;consommation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
#fonction check surface volume&lt;br /&gt;
def iter(data,consoelecday,v0,p0,joursnoelec):&lt;br /&gt;
    #elec est l&#039;energie dans la batterie : electricite initiale=v0 (volume de batterie à t0)&lt;br /&gt;
    elec=v0&lt;br /&gt;
    #current_streak est le nombre de jours de blackout consécutif&lt;br /&gt;
    current_streak = 0&lt;br /&gt;
    #listjnoelec est la liste dans laquelle on enregistre les jours de blackout&lt;br /&gt;
    listjnoelec=[]&lt;br /&gt;
    #boucle sur la date entrée en argulent de la fonction&lt;br /&gt;
    for i in range(len(data)):&lt;br /&gt;
        #recupday est l&#039;électricite recupérée (produite) au jour i (la puissance d&#039;1kWc*p0)&lt;br /&gt;
        #p0 est la puissance crete entree en argument&lt;br /&gt;
        recupday=data.iloc[i]*p0&lt;br /&gt;
        #consoday est la consommation electrique du jour i entree en argument de la fonction&lt;br /&gt;
        consoday=consoelecday&lt;br /&gt;
        #energie mise à jour avec consoday et recupday&lt;br /&gt;
        elec=elec+recupday-consoday&lt;br /&gt;
        #si l&#039;énergie mise à jour est superieure au volume de batterie&lt;br /&gt;
        if elec&amp;gt;v0:&lt;br /&gt;
            #print(&amp;quot;batterie pleine&amp;quot;)&lt;br /&gt;
            #le nombre de jours de balckout consécutif est remis à zero&lt;br /&gt;
            current_streak=0&lt;br /&gt;
            #l&#039;énergie est égale au volume de la batterie&lt;br /&gt;
            elec=v0 #hypothese gestion du trop plein ok&lt;br /&gt;
            continue&lt;br /&gt;
        #si l&#039;énergie mise à jour est inférieure au pourcentage max de decharge et le nombre de jours consécutifs de blackout est inférieure au nombre de jours toléré&lt;br /&gt;
        elif elec&amp;lt;d*v0 and current_streak&amp;lt;joursnoelec:&lt;br /&gt;
            #si le nombre de jours consécutifs de blackout est égal à zero&lt;br /&gt;
            if current_streak==0:&lt;br /&gt;
                #ajouter la date du jour et un compteur à la liste listjnoelec&lt;br /&gt;
                listjnoelec.append([data.index[i].strftime(&#039;%d-%m-%Y&#039;),1])&lt;br /&gt;
            #sinon&lt;br /&gt;
            else:&lt;br /&gt;
                #incrementer le compteur de la dernier entree de listjnoelec&lt;br /&gt;
                listjnoelec[-1][-1]+=1&lt;br /&gt;
            #remise à zero de la valeur négative de elec    &lt;br /&gt;
            elec=0&lt;br /&gt;
            #incrementation du nombre de jours consécutifs de blackout&lt;br /&gt;
            current_streak+=1&lt;br /&gt;
            continue&lt;br /&gt;
        #si l&#039;énergie est inférieure au pourcentage max de decharge et le nombre de jours consécutifs de blackout supérieur au nombre de jours tolérés&lt;br /&gt;
        elif elec&amp;lt;d*v0 and current_streak&amp;gt;=joursnoelec:&lt;br /&gt;
            #la fonction renvoie une valeur nulle&lt;br /&gt;
            return (0,0)&lt;br /&gt;
        #sinon&lt;br /&gt;
        else:&lt;br /&gt;
            #remise à zero du nombre de jours consécutifs de blackout&lt;br /&gt;
            current_streak=0&lt;br /&gt;
    #variable nombre d&#039;épisode de blackout = longueur de la la liste listjnoelec        &lt;br /&gt;
    nb_episode_no_elec=len(listjnoelec)&lt;br /&gt;
    #si listjnoelec n&#039;est pas vide&lt;br /&gt;
    if len(listjnoelec)!=0:&lt;br /&gt;
        #liste des durees des épisodes sans elec&lt;br /&gt;
        list_duree_episode_no_elec=[length[1] for length in listjnoelec]&lt;br /&gt;
        #moyenne de cette liste&lt;br /&gt;
        duree_moy_episode_no_elec=sum(list_duree_episode_no_elec)/len(list_duree_episode_no_elec)&lt;br /&gt;
    #sinon    &lt;br /&gt;
    else:&lt;br /&gt;
        #duree moyenne egale à zero&lt;br /&gt;
        duree_moy_episode_no_elec=0&lt;br /&gt;
    #print(&amp;quot;les puissances et batteries permettent de subvenir à la consommation d&#039;electricité sur le dataset&amp;quot;)&lt;br /&gt;
    #renvoyer les variables necessaires au traitement des résultats&lt;br /&gt;
    return (v0,p0,joursnoelec,nb_episode_no_elec,duree_moy_episode_no_elec,listjnoelec)&lt;br /&gt;
#hypothèse récupérateur plein à t0&lt;br /&gt;
elec=batterie0&lt;br /&gt;
resultpuissancevolume=(batterie0,puissance0,jnoelec,0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
#boucle iteration&lt;br /&gt;
listpuissance0=[puissance0*(1+i*0.33) for i in range(0,999)]&lt;br /&gt;
listbatterie0=[batterie0*(1+i*0.5) for i in range(0,999)]&lt;br /&gt;
listresult_0blackout=[]&lt;br /&gt;
listresult_blackout=[]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
# increment avec hypothèse jnoelec=0 (k in range 0,1)&lt;br /&gt;
for i in range(0,14): #boucle iteration surface modules&lt;br /&gt;
    for j in range (0,i+40):#boucle iteration volume batterie&lt;br /&gt;
        for k in range(0,1):&lt;br /&gt;
            resultpuissancevolume=iter(resultday,inputelecconsoday,listbatterie0[j],listpuissance0[i],k)&lt;br /&gt;
            #si les resultats ne sont pas nuls &lt;br /&gt;
            if resultpuissancevolume!=(0,0):&lt;br /&gt;
                #ajouter les resultats à une liste de resultats&lt;br /&gt;
                listresult_0blackout.append(resultpuissancevolume)&lt;br /&gt;
                #arreter la boucle k&lt;br /&gt;
                break&lt;br /&gt;
            else:#sinon continuer&lt;br /&gt;
                continue&lt;br /&gt;
        #arreter la boucle j si les resultats ne sont pas nul    &lt;br /&gt;
        if resultpuissancevolume!=(0,0):&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
#idem avec increment hypothèse jnoelec entre 0 et 13 (i in range 0,14)&lt;br /&gt;
for i in range(0,14):&lt;br /&gt;
    for j in range (0,i+40):&lt;br /&gt;
        for k in range(0,21):&lt;br /&gt;
            resultpuissancevolume=iter(resultday,inputelecconsoday,listbatterie0[j],listpuissance0[i],k)&lt;br /&gt;
            if resultpuissancevolume!=(0,0):&lt;br /&gt;
                listresult_blackout.append(resultpuissancevolume)&lt;br /&gt;
                break&lt;br /&gt;
            else:&lt;br /&gt;
                continue&lt;br /&gt;
        if resultpuissancevolume!=(0,0):&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
# Affichage des résultats des boucles d&#039;itérations&lt;br /&gt;
for k in listresult_0blackout:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de {k[0]}kWh &lt;br /&gt;
    et une puissance crete de {k[1]}kWc,&lt;br /&gt;
    et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
    et {k[3]} episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    {k[5]}&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
    on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:270--&amp;gt;&lt;br /&gt;
for k in listresult_blackout:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de {k[0]}kWh &lt;br /&gt;
    et une puissance crete de {k[1]}kWc,&lt;br /&gt;
    et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
    et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    {k[5]}&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
    on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
print(&#039;\n\n\n\n&#039;)&lt;br /&gt;
print(&#039;affichage des résultats optimisés&#039;)&lt;br /&gt;
# Optimisation résultats:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:272--&amp;gt;&lt;br /&gt;
# premier résultat en incrémentant la puissance crete dont la capacité de batterie est minimale&lt;br /&gt;
batterie_0blackout=[k[0] for k in listresult_0blackout]&lt;br /&gt;
minbatterie_0blackout=min(batterie_0blackout)&lt;br /&gt;
for k in listresult_0blackout:&lt;br /&gt;
    if k[0]==minbatterie_0blackout:&lt;br /&gt;
        print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de {k[0]}kWh &lt;br /&gt;
        et une puissance crete de {k[1]}kWc,&lt;br /&gt;
        et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
        et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        {k[5]}&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
        on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
# premier résultat en incrémentant la puissance crete fournissant un nb de jours de blackout inferieur ou égal&lt;br /&gt;
# à celui entrée par l&#039;utilisateur&lt;br /&gt;
for k in listresult_blackout:&lt;br /&gt;
    if k[2]&amp;lt;=jnoelec:&lt;br /&gt;
        print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de {k[0]}kWh &lt;br /&gt;
        et une puissance crete de {k[1]}kWc,&lt;br /&gt;
        et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
        et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        {k[5]}&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
        on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
Resultats optimisés&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
Pour notre exemple, on aboutit aux résultats suivant (avec 1j de blackout authorisé):&lt;br /&gt;
Les &amp;quot;résultats optimisés sont tout en bas&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entrez la latitude de votre lieux: 44.2&lt;br /&gt;
Entrez la longitude de votre lieux: 0.6&lt;br /&gt;
Entrer l&#039;orientation de votre lieux (est,ouest,nord,sud)sud&lt;br /&gt;
Entre l&#039;angle des modules en °45&lt;br /&gt;
--2024-04-08 20:04:29--  https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.2&amp;amp;lon=0.6&amp;amp;loss=14&amp;amp;angle=45.0&amp;amp;aspect=0&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&lt;br /&gt;
Résolution de re.jrc.ec.europa.eu (re.jrc.ec.europa.eu)… 64:ff9b::8bbf:dd12, 139.191.221.18&lt;br /&gt;
Connexion à re.jrc.ec.europa.eu (re.jrc.ec.europa.eu)|64:ff9b::8bbf:dd12|:443… connecté.&lt;br /&gt;
requête HTTP transmise, en attente de la réponse… 200 OK&lt;br /&gt;
Taille : 6291134 (6,0M) [text/html]&lt;br /&gt;
Enregistre : «output.csv»&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
output.csv          100%[===================&amp;gt;]   6,00M  1,03MB/s    ds 7,2s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
2024-04-08 20:04:43 (852 KB/s) - «output.csv» enregistré [6291134/6291134]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.1124367317425885 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.2801404603979711 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:281--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 1.4647827920708563 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:282--&amp;gt;&lt;br /&gt;
Production moyenne par jour (kWh):&lt;br /&gt;
 3.4641937012320336&lt;br /&gt;
Production minimum par jour (kWh):&lt;br /&gt;
 0.0&lt;br /&gt;
Production maximum par jour  (kWh):&lt;br /&gt;
 6.65871&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:283--&amp;gt;&lt;br /&gt;
Production par trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
2005-03-31    270.56038&lt;br /&gt;
2005-06-30    375.15833&lt;br /&gt;
2005-09-30    399.84068&lt;br /&gt;
2005-12-31    227.76775&lt;br /&gt;
2006-03-31    247.03158&lt;br /&gt;
2006-06-30    406.70165&lt;br /&gt;
2006-09-30    389.10805&lt;br /&gt;
2006-12-31    233.93622&lt;br /&gt;
2007-03-31    229.46528&lt;br /&gt;
2007-06-30    348.05120&lt;br /&gt;
2007-09-30    390.13982&lt;br /&gt;
2007-12-31    250.21269&lt;br /&gt;
2008-03-31    250.87365&lt;br /&gt;
2008-06-30    347.15819&lt;br /&gt;
2008-09-30    385.60970&lt;br /&gt;
2008-12-31    202.44585&lt;br /&gt;
2009-03-31    286.11329&lt;br /&gt;
2009-06-30    350.51328&lt;br /&gt;
2009-09-30    397.86835&lt;br /&gt;
2009-12-31    237.76417&lt;br /&gt;
2010-03-31    270.32507&lt;br /&gt;
2010-06-30    366.21454&lt;br /&gt;
2010-09-30    394.93503&lt;br /&gt;
2010-12-31    236.08537&lt;br /&gt;
2011-03-31    271.73968&lt;br /&gt;
2011-06-30    400.68298&lt;br /&gt;
2011-09-30    374.99079&lt;br /&gt;
2011-12-31    255.64396&lt;br /&gt;
2012-03-31    294.48135&lt;br /&gt;
2012-06-30    344.82346&lt;br /&gt;
2012-09-30    394.74104&lt;br /&gt;
2012-12-31    217.83773&lt;br /&gt;
2013-03-31    259.24581&lt;br /&gt;
2013-06-30    323.20427&lt;br /&gt;
2013-09-30    402.14528&lt;br /&gt;
2013-12-31    228.40704&lt;br /&gt;
2014-03-31    268.96648&lt;br /&gt;
2014-06-30    385.06742&lt;br /&gt;
2014-09-30    388.64375&lt;br /&gt;
2014-12-31    252.08195&lt;br /&gt;
2015-03-31    242.45034&lt;br /&gt;
2015-06-30    402.47347&lt;br /&gt;
2015-09-30    400.23336&lt;br /&gt;
2015-12-31    273.02084&lt;br /&gt;
2016-03-31    248.06779&lt;br /&gt;
2016-06-30    354.35530&lt;br /&gt;
2016-09-30    411.73628&lt;br /&gt;
2016-12-31    224.28598&lt;br /&gt;
2017-03-31    267.90392&lt;br /&gt;
2017-06-30    410.47864&lt;br /&gt;
2017-09-30    363.44330&lt;br /&gt;
2017-12-31    251.00240&lt;br /&gt;
2018-03-31    231.96132&lt;br /&gt;
2018-06-30    362.16785&lt;br /&gt;
2018-09-30    426.21631&lt;br /&gt;
2018-12-31    219.18595&lt;br /&gt;
2019-03-31    313.23495&lt;br /&gt;
2019-06-30    368.76834&lt;br /&gt;
2019-09-30    407.61175&lt;br /&gt;
2019-12-31    201.18704&lt;br /&gt;
2020-03-31    283.16855&lt;br /&gt;
2020-06-30    389.45566&lt;br /&gt;
2020-09-30    395.65480&lt;br /&gt;
2020-12-31    240.10074&lt;br /&gt;
Freq: Q-DEC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:284--&amp;gt;&lt;br /&gt;
Production annuelle moyennes d&#039;1kWc (kWh):&lt;br /&gt;
 1265.2967493749998&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:285--&amp;gt;&lt;br /&gt;
Nombre de jours consecutifs maximum à production 0: 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:286--&amp;gt;&lt;br /&gt;
Moyenne par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    264.724340&lt;br /&gt;
2    370.954661&lt;br /&gt;
3    395.182393&lt;br /&gt;
4    234.435355&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:287--&amp;gt;&lt;br /&gt;
Minimum par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    229.46528&lt;br /&gt;
2    323.20427&lt;br /&gt;
3    363.44330&lt;br /&gt;
4    201.18704&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:288--&amp;gt;&lt;br /&gt;
Maximum par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    313.23495&lt;br /&gt;
2    410.47864&lt;br /&gt;
3    426.21631&lt;br /&gt;
4    273.02084&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
Entrez la consommation d&#039;électricité journaliere (kWh): 4&lt;br /&gt;
Voulez vous utiliser des batteries au plomb? Taper oui ou o pour repondre oui (Lithium par défaut si rien n&#039;est indiqué)&lt;br /&gt;
Seuil batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur (batterie lithium))&lt;br /&gt;
hypothese:(conso elec journaliere / 0.8 au lithium et conso elec journaliere / 0.5 au plomb)&lt;br /&gt;
5 kWh&lt;br /&gt;
Entrer le pourcentage de décharge maximum autorisé (20% si vous voulez que votre batterie ne se décharge pas à moins de 20%. Appuyer sur entree si vous voulez utiliser les valeurs par défaut de 50% pour le plomb et de 0% sinon (hypothese solid state battery)&lt;br /&gt;
Combien de jours maximum consécutifs sans electricité (ou avec un groupe electrogene) pouvez vous supporter (0 par défaut si reponse vide)1&lt;br /&gt;
Nombre de jours maximum consécutifs sans electricité (ou avec un groupe electrogene)  pris en hypothèse &lt;br /&gt;
1 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:289--&amp;gt;&lt;br /&gt;
Seuil puissance initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/2 (2kWh produit par kWc en hiver)&lt;br /&gt;
2 kWc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:290--&amp;gt;&lt;br /&gt;
Seuil volume de batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/0.8 au lithium et 0.5 au plomb&lt;br /&gt;
5 kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:291--&amp;gt;&lt;br /&gt;
Si vous souhaitez corriger la valeur initiale de batterie (kWh) pour les itérations, entrer votre valeur, sinon appuyer sur entree&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:292--&amp;gt;&lt;br /&gt;
erreur de type ou valeur utilisateur vide, poursuite avec utilisation de batterie0=5kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:293--&amp;gt;&lt;br /&gt;
Si vous souhaitez corriger la valeur initiale de puissance (kWc) pour les itérations, entrer votre valeur, sinon appuyer sur entree&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:294--&amp;gt;&lt;br /&gt;
erreur de type ou valeur utilisateur vide, poursuite avec utilisation de puissance0=2kWc&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 75.0kWh &lt;br /&gt;
    et une puissance crete de 2.0kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 22.5kWh &lt;br /&gt;
    et une puissance crete de 2.66kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 17.5kWh &lt;br /&gt;
    et une puissance crete de 3.3200000000000003kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 15.0kWh &lt;br /&gt;
    et une puissance crete de 3.98kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 12.5kWh &lt;br /&gt;
    et une puissance crete de 4.640000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 12.5kWh &lt;br /&gt;
    et une puissance crete de 5.300000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 5.96kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 6.62kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 7.28kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 7.94kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 8.600000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 9.260000000000002kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 9.92kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 10.58kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 2.0kWc,&lt;br /&gt;
    et une hypothèse de 10j sans elec possible&lt;br /&gt;
    et 185 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;14-01-2005&#039;, 1], [&#039;19-01-2005&#039;, 3], [&#039;23-01-2005&#039;, 2], [&#039;01-02-2005&#039;, 1], [&#039;11-02-2005&#039;, 3], [&#039;17-11-2005&#039;, 1], [&#039;26-11-2005&#039;, 3], [&#039;02-12-2005&#039;, 1], [&#039;04-12-2005&#039;, 2], [&#039;07-12-2005&#039;, 2], [&#039;12-12-2005&#039;, 6], [&#039;22-12-2005&#039;, 2], [&#039;25-12-2005&#039;, 3], [&#039;31-12-2005&#039;, 2], [&#039;03-01-2006&#039;, 10], [&#039;18-01-2006&#039;, 4], [&#039;29-01-2006&#039;, 7], [&#039;23-02-2006&#039;, 1], [&#039;09-03-2006&#039;, 2], [&#039;21-11-2006&#039;, 2], [&#039;25-11-2006&#039;, 2], [&#039;28-11-2006&#039;, 1], [&#039;30-11-2006&#039;, 5], [&#039;08-12-2006&#039;, 3], [&#039;20-12-2006&#039;, 7], [&#039;08-01-2007&#039;, 1], [&#039;20-01-2007&#039;, 4], [&#039;30-01-2007&#039;, 4], [&#039;06-02-2007&#039;, 3], [&#039;08-10-2007&#039;, 1], [&#039;10-10-2007&#039;, 1], [&#039;01-12-2007&#039;, 1], [&#039;07-12-2007&#039;, 3], [&#039;15-12-2007&#039;, 1], [&#039;25-12-2007&#039;, 5], [&#039;01-01-2008&#039;, 3], [&#039;05-01-2008&#039;, 5], [&#039;11-01-2008&#039;, 1], [&#039;18-01-2008&#039;, 2], [&#039;22-01-2008&#039;, 2], [&#039;30-01-2008&#039;, 1], [&#039;01-02-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;11-03-2008&#039;, 2], [&#039;17-05-2008&#039;, 2], [&#039;28-10-2008&#039;, 1], [&#039;30-10-2008&#039;, 2], [&#039;02-11-2008&#039;, 2], [&#039;06-11-2008&#039;, 2], [&#039;15-11-2008&#039;, 9], [&#039;30-11-2008&#039;, 2], [&#039;03-12-2008&#039;, 2], [&#039;12-12-2008&#039;, 9], [&#039;25-12-2008&#039;, 2], [&#039;04-01-2009&#039;, 9], [&#039;14-01-2009&#039;, 1], [&#039;23-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 2], [&#039;16-08-2009&#039;, 1], [&#039;11-11-2009&#039;, 1], [&#039;02-12-2009&#039;, 1], [&#039;04-12-2009&#039;, 1], [&#039;06-12-2009&#039;, 3], [&#039;14-12-2009&#039;, 3], [&#039;23-12-2009&#039;, 2], [&#039;28-12-2009&#039;, 2], [&#039;04-01-2010&#039;, 4], [&#039;09-01-2010&#039;, 4], [&#039;14-01-2010&#039;, 1], [&#039;16-01-2010&#039;, 2], [&#039;05-05-2010&#039;, 2], [&#039;01-11-2010&#039;, 1], [&#039;04-11-2010&#039;, 3], [&#039;08-11-2010&#039;, 5], [&#039;25-11-2010&#039;, 1], [&#039;28-11-2010&#039;, 1], [&#039;02-12-2010&#039;, 2], [&#039;17-12-2010&#039;, 2], [&#039;22-12-2010&#039;, 3], [&#039;07-01-2011&#039;, 3], [&#039;13-01-2011&#039;, 3], [&#039;31-01-2011&#039;, 2], [&#039;04-02-2011&#039;, 1], [&#039;23-02-2011&#039;, 4], [&#039;02-03-2011&#039;, 2], [&#039;29-10-2011&#039;, 1], [&#039;05-11-2011&#039;, 4], [&#039;25-11-2011&#039;, 4], [&#039;04-12-2011&#039;, 5], [&#039;14-12-2011&#039;, 3], [&#039;21-12-2011&#039;, 3], [&#039;13-01-2012&#039;, 3], [&#039;23-01-2012&#039;, 1], [&#039;08-02-2012&#039;, 1], [&#039;15-02-2012&#039;, 1], [&#039;20-10-2012&#039;, 2], [&#039;06-11-2012&#039;, 1], [&#039;20-11-2012&#039;, 4], [&#039;25-11-2012&#039;, 5], [&#039;14-12-2012&#039;, 1], [&#039;22-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;19-01-2013&#039;, 1], [&#039;22-01-2013&#039;, 1], [&#039;26-01-2013&#039;, 2], [&#039;08-11-2013&#039;, 1], [&#039;10-11-2013&#039;, 1], [&#039;15-11-2013&#039;, 1], [&#039;17-11-2013&#039;, 3], [&#039;23-11-2013&#039;, 3], [&#039;03-12-2013&#039;, 4], [&#039;25-01-2014&#039;, 3], [&#039;01-02-2014&#039;, 1], [&#039;15-02-2014&#039;, 1], [&#039;24-11-2014&#039;, 3], [&#039;01-12-2014&#039;, 3], [&#039;06-12-2014&#039;, 1], [&#039;13-12-2014&#039;, 8], [&#039;24-12-2014&#039;, 2], [&#039;27-12-2014&#039;, 2], [&#039;03-01-2015&#039;, 4], [&#039;10-01-2015&#039;, 1], [&#039;24-01-2015&#039;, 1], [&#039;29-01-2015&#039;, 2], [&#039;03-03-2015&#039;, 1], [&#039;12-11-2015&#039;, 5], [&#039;19-11-2015&#039;, 1], [&#039;26-11-2015&#039;, 1], [&#039;04-12-2015&#039;, 2], [&#039;03-01-2016&#039;, 8], [&#039;21-01-2016&#039;, 3], [&#039;01-02-2016&#039;, 2], [&#039;16-10-2016&#039;, 2], [&#039;05-11-2016&#039;, 1], [&#039;18-11-2016&#039;, 1], [&#039;22-11-2016&#039;, 4], [&#039;20-12-2016&#039;, 1], [&#039;24-12-2016&#039;, 3], [&#039;30-12-2016&#039;, 6], [&#039;11-01-2017&#039;, 2], [&#039;06-12-2017&#039;, 3], [&#039;10-12-2017&#039;, 2], [&#039;13-12-2017&#039;, 6], [&#039;22-12-2017&#039;, 4], [&#039;28-12-2017&#039;, 3], [&#039;03-01-2018&#039;, 5], [&#039;14-01-2018&#039;, 3], [&#039;20-01-2018&#039;, 4], [&#039;30-01-2018&#039;, 2], [&#039;05-02-2018&#039;, 2], [&#039;08-02-2018&#039;, 1], [&#039;20-02-2018&#039;, 1], [&#039;28-03-2018&#039;, 1], [&#039;28-10-2018&#039;, 2], [&#039;02-11-2018&#039;, 1], [&#039;09-11-2018&#039;, 2], [&#039;04-12-2018&#039;, 1], [&#039;09-12-2018&#039;, 1], [&#039;13-12-2018&#039;, 4], [&#039;21-12-2018&#039;, 5], [&#039;29-12-2018&#039;, 4], [&#039;08-01-2019&#039;, 1], [&#039;13-01-2019&#039;, 2], [&#039;22-01-2019&#039;, 1], [&#039;30-01-2019&#039;, 2], [&#039;23-10-2019&#039;, 2], [&#039;02-11-2019&#039;, 1], [&#039;04-11-2019&#039;, 5], [&#039;16-11-2019&#039;, 3], [&#039;01-12-2019&#039;, 2], [&#039;07-12-2019&#039;, 3], [&#039;12-12-2019&#039;, 3], [&#039;23-12-2019&#039;, 3], [&#039;04-01-2020&#039;, 2], [&#039;29-02-2020&#039;, 1], [&#039;04-03-2020&#039;, 2], [&#039;23-04-2020&#039;, 1], [&#039;12-05-2020&#039;, 1], [&#039;06-10-2020&#039;, 1], [&#039;03-12-2020&#039;, 2], [&#039;10-12-2020&#039;, 2], [&#039;13-12-2020&#039;, 3], [&#039;18-12-2020&#039;, 2], [&#039;21-12-2020&#039;, 5], [&#039;28-12-2020&#039;, 2]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 2.5513513513513515j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 2.66kWc,&lt;br /&gt;
    et une hypothèse de 8j sans elec possible&lt;br /&gt;
    et 103 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;19-01-2005&#039;, 3], [&#039;23-01-2005&#039;, 1], [&#039;01-02-2005&#039;, 1], [&#039;12-02-2005&#039;, 2], [&#039;26-11-2005&#039;, 3], [&#039;05-12-2005&#039;, 1], [&#039;08-12-2005&#039;, 1], [&#039;12-12-2005&#039;, 6], [&#039;23-12-2005&#039;, 1], [&#039;26-12-2005&#039;, 2], [&#039;31-12-2005&#039;, 1], [&#039;04-01-2006&#039;, 4], [&#039;09-01-2006&#039;, 4], [&#039;20-01-2006&#039;, 2], [&#039;29-01-2006&#039;, 4], [&#039;03-02-2006&#039;, 2], [&#039;22-11-2006&#039;, 1], [&#039;04-12-2006&#039;, 1], [&#039;10-12-2006&#039;, 1], [&#039;22-12-2006&#039;, 5], [&#039;22-01-2007&#039;, 2], [&#039;30-01-2007&#039;, 4], [&#039;08-02-2007&#039;, 1], [&#039;01-12-2007&#039;, 1], [&#039;08-12-2007&#039;, 2], [&#039;26-12-2007&#039;, 4], [&#039;03-01-2008&#039;, 1], [&#039;06-01-2008&#039;, 4], [&#039;11-01-2008&#039;, 1], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;07-11-2008&#039;, 1], [&#039;16-11-2008&#039;, 8], [&#039;01-12-2008&#039;, 1], [&#039;04-12-2008&#039;, 1], [&#039;15-12-2008&#039;, 6], [&#039;26-12-2008&#039;, 1], [&#039;05-01-2009&#039;, 8], [&#039;24-01-2009&#039;, 1], [&#039;19-04-2009&#039;, 2], [&#039;16-08-2009&#039;, 1], [&#039;11-11-2009&#039;, 1], [&#039;08-12-2009&#039;, 1], [&#039;14-12-2009&#039;, 3], [&#039;23-12-2009&#039;, 2], [&#039;05-01-2010&#039;, 3], [&#039;09-01-2010&#039;, 2], [&#039;12-01-2010&#039;, 1], [&#039;06-05-2010&#039;, 1], [&#039;05-11-2010&#039;, 2], [&#039;12-11-2010&#039;, 1], [&#039;22-12-2010&#039;, 3], [&#039;08-01-2011&#039;, 1], [&#039;31-01-2011&#039;, 2], [&#039;06-11-2011&#039;, 3], [&#039;25-11-2011&#039;, 4], [&#039;07-12-2011&#039;, 2], [&#039;21-12-2011&#039;, 3], [&#039;14-01-2012&#039;, 2], [&#039;20-10-2012&#039;, 2], [&#039;21-11-2012&#039;, 2], [&#039;25-11-2012&#039;, 2], [&#039;28-11-2012&#039;, 1], [&#039;14-12-2012&#039;, 1], [&#039;22-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;19-01-2013&#039;, 1], [&#039;18-11-2013&#039;, 2], [&#039;24-11-2013&#039;, 2], [&#039;04-12-2013&#039;, 2], [&#039;25-01-2014&#039;, 3], [&#039;25-11-2014&#039;, 2], [&#039;02-12-2014&#039;, 2], [&#039;14-12-2014&#039;, 7], [&#039;05-01-2015&#039;, 2], [&#039;13-11-2015&#039;, 2], [&#039;04-01-2016&#039;, 5], [&#039;10-01-2016&#039;, 1], [&#039;23-01-2016&#039;, 1], [&#039;17-10-2016&#039;, 1], [&#039;23-11-2016&#039;, 1], [&#039;25-11-2016&#039;, 1], [&#039;20-12-2016&#039;, 1], [&#039;25-12-2016&#039;, 2], [&#039;31-12-2016&#039;, 5], [&#039;12-01-2017&#039;, 1], [&#039;22-12-2017&#039;, 4], [&#039;29-12-2017&#039;, 1], [&#039;04-01-2018&#039;, 3], [&#039;16-01-2018&#039;, 1], [&#039;21-01-2018&#039;, 3], [&#039;31-01-2018&#039;, 1], [&#039;04-12-2018&#039;, 1], [&#039;15-12-2018&#039;, 2], [&#039;22-12-2018&#039;, 4], [&#039;30-12-2018&#039;, 3], [&#039;31-01-2019&#039;, 1], [&#039;17-11-2019&#039;, 2], [&#039;02-12-2019&#039;, 1], [&#039;08-12-2019&#039;, 1], [&#039;13-12-2019&#039;, 2], [&#039;29-12-2020&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 2.203883495145631j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 3.3200000000000003kWc,&lt;br /&gt;
    et une hypothèse de 6j sans elec possible&lt;br /&gt;
    et 66 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;20-01-2005&#039;, 2], [&#039;23-01-2005&#039;, 1], [&#039;01-02-2005&#039;, 1], [&#039;12-02-2005&#039;, 2], [&#039;27-11-2005&#039;, 1], [&#039;12-12-2005&#039;, 6], [&#039;27-12-2005&#039;, 1], [&#039;06-01-2006&#039;, 2], [&#039;09-01-2006&#039;, 1], [&#039;11-01-2006&#039;, 2], [&#039;29-01-2006&#039;, 3], [&#039;03-02-2006&#039;, 2], [&#039;24-12-2006&#039;, 3], [&#039;23-01-2007&#039;, 1], [&#039;01-02-2007&#039;, 2], [&#039;27-12-2007&#039;, 3], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;16-11-2008&#039;, 4], [&#039;21-11-2008&#039;, 1], [&#039;23-11-2008&#039;, 1], [&#039;19-12-2008&#039;, 2], [&#039;26-12-2008&#039;, 1], [&#039;05-01-2009&#039;, 1], [&#039;07-01-2009&#039;, 6], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;14-12-2009&#039;, 3], [&#039;24-12-2009&#039;, 1], [&#039;05-01-2010&#039;, 1], [&#039;10-01-2010&#039;, 1], [&#039;12-01-2010&#039;, 1], [&#039;05-11-2010&#039;, 2], [&#039;23-12-2010&#039;, 2], [&#039;01-02-2011&#039;, 1], [&#039;07-11-2011&#039;, 1], [&#039;26-11-2011&#039;, 3], [&#039;21-12-2011&#039;, 3], [&#039;14-01-2012&#039;, 1], [&#039;20-10-2012&#039;, 2], [&#039;21-11-2012&#039;, 1], [&#039;26-11-2012&#039;, 1], [&#039;14-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;24-11-2013&#039;, 2], [&#039;05-12-2013&#039;, 1], [&#039;26-01-2014&#039;, 2], [&#039;26-11-2014&#039;, 1], [&#039;02-12-2014&#039;, 2], [&#039;17-12-2014&#039;, 3], [&#039;13-11-2015&#039;, 1], [&#039;05-01-2016&#039;, 1], [&#039;07-01-2016&#039;, 2], [&#039;17-10-2016&#039;, 1], [&#039;23-11-2016&#039;, 1], [&#039;01-01-2017&#039;, 4], [&#039;23-12-2017&#039;, 3], [&#039;06-01-2018&#039;, 1], [&#039;22-01-2018&#039;, 2], [&#039;31-01-2018&#039;, 1], [&#039;16-12-2018&#039;, 1], [&#039;23-12-2018&#039;, 3], [&#039;30-12-2018&#039;, 3], [&#039;02-12-2019&#039;, 1], [&#039;14-12-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.8636363636363635j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 3.98kWc,&lt;br /&gt;
    et une hypothèse de 6j sans elec possible&lt;br /&gt;
    et 43 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;20-01-2005&#039;, 2], [&#039;01-02-2005&#039;, 1], [&#039;13-02-2005&#039;, 1], [&#039;12-12-2005&#039;, 5], [&#039;27-12-2005&#039;, 1], [&#039;07-01-2006&#039;, 1], [&#039;12-01-2006&#039;, 1], [&#039;29-01-2006&#039;, 1], [&#039;31-01-2006&#039;, 1], [&#039;04-02-2006&#039;, 1], [&#039;25-12-2006&#039;, 2], [&#039;02-02-2007&#039;, 1], [&#039;28-12-2007&#039;, 2], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;16-11-2008&#039;, 4], [&#039;21-11-2008&#039;, 1], [&#039;08-01-2009&#039;, 2], [&#039;11-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 2], [&#039;24-12-2009&#039;, 1], [&#039;05-01-2010&#039;, 1], [&#039;10-01-2010&#039;, 1], [&#039;06-11-2010&#039;, 1], [&#039;23-12-2010&#039;, 2], [&#039;01-02-2011&#039;, 1], [&#039;26-11-2011&#039;, 3], [&#039;22-12-2011&#039;, 2], [&#039;21-10-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;25-11-2013&#039;, 1], [&#039;26-01-2014&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;17-10-2016&#039;, 1], [&#039;01-01-2017&#039;, 4], [&#039;23-12-2017&#039;, 3], [&#039;23-01-2018&#039;, 1], [&#039;23-12-2018&#039;, 1], [&#039;25-12-2018&#039;, 1], [&#039;30-12-2018&#039;, 3]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.697674418604651j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 4.640000000000001kWc,&lt;br /&gt;
    et une hypothèse de 4j sans elec possible&lt;br /&gt;
    et 22 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;12-12-2005&#039;, 1], [&#039;14-12-2005&#039;, 3], [&#039;27-12-2005&#039;, 1], [&#039;26-12-2006&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;17-11-2008&#039;, 3], [&#039;09-01-2009&#039;, 1], [&#039;11-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 2], [&#039;23-12-2010&#039;, 2], [&#039;27-11-2011&#039;, 2], [&#039;23-12-2011&#039;, 1], [&#039;06-01-2013&#039;, 4], [&#039;25-11-2013&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;02-01-2017&#039;, 3], [&#039;24-12-2017&#039;, 2], [&#039;23-12-2018&#039;, 1], [&#039;01-01-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.6818181818181819j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 5.300000000000001kWc,&lt;br /&gt;
    et une hypothèse de 4j sans elec possible&lt;br /&gt;
    et 16 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;14-12-2005&#039;, 3], [&#039;27-12-2005&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;17-11-2008&#039;, 3], [&#039;09-01-2009&#039;, 1], [&#039;12-01-2009&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 1], [&#039;24-12-2010&#039;, 1], [&#039;28-11-2011&#039;, 1], [&#039;06-01-2013&#039;, 4], [&#039;25-11-2013&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;03-01-2017&#039;, 2], [&#039;01-01-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.5625j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 5.96kWc,&lt;br /&gt;
    et une hypothèse de 2j sans elec possible&lt;br /&gt;
    et 10 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;15-12-2005&#039;, 2], [&#039;17-05-2008&#039;, 2], [&#039;18-11-2008&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 1], [&#039;24-12-2010&#039;, 1], [&#039;06-01-2013&#039;, 2], [&#039;09-01-2013&#039;, 1], [&#039;03-12-2014&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.4j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 6.62kWc,&lt;br /&gt;
    et une hypothèse de 2j sans elec possible&lt;br /&gt;
    et 5 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;16-12-2005&#039;, 1], [&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;06-01-2013&#039;, 2]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.2j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 7.28kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 7.94kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 8.600000000000001kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 9.260000000000002kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 9.92kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 10.58kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:295--&amp;gt;&lt;br /&gt;
affichage des résultats optimisés&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de 10.0kWh &lt;br /&gt;
        et une puissance crete de 5.96kWc,&lt;br /&gt;
        et une hypothèse de 0j sans elec possible&lt;br /&gt;
        et 0 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        []&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
        on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de 5.0kWh &lt;br /&gt;
        et une puissance crete de 7.28kWc,&lt;br /&gt;
        et une hypothèse de 1j sans elec possible&lt;br /&gt;
        et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
        on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152026</id>
		<title>Concentrateurs solaires</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152026"/>
		<updated>2025-11-28T19:38:04Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Concentrateurs_solaires_parabole_platre.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:57,&amp;quot;top&amp;quot;:-161,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/0/0f/Concentrateurs_solaires_parabole_platre.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.80340760157276,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&lt;br /&gt;
Fabrication de concentrateurs solaire (reflecteur+platre ouparabole de recup)&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=80&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=solaire, energie, énergie, renouvelables, concentrateur, reflecteur, solaire thermique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
Initialement, j&#039;ai fabriqué des concentrateurs solaires pour essayer d&#039;entraîner un moteur stirling miniature (&amp;quot;jouet scientifique&amp;quot;) qu&#039;on appercoit sur quelques photos et vidéos et pour lequel j&#039;ai fait un autre tutoriel ici:  [[Moteur Stirling]].&lt;br /&gt;
&lt;br /&gt;
L&#039;exercice n&#039;étant pas si simple, j&#039;ai décidé d&#039;en faire un tutoriel dédié.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le moteur stirling miniature, il faut unhaut degré de concentration (2cm sur 4cm) et il est préférable d&#039;opter pour l&#039;achat de lentilles de fresnel.&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&lt;br /&gt;
fabrication à partir de récupération d&#039;une antenne parabolique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- antenne parabolique  (40cm à plusieurs metres) en recyclerie ou sur internet : 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fabrication à partir de platre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- ballon de yoga d&#039;un diametre 2x le diametre voulu pour le concentrateur&lt;br /&gt;
&lt;br /&gt;
- platre : 15kg pour reflecteur 80cm : 20€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- sable : 4 truelles pour un seau&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- colle à carreau : 4 truelles pour un seau 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- réflecteur adhésif: 20€/m2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.solarbrother.com/categorie-produit/reflecteur-solaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- super glue (20g) 5€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- scotch peinture 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- pied de micro 5€&lt;br /&gt;
|Tools=&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
fabrication bout de sphere en platre&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Si vous optez pour la premiere option de récupération d&#039;antenne parabolique, passez directement à l&#039;étape 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le choix du bout de sphere platre ou de l&#039;antenne parabolique peut poser question sur la focale du  concentrateur (cf vidéos dans etape 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La focale est la distance au centre du concentrateur à laquelle convergent les rayons du soleil reflétés par le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La focale des bouts de sphere est nettement réduite par rapport aux antennes paraboliques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initialement, j&#039;ai fait des tests en bout de sphere platre pour essayer d&#039;obtenir un plus haut degré de concentration solaire, mais les résultats montrent des taches solaires d&#039;à peu près la même surface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0. Mélange de platre&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On trouve des platres dédiés pour des moulures fines. Dans le doute, prenez plusieurs variétés et mélangez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De toute façons, on ajoute un peu de sable et de colle à carreau pour solidifier le platre et éviter qu&#039;il soit friable ou fragile une fois sec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Melangez dans les proportions 4 truelles de colles et de sable pour un seau de platre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mélangez à de l&#039;eau, puis étalez sur votre ballon de yoga gonflé et stabilisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir manipuler et orienter le reflecteur, on peut utiliser un pied de micro. Malheureusement, le bout du pied de micro est difficile à coller sur du platre, donc pensez à prendre le pied de micro dans la moulure de platre pendant le sechage si vous optez pour cette solution pour orienter le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: pour un concentrateur de 80cm de diametre, cest un peu trop lourd pour un pied de micro standard, pensez à verifier le dimensionnement pour que ca tienne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ballon gris fait 75cm de diametre et le ballon orange 150cm de diametre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240825_140116.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241115_155751.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20240825_140915.jpg&lt;br /&gt;
|Step_Picture_03=Concentrateurs_solaires_IMG_20241115_192504.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
collage du reflecteur&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Initialement, j&#039;ai fait un essai sur un petit concentrateur de 10cm de coller des bouts de mirroirs pour réfléchir les rayons du soleil mais c&#039;était assez peu concluant donc j&#039;ai laissé tomber cette idée.&lt;br /&gt;
&lt;br /&gt;
On trouve du reflecteur souple adhésif chez solar brother (voir lien dans materiel) qui est assez efficace et coute 20€/m2.&lt;br /&gt;
&lt;br /&gt;
Il y a deux points sur lesquels etre attentifs pour coller le reflecteur:&lt;br /&gt;
&lt;br /&gt;
-Il faut éviter que le reflecteur souple gondole&lt;br /&gt;
&lt;br /&gt;
-Si vous avez une moulure platre, l&#039;adhésif colle mal&lt;br /&gt;
&lt;br /&gt;
On va donc procéder en découpant des triangles avec une base assez fine pour que ca ne gondole pas en collant. Sur mes essais, pour le concentrateur de 80cm de diametre, la base du triangle fait 7cm et pour le concentrateur de 40cm de diametre 10cm.&lt;br /&gt;
&lt;br /&gt;
Pour que ca colle sur le platre, on aplique d&#039;abbord du scotch peinture sur toute la surface du concentrateur.&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, ajouter de la super glue à la surface adhésive car ca se décolle assez rapidement sinon.&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240827_141431.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241127_151307.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20241127_153118.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
mesure de puissance&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Pour l&#039;instant je n&#039;ai pas fait de mesure d&#039;évaporation d&#039;eau. J&#039;essaierai d&#039;en faire quand j&#039;aurai le temps.&lt;br /&gt;
&lt;br /&gt;
En attendant voici des vidéos où on peut estimer la focale des concentrateurs et voir des planches commencer un processus de combustion (version parabole pour la vidéo avec le moteur stirling miniature au mois de juillet et version bout de sphere platre 80cm pour la video où le reflecteur est posé au sol au mois de novembre)&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_reflecteur80.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_reflecteur1.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152023</id>
		<title>Concentrateurs solaires</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152023"/>
		<updated>2025-11-28T19:35:24Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Concentrateurs_solaires_parabole_platre.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:57,&amp;quot;top&amp;quot;:-161,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/0/0f/Concentrateurs_solaires_parabole_platre.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.80340760157276,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&lt;br /&gt;
Fabrication de concentrateurs solaire (reflecteur+platre ouparabole de recup)&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=80&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=solaire, energie, énergie, renouvelables, concentrateur, reflecteur, solaire thermique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
Initialement, j&#039;ai fabriqué des concentrateurs solaires pour essayer d&#039;entraîner un moteur stirling miniature (&amp;quot;jouet scientifique&amp;quot;) qu&#039;on appercoit sur quelques photos et vidéos et pour lequel j&#039;ai fait un autre tutoriel ici:  [[Moteur Stirling]].&lt;br /&gt;
&lt;br /&gt;
L&#039;exercice n&#039;étant pas si simple, j&#039;ai décidé d&#039;en faire un tutoriel dédié.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le moteur stirling miniature, il faut unhaut degré de concentration (2cm sur 4cm) et il est préférable d&#039;opter pour l&#039;achat de lentilles de fresnel.&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&lt;br /&gt;
fabrication à partir de récupération d&#039;une antenne parabolique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- antenne parabolique  (40cm à plusieurs metres) en recyclerie ou sur internet : 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fabrication à partir de platre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- ballon de yoga d&#039;un diametre 2x le diametre voulu pour le concentrateur&lt;br /&gt;
&lt;br /&gt;
- platre : 15kg pour reflecteur 80cm : 20€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- sable : 4 truelles pour un seau&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- colle à carreau : 4 truelles pour un seau 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- réflecteur adhésif: 20€/m2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.solarbrother.com/categorie-produit/reflecteur-solaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- super glue (20g) 5€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- scotch peinture 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- pied de micro 5€&lt;br /&gt;
|Tools=&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
fabrication bout de sphere en platre&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Si vous optez pour la premiere option de récupération d&#039;antenne parabolique, passez directement à l&#039;étape 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le choix du bout de sphere platre ou de l&#039;antenne parabolique peut poser question sur la focale du  concentrateur (cf vidéos dans etape 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La focale est la distance au centre du concentrateur à laquelle convergent les rayons du soleil reflétés par le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La focale des bouts de sphere est nettement réduite par rapport aux antennes paraboliques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initialement, j&#039;ai fait des tests en bout de sphere platre pour essayer d&#039;obtenir un plus haut degré de concentration solaire, mais les résultats montrent des taches solaires d&#039;à peu près la même surface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0. Mélange de platre&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On trouve des platres dédiés pour des moulures fines. Dans le doute, prenez plusieurs variétés et mélangez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De toute façons, on ajoute un peu de sable et de colle à carreau pour solidifier le platre et éviter qu&#039;il soit friable ou fragile une fois sec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Melangez dans les proportions 4 truelles de colles et de sable pour un seau de platre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mélangez à de l&#039;eau, puis étalez sur votre ballon de yoga gonflé et stabilisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir manipuler et orienter le reflecteur, on peut utiliser un pied de micro. Malheureusement, le bout du pied de micro est difficile à coller sur du platre, donc pensez à prendre le pied de micro dans la moulure de platre pendant le sechage si vous optez pour cette solution pour orienter le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: pour un concentrateur de 80cm de diametre, cest un peu trop lourd pour un pied de micro standard, pensez à verifier le dimensionnement pour que ca tienne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ballon gris fait 75cm de diametre et le ballon orange 150cm de diametre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240825_140116.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241115_155751.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20240825_140915.jpg&lt;br /&gt;
|Step_Picture_03=Concentrateurs_solaires_IMG_20241115_192504.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
collage du reflecteur&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait un essai sur un petit concentrateur de 10cm de coller des bouts de mirroirs pour réfléchir les rayons du soleil mais c&#039;était assez peu concluant donc j&#039;ai laissé tomber cette idée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
On trouve du reflecteur souple adhésif chez solar brother (voir lien dans materiel) qui est assez efficace et coute 20€/m2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Il y a deux points sur lesquels etre attentifs pour coller le reflecteur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
-Il faut éviter que le reflecteur souple gondole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
-Si vous avez une moulure platre, l&#039;adhésif colle mal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
On va donc procéder en découpant des triangles avec une base assez fine pour que ca ne gondole pas en collant. Sur mes essais, pour le concentrateur de 80cm de diametre, la base du triangle fait 7cm et pour le concentrateur de 40cm de diametre 10cm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Pour que ca colle sur le platre, on aplique d&#039;abbord du scotch peinture sur toute la surface du concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Dans tous les cas, ajouter de la super glue à la surface adhésive car ca se décolle assez rapidement sinon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240827_141431.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241127_151307.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20241127_153118.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
mesure de puissance&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Pour l&#039;instant je n&#039;ai pas fait de mesure d&#039;évaporation d&#039;eau. J&#039;essaierai d&#039;en faire quand j&#039;aurai le temps.&lt;br /&gt;
&lt;br /&gt;
En attendant voici des vidéos où on peut estimer la focale des concentrateurs et voir des planches commencer un processus de combustion (version parabole pour la vidéo avec le moteur stirling miniature au mois de juillet et version bout de sphere platre 80cm pour la video où le reflecteur est posé au sol au mois de novembre)&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_reflecteur80.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_reflecteur1.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152020</id>
		<title>Concentrateurs solaires</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152020"/>
		<updated>2025-11-28T19:33:03Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Concentrateurs_solaires_parabole_platre.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:57,&amp;quot;top&amp;quot;:-161,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/0/0f/Concentrateurs_solaires_parabole_platre.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.80340760157276,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&lt;br /&gt;
Fabrication de concentrateurs solaire (reflecteur+platre ouparabole de recup)&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=80&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=solaire, energie, énergie, renouvelables, concentrateur, reflecteur, solaire thermique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
Initialement, j&#039;ai fabriqué des concentrateurs solaires pour essayer d&#039;entraîner un moteur stirling miniature (&amp;quot;jouet scientifique&amp;quot;) qu&#039;on appercoit sur quelques photos et vidéos et pour lequel j&#039;ai fait un autre tutoriel ici:  [[Moteur Stirling]].&lt;br /&gt;
&lt;br /&gt;
L&#039;exercice n&#039;étant pas si simple, j&#039;ai décidé d&#039;en faire un tutoriel dédié.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le moteur stirling miniature, il faut unhaut degré de concentration (2cm sur 4cm) et il est préférable d&#039;opter pour l&#039;achat de lentilles de fresnel.&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&lt;br /&gt;
fabrication à partir de récupération d&#039;une antenne parabolique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- antenne parabolique  (40cm à plusieurs metres) en recyclerie ou sur internet : 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fabrication à partir de platre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- ballon de yoga d&#039;un diametre 2x le diametre voulu pour le concentrateur&lt;br /&gt;
&lt;br /&gt;
- platre : 15kg pour reflecteur 80cm : 20€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- sable : 4 truelles pour un seau&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- colle à carreau : 4 truelles pour un seau 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- réflecteur adhésif: 20€/m2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.solarbrother.com/categorie-produit/reflecteur-solaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- super glue (20g) 5€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- scotch peinture 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- pied de micro 5€&lt;br /&gt;
|Tools=&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&lt;br /&gt;
fabrication bout de sphere en platre&lt;br /&gt;
|Step_Content=&lt;br /&gt;
Si vous optez pour la premiere option de récupération d&#039;antenne parabolique, passez directement à l&#039;étape 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le choix du bout de sphere platre ou de l&#039;antenne parabolique peut poser question sur la focale du  concentrateur (cf vidéos dans etape 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La focale est la distance au centre du concentrateur à laquelle convergent les rayons du soleil reflétés par le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La focale des bouts de sphere est nettement réduite par rapport aux antennes paraboliques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initialement, j&#039;ai fait des tests en bout de sphere platre pour essayer d&#039;obtenir un plus haut degré de concentration solaire, mais les résultats montrent des taches solaires d&#039;à peu près la même surface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0. Mélange de platre&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On trouve des platres dédiés pour des moulures fines. Dans le doute, prenez plusieurs variétés et mélangez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De toute façons, on ajoute un peu de sable et de colle à carreau pour solidifier le platre et éviter qu&#039;il soit friable ou fragile une fois sec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Melangez dans les proportions 4 truelles de colles et de sable pour un seau de platre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mélangez à de l&#039;eau, puis étalez sur votre ballon de yoga gonflé et stabilisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir manipuler et orienter le reflecteur, on peut utiliser un pied de micro. Malheureusement, le bout du pied de micro est difficile à coller sur du platre, donc pensez à prendre le pied de micro dans la moulure de platre pendant le sechage si vous optez pour cette solution pour orienter le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: pour un concentrateur de 80cm de diametre, cest un peu trop lourd pour un pied de micro standard, pensez à verifier le dimensionnement pour que ca tienne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ballon gris fait 75cm de diametre et le ballon orange 150cm de diametre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240825_140116.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241115_155751.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20240825_140915.jpg&lt;br /&gt;
|Step_Picture_03=Concentrateurs_solaires_IMG_20241115_192504.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
collage du reflecteur&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait un essai sur un petit concentrateur de 10cm de coller des bouts de mirroirs pour réfléchir les rayons du soleil mais c&#039;était assez peu concluant donc j&#039;ai laissé tomber cette idée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
On trouve du reflecteur souple adhésif chez solar brother (voir lien dans materiel) qui est assez efficace et coute 20€/m2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Il y a deux points sur lesquels etre attentifs pour coller le reflecteur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
-Il faut éviter que le reflecteur souple gondole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
-Si vous avez une moulure platre, l&#039;adhésif colle mal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
On va donc procéder en découpant des triangles avec une base assez fine pour que ca ne gondole pas en collant. Sur mes essais, pour le concentrateur de 80cm de diametre, la base du triangle fait 7cm et pour le concentrateur de 40cm de diametre 10cm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Pour que ca colle sur le platre, on aplique d&#039;abbord du scotch peinture sur toute la surface du concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Dans tous les cas, ajouter de la super glue à la surface adhésive car ca se décolle assez rapidement sinon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240827_141431.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241127_151307.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20241127_153118.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
mesure de puissance&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Pour l&#039;instant je n&#039;ai pas fait de mesure d&#039;évaporation d&#039;eau. J&#039;essaierai d&#039;en faire quand j&#039;aurai le temps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
En attendant voici des vidéos où on peut estimer la focale des concentrateurs et voir des planches commencer un processus de combustion (version parabole pour la vidéo avec le moteur stirling miniature au mois de juillet et version bout de sphere platre 80cm pour la video où le reflecteur est posé au sol au mois de novembre)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_reflecteur80.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_reflecteur1.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152017</id>
		<title>Concentrateurs solaires</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152017"/>
		<updated>2025-11-28T19:31:21Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Concentrateurs_solaires_parabole_platre.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:57,&amp;quot;top&amp;quot;:-161,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/0/0f/Concentrateurs_solaires_parabole_platre.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.80340760157276,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Fabrication de concentrateurs solaire (reflecteur+platre ouparabole de recup)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=80&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=solaire, energie, énergie, renouvelables, concentrateur, reflecteur, solaire thermique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
Initialement, j&#039;ai fabriqué des concentrateurs solaires pour essayer d&#039;entraîner un moteur stirling miniature (&amp;quot;jouet scientifique&amp;quot;) qu&#039;on appercoit sur quelques photos et vidéos et pour lequel j&#039;ai fait un autre tutoriel ici:  [[Moteur Stirling]].&lt;br /&gt;
&lt;br /&gt;
L&#039;exercice n&#039;étant pas si simple, j&#039;ai décidé d&#039;en faire un tutoriel dédié.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le moteur stirling miniature, il faut unhaut degré de concentration (2cm sur 4cm) et il est préférable d&#039;opter pour l&#039;achat de lentilles de fresnel.&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&lt;br /&gt;
fabrication à partir de récupération d&#039;une antenne parabolique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- antenne parabolique  (40cm à plusieurs metres) en recyclerie ou sur internet : 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fabrication à partir de platre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- ballon de yoga d&#039;un diametre 2x le diametre voulu pour le concentrateur&lt;br /&gt;
&lt;br /&gt;
- platre : 15kg pour reflecteur 80cm : 20€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- sable : 4 truelles pour un seau&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- colle à carreau : 4 truelles pour un seau 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- réflecteur adhésif: 20€/m2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.solarbrother.com/categorie-produit/reflecteur-solaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- super glue (20g) 5€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- scotch peinture 10€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- pied de micro 5€&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
fabrication bout de sphere en platre&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Si vous optez pour la premiere option de récupération d&#039;antenne parabolique, passez directement à l&#039;étape 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Le choix du bout de sphere platre ou de l&#039;antenne parabolique peut poser question sur la focale du  concentrateur (cf vidéos dans etape 3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
La focale est la distance au centre du concentrateur à laquelle convergent les rayons du soleil reflétés par le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
La focale des bouts de sphere est nettement réduite par rapport aux antennes paraboliques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait des tests en bout de sphere platre pour essayer d&#039;obtenir un plus haut degré de concentration solaire, mais les résultats montrent des taches solaires d&#039;à peu près la même surface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0. Mélange de platre&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
On trouve des platres dédiés pour des moulures fines. Dans le doute, prenez plusieurs variétés et mélangez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
De toute façons, on ajoute un peu de sable et de colle à carreau pour solidifier le platre et éviter qu&#039;il soit friable ou fragile une fois sec.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Melangez dans les proportions 4 truelles de colles et de sable pour un seau de platre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Mélangez à de l&#039;eau, puis étalez sur votre ballon de yoga gonflé et stabilisé.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Pour pouvoir manipuler et orienter le reflecteur, on peut utiliser un pied de micro. Malheureusement, le bout du pied de micro est difficile à coller sur du platre, donc pensez à prendre le pied de micro dans la moulure de platre pendant le sechage si vous optez pour cette solution pour orienter le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
NB: pour un concentrateur de 80cm de diametre, cest un peu trop lourd pour un pied de micro standard, pensez à verifier le dimensionnement pour que ca tienne.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Le ballon gris fait 75cm de diametre et le ballon orange 150cm de diametre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240825_140116.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241115_155751.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20240825_140915.jpg&lt;br /&gt;
|Step_Picture_03=Concentrateurs_solaires_IMG_20241115_192504.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
collage du reflecteur&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait un essai sur un petit concentrateur de 10cm de coller des bouts de mirroirs pour réfléchir les rayons du soleil mais c&#039;était assez peu concluant donc j&#039;ai laissé tomber cette idée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
On trouve du reflecteur souple adhésif chez solar brother (voir lien dans materiel) qui est assez efficace et coute 20€/m2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Il y a deux points sur lesquels etre attentifs pour coller le reflecteur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
-Il faut éviter que le reflecteur souple gondole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
-Si vous avez une moulure platre, l&#039;adhésif colle mal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
On va donc procéder en découpant des triangles avec une base assez fine pour que ca ne gondole pas en collant. Sur mes essais, pour le concentrateur de 80cm de diametre, la base du triangle fait 7cm et pour le concentrateur de 40cm de diametre 10cm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Pour que ca colle sur le platre, on aplique d&#039;abbord du scotch peinture sur toute la surface du concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Dans tous les cas, ajouter de la super glue à la surface adhésive car ca se décolle assez rapidement sinon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240827_141431.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241127_151307.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20241127_153118.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
mesure de puissance&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Pour l&#039;instant je n&#039;ai pas fait de mesure d&#039;évaporation d&#039;eau. J&#039;essaierai d&#039;en faire quand j&#039;aurai le temps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
En attendant voici des vidéos où on peut estimer la focale des concentrateurs et voir des planches commencer un processus de combustion (version parabole pour la vidéo avec le moteur stirling miniature au mois de juillet et version bout de sphere platre 80cm pour la video où le reflecteur est posé au sol au mois de novembre)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_reflecteur80.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_reflecteur1.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152014</id>
		<title>Concentrateurs solaires</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=152014"/>
		<updated>2025-11-28T19:29:43Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Concentrateurs_solaires_parabole_platre.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:57,&amp;quot;top&amp;quot;:-161,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/0/0f/Concentrateurs_solaires_parabole_platre.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.80340760157276,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Fabrication de concentrateurs solaire (reflecteur+platre ouparabole de recup)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=80&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=solaire, energie, énergie, renouvelables, concentrateur, reflecteur, solaire thermique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&lt;br /&gt;
Initialement, j&#039;ai fabriqué des concentrateurs solaires pour essayer d&#039;entraîner un moteur stirling miniature (&amp;quot;jouet scientifique&amp;quot;) qu&#039;on appercoit sur quelques photos et vidéos et pour lequel j&#039;ai fait un autre tutoriel ici:  [[Moteur Stirling]].&lt;br /&gt;
&lt;br /&gt;
L&#039;exercice n&#039;étant pas si simple, j&#039;ai décidé d&#039;en faire un tutoriel dédié.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le moteur stirling miniature, il faut unhaut degré de concentration (2cm sur 4cm) et il est préférable d&#039;opter pour l&#039;achat de lentilles de fresnel.&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
fabrication à partir de récupération d&#039;une antenne parabolique&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
- antenne parabolique  (40cm à plusieurs metres) en recyclerie ou sur internet : 10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
fabrication à partir de platre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
- ballon de yoga d&#039;un diametre 2x le diametre voulu pour le concentrateur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
- platre : 15kg pour reflecteur 80cm : 20€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
- sable : 4 truelles pour un seau&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
- colle à carreau : 4 truelles pour un seau 10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
- réflecteur adhésif: 20€/m2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
https://www.solarbrother.com/categorie-produit/reflecteur-solaire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
- super glue (20g) 5€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
- scotch peinture 10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
- pied de micro 5€&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
fabrication bout de sphere en platre&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Si vous optez pour la premiere option de récupération d&#039;antenne parabolique, passez directement à l&#039;étape 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Le choix du bout de sphere platre ou de l&#039;antenne parabolique peut poser question sur la focale du  concentrateur (cf vidéos dans etape 3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
La focale est la distance au centre du concentrateur à laquelle convergent les rayons du soleil reflétés par le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
La focale des bouts de sphere est nettement réduite par rapport aux antennes paraboliques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait des tests en bout de sphere platre pour essayer d&#039;obtenir un plus haut degré de concentration solaire, mais les résultats montrent des taches solaires d&#039;à peu près la même surface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0. Mélange de platre&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
On trouve des platres dédiés pour des moulures fines. Dans le doute, prenez plusieurs variétés et mélangez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
De toute façons, on ajoute un peu de sable et de colle à carreau pour solidifier le platre et éviter qu&#039;il soit friable ou fragile une fois sec.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Melangez dans les proportions 4 truelles de colles et de sable pour un seau de platre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Mélangez à de l&#039;eau, puis étalez sur votre ballon de yoga gonflé et stabilisé.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Pour pouvoir manipuler et orienter le reflecteur, on peut utiliser un pied de micro. Malheureusement, le bout du pied de micro est difficile à coller sur du platre, donc pensez à prendre le pied de micro dans la moulure de platre pendant le sechage si vous optez pour cette solution pour orienter le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
NB: pour un concentrateur de 80cm de diametre, cest un peu trop lourd pour un pied de micro standard, pensez à verifier le dimensionnement pour que ca tienne.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Le ballon gris fait 75cm de diametre et le ballon orange 150cm de diametre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240825_140116.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241115_155751.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20240825_140915.jpg&lt;br /&gt;
|Step_Picture_03=Concentrateurs_solaires_IMG_20241115_192504.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
collage du reflecteur&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait un essai sur un petit concentrateur de 10cm de coller des bouts de mirroirs pour réfléchir les rayons du soleil mais c&#039;était assez peu concluant donc j&#039;ai laissé tomber cette idée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
On trouve du reflecteur souple adhésif chez solar brother (voir lien dans materiel) qui est assez efficace et coute 20€/m2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Il y a deux points sur lesquels etre attentifs pour coller le reflecteur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
-Il faut éviter que le reflecteur souple gondole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
-Si vous avez une moulure platre, l&#039;adhésif colle mal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
On va donc procéder en découpant des triangles avec une base assez fine pour que ca ne gondole pas en collant. Sur mes essais, pour le concentrateur de 80cm de diametre, la base du triangle fait 7cm et pour le concentrateur de 40cm de diametre 10cm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Pour que ca colle sur le platre, on aplique d&#039;abbord du scotch peinture sur toute la surface du concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Dans tous les cas, ajouter de la super glue à la surface adhésive car ca se décolle assez rapidement sinon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240827_141431.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241127_151307.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20241127_153118.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
mesure de puissance&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Pour l&#039;instant je n&#039;ai pas fait de mesure d&#039;évaporation d&#039;eau. J&#039;essaierai d&#039;en faire quand j&#039;aurai le temps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
En attendant voici des vidéos où on peut estimer la focale des concentrateurs et voir des planches commencer un processus de combustion (version parabole pour la vidéo avec le moteur stirling miniature au mois de juillet et version bout de sphere platre 80cm pour la video où le reflecteur est posé au sol au mois de novembre)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_reflecteur80.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_reflecteur1.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=152013</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=152013"/>
		<updated>2025-11-28T19:11:55Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
&lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd par exemple un jerricane de 10L).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure) ou par la poignée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_jerricane_ref.png&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_objet_plancher.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Couper_du_bois_pesee_plancher.png&lt;br /&gt;
|Step_Picture_02=Couper_du_bois_pesee_plancher_ref.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 10kg pour l’objet 1, on a donc m2= 10 x d1/d2&lt;br /&gt;
&lt;br /&gt;
Pour le plancher (photos) : on a m2 = 10 x 84 / 18 = 47 kg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: ici, on fait une pesée dont la précision est peu importante (on veut un ordre de grandeur), mais si on veut plus de précision, il faut améliorer l&#039;attache de la corde (on voit sur la photo une imprécision de 3cm sur une longueur d2 de 18cm et une imprécision de 3,5 cm sur une longueur d1 de 84cm, soit 16% de marge d&#039;erreur dans la mesure pour d1, ce qui est trop important et 4% pour la mesure de d2). &lt;br /&gt;
&lt;br /&gt;
Pour améliorer cela, on peut faire la tare avec un poids sur le bras court et peser ensuite avec le crochet en mesurant précisément sa distance à l&#039;axe (ie une imprecision de mesure inférieure à 3,2 mm)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Moteur_Stirling&amp;diff=152010</id>
		<title>Moteur Stirling</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Moteur_Stirling&amp;diff=152010"/>
		<updated>2025-11-28T19:07:24Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Moteur_Stirling_IMG_20240723_173819.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:40,&amp;quot;top&amp;quot;:-111,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/8/8d/Moteur_Stirling_IMG_20240723_173819.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450.20576131687244,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Des trucs sur les moteurs stirlings&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Research&lt;br /&gt;
|Difficulty=Hard&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=day(s)&lt;br /&gt;
|Cost=50&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=stirling, solaire, energie, moteur&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
revue de la litterature web&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_Stirling_moteur_air_chaud.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_Moteur_thermique_fait_maison.mp4&lt;br /&gt;
|Step_Picture_02=Moteur_Stirling_TUTO_INCROYABLE_MOTEUR_STIRLING_AMAZING_STIRLING_ENGINE_THE_LAST_EPISODE_S1_Ep7_.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
la puissance des jouets&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_fonctionnement_lampe.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_bougie.mp4&lt;br /&gt;
|Step_Picture_02=Moteur_Stirling_source_chaleur.mp4&lt;br /&gt;
|Step_Picture_03=Moteur_Stirling_bouillir_bougie.mp4&lt;br /&gt;
|Step_Picture_04=Moteur_Stirling_tachy2.mp4&lt;br /&gt;
|Step_Picture_05=Moteur_Stirling_00023.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Verification vitesse de rotation avec analyse video&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
faire tourner le moteur avec une source solaire&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_relfecteurs.jpg&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_IMG_20240723_173819.jpg&lt;br /&gt;
|Step_Picture_02=Moteur_Stirling_IMG_20240723_173838.jpg&lt;br /&gt;
|Step_Picture_03=Moteur_Stirling_IMG_20240827_152419.jpg&lt;br /&gt;
|Step_Picture_04=Moteur_Stirling_reflecteur80.mp4&lt;br /&gt;
|Step_Picture_05=Moteur_Stirling_stirling_fresnel350mm.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
optimiser et fabriquer un recepteur solaire mobile&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
a vous&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Dimensionner_une_installation_photovolta%C3%AFque_autonome&amp;diff=152009</id>
		<title>Dimensionner une installation photovoltaïque autonome</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Dimensionner_une_installation_photovolta%C3%AFque_autonome&amp;diff=152009"/>
		<updated>2025-11-28T19:07:04Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Dimensionner_une_installation_photovolta_que_autonome_P1090053.JPG&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:0,&amp;quot;top&amp;quot;:3,&amp;quot;width&amp;quot;:4592,&amp;quot;height&amp;quot;:3448,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.13,&amp;quot;scaleY&amp;quot;:0.13,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/8/8c/Dimensionner_une_installation_photovolta_que_autonome_P1090053.JPG&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.5601173020528,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Outils pour dimensionner une installation photovoltaïque hors réseau&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=0&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=photovoltaïque, off-grid, hors-réseau, dimensionnement&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
La plupart des installations photovoltaïques sont aujourd&#039;hui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
branchées sur le réseau électrique erdf/enedis, que ce soit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
sur des formules commerciales dites en &amp;quot;injection du surplus&amp;quot;, ou&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
en &amp;quot;injection totale&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Avec les vieux compteurs, il est encore possible de&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;quot;faire tourner à l&#039;envers&amp;quot; le compteur electrique lorsque&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
les panneaux produisent (un peu comme si linky soustrayait&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
de votre consommation ce que vos panneaux produisent quelle que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
soit l&#039;heure à laquelle la production a lieu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Le recours au réseau électrique est très pratique car cela évite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
le besoin de stocker l&#039;électricité produite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Cependant, que ce soit pour des raisons d&#039;évolution sociétale (laissons nous&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
le droit de rêver à autre modèle urbanistique où les sites autonomes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
écologiques sans besoins d&#039;infrastructures sont encouragés), pour&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
des raisons de contraintes naturelles, ou par choix, on peut souhaiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
être indépendant des réseaux, 100% autonome en énergie électrique&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
J&#039;ai initialement fait un petit bout de code pour dimensionner correctement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
en réseau autonome un mobilhome que je souhaitais rendre autonome,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
puis pour brancher un frigo et un congélateur (qui nécessitent un&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
approvisionnement relativement constant, c&#039;est à dire sans coupure)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
L&#039;ines propose déjà des outils ici:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
http://ines.solaire.free.fr/pvisole_1.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
et ici:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
https://autocalsol.ines-solaire.org/etude/localisation/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Cependant, les hypothèses sont à 1kWh produit par kWc en hiver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
pour le premier lien et on n&#039;a que des moyennes pour le second lien.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
En outre, on n&#039;a pas de possibilité de &amp;quot;data-tester&amp;quot; le nombre de jours de&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
blackout selon le dimensionnement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Ce tuto permet donc de dimensionner en &amp;quot;data-testant&amp;quot;, c&#039;est à dire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
avec des hypothèses de production en hiver au jour le jour,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
moins &amp;quot;moyénée&amp;quot;, et permet aussi de tester des dimensionnement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
plus économes en capacité de batterie (qui coutent encore cher en 2024).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Compte tenu du nombre de brevets déposés dans le domaine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
du stockage électrique des 15 dernieres années, et compte tenu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
des évolutions géopolitiques au sein des brics, il est probable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
qu&#039;on aboutisse à des coûts de stockage nettement diminués&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
dans les prochaines années et l&#039;algorithme pour optimiser&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
le dimensionnement au stockage au plus juste sera peut&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
être moins pertinent économiquement parlant dans les années&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
à venir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Mais un stockage à très bas coût remettrait très fortement en question&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
le système pétro dollar, donc on a sans doute le temps de voir venir ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
Dans tous les cas, les batteries usagées produisant pas mal de&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
déchet, cela reste intéressant d&#039;avoir ce bout de logique pour&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
dimensionner au plus juste et etre dans une optique low-tech&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
en évitant le surdimensionnement lorsqu&#039;on peut se permettre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
de rares épisodes sans électricité.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Démo web interactive ici:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
https://vpn.matangi.dev/sun&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tuto_Attachments={{Tuto Attachments&lt;br /&gt;
|Attachment=Dimensionner_une_installation_photovolta_que_autonome_jrc_a_u_t_o_n_o_m_i_e.ods&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
évaluer les besoins&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Il s&#039;agit dans un premier temps d&#039;estimer votre consommation électrique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
Pour cela, il convient de prendre en compte les bonnes échelles temporelles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
consommation moyenne d&#039;une part, mais aussi les variations journalières (la consommation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
selon l&#039;heure de la journée) et saisonnières (la consommation en hiver et en été).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Cet exercice est intéressant à la fois pour dimensionner adéquatement la production,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
mais aussi pour penser comment réduire sa consommation. Par exemple, il est aberrant de chauffer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
avec des radiateurs éléctriques si votre source d&#039;énergie est uniquement photovoltaïque.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Un autre exemple est le chauffe-eau électrique qui consomme des quantités conséquentes d&#039;énergie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
qui sont relativement linéaires du nombres de douches chaudes que vous prenez et&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
qui peuvent interroger la source d&#039;énergie pertinente pour chauffer votre eau ou le nombre de douches&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
pertinents pour une production non fossile (on pourra utilement s&#039;interroger sur l&#039;opportunité de&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
basculer sur une source d&#039;énergie solaire thermique et/ou chauffer au bois ou au biogaz)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
NB: pour une douche de 10min à 40°C, il faut environ 3kWh, soit environ le biomethane générable par les fientes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
journalieres d&#039;une centaine de poules (en ordre de grandeur)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
Pour mesurer votre consommation, vous pouvez utiliser votre compteur electrique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
Vous pouvez ainsi mesurer votre consommation journalière mais aussi la consommation horaire de chaque&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
appareil électrique (le plus simple étant d&#039;enlever le fusible au compteur de tous les appareils&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
électriques qu&#039;on veut sortir de la mesure).&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
dimensionner le stockage&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
En site autonome, le chemin des électrons produits par les panneaux photovoltaïque est celui qui va&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
à la moindre résistance. Ainsi, si les électrons doivent &amp;quot;choisir&amp;quot; entre une appareil électrique en fonctionnement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
et les batteries, ils iront alimenter l&#039;appareil branché.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
Cette considération peut être importante si vous avez une consommation électrique importante en journée (lorsque les panneaux produisent),&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
mais dans la plupart des cas, les variations de production journalière et la différence horaire entre la production et&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
la consommation font qu&#039;on dimensionne les batteries sur le besoin journalier maximum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
Exemple: besoin journalier de 4kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
On prend le pourcentage maximum de décharge accepté par les batteries selon la technologie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
utilisée. Par exemple 80% pour des batteries lithium.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
Exemple: (besoin journalier)/(pourcentage decharge max)=(4)/(0,8)=5kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
NB: les capacités des batteries sont souvent exprimées en Ah. Pour obtenir les Ah à partir de la capacité&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
en kWh, simplement diviser les Wh par la tension aux bornes de vos batteries. Par exemple en 24V:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
500Wh/24V=208Ah&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
Pour dimensionner le stockage correctement en fonction du besoin journalier maximum, on va ensuite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
chercher à savoir combien de jours sans soleil le stockage doit pouvoir tenir vos besoins journaliers maximum&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
Pour trouver le nombre de jours maximum sans soleil, vous pouvez soit mesurer vous même l&#039;ensoleillement (se reporter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
à mon autre tuto ici : [[Mesure de l&#039;ensoleillement-luminosité avec un ordinateur monocarte (raspberry-orangepi)]],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
soit utiliser les données téléchargeable de la modélisation jrc européenne pvgis qui font référence (attention, il s&#039;agit d&#039;une modélisation,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Modif 27/02: apres verification, il s&#039;agit de données satellites horaires mondiales donc des données empiriques en entrée nottamment pour les nuages mais les hypothèses du modele sur la quantité d&#039;irradiation qui passe à traver les nuages sont peu explicitées, voir https://joint-research-centre.ec.europa.eu/photovoltaic-geographical-information-system-pvgis/getting-started-pvgis/pvgis-data-sources-calculation-methods_en?prefLang=fr)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
Pour télécharger les données jrc, taper cette commande dans votre terminal linux:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget --max-redirect=10 -O output.csv &amp;quot;&amp;lt;nowiki&amp;gt;https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.203142&amp;amp;lon=0.616363&amp;amp;loss=14&amp;amp;angle=45&amp;amp;aspect=0&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
Les parametres lat= et lon= vous permettent d&#039;ajuster la latitude et la longitude à votre lieu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
startyear= et endyear= sont les bornes de début et de fin de la periode considéré (ici 15 ans entre 2005 et 2020)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
peakpower= correspond à la puissance photovoltaique en kWc (ici 1kWc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
On utilise ensuite un bout de code python/pandas pour obtenir le nombre de jours consécutifs maximum pour qu&#039;1 kWc produise 1000Wh, 2000Wh et 3000Wh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
Dans notre cas, on obtient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.1124367317425885 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.2801404603979711 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 1.4647827920708563 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Que nous disent ces chiffres?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
Que le nombre maximal de jours avec un faible ensoleillement varie de 4 à 7j selon le niveau d&#039;ensoleillement espéré.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Mais aussi que le nombre d&#039;occurences est relativement faible: 1 à 3 occurences seulement de ces épisodes avec tres tres peu de luminosité et de production sur 15 ans.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
(si vous n&#039;etes pas entierement satisfait des données modélisées au regard de votre expérience de la production photovoltaïque en fonction de la météo, et mon hypothèse est&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
que les panneaux produisent plus que ce que les données de la modélisation jrc nous donne, je vous encourage à&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
utiliser des données empiriques en utilisant mon autre tuto ici: [[Mesure de l&#039;ensoleillement-luminosité avec un ordinateur monocarte (raspberry-orangepi)]] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
Et enfin que le nombre de jours moyens pour qu&#039;un kWc de module produise 1kWh à 3kWh est compris entre 1 et 1,5 j.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
On a alors le choix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
-soit surdimensionner le stockage pour tenir 4j de besoins pour faire face à ces épisodes rares sans soleil : 20kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
-soit dimensionner le stockage pour tenir 1 à 2j et avoir une source électrique d&#039;appoint à base de groupe electrogene fossile : 5 à 10kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
pour éviter un surdimensionnement coûteux pour de très rares occasions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
-soit, si la criticité des besoins n&#039;est pas trop importante, dimensionner le stockage pour tenir 1 à 2j et&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
se débrouiller sans électricité lorsqu&#039;il y a des épisodes long sans soleil : 5 à 10kWh de batteries pour 4kWh de besoins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
-(ou jouer sur l&#039;augmentation du dimensionnement de la production -le kWh produit étant tres nettement moins cher que le kWh stocké en 2024 - dans l&#039;étape suivante pour tout recharger dès le premier jour de soleil suivant les episodes peu ensoleillés)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
Nous somme en mai 2024, et on sort juste du consensus informel industriel à 1€/Wh pour les batteries &amp;quot;performantes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
Si vous voulez dimensionner votre stockage &amp;quot;à l&#039;échelle&amp;quot; après avoir réduit vos besoins électriques, le mieux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
est encore de faire de la récupération de batterie de voitures.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
Voir photos issus de l&#039;atelier lowtech de l&#039;astrolab pour de la récupération de batterie de voiture lithium ion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
En mai 2024, on s&#039;en tire à 3k€ pour 14kWh.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
Il est encore difficile de se passer de BMS à cause des normes sécuritaires,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
mais on peut en trouver sur aliexpress (voir photo pour les references).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_163416.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_202913.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_202927.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_une_installation_photovolta_que_autonome_IMG-20240513-WA0011.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240510_170834.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_une_installation_photovolta_que_autonome_IMG_20240511_102229.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
dimensionner la production&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
On suppose qu&#039;on dimensionne les batteries à 10kWh pour 4kWh de besoin -soit 2j d&#039;autonomie-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
On peut dimensionner la production de plusieurs façon:&lt;br /&gt;
1. De façon à ce que les batteries soient entièrement rechargées sur un intervalle moyen en décembre/janvier (les mois les moins ensoleillés de l&#039;année)&lt;br /&gt;
2. De façon à ce que les batteries soient entièrement rechargées en un jour d&#039;ensoleillement &amp;quot;moyéné&amp;quot; en décembre/janvier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
On notera que le dimensionnement calé sur les mois d&#039;hiver permet de produire suffisamment pour subvenir aux besoin toute l&#039;année, mais &lt;br /&gt;
entraine une surproduction d&#039;énergie en été qu&#039;il serait utile de récupérer (par exemple en hydrolisant de l&#039;eau pour produire de l&#039;hydrogene puis en transformant&lt;br /&gt;
l&#039;hydrogene en méthane, cf scenario negawatt 2011) notamment si ce type d&#039;installation venait à se généraliser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
On va réutiliser le bout de code précédent et l&#039;adapter pour trouver les memes statistiques que précédemment mais uniquemnet en comptant les mois &lt;br /&gt;
de décembre et janvier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
dec_jan_data = daily_data[(daily_data.index.month == 12) &amp;lt;span&amp;gt;&amp;amp;#124;&amp;lt;/span&amp;gt; (daily_data.index.month == 1)]&lt;br /&gt;
print(&amp;quot;Production moyenne journalière en janvier et décembre&amp;quot;)&lt;br /&gt;
print(str(dec_jan_data[&#039;P&#039;].mean()/1000)+&amp;quot; kWh&amp;quot;)&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in dec_jan_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
Dans notre cas, on obtient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
Production moyenne journalière en janvier et décembre&lt;br /&gt;
1.9924362701612903 kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.3539192399049882 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.8022598870056497 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 2.263157894736842 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
1. En dimensionnant sur l&#039;intervalle moyen d&#039;1kWh: 1kWc produit en moyenne 1kWh en 1,35j, soit 0,74kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/0,74=13,5kWc&lt;br /&gt;
En dimensionnant sur l&#039;intervalle moyen de 2kWh: 1kWc produit en moyenne 2kWh en 1,8j, soit 1,11kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/1,11=9kWc&lt;br /&gt;
En dimensionnant sur l&#039;intervalle moyen de 3kWh: 1kWc produit en moyenne 3kWh en 2,26j, soit 1,33kWh ramené sur un intervale d&#039;un jour, soit une production de 10kWh/1,33=7,5kWc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
2. En dimensionnant sur un jour moyéné, 1kWc produit en moyenne 1,99kWh par jour, soit un besoin de 10kWh/1,99=5kWc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
On remarque que les données de références de l&#039;ines pour la production d&#039;1kWc en décembre correspondent à 1kWc===1kWh environ.&lt;br /&gt;
(https://autocalsol.ines-solaire.org/etude/localisation/ et http://ines.solaire.free.fr/pvisole_1.php pour site isolés)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
On peut ici parler d&#039;hypothèses plus ou moins &amp;quot;conservatrices&amp;quot;, c&#039;est à dire d&#039;hypothèses plus ou moins &amp;quot;prudentes&amp;quot;, afin d&#039;avoir des batteries toujours rechargées en hiver.&lt;br /&gt;
On remarquera que quelles que soit l&#039;hypothèse retenue pour satisfaire les besoins de façon continue, y compris en hiver, on se retrouvera avec des surproductions importantes en été. &lt;br /&gt;
Il est alors judicieux d&#039;utiliser des systèmes de récupération de la surproduction en l&#039;absence de réseau dans lequel on peut injecter le surplus (par exemple en hydrolisant de l&#039;eau pour produire de l&#039;hydrogene puis en transformant&lt;br /&gt;
l&#039;hydrogene en méthane, cf scenario negawatt 2011).&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
dimensionner le régulateur de charge&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
rappel de base: branchement en série (+ sur - et + sur -) on ajoute le voltage et on garde le meme amperage, branchement en paralelle (+ sur +, - sur -) on ajoute l&#039;amperage et on garde le meme voltage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
idem pour les batteries: à mettre en paralelle pour garder la meme tension (voltage)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
La première problématique du photovoltaïque lowtech autonome est le dimensionnement de l&#039;installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
Vous pouvez utiliser la feuille libreoffice en piece jointe en haut de ce tutoriel pour du dimensionnement &amp;quot;bricolé&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
Les étapes précédentes ont permis de calculer à partir du modèle jrc la taille de la batterie et la production moyenne en hiver d&#039;un kWc .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:296--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
Vous pouvez lire les caractéristiques des panneaux qu&#039;on vous a donné ou trouvés sur leboncoin à pas cher:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
-puissance crete: elles s&#039;aditionnent pour obtenir la puissance nécessaire trouvée lors de la phase de dimensionnement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
-tension : 12V,24V ou 48V. voir regles série/paralelle pour leur additions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
-intensité: variable selon les modèles mais souvent inferieure à 10A. voir regles série/paralelle pour leur additions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
Pour recharger des batteries, en principe, si vous connectez votre panneaux en direct sur une batterie, il suffit que la tension à la sortie de vos panneaux soit la même que celles de vos batter  ie, et ca devrait charger.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
Il y a un composant important à retenir pour charger correctement vos batteries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
le regulateur ou controleur de charge (nb: generalement, les onduleurs dits &amp;quot;hybrides&amp;quot;, cad avec une sortie batterie et une sortie reseau, integrent un regulateur de charge, le plus souvent mppt, qui conditionne les specifications des batteries qu&#039;on peut lui brancher)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
il en existe de trois sortes: les tor (tout ou rien) les mppt (Maximum power point tracking) et les pwm (Pulse Width Modulation)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
Ils sont composés d&#039;un adaptateur DC/DC (courant continu vers courant continu) et d&#039;un coupe circuit. Le mppt comprend également un adaptateur d&#039;impédence (il a une résistance pour adapter l&#039;amperage injecté dans la batterie). Les mppt accepte des puissances nominales plus élevées, cad des tensions et intensité plus élevées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
Le régulateur ou controleur de charge permet principalement de couper le circuit quand la batterie est rechargée en surveillant la tension et l&#039;intensité de charge. Il coupe le circuit si leurs valeurs dépassent les intervalles de référence (pour cela le regulateur arrete la charge temporairement et mesure la tension aux bornes des batteries).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
Le mppt a un &amp;quot;algorithme&amp;quot; électronique intégré qui va chercher le point de puissance optimal grace a son adaptateur de resistance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
Si vous connectez plusieurs panneaux et plusieurs batteries, il est recommandé d&#039;avoir un regulateur pour couper la charge correctement lorsque la batterie est chargée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
Les tensions de charge de référence sont 12V,24V et 48V.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
Cependant, les prix des modèles augmentent avec la puissance nominales (qui va dépendre de l&#039;amperage) qu&#039;ils acceptent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
Pour limiter l&#039;intensité du courant de la production photovoltaïque, il est plus judicieux d&#039;utiliser des panneaux de plus forte puissance qui sont généralement à des tensions plus élevées&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
(rappel P=U*I,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
rappel E=P*t se conserve dans un systeme fermé).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
note: si le systeme de stockage par batterie ou l&#039;appareil connecté à vos panneaux n&#039;absorbe pas toute la puissance produite, et si le régulateur de charge ne coupe pas le circuit, le reste sera dégagé en chaleur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
L&#039;amperage va aussi dependre de la capacité de stockage de vos batteries, dimensionnées pour couvrir vos besoins pendant une periode définie au dimensionnement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
Le courant de charge est calculé en divisant par 4 ou 5 la capacité nominale de la batterie exprimée en Ah qui devrait alors se recharger en 4 ou 5h. Cependant une batterie se rechargera aussi avec un courant de charge de la capacité nominale de la batterie divisée par 20 mais plus lentement (en 20h).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
Pour dimensionner correctement le regulateur de charge on peut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
-soit monter tous les panneaux en série (ce qui fait fortement augmenter la tension et il faudra peut etre un transfo ensuite pour trouver un regulateur qui accepte cette tension)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
-soit monter tous les panneaux en paralelle (ce qui fait fortement augmenter l&#039;intensité)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
-soit monter les panneaux en serie/parelle pour ajuster tension et intensité aux caractéristiques de votre régulateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
Il y a enfin un dernier point sur lequel être attentif: le déclenchement de la recharge de la batterie par le regulateur/controleur de charge (qui déclenche quand la tension de la batterie diminue en dessous d&#039;un certain seuil).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
En effet, si la puissance soutirée à la batterie est trop faible, il est possible que le temps nécessaire à la décharger avec votre consommation journalière pour déclencher la recharge dans le régulateur dépasse le temps d&#039;ensoleillement journalier. La batterie ne se recharge alors pas du tout pendant la journée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
Dans ce cas, votre batterie ne se rechargera qu&#039;un jour sur deux ou sur trois (selon le seuil de déclenchement de la recharge du regulateur).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
C&#039;est un paramètre à prendre en compte dans le dimensionnement (non inclus dans la feuille de calcul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
Le régulateur a 3 phases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
bulk: le regulateur laisse passer le courant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
floating: le regulateur alterne interupteur fermée et ouvert à une fréquence donnée pour maintenir la batterie chargée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:195--&amp;gt;&lt;br /&gt;
En outre il faut prendre des précautions car la charge des batteries présente certains risques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:196--&amp;gt;&lt;br /&gt;
absorption (pour les mppt): la tension de charge augmente un peu pour créer une difference de potentiel suffisante pour continuer à charger la batterie presque pleine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
En théorie le courant de charge diminue lorsque la batterie est presque rechargée (courant de queue etc.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
La charge de batteries en paralelle ou en série sur des batteries usagées qui n&#039;ont pas les mêmes tensions ou intensité présente en théorie des risques. En effet vous lirez un peu partout que la résistance des fils pour relier ces batteries&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:199--&amp;gt;&lt;br /&gt;
créee des différences de potentiels entre les batteries qui produisent des décharges d&#039;une batterie envers une autre etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
créant des risques d&#039;explosion, de degazage pour les batteries plomb etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:201--&amp;gt;&lt;br /&gt;
Il faut bien se rapeller que les batteries sont des assemblages de composants unitaires de faible tension mis en séries et en paralelle pour obtenir un générateur de l&#039;intensité et la tension voulue et qu&#039;à priori faire de même avec des batterie entiere ne présente pas vraiment de risques..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:202--&amp;gt;&lt;br /&gt;
On parle souvent de &amp;quot;battery management system&amp;quot; (bms) &amp;quot;intégré&amp;quot; pour les batteries lithium ion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:203--&amp;gt;&lt;br /&gt;
En réalité le régulateur de charge est déjà un &amp;quot;bms&amp;quot;. En théorie, le bms intégré s&#039;assure que les tensions et les intensités de chaque unité composant la batterie est la même et la rééquilibre au besoin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:204--&amp;gt;&lt;br /&gt;
On peut bien sûr s&#039;interroger si tout ceci n&#039;est pas une façon de rendre le stockage de l&#039;énergie plus cher avec des composants BMS artificiellement chers et si ce n&#039;est pas une façon d&#039;éviter de réutiliser des unités de batteries usagées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
Il est par exemple étonnant qu&#039;il n&#039;existe pas de BMS pour rééquilibrer automatiquement des batteries plomb acide, ce qui rendrait utilisable toutes les batteries mises au rebut de l&#039;industrie automobile pour stocker l&#039;énergie photovoltaïque sans risque!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:206--&amp;gt;&lt;br /&gt;
Dans tous les cas, si vous réutilisez des batteries au plomb, utilisez un régulateur pour éviter de continuer à charger vos batteries rechargées (risques de production d&#039;hydrogene) -ou si vous n&#039;en utilisez pas dimensionnez avec beaucoup de soin-, évitez les décharges profondes, et maintenez les batteries à une temperature constante autant que possible.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
Optimiser le dimensionnement&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:208--&amp;gt;&lt;br /&gt;
On va maintenant utiliser un bout de code python pour itérer (un peu sur le principe &lt;br /&gt;
d&#039;essais et erreurs) en augmentant progressivement la puissance des modules, la &lt;br /&gt;
capacité de la batterie, et le nombre de jours de blackout admissibles et en &lt;br /&gt;
testant au jour le jour le résultat stockage - consommation electrique + production&lt;br /&gt;
sur les données jrc précédemment téléchargées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
Explications : &lt;br /&gt;
Le code est commenté pour expliquer ce qui est fait et les noms des variables&lt;br /&gt;
sont relativement explicites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
Pour la boucle d&#039;itération: &lt;br /&gt;
On démarre à puissance0=(consommation journaliere)/2 (hypothese hiver 1 kWc produit 2kWh en moyenne) &lt;br /&gt;
On démarre à batterie0=consommation journaliere/0,8 au lithium et consommation journaliere/0,5 au plomb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
On itere 14 fois les puissances par pas de 1/3*puissance0 kWc&lt;br /&gt;
On itere 40 fois les capacités de batterie par pas de 1/2*batterie0 kWh&lt;br /&gt;
On itere 20 fois les jours admissibles de blackout par pas de 1j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:212--&amp;gt;&lt;br /&gt;
On demarre à batterie pleine et on teste chaque jour si le stock d&#039;électricité dans la batterie moins &lt;br /&gt;
la consommation plus la production photovoltaique aboutit à un blackout ou permet de subvenir à la &lt;br /&gt;
consommation journaliere. S&#039;il y a black out, on arrete la boucle au bout du nombre de jours consécutifs &lt;br /&gt;
admissibles de black out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Pré-requis logiciels:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
Pour utiliser python sous un autre os que linux, débrouillez vous avec vos daubes propriétaires intrusives.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
Sous linux, python est généralement installé et pour utiliser le code partagé dans &lt;br /&gt;
ce tuto, il suffira de copier coller le code dans un fichier processing.py puis entrer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
python processing.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
Cependant, il faut installer la librairie pandas qui est très largement utilisé &lt;br /&gt;
dans le monde de la finance et dans le monde scientifique, notamment pour sa &lt;br /&gt;
gestion efficace des séries temporelles et sa capacité de vectorisation des données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
Pour cela voici les commandes à entrer dans linux debian avant de lancer le &lt;br /&gt;
script processing.py pour être tranquille:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
sudo apt install python3 python3-venv python3-pip python-is-python3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:223--&amp;gt;&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; python -m venv venv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:225--&amp;gt;&lt;br /&gt;
pip install pandas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
Penser ensuite à activer l&#039;environnement virtuel dans lequel est installé &lt;br /&gt;
pandas chaque fois que vous utilisez le script (apres un reboot ou si vous &lt;br /&gt;
fermez et reouvrez votre terminal) en lançant la commande:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:229--&amp;gt;&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:230--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:231--&amp;gt;&lt;br /&gt;
Nous sommes en 2024 et si vous êtes cibles d&#039;entraves anti éco-terroristes &lt;br /&gt;
de psychopathes comme moi, et en bon scientifique qui se respecte vous &lt;br /&gt;
inspectez vos instruments de mesures avant de les utiliser, vous pouvez &lt;br /&gt;
inspectez le code source de pandas qui est évidemment logiciel libre ici : &lt;br /&gt;
https://github.com/pandas-dev/pandas , ou vous pouvez faire l&#039;hypothèse &lt;br /&gt;
discutable qu&#039;on peut avoir confiance dans un logiciel aussi massivement &lt;br /&gt;
utilisé dans le monde de la finance et de la science.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
Python reposant sur des librairies C pour un certains nombres d&#039;opérations &lt;br /&gt;
de base, le hack, y compris le hack scientifique, n&#039;est jamais impossible &lt;br /&gt;
mais on laissera de coté ces considérations pro-lowtech qui n&#039;entrent pas &lt;br /&gt;
dans le champ de réflexion de ce tutoriel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;bout de code: (update 8.4.24: ajout commentaires, input angle&amp;amp;orientation&amp;amp;% decharge batterie)&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import sys&lt;br /&gt;
import os&lt;br /&gt;
import math&lt;br /&gt;
import time&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la latitude et la longitude&lt;br /&gt;
x_input = input(&amp;quot;Entrez la latitude de votre lieux: &amp;quot;)&lt;br /&gt;
y_input = input(&amp;quot;Entrez la longitude de votre lieux: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
x_input = float(x_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
y_input = float(y_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:236--&amp;gt;&lt;br /&gt;
#Entrer l&#039;orientation de votre lieu&lt;br /&gt;
aspect_input=input(&amp;quot;Entrer l&#039;orientation de votre lieux (est,ouest,nord,sud)&amp;quot;)&lt;br /&gt;
dictaspect={&#039;est&#039;:-90,&#039;ouest&#039;:90,&#039;nord&#039;:180,&#039;sud&#039;:0}&lt;br /&gt;
if aspect_input in dictaspect:&lt;br /&gt;
    aspect=dictaspect[aspect_input]&lt;br /&gt;
else:&lt;br /&gt;
    aspect=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
#Entrer l&#039;angle des modules&lt;br /&gt;
angle_input=input(&amp;quot;Entre l&#039;angle des modules en °&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    angle=float(angle_input)&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&#039;{err} error, angle utilisé: 45°&#039;)&lt;br /&gt;
    angle=45&lt;br /&gt;
    &lt;br /&gt;
# Telecharger les données&lt;br /&gt;
try:&lt;br /&gt;
    os.system(f&#039;wget --max-redirect=10 -O output.csv &amp;quot;https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat={x_input}&amp;amp;lon={y_input}&amp;amp;loss=14&amp;amp;angle={angle}&amp;amp;aspect={aspect}&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&amp;quot;&#039;)&lt;br /&gt;
except:&lt;br /&gt;
    print(&amp;quot;les données n&#039;ont pas pu être téléchargée, exiting&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
df = pd.read_csv(&#039;output.csv&#039;, skiprows=10, skipfooter=11, sep=&#039;,&#039;, engine=&#039;python&#039;)&lt;br /&gt;
df[&#039;time&#039;]=df[&#039;time&#039;].astype(str)&lt;br /&gt;
df[&#039;time&#039;]=pd.to_datetime(df[&#039;time&#039;],format=&amp;quot;%Y%m%d:%H%M&amp;quot;)&lt;br /&gt;
df=df.set_index(&#039;time&#039;)&lt;br /&gt;
daily_data = df.resample(&#039;D&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=1000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:240--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=2000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:241--&amp;gt;&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
current_sum=0&lt;br /&gt;
target=3000&lt;br /&gt;
streaks=[]&lt;br /&gt;
for value in daily_data[&#039;P&#039;]:&lt;br /&gt;
    if current_sum &amp;lt;= target:&lt;br /&gt;
        current_sum+=value&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        streaks.append(current_streak)&lt;br /&gt;
        current_sum=0&lt;br /&gt;
        current_streak=0&lt;br /&gt;
print(&amp;quot;\n&amp;quot;)&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(max_streak)+&amp;quot; j&amp;quot;)&lt;br /&gt;
print(&amp;quot;nombre d&#039;occurences: &amp;quot;+ str(streaks.count(max_streak)))&lt;br /&gt;
print(&amp;quot;nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: &amp;quot;+str(sum(streaks)/len(streaks))+&amp;quot; j&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
daily_data[&#039;P&#039;]=daily_data[&#039;P&#039;]/1000&lt;br /&gt;
#Production d&#039;un kWh à partir des data jrc:&lt;br /&gt;
resultday=daily_data[&#039;P&#039;].resample(&#039;D&#039;).sum()&lt;br /&gt;
resultday.index=pd.to_datetime(resultday.index,format=&amp;quot;%Y%m%d&amp;quot;)&lt;br /&gt;
print(&amp;quot;\nProduction moyenne par jour (kWh):\n&amp;quot;, resultday.mean())&lt;br /&gt;
print(&amp;quot;Production minimum par jour (kWh):\n&amp;quot;, resultday.min())&lt;br /&gt;
print(&amp;quot;Production maximum par jour  (kWh):\n&amp;quot;, resultday.max())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:243--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par semaine&lt;br /&gt;
resultweek=daily_data[&#039;P&#039;].resample(&#039;W&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par mois&lt;br /&gt;
resultmonth=daily_data[&#039;P&#039;].resample(&#039;M&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:245--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par trimestre&lt;br /&gt;
resulttrim=resultday.resample(&#039;Q&#039;).sum()&lt;br /&gt;
resulttrim=resulttrim.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
print(&amp;quot;\nProduction par trimestre (kWh):\n&amp;quot;,resulttrim.to_string())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:246--&amp;gt;&lt;br /&gt;
# Calculer les sommes de production par an&lt;br /&gt;
resultyear=daily_data[&#039;P&#039;].resample(&#039;Y&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nProduction annuelle moyennes d&#039;1kWc (kWh):\n&amp;quot;,resultyear.mean())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
# Calculer le nombre de jours consécutifs maximum sans production&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
for value in resultday:&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        current_streak = 0  # Reset the streak if the value is not zero&lt;br /&gt;
print(f&amp;quot;\nNombre de jours consecutifs maximum à production 0: {max_streak}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:248--&amp;gt;&lt;br /&gt;
# Moyenne par trimestre pour chaque trimestre&lt;br /&gt;
moyenne_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).mean()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:249--&amp;gt;&lt;br /&gt;
# Minimum par trimestre pour chaque trimestre&lt;br /&gt;
min_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).min()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:250--&amp;gt;&lt;br /&gt;
# Maximum par trimestre pour chaque trimestre&lt;br /&gt;
max_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).max()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:251--&amp;gt;&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre (kWh):\n&amp;quot;, moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMinimum par trimestre pour chaque trimestre (kWh):\n&amp;quot;, min_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par trimestre pour chaque trimestre (kWh):\n&amp;quot;, max_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:252--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer sa consommation d&#039;electricité journaliere&lt;br /&gt;
inputelecconsoday = input(&amp;quot;Entrez la consommation d&#039;électricité journaliere (kWh): &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:253--&amp;gt;&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
inputelecconsoday = float(inputelecconsoday.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:254--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur batterie plomb ou lithium&lt;br /&gt;
typebatterie = input(&amp;quot;Voulez vous utiliser des batteries au plomb? Taper oui ou o pour repondre oui (Lithium par défaut si rien n&#039;est indiqué)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:255--&amp;gt;&lt;br /&gt;
# Dimensionnement batterie initiale pour avoir 24h d&#039;autonomie:&lt;br /&gt;
if typebatterie==&amp;quot;oui&amp;quot; or typebatterie==&amp;quot;o&amp;quot; or typebatterie==&amp;quot;y&amp;quot; or typebatterie==&amp;quot;yes&amp;quot;:&lt;br /&gt;
    batterie0=int(math.ceil(inputelecconsoday/0.5))&lt;br /&gt;
    typebatterie=&amp;quot;plomb&amp;quot;&lt;br /&gt;
else:&lt;br /&gt;
    batterie0=int(math.ceil(inputelecconsoday/0.8))&lt;br /&gt;
    typebatterie=&amp;quot;lithium&amp;quot;&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Seuil batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur (batterie {typebatterie}))&lt;br /&gt;
hypothese:(conso elec journaliere / 0.8 au lithium et conso elec journaliere / 0.5 au plomb)&lt;br /&gt;
{batterie0} kWh&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:256--&amp;gt;&lt;br /&gt;
# Pourcentage de décharge maximum&lt;br /&gt;
d_input=input(&#039;Entrer le pourcentage de décharge maximum autorisé (20% si vous voulez que votre batterie ne se décharge pas à moins de 20%. Appuyer sur entree si vous voulez utiliser les valeurs par défaut de 50% pour le plomb et de 0% sinon (hypothese solid state battery)&#039;)&lt;br /&gt;
try:&lt;br /&gt;
    d=float(d_input)/100&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    if typebatterie==&#039;plomb&#039;:&lt;br /&gt;
        d=0.5&lt;br /&gt;
    else:&lt;br /&gt;
        d=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:257--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur combien de jours sans elec il ou elle peut supporter&lt;br /&gt;
inputjnoelec = input(&amp;quot;Combien de jours maximum consécutifs sans electricité (ou avec un groupe electrogene) pouvez vous supporter (0 par défaut si reponse vide)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:258--&amp;gt;&lt;br /&gt;
try:&lt;br /&gt;
    jnoelec=int(inputjnoelec)&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    jnoelec=0&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Nombre de jours maximum consécutifs sans electricité (ou avec un groupe electrogene)  pris en hypothèse &lt;br /&gt;
{jnoelec} j&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:259--&amp;gt;&lt;br /&gt;
# Dimensionnement puissance crete des modules (kWc) initiale pour produire suffisamment en hiver (hypothese 2kWh par kWc par jour):&lt;br /&gt;
puissance0=int(math.ceil(inputelecconsoday/2))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:260--&amp;gt;&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil puissance initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/2 (2kWh produit par kWc en hiver)&lt;br /&gt;
{puissance0} kWc&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:261--&amp;gt;&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil volume de batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/0.8 au lithium et 0.5 au plomb&lt;br /&gt;
{batterie0} kWh&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:262--&amp;gt;&lt;br /&gt;
batterie0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de batterie (kWh) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(batterie0_input)&lt;br /&gt;
    batterie0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de batterie0={batterie0}kWh&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
puissance0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de puissance (kWc) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(puissance0_input)&lt;br /&gt;
    puissance0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de puissance0={puissance0}kWc&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:264--&amp;gt;&lt;br /&gt;
# Itérations algorithmiques stockage&amp;amp;consommation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
#fonction check surface volume&lt;br /&gt;
def iter(data,consoelecday,v0,p0,joursnoelec):&lt;br /&gt;
    #elec est l&#039;energie dans la batterie : electricite initiale=v0 (volume de batterie à t0)&lt;br /&gt;
    elec=v0&lt;br /&gt;
    #current_streak est le nombre de jours de blackout consécutif&lt;br /&gt;
    current_streak = 0&lt;br /&gt;
    #listjnoelec est la liste dans laquelle on enregistre les jours de blackout&lt;br /&gt;
    listjnoelec=[]&lt;br /&gt;
    #boucle sur la date entrée en argulent de la fonction&lt;br /&gt;
    for i in range(len(data)):&lt;br /&gt;
        #recupday est l&#039;électricite recupérée (produite) au jour i (la puissance d&#039;1kWc*p0)&lt;br /&gt;
        #p0 est la puissance crete entree en argument&lt;br /&gt;
        recupday=data.iloc[i]*p0&lt;br /&gt;
        #consoday est la consommation electrique du jour i entree en argument de la fonction&lt;br /&gt;
        consoday=consoelecday&lt;br /&gt;
        #energie mise à jour avec consoday et recupday&lt;br /&gt;
        elec=elec+recupday-consoday&lt;br /&gt;
        #si l&#039;énergie mise à jour est superieure au volume de batterie&lt;br /&gt;
        if elec&amp;gt;v0:&lt;br /&gt;
            #print(&amp;quot;batterie pleine&amp;quot;)&lt;br /&gt;
            #le nombre de jours de balckout consécutif est remis à zero&lt;br /&gt;
            current_streak=0&lt;br /&gt;
            #l&#039;énergie est égale au volume de la batterie&lt;br /&gt;
            elec=v0 #hypothese gestion du trop plein ok&lt;br /&gt;
            continue&lt;br /&gt;
        #si l&#039;énergie mise à jour est inférieure au pourcentage max de decharge et le nombre de jours consécutifs de blackout est inférieure au nombre de jours toléré&lt;br /&gt;
        elif elec&amp;lt;d*v0 and current_streak&amp;lt;joursnoelec:&lt;br /&gt;
            #si le nombre de jours consécutifs de blackout est égal à zero&lt;br /&gt;
            if current_streak==0:&lt;br /&gt;
                #ajouter la date du jour et un compteur à la liste listjnoelec&lt;br /&gt;
                listjnoelec.append([data.index[i].strftime(&#039;%d-%m-%Y&#039;),1])&lt;br /&gt;
            #sinon&lt;br /&gt;
            else:&lt;br /&gt;
                #incrementer le compteur de la dernier entree de listjnoelec&lt;br /&gt;
                listjnoelec[-1][-1]+=1&lt;br /&gt;
            #remise à zero de la valeur négative de elec    &lt;br /&gt;
            elec=0&lt;br /&gt;
            #incrementation du nombre de jours consécutifs de blackout&lt;br /&gt;
            current_streak+=1&lt;br /&gt;
            continue&lt;br /&gt;
        #si l&#039;énergie est inférieure au pourcentage max de decharge et le nombre de jours consécutifs de blackout supérieur au nombre de jours tolérés&lt;br /&gt;
        elif elec&amp;lt;d*v0 and current_streak&amp;gt;=joursnoelec:&lt;br /&gt;
            #la fonction renvoie une valeur nulle&lt;br /&gt;
            return (0,0)&lt;br /&gt;
        #sinon&lt;br /&gt;
        else:&lt;br /&gt;
            #remise à zero du nombre de jours consécutifs de blackout&lt;br /&gt;
            current_streak=0&lt;br /&gt;
    #variable nombre d&#039;épisode de blackout = longueur de la la liste listjnoelec        &lt;br /&gt;
    nb_episode_no_elec=len(listjnoelec)&lt;br /&gt;
    #si listjnoelec n&#039;est pas vide&lt;br /&gt;
    if len(listjnoelec)!=0:&lt;br /&gt;
        #liste des durees des épisodes sans elec&lt;br /&gt;
        list_duree_episode_no_elec=[length[1] for length in listjnoelec]&lt;br /&gt;
        #moyenne de cette liste&lt;br /&gt;
        duree_moy_episode_no_elec=sum(list_duree_episode_no_elec)/len(list_duree_episode_no_elec)&lt;br /&gt;
    #sinon    &lt;br /&gt;
    else:&lt;br /&gt;
        #duree moyenne egale à zero&lt;br /&gt;
        duree_moy_episode_no_elec=0&lt;br /&gt;
    #print(&amp;quot;les puissances et batteries permettent de subvenir à la consommation d&#039;electricité sur le dataset&amp;quot;)&lt;br /&gt;
    #renvoyer les variables necessaires au traitement des résultats&lt;br /&gt;
    return (v0,p0,joursnoelec,nb_episode_no_elec,duree_moy_episode_no_elec,listjnoelec)&lt;br /&gt;
#hypothèse récupérateur plein à t0&lt;br /&gt;
elec=batterie0&lt;br /&gt;
resultpuissancevolume=(batterie0,puissance0,jnoelec,0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
#boucle iteration&lt;br /&gt;
listpuissance0=[puissance0*(1+i*0.33) for i in range(0,999)]&lt;br /&gt;
listbatterie0=[batterie0*(1+i*0.5) for i in range(0,999)]&lt;br /&gt;
listresult_0blackout=[]&lt;br /&gt;
listresult_blackout=[]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
# increment avec hypothèse jnoelec=0 (k in range 0,1)&lt;br /&gt;
for i in range(0,14): #boucle iteration surface modules&lt;br /&gt;
    for j in range (0,i+40):#boucle iteration volume batterie&lt;br /&gt;
        for k in range(0,1):&lt;br /&gt;
            resultpuissancevolume=iter(resultday,inputelecconsoday,listbatterie0[j],listpuissance0[i],k)&lt;br /&gt;
            #si les resultats ne sont pas nuls &lt;br /&gt;
            if resultpuissancevolume!=(0,0):&lt;br /&gt;
                #ajouter les resultats à une liste de resultats&lt;br /&gt;
                listresult_0blackout.append(resultpuissancevolume)&lt;br /&gt;
                #arreter la boucle k&lt;br /&gt;
                break&lt;br /&gt;
            else:#sinon continuer&lt;br /&gt;
                continue&lt;br /&gt;
        #arreter la boucle j si les resultats ne sont pas nul    &lt;br /&gt;
        if resultpuissancevolume!=(0,0):&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
#idem avec increment hypothèse jnoelec entre 0 et 13 (i in range 0,14)&lt;br /&gt;
for i in range(0,14):&lt;br /&gt;
    for j in range (0,i+40):&lt;br /&gt;
        for k in range(0,21):&lt;br /&gt;
            resultpuissancevolume=iter(resultday,inputelecconsoday,listbatterie0[j],listpuissance0[i],k)&lt;br /&gt;
            if resultpuissancevolume!=(0,0):&lt;br /&gt;
                listresult_blackout.append(resultpuissancevolume)&lt;br /&gt;
                break&lt;br /&gt;
            else:&lt;br /&gt;
                continue&lt;br /&gt;
        if resultpuissancevolume!=(0,0):&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
# Affichage des résultats des boucles d&#039;itérations&lt;br /&gt;
for k in listresult_0blackout:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de {k[0]}kWh &lt;br /&gt;
    et une puissance crete de {k[1]}kWc,&lt;br /&gt;
    et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
    et {k[3]} episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    {k[5]}&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
    on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:270--&amp;gt;&lt;br /&gt;
for k in listresult_blackout:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de {k[0]}kWh &lt;br /&gt;
    et une puissance crete de {k[1]}kWc,&lt;br /&gt;
    et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
    et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    {k[5]}&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
    on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
print(&#039;\n\n\n\n&#039;)&lt;br /&gt;
print(&#039;affichage des résultats optimisés&#039;)&lt;br /&gt;
# Optimisation résultats:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:272--&amp;gt;&lt;br /&gt;
# premier résultat en incrémentant la puissance crete dont la capacité de batterie est minimale&lt;br /&gt;
batterie_0blackout=[k[0] for k in listresult_0blackout]&lt;br /&gt;
minbatterie_0blackout=min(batterie_0blackout)&lt;br /&gt;
for k in listresult_0blackout:&lt;br /&gt;
    if k[0]==minbatterie_0blackout:&lt;br /&gt;
        print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de {k[0]}kWh &lt;br /&gt;
        et une puissance crete de {k[1]}kWc,&lt;br /&gt;
        et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
        et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        {k[5]}&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
        on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
# premier résultat en incrémentant la puissance crete fournissant un nb de jours de blackout inferieur ou égal&lt;br /&gt;
# à celui entrée par l&#039;utilisateur&lt;br /&gt;
for k in listresult_blackout:&lt;br /&gt;
    if k[2]&amp;lt;=jnoelec:&lt;br /&gt;
        print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de {k[0]}kWh &lt;br /&gt;
        et une puissance crete de {k[1]}kWc,&lt;br /&gt;
        et une hypothèse de {k[2]}j sans elec possible&lt;br /&gt;
        et {k[3]} episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        {k[5]}&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de {k[4]}j &lt;br /&gt;
        on satisfait aux besoins utilisateurs ({inputelecconsoday}kWh/jour)entrées en hypothèse&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
Resultats optimisés&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
Pour notre exemple, on aboutit aux résultats suivant (avec 1j de blackout authorisé):&lt;br /&gt;
Les &amp;quot;résultats optimisés sont tout en bas&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entrez la latitude de votre lieux: 44.2&lt;br /&gt;
Entrez la longitude de votre lieux: 0.6&lt;br /&gt;
Entrer l&#039;orientation de votre lieux (est,ouest,nord,sud)sud&lt;br /&gt;
Entre l&#039;angle des modules en °45&lt;br /&gt;
--2024-04-08 20:04:29--  https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.2&amp;amp;lon=0.6&amp;amp;loss=14&amp;amp;angle=45.0&amp;amp;aspect=0&amp;amp;startyear=2005&amp;amp;endyear=2020&amp;amp;pvcalculation=1&amp;amp;peakpower=1&amp;amp;pvtechchoice=crystSi&amp;amp;browser=0&amp;amp;outputformat=csv&lt;br /&gt;
Résolution de re.jrc.ec.europa.eu (re.jrc.ec.europa.eu)… 64:ff9b::8bbf:dd12, 139.191.221.18&lt;br /&gt;
Connexion à re.jrc.ec.europa.eu (re.jrc.ec.europa.eu)|64:ff9b::8bbf:dd12|:443… connecté.&lt;br /&gt;
requête HTTP transmise, en attente de la réponse… 200 OK&lt;br /&gt;
Taille : 6291134 (6,0M) [text/html]&lt;br /&gt;
Enregistre : «output.csv»&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
output.csv          100%[===================&amp;gt;]   6,00M  1,03MB/s    ds 7,2s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
2024-04-08 20:04:43 (852 KB/s) - «output.csv» enregistré [6291134/6291134]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 1kWh: 4 j&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 1kWh: 1.1124367317425885 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 2kWh: 5 j&lt;br /&gt;
nombre d&#039;occurences: 3&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 2kWh: 1.2801404603979711 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:281--&amp;gt;&lt;br /&gt;
nb de jours consécutifs maximum pour qu&#039;1kWc produise 3kWh: 7 j&lt;br /&gt;
nombre d&#039;occurences: 1&lt;br /&gt;
nb de jours consécutifs moyen pour qu&#039;1kWc produise 3kWh: 1.4647827920708563 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:282--&amp;gt;&lt;br /&gt;
Production moyenne par jour (kWh):&lt;br /&gt;
 3.4641937012320336&lt;br /&gt;
Production minimum par jour (kWh):&lt;br /&gt;
 0.0&lt;br /&gt;
Production maximum par jour  (kWh):&lt;br /&gt;
 6.65871&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:283--&amp;gt;&lt;br /&gt;
Production par trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
2005-03-31    270.56038&lt;br /&gt;
2005-06-30    375.15833&lt;br /&gt;
2005-09-30    399.84068&lt;br /&gt;
2005-12-31    227.76775&lt;br /&gt;
2006-03-31    247.03158&lt;br /&gt;
2006-06-30    406.70165&lt;br /&gt;
2006-09-30    389.10805&lt;br /&gt;
2006-12-31    233.93622&lt;br /&gt;
2007-03-31    229.46528&lt;br /&gt;
2007-06-30    348.05120&lt;br /&gt;
2007-09-30    390.13982&lt;br /&gt;
2007-12-31    250.21269&lt;br /&gt;
2008-03-31    250.87365&lt;br /&gt;
2008-06-30    347.15819&lt;br /&gt;
2008-09-30    385.60970&lt;br /&gt;
2008-12-31    202.44585&lt;br /&gt;
2009-03-31    286.11329&lt;br /&gt;
2009-06-30    350.51328&lt;br /&gt;
2009-09-30    397.86835&lt;br /&gt;
2009-12-31    237.76417&lt;br /&gt;
2010-03-31    270.32507&lt;br /&gt;
2010-06-30    366.21454&lt;br /&gt;
2010-09-30    394.93503&lt;br /&gt;
2010-12-31    236.08537&lt;br /&gt;
2011-03-31    271.73968&lt;br /&gt;
2011-06-30    400.68298&lt;br /&gt;
2011-09-30    374.99079&lt;br /&gt;
2011-12-31    255.64396&lt;br /&gt;
2012-03-31    294.48135&lt;br /&gt;
2012-06-30    344.82346&lt;br /&gt;
2012-09-30    394.74104&lt;br /&gt;
2012-12-31    217.83773&lt;br /&gt;
2013-03-31    259.24581&lt;br /&gt;
2013-06-30    323.20427&lt;br /&gt;
2013-09-30    402.14528&lt;br /&gt;
2013-12-31    228.40704&lt;br /&gt;
2014-03-31    268.96648&lt;br /&gt;
2014-06-30    385.06742&lt;br /&gt;
2014-09-30    388.64375&lt;br /&gt;
2014-12-31    252.08195&lt;br /&gt;
2015-03-31    242.45034&lt;br /&gt;
2015-06-30    402.47347&lt;br /&gt;
2015-09-30    400.23336&lt;br /&gt;
2015-12-31    273.02084&lt;br /&gt;
2016-03-31    248.06779&lt;br /&gt;
2016-06-30    354.35530&lt;br /&gt;
2016-09-30    411.73628&lt;br /&gt;
2016-12-31    224.28598&lt;br /&gt;
2017-03-31    267.90392&lt;br /&gt;
2017-06-30    410.47864&lt;br /&gt;
2017-09-30    363.44330&lt;br /&gt;
2017-12-31    251.00240&lt;br /&gt;
2018-03-31    231.96132&lt;br /&gt;
2018-06-30    362.16785&lt;br /&gt;
2018-09-30    426.21631&lt;br /&gt;
2018-12-31    219.18595&lt;br /&gt;
2019-03-31    313.23495&lt;br /&gt;
2019-06-30    368.76834&lt;br /&gt;
2019-09-30    407.61175&lt;br /&gt;
2019-12-31    201.18704&lt;br /&gt;
2020-03-31    283.16855&lt;br /&gt;
2020-06-30    389.45566&lt;br /&gt;
2020-09-30    395.65480&lt;br /&gt;
2020-12-31    240.10074&lt;br /&gt;
Freq: Q-DEC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:284--&amp;gt;&lt;br /&gt;
Production annuelle moyennes d&#039;1kWc (kWh):&lt;br /&gt;
 1265.2967493749998&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:285--&amp;gt;&lt;br /&gt;
Nombre de jours consecutifs maximum à production 0: 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:286--&amp;gt;&lt;br /&gt;
Moyenne par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    264.724340&lt;br /&gt;
2    370.954661&lt;br /&gt;
3    395.182393&lt;br /&gt;
4    234.435355&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:287--&amp;gt;&lt;br /&gt;
Minimum par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    229.46528&lt;br /&gt;
2    323.20427&lt;br /&gt;
3    363.44330&lt;br /&gt;
4    201.18704&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:288--&amp;gt;&lt;br /&gt;
Maximum par trimestre pour chaque trimestre (kWh):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    313.23495&lt;br /&gt;
2    410.47864&lt;br /&gt;
3    426.21631&lt;br /&gt;
4    273.02084&lt;br /&gt;
Name: P, dtype: float64&lt;br /&gt;
Entrez la consommation d&#039;électricité journaliere (kWh): 4&lt;br /&gt;
Voulez vous utiliser des batteries au plomb? Taper oui ou o pour repondre oui (Lithium par défaut si rien n&#039;est indiqué)&lt;br /&gt;
Seuil batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur (batterie lithium))&lt;br /&gt;
hypothese:(conso elec journaliere / 0.8 au lithium et conso elec journaliere / 0.5 au plomb)&lt;br /&gt;
5 kWh&lt;br /&gt;
Entrer le pourcentage de décharge maximum autorisé (20% si vous voulez que votre batterie ne se décharge pas à moins de 20%. Appuyer sur entree si vous voulez utiliser les valeurs par défaut de 50% pour le plomb et de 0% sinon (hypothese solid state battery)&lt;br /&gt;
Combien de jours maximum consécutifs sans electricité (ou avec un groupe electrogene) pouvez vous supporter (0 par défaut si reponse vide)1&lt;br /&gt;
Nombre de jours maximum consécutifs sans electricité (ou avec un groupe electrogene)  pris en hypothèse &lt;br /&gt;
1 j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:289--&amp;gt;&lt;br /&gt;
Seuil puissance initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/2 (2kWh produit par kWc en hiver)&lt;br /&gt;
2 kWc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:290--&amp;gt;&lt;br /&gt;
Seuil volume de batterie initiale avec hypothèse entrée et données fournies par l&#039;utilisateur&lt;br /&gt;
hypothèse: conso elec journaliere/0.8 au lithium et 0.5 au plomb&lt;br /&gt;
5 kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:291--&amp;gt;&lt;br /&gt;
Si vous souhaitez corriger la valeur initiale de batterie (kWh) pour les itérations, entrer votre valeur, sinon appuyer sur entree&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:292--&amp;gt;&lt;br /&gt;
erreur de type ou valeur utilisateur vide, poursuite avec utilisation de batterie0=5kWh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:293--&amp;gt;&lt;br /&gt;
Si vous souhaitez corriger la valeur initiale de puissance (kWc) pour les itérations, entrer votre valeur, sinon appuyer sur entree&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:294--&amp;gt;&lt;br /&gt;
erreur de type ou valeur utilisateur vide, poursuite avec utilisation de puissance0=2kWc&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 75.0kWh &lt;br /&gt;
    et une puissance crete de 2.0kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 22.5kWh &lt;br /&gt;
    et une puissance crete de 2.66kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 17.5kWh &lt;br /&gt;
    et une puissance crete de 3.3200000000000003kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 15.0kWh &lt;br /&gt;
    et une puissance crete de 3.98kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 12.5kWh &lt;br /&gt;
    et une puissance crete de 4.640000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 12.5kWh &lt;br /&gt;
    et une puissance crete de 5.300000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 5.96kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 6.62kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 7.28kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 7.94kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 8.600000000000001kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 9.260000000000002kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 9.92kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 10.0kWh &lt;br /&gt;
    et une puissance crete de 10.58kWc,&lt;br /&gt;
    et une hypothèse de 0j sans elec possible&lt;br /&gt;
    et 0 episodes sans elec (ou avec un groupe electrogene)&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    []&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 2.0kWc,&lt;br /&gt;
    et une hypothèse de 10j sans elec possible&lt;br /&gt;
    et 185 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;14-01-2005&#039;, 1], [&#039;19-01-2005&#039;, 3], [&#039;23-01-2005&#039;, 2], [&#039;01-02-2005&#039;, 1], [&#039;11-02-2005&#039;, 3], [&#039;17-11-2005&#039;, 1], [&#039;26-11-2005&#039;, 3], [&#039;02-12-2005&#039;, 1], [&#039;04-12-2005&#039;, 2], [&#039;07-12-2005&#039;, 2], [&#039;12-12-2005&#039;, 6], [&#039;22-12-2005&#039;, 2], [&#039;25-12-2005&#039;, 3], [&#039;31-12-2005&#039;, 2], [&#039;03-01-2006&#039;, 10], [&#039;18-01-2006&#039;, 4], [&#039;29-01-2006&#039;, 7], [&#039;23-02-2006&#039;, 1], [&#039;09-03-2006&#039;, 2], [&#039;21-11-2006&#039;, 2], [&#039;25-11-2006&#039;, 2], [&#039;28-11-2006&#039;, 1], [&#039;30-11-2006&#039;, 5], [&#039;08-12-2006&#039;, 3], [&#039;20-12-2006&#039;, 7], [&#039;08-01-2007&#039;, 1], [&#039;20-01-2007&#039;, 4], [&#039;30-01-2007&#039;, 4], [&#039;06-02-2007&#039;, 3], [&#039;08-10-2007&#039;, 1], [&#039;10-10-2007&#039;, 1], [&#039;01-12-2007&#039;, 1], [&#039;07-12-2007&#039;, 3], [&#039;15-12-2007&#039;, 1], [&#039;25-12-2007&#039;, 5], [&#039;01-01-2008&#039;, 3], [&#039;05-01-2008&#039;, 5], [&#039;11-01-2008&#039;, 1], [&#039;18-01-2008&#039;, 2], [&#039;22-01-2008&#039;, 2], [&#039;30-01-2008&#039;, 1], [&#039;01-02-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;11-03-2008&#039;, 2], [&#039;17-05-2008&#039;, 2], [&#039;28-10-2008&#039;, 1], [&#039;30-10-2008&#039;, 2], [&#039;02-11-2008&#039;, 2], [&#039;06-11-2008&#039;, 2], [&#039;15-11-2008&#039;, 9], [&#039;30-11-2008&#039;, 2], [&#039;03-12-2008&#039;, 2], [&#039;12-12-2008&#039;, 9], [&#039;25-12-2008&#039;, 2], [&#039;04-01-2009&#039;, 9], [&#039;14-01-2009&#039;, 1], [&#039;23-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 2], [&#039;16-08-2009&#039;, 1], [&#039;11-11-2009&#039;, 1], [&#039;02-12-2009&#039;, 1], [&#039;04-12-2009&#039;, 1], [&#039;06-12-2009&#039;, 3], [&#039;14-12-2009&#039;, 3], [&#039;23-12-2009&#039;, 2], [&#039;28-12-2009&#039;, 2], [&#039;04-01-2010&#039;, 4], [&#039;09-01-2010&#039;, 4], [&#039;14-01-2010&#039;, 1], [&#039;16-01-2010&#039;, 2], [&#039;05-05-2010&#039;, 2], [&#039;01-11-2010&#039;, 1], [&#039;04-11-2010&#039;, 3], [&#039;08-11-2010&#039;, 5], [&#039;25-11-2010&#039;, 1], [&#039;28-11-2010&#039;, 1], [&#039;02-12-2010&#039;, 2], [&#039;17-12-2010&#039;, 2], [&#039;22-12-2010&#039;, 3], [&#039;07-01-2011&#039;, 3], [&#039;13-01-2011&#039;, 3], [&#039;31-01-2011&#039;, 2], [&#039;04-02-2011&#039;, 1], [&#039;23-02-2011&#039;, 4], [&#039;02-03-2011&#039;, 2], [&#039;29-10-2011&#039;, 1], [&#039;05-11-2011&#039;, 4], [&#039;25-11-2011&#039;, 4], [&#039;04-12-2011&#039;, 5], [&#039;14-12-2011&#039;, 3], [&#039;21-12-2011&#039;, 3], [&#039;13-01-2012&#039;, 3], [&#039;23-01-2012&#039;, 1], [&#039;08-02-2012&#039;, 1], [&#039;15-02-2012&#039;, 1], [&#039;20-10-2012&#039;, 2], [&#039;06-11-2012&#039;, 1], [&#039;20-11-2012&#039;, 4], [&#039;25-11-2012&#039;, 5], [&#039;14-12-2012&#039;, 1], [&#039;22-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;19-01-2013&#039;, 1], [&#039;22-01-2013&#039;, 1], [&#039;26-01-2013&#039;, 2], [&#039;08-11-2013&#039;, 1], [&#039;10-11-2013&#039;, 1], [&#039;15-11-2013&#039;, 1], [&#039;17-11-2013&#039;, 3], [&#039;23-11-2013&#039;, 3], [&#039;03-12-2013&#039;, 4], [&#039;25-01-2014&#039;, 3], [&#039;01-02-2014&#039;, 1], [&#039;15-02-2014&#039;, 1], [&#039;24-11-2014&#039;, 3], [&#039;01-12-2014&#039;, 3], [&#039;06-12-2014&#039;, 1], [&#039;13-12-2014&#039;, 8], [&#039;24-12-2014&#039;, 2], [&#039;27-12-2014&#039;, 2], [&#039;03-01-2015&#039;, 4], [&#039;10-01-2015&#039;, 1], [&#039;24-01-2015&#039;, 1], [&#039;29-01-2015&#039;, 2], [&#039;03-03-2015&#039;, 1], [&#039;12-11-2015&#039;, 5], [&#039;19-11-2015&#039;, 1], [&#039;26-11-2015&#039;, 1], [&#039;04-12-2015&#039;, 2], [&#039;03-01-2016&#039;, 8], [&#039;21-01-2016&#039;, 3], [&#039;01-02-2016&#039;, 2], [&#039;16-10-2016&#039;, 2], [&#039;05-11-2016&#039;, 1], [&#039;18-11-2016&#039;, 1], [&#039;22-11-2016&#039;, 4], [&#039;20-12-2016&#039;, 1], [&#039;24-12-2016&#039;, 3], [&#039;30-12-2016&#039;, 6], [&#039;11-01-2017&#039;, 2], [&#039;06-12-2017&#039;, 3], [&#039;10-12-2017&#039;, 2], [&#039;13-12-2017&#039;, 6], [&#039;22-12-2017&#039;, 4], [&#039;28-12-2017&#039;, 3], [&#039;03-01-2018&#039;, 5], [&#039;14-01-2018&#039;, 3], [&#039;20-01-2018&#039;, 4], [&#039;30-01-2018&#039;, 2], [&#039;05-02-2018&#039;, 2], [&#039;08-02-2018&#039;, 1], [&#039;20-02-2018&#039;, 1], [&#039;28-03-2018&#039;, 1], [&#039;28-10-2018&#039;, 2], [&#039;02-11-2018&#039;, 1], [&#039;09-11-2018&#039;, 2], [&#039;04-12-2018&#039;, 1], [&#039;09-12-2018&#039;, 1], [&#039;13-12-2018&#039;, 4], [&#039;21-12-2018&#039;, 5], [&#039;29-12-2018&#039;, 4], [&#039;08-01-2019&#039;, 1], [&#039;13-01-2019&#039;, 2], [&#039;22-01-2019&#039;, 1], [&#039;30-01-2019&#039;, 2], [&#039;23-10-2019&#039;, 2], [&#039;02-11-2019&#039;, 1], [&#039;04-11-2019&#039;, 5], [&#039;16-11-2019&#039;, 3], [&#039;01-12-2019&#039;, 2], [&#039;07-12-2019&#039;, 3], [&#039;12-12-2019&#039;, 3], [&#039;23-12-2019&#039;, 3], [&#039;04-01-2020&#039;, 2], [&#039;29-02-2020&#039;, 1], [&#039;04-03-2020&#039;, 2], [&#039;23-04-2020&#039;, 1], [&#039;12-05-2020&#039;, 1], [&#039;06-10-2020&#039;, 1], [&#039;03-12-2020&#039;, 2], [&#039;10-12-2020&#039;, 2], [&#039;13-12-2020&#039;, 3], [&#039;18-12-2020&#039;, 2], [&#039;21-12-2020&#039;, 5], [&#039;28-12-2020&#039;, 2]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 2.5513513513513515j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 2.66kWc,&lt;br /&gt;
    et une hypothèse de 8j sans elec possible&lt;br /&gt;
    et 103 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;19-01-2005&#039;, 3], [&#039;23-01-2005&#039;, 1], [&#039;01-02-2005&#039;, 1], [&#039;12-02-2005&#039;, 2], [&#039;26-11-2005&#039;, 3], [&#039;05-12-2005&#039;, 1], [&#039;08-12-2005&#039;, 1], [&#039;12-12-2005&#039;, 6], [&#039;23-12-2005&#039;, 1], [&#039;26-12-2005&#039;, 2], [&#039;31-12-2005&#039;, 1], [&#039;04-01-2006&#039;, 4], [&#039;09-01-2006&#039;, 4], [&#039;20-01-2006&#039;, 2], [&#039;29-01-2006&#039;, 4], [&#039;03-02-2006&#039;, 2], [&#039;22-11-2006&#039;, 1], [&#039;04-12-2006&#039;, 1], [&#039;10-12-2006&#039;, 1], [&#039;22-12-2006&#039;, 5], [&#039;22-01-2007&#039;, 2], [&#039;30-01-2007&#039;, 4], [&#039;08-02-2007&#039;, 1], [&#039;01-12-2007&#039;, 1], [&#039;08-12-2007&#039;, 2], [&#039;26-12-2007&#039;, 4], [&#039;03-01-2008&#039;, 1], [&#039;06-01-2008&#039;, 4], [&#039;11-01-2008&#039;, 1], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;07-11-2008&#039;, 1], [&#039;16-11-2008&#039;, 8], [&#039;01-12-2008&#039;, 1], [&#039;04-12-2008&#039;, 1], [&#039;15-12-2008&#039;, 6], [&#039;26-12-2008&#039;, 1], [&#039;05-01-2009&#039;, 8], [&#039;24-01-2009&#039;, 1], [&#039;19-04-2009&#039;, 2], [&#039;16-08-2009&#039;, 1], [&#039;11-11-2009&#039;, 1], [&#039;08-12-2009&#039;, 1], [&#039;14-12-2009&#039;, 3], [&#039;23-12-2009&#039;, 2], [&#039;05-01-2010&#039;, 3], [&#039;09-01-2010&#039;, 2], [&#039;12-01-2010&#039;, 1], [&#039;06-05-2010&#039;, 1], [&#039;05-11-2010&#039;, 2], [&#039;12-11-2010&#039;, 1], [&#039;22-12-2010&#039;, 3], [&#039;08-01-2011&#039;, 1], [&#039;31-01-2011&#039;, 2], [&#039;06-11-2011&#039;, 3], [&#039;25-11-2011&#039;, 4], [&#039;07-12-2011&#039;, 2], [&#039;21-12-2011&#039;, 3], [&#039;14-01-2012&#039;, 2], [&#039;20-10-2012&#039;, 2], [&#039;21-11-2012&#039;, 2], [&#039;25-11-2012&#039;, 2], [&#039;28-11-2012&#039;, 1], [&#039;14-12-2012&#039;, 1], [&#039;22-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;19-01-2013&#039;, 1], [&#039;18-11-2013&#039;, 2], [&#039;24-11-2013&#039;, 2], [&#039;04-12-2013&#039;, 2], [&#039;25-01-2014&#039;, 3], [&#039;25-11-2014&#039;, 2], [&#039;02-12-2014&#039;, 2], [&#039;14-12-2014&#039;, 7], [&#039;05-01-2015&#039;, 2], [&#039;13-11-2015&#039;, 2], [&#039;04-01-2016&#039;, 5], [&#039;10-01-2016&#039;, 1], [&#039;23-01-2016&#039;, 1], [&#039;17-10-2016&#039;, 1], [&#039;23-11-2016&#039;, 1], [&#039;25-11-2016&#039;, 1], [&#039;20-12-2016&#039;, 1], [&#039;25-12-2016&#039;, 2], [&#039;31-12-2016&#039;, 5], [&#039;12-01-2017&#039;, 1], [&#039;22-12-2017&#039;, 4], [&#039;29-12-2017&#039;, 1], [&#039;04-01-2018&#039;, 3], [&#039;16-01-2018&#039;, 1], [&#039;21-01-2018&#039;, 3], [&#039;31-01-2018&#039;, 1], [&#039;04-12-2018&#039;, 1], [&#039;15-12-2018&#039;, 2], [&#039;22-12-2018&#039;, 4], [&#039;30-12-2018&#039;, 3], [&#039;31-01-2019&#039;, 1], [&#039;17-11-2019&#039;, 2], [&#039;02-12-2019&#039;, 1], [&#039;08-12-2019&#039;, 1], [&#039;13-12-2019&#039;, 2], [&#039;29-12-2020&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 2.203883495145631j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 3.3200000000000003kWc,&lt;br /&gt;
    et une hypothèse de 6j sans elec possible&lt;br /&gt;
    et 66 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;20-01-2005&#039;, 2], [&#039;23-01-2005&#039;, 1], [&#039;01-02-2005&#039;, 1], [&#039;12-02-2005&#039;, 2], [&#039;27-11-2005&#039;, 1], [&#039;12-12-2005&#039;, 6], [&#039;27-12-2005&#039;, 1], [&#039;06-01-2006&#039;, 2], [&#039;09-01-2006&#039;, 1], [&#039;11-01-2006&#039;, 2], [&#039;29-01-2006&#039;, 3], [&#039;03-02-2006&#039;, 2], [&#039;24-12-2006&#039;, 3], [&#039;23-01-2007&#039;, 1], [&#039;01-02-2007&#039;, 2], [&#039;27-12-2007&#039;, 3], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;16-11-2008&#039;, 4], [&#039;21-11-2008&#039;, 1], [&#039;23-11-2008&#039;, 1], [&#039;19-12-2008&#039;, 2], [&#039;26-12-2008&#039;, 1], [&#039;05-01-2009&#039;, 1], [&#039;07-01-2009&#039;, 6], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;14-12-2009&#039;, 3], [&#039;24-12-2009&#039;, 1], [&#039;05-01-2010&#039;, 1], [&#039;10-01-2010&#039;, 1], [&#039;12-01-2010&#039;, 1], [&#039;05-11-2010&#039;, 2], [&#039;23-12-2010&#039;, 2], [&#039;01-02-2011&#039;, 1], [&#039;07-11-2011&#039;, 1], [&#039;26-11-2011&#039;, 3], [&#039;21-12-2011&#039;, 3], [&#039;14-01-2012&#039;, 1], [&#039;20-10-2012&#039;, 2], [&#039;21-11-2012&#039;, 1], [&#039;26-11-2012&#039;, 1], [&#039;14-12-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;24-11-2013&#039;, 2], [&#039;05-12-2013&#039;, 1], [&#039;26-01-2014&#039;, 2], [&#039;26-11-2014&#039;, 1], [&#039;02-12-2014&#039;, 2], [&#039;17-12-2014&#039;, 3], [&#039;13-11-2015&#039;, 1], [&#039;05-01-2016&#039;, 1], [&#039;07-01-2016&#039;, 2], [&#039;17-10-2016&#039;, 1], [&#039;23-11-2016&#039;, 1], [&#039;01-01-2017&#039;, 4], [&#039;23-12-2017&#039;, 3], [&#039;06-01-2018&#039;, 1], [&#039;22-01-2018&#039;, 2], [&#039;31-01-2018&#039;, 1], [&#039;16-12-2018&#039;, 1], [&#039;23-12-2018&#039;, 3], [&#039;30-12-2018&#039;, 3], [&#039;02-12-2019&#039;, 1], [&#039;14-12-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.8636363636363635j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 3.98kWc,&lt;br /&gt;
    et une hypothèse de 6j sans elec possible&lt;br /&gt;
    et 43 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;20-01-2005&#039;, 2], [&#039;01-02-2005&#039;, 1], [&#039;13-02-2005&#039;, 1], [&#039;12-12-2005&#039;, 5], [&#039;27-12-2005&#039;, 1], [&#039;07-01-2006&#039;, 1], [&#039;12-01-2006&#039;, 1], [&#039;29-01-2006&#039;, 1], [&#039;31-01-2006&#039;, 1], [&#039;04-02-2006&#039;, 1], [&#039;25-12-2006&#039;, 2], [&#039;02-02-2007&#039;, 1], [&#039;28-12-2007&#039;, 2], [&#039;23-01-2008&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;16-11-2008&#039;, 4], [&#039;21-11-2008&#039;, 1], [&#039;08-01-2009&#039;, 2], [&#039;11-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 2], [&#039;24-12-2009&#039;, 1], [&#039;05-01-2010&#039;, 1], [&#039;10-01-2010&#039;, 1], [&#039;06-11-2010&#039;, 1], [&#039;23-12-2010&#039;, 2], [&#039;01-02-2011&#039;, 1], [&#039;26-11-2011&#039;, 3], [&#039;22-12-2011&#039;, 2], [&#039;21-10-2012&#039;, 1], [&#039;05-01-2013&#039;, 6], [&#039;25-11-2013&#039;, 1], [&#039;26-01-2014&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;17-10-2016&#039;, 1], [&#039;01-01-2017&#039;, 4], [&#039;23-12-2017&#039;, 3], [&#039;23-01-2018&#039;, 1], [&#039;23-12-2018&#039;, 1], [&#039;25-12-2018&#039;, 1], [&#039;30-12-2018&#039;, 3]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.697674418604651j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 4.640000000000001kWc,&lt;br /&gt;
    et une hypothèse de 4j sans elec possible&lt;br /&gt;
    et 22 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;12-12-2005&#039;, 1], [&#039;14-12-2005&#039;, 3], [&#039;27-12-2005&#039;, 1], [&#039;26-12-2006&#039;, 1], [&#039;07-03-2008&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;17-11-2008&#039;, 3], [&#039;09-01-2009&#039;, 1], [&#039;11-01-2009&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 2], [&#039;23-12-2010&#039;, 2], [&#039;27-11-2011&#039;, 2], [&#039;23-12-2011&#039;, 1], [&#039;06-01-2013&#039;, 4], [&#039;25-11-2013&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;02-01-2017&#039;, 3], [&#039;24-12-2017&#039;, 2], [&#039;23-12-2018&#039;, 1], [&#039;01-01-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.6818181818181819j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 5.300000000000001kWc,&lt;br /&gt;
    et une hypothèse de 4j sans elec possible&lt;br /&gt;
    et 16 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;14-12-2005&#039;, 3], [&#039;27-12-2005&#039;, 1], [&#039;17-05-2008&#039;, 2], [&#039;17-11-2008&#039;, 3], [&#039;09-01-2009&#039;, 1], [&#039;12-01-2009&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 1], [&#039;24-12-2010&#039;, 1], [&#039;28-11-2011&#039;, 1], [&#039;06-01-2013&#039;, 4], [&#039;25-11-2013&#039;, 1], [&#039;03-12-2014&#039;, 1], [&#039;03-01-2017&#039;, 2], [&#039;01-01-2019&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.5625j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 5.96kWc,&lt;br /&gt;
    et une hypothèse de 2j sans elec possible&lt;br /&gt;
    et 10 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;15-12-2005&#039;, 2], [&#039;17-05-2008&#039;, 2], [&#039;18-11-2008&#039;, 2], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;15-12-2009&#039;, 1], [&#039;24-12-2010&#039;, 1], [&#039;06-01-2013&#039;, 2], [&#039;09-01-2013&#039;, 1], [&#039;03-12-2014&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.4j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 6.62kWc,&lt;br /&gt;
    et une hypothèse de 2j sans elec possible&lt;br /&gt;
    et 5 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;16-12-2005&#039;, 1], [&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;06-01-2013&#039;, 2]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.2j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 7.28kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 7.94kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 8.600000000000001kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 9.260000000000002kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 9.92kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
    une batterie de 5.0kWh &lt;br /&gt;
    et une puissance crete de 10.58kWc,&lt;br /&gt;
    et une hypothèse de 1j sans elec possible&lt;br /&gt;
    et 3 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
    entre 2005 et 2020:&lt;br /&gt;
    Liste des episodes sans elec (nb de jours):&lt;br /&gt;
    [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1]]&lt;br /&gt;
    pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
    on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:295--&amp;gt;&lt;br /&gt;
affichage des résultats optimisés&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de 10.0kWh &lt;br /&gt;
        et une puissance crete de 5.96kWc,&lt;br /&gt;
        et une hypothèse de 0j sans elec possible&lt;br /&gt;
        et 0 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        []&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de 0j &lt;br /&gt;
        on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
        une batterie de 5.0kWh &lt;br /&gt;
        et une puissance crete de 7.28kWc,&lt;br /&gt;
        et une hypothèse de 1j sans elec possible&lt;br /&gt;
        et 4 episodes sans elec (ou avec un groupe electrogene):&lt;br /&gt;
        entre 2005 et 2020:&lt;br /&gt;
        Liste des episodes sans elec (nb de jours):&lt;br /&gt;
        [[&#039;18-05-2008&#039;, 1], [&#039;19-04-2009&#039;, 1], [&#039;16-08-2009&#039;, 1], [&#039;07-01-2013&#039;, 1]]&lt;br /&gt;
        pour une duree moyenne d&#039;épisode sans elec de 1.0j &lt;br /&gt;
        on satisfait aux besoins utilisateurs (4.0kWh/jour)entrées en hypothèse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Mesure_de_l%27ensoleillement-luminosit%C3%A9_avec_un_ordinateur_monocarte_(raspberry-orangepi)&amp;diff=152006</id>
		<title>Mesure de l&#039;ensoleillement-luminosité avec un ordinateur monocarte (raspberry-orangepi)</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Mesure_de_l%27ensoleillement-luminosit%C3%A9_avec_un_ordinateur_monocarte_(raspberry-orangepi)&amp;diff=152006"/>
		<updated>2025-11-28T19:06:43Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Mesure_de_l_ensoleillement-luminosit__avec_un_ordinateur_monocarte__raspberry-orangepi__IMG_20240109_123457_400.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:682.8,&amp;quot;top&amp;quot;:-49,&amp;quot;width&amp;quot;:3024,&amp;quot;height&amp;quot;:4032,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.18,&amp;quot;scaleY&amp;quot;:0.18,&amp;quot;angle&amp;quot;:90,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/0/08/Mesure_de_l_ensoleillement-luminosit_avec_un_ordinateur_monocarte_raspberry-orangepi_IMG_20240109_123457_400.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.2512479201331,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Comme vous ne le savez peut être pas, les données météorologiques d&#039;observations issues des &lt;br /&gt;
messages internationaux d’observation en surface (SYNOP, disponibles ici: https://donneespubliques.meteofrance.fr/?fond=produit&amp;amp;id_produit=90&amp;amp;id_rubrique=32)  ne prennent pas en compte l&#039;ensoleillement/la luminosité.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Les données d&#039;ensoleillement/luminosité peuvent être intéressantes à recueillir &lt;br /&gt;
pour divers usages (confort interieur, mesures de production photovoltaïque, soin des plantes,...).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour le photovoltaïque, malgré la vieillesse de la technologie, mes recherches ne m&#039;ont pas permis &lt;br /&gt;
de trouver des mesures fiables de la production par temps nuageux. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On trouve des vidéos de mesures, telle que celle-ci : &amp;lt;br&amp;gt;&lt;br /&gt;
https://www.youtube.com/watch?v=H_Aow78MFmQ&amp;amp;ab_channel=TopeSosanya&amp;lt;br&amp;gt;&lt;br /&gt;
qui laissent à penser que les panneaux produisent à 50% de leur valeurs nominales.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mes instruments de mesure faisant l&#039;objet d&#039;interférences ne me permettant pas de faire des mesures fiables, j&#039;ai pensé à produire un code simple que d&#039;autres utilisateurs moins sujets à interférences pourraient réutiliser à leur convenance.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ce tutoriel vous permettra donc, avec seulement deux commandes (apres installation de l&#039;os et de docker), d&#039;utiliser votre ordinateur monocarte comme une station météo qui enregistre l&#039;ensoleilement/la luminosité toutes les minutes dans une base de données et produit une page web où on peut récupérer les résultats avec la possibilité de requeter par date.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
démo visible ici:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://vpn.matangi.dev/lum&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note: ne vous fiez pas à mes mesures affichées sur la démo visible au lien ci-dessus : comme indiqué précedemment à demi mots, la doctrine de l&#039;Interieur contre les &amp;quot;ecoterroristes&amp;quot; détruit la possibilité de faire de la science convenablement en France avec des ordinateurs. Je n&#039;ai pas les moyens financiers, techniques ni l&#039;envie de passer du temps a déjouer des attaques et entraves informatiques récurrentes. &lt;br /&gt;
L&#039;intégrité logique du code est bonne.&lt;br /&gt;
Si le système change ou si vous n&#039;êtes pas trop ciblé, ça pourra toujours être utile.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Et publier sur lowtechlab, c&#039;est un signal pour t&#039;inciter a &lt;br /&gt;
faire tes mesures avec un multimetre et une vieille caméra pas connectée et l&#039;uploader sur youtube ou peertube. &lt;br /&gt;
Si tu lis ce tuto et que tu n&#039;es pas encore une cible éco terroriste, tu as un superpouvoir : la cape d&#039;invisibilité&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Habitat, Energy, Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=140&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=ensoleillement, photovoltaïque, ordinateur, raspberry pi, numerique, raspberry, luminosité&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Mesure_de_l_ensoleillement-luminosit__avec_un_ordinateur_monocarte__raspberry-orangepi__How_to_Quickly_test_a_solar_panel_using_a_multimeter.mp4&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
ordinateur monocarte (raspberry ou autre) : environ 100€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
clé usb: 10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
capteur de luminosité yoctopuce yoctolight v4: environ 30€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
vidéo : mesure accréditant l&#039;hypothèse d&#039;une production à 50% de la puissance nominale par temps nuageux (https://www.youtube.com/watch?v=H_Aow78MFmQ)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
installation de l&#039;ordinateur monocarte&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Installer dietpi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Pour l&#039;installation, je vous conseille d&#039;utiliser dietpi. L&#039;interet de dietpi est notamment la legereté du systeme pour des ordinateurs monocartes, mais aussi l&#039;installation automatique de logiciels libres par un menu relativement &amp;quot;user friendly&amp;quot;. On peut mentionner parmis tous les logiciels installables automatiquement au démarrage du systeme (&amp;lt;nowiki&amp;gt;https://dietpi.com/dietpi-software.html&amp;lt;/nowiki&amp;gt;) des applis de domotique, interessante pour économiser de l&#039;énergie en fonction de la meteo, mais aussi les relais &amp;quot;tor&amp;quot; pour contribuer au réseau relativement anonymisant tor, interessant pour les &amp;quot;éco terroristes&amp;quot; que nous sommes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
https://dietpi.com/#download&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Selectionner votre ordinateur monocarte (orange pi dans le cas présent) puis telecharger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Dezipper l&#039;archive obtenue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Utiliser ensuite balena etcher pour créer une clé usb bootable pour installer dietpi sur votre ordinateur monocarte (orange pi 5 dans le cas présent mais ca fonctionne pareil sur d&#039;autres ordinateurs monocartes).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
https://etcher.balena.io/#download-etcher&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Double cliquer sur le fichier téléchargé&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Selectionner l&#039;image de dietpi téléchargée, selectionner votre clé usb, cliquer sur flash.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Il ne vous reste plus qu&#039;à brancher la clé usb sur le orangepi et il bootera automatiquement sur la clé usb.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Pour un raspberry pi, on utilise une carte sd mais on peut configurer le boot usb également (voir ici : &amp;lt;nowiki&amp;gt;https://makerhelp.fr/booter-un-raspberry-pi-4-sur-un-disque-dur-ou-un-ssd-en-usb/&amp;lt;/nowiki&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Allumer votre orangepi/raspberrypi avec la clé usb branchée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Suivre les menus que vous propose dietpi au premier démarrage pour installer le dietpi sans autre logiciel. C&#039;es très facile, c&#039;est en anglais et tout est automatisé.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Vous pouvez vous déplacer dans les menus au clavier avec les fleches et la touche tab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
Selectionner avec espace et valider avec entree.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Ne pas installer de logiciels optionnels tels que nextcloud.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Mesure_de_l_ensoleillement-luminosit__avec_un_ordinateur_monocarte__raspberry-orangepi__orange-pi-5.jpg&lt;br /&gt;
|Step_Picture_01=Mesure_de_l_ensoleillement-luminosit__avec_un_ordinateur_monocarte__raspberry-orangepi__Capture_d_cran_du_2024-01-08_19-53-10.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
brancher le capteur de luminosité yoctopuce yoctolight v4&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
La led bleu du capteur clignote lentement lorsque le capteur est branché&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Attention à ne pas débrancher le capteur lors des mesures, sinon, il faut&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
relancer le serveur (docker compose down &amp;amp;&amp;amp; docker compose up)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Mesure_de_l_ensoleillement-luminosit_avec_un_ordinateur_monocarte_raspberry-orangepi_IMG_20240108_194725_812.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
installer le serveur django&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
1.installer docker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
taper dans votre terminal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;sudo apt -y update &amp;amp;&amp;amp; sudo apt -y upgrade&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
sudo apt install git lsb-release gnupg2 apt-transport-https ca-certificates curl software-properties-common -y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/debian/gpg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
sudo add-apt-repository &amp;quot;deb [arch=$(dpkg --print-architecture)] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/debian&amp;lt;/nowiki&amp;gt; $(lsb_release -cs) stable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
sudo usermod -aG docker $USER&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
newgrp docker&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
sudo systemctl start docker &amp;amp;&amp;amp; sudo systemctl enable docker&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
2.suivre les étapes du dépot &amp;lt;nowiki&amp;gt;https://gitlab.com/aurelpere/lux&amp;lt;/nowiki&amp;gt; (logiciel libre que j&#039;ai codé pour faciliter l&#039;utilisation de la yoctolight):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
taper dans votre terminal &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;blockquote&amp;gt;git clone &amp;lt;nowiki&amp;gt;https://gitlab.com/aurelpere/lux.git&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
taper dans votre terminal &lt;br /&gt;
&amp;lt;blockquote&amp;gt;cd lux &amp;amp;&amp;amp; docker compose up&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
C&#039;est prêt, votre ordinateur monocarte enregistre les mesures de luminosité&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
mesurées en lux toutes les minutes et fait tourner un site internet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
accessible sur le port 4000 qui permet d&#039;afficher les mesures enregistrées dans une&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
base de données toutes les minutes et sélectionner les mesures en fonction des&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
dates entrées par l&#039;utilisateur (avec export excel possible).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Pour rendre le site internet accessible à d&#039;autres ordinateurs, se réferrer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
aux étapes 6 à 11 de ce tutoriel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
[[Serveur orangepi-raspberry nextcloud en photovoltaïque autonome]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Le serveur est accessible aux adresses [http://adresse_ip:4000 &amp;lt;nowiki&amp;gt;http://adresse_ip&amp;lt;/nowiki&amp;gt;:4000] en local et &amp;lt;nowiki&amp;gt;http://adresse_ip_publique&amp;lt;/nowiki&amp;gt; sur internet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Ce tutoriel sera mis à jour avec les capteurs yoctopuce de tension et d&#039;intensité lorsque j&#039;aurai le temps, la motivation et le budget :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
A noter que si vous préférez utiliser les stats d&#039;ensoleillement du modele jrc,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
vous pouvez vous reporter à mon autre tuto sur le dimensionnement photovoltaïque en site isolé-autonome ici: [[Dimensionner une installation photovoltaïque autonome]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Mesure_de_l_ensoleillement-luminosit__avec_un_ordinateur_monocarte__raspberry-orangepi__Capture_d_cran_du_2024-01-08_17-46-13.png&lt;br /&gt;
|Step_Picture_01=Mesure_de_l_ensoleillement-luminosit__avec_un_ordinateur_monocarte__raspberry-orangepi__Capture_d_cran_du_2024-01-08_17-46-42.png&lt;br /&gt;
|Step_Picture_02=Mesure_de_l_ensoleillement-luminosit__avec_un_ordinateur_monocarte__raspberry-orangepi__Capture_d_cran_du_2024-01-08_17-46-48.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Dimensionner_la_r%C3%A9cup%C3%A9ration_d%27eau_de_pluie_pour_%C3%AAtre_autonome&amp;diff=152005</id>
		<title>Dimensionner la récupération d&#039;eau de pluie pour être autonome</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Dimensionner_la_r%C3%A9cup%C3%A9ration_d%27eau_de_pluie_pour_%C3%AAtre_autonome&amp;diff=152005"/>
		<updated>2025-11-28T19:06:10Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Dimensionner_la_r_cup_ration_d_eau_de_pluie_pour__tre_autonome_IMG_20240227_173849_315.jpg&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Dimensionner la récupération d&#039;eau de pluie hors réseau&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Water&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=1&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=0&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=dimensionnement, eau de pluie, récupération, stockage, eau, eau de pluie, récupération&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Dans des cas où on souhaite être 100% autonome hors réseau, la question de l&#039;eau est essentielle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
C&#039;est d&#039;ailleurs le premier élément à considérer par exemple dans les démarches de permaculture (phase d&#039;observation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
J&#039;ai initialement fait les calculs ci dessous pour &amp;quot;autonomiser&amp;quot; un mobile home avec l&#039;idée d&#039;utiliser des modules photovoltaïques dans un assemblage récupérateur d&#039;eau, comme le proposait le concept ulta chaata (https://www.facebook.com/weultachaata/?locale=fr_FR et https://fr.futuroprossimo.it/2023/03/ulta-chaata-ombrello-magico-che-puo-dare-acqua-e-luce-allindia/) avant d&#039;être récupérée à Los Angeles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
On peut s&#039;interroger sur la façon adéquate de dimensionner des installations pour récupérer de l&#039;eau de pluie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Pour cela, on peut utiliser les données de Météo France afin d&#039;avoir un regard rétrospectif sur les précipitations saisonnières et ajuster ainsi les dimensions des récupérateurs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Démo web interactive ici :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
https://vpn.matangi.dev/water&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tuto_Attachments={{Tuto Attachments}}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Prérequis logiciel&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Dans ce tuto, on utilise des données météos synop disponibles ici :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
http://data.cquest.org/meteo-france/synop/ dont vous trouverez la description ici:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
http://data.cquest.org/meteo-france/synop/doc_parametres_synop_168.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Vous pouvez également les télécharger sur le site de Meteo France:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
https://donneespubliques.meteofrance.fr/?fond=produit&amp;amp;id_produit=90&amp;amp;id_rubrique=32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Télécharger tous les fichiers csv des années et mois à partir desquels vous souhaitez que les calculs soient effectués, placer les dans un repertoire de votre choix et dezipper les (format archive gz). Placer également dans ce répertoire le fichier processing.py contenant le code partagé dans ce tutoriel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Exemple en ligne de commande linux debian pour télécharger et dézipper tous les csv de l&#039;année 2020 dans un repertoire ~/synop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
(Dans la suite du tutoriel on utilise toutes les données des années 2010 à 2020)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
mkdir -p synop &amp;amp;&amp;amp; cd synop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202001.csv.gz &amp;amp;&amp;amp; gzip -d synop.202001.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202002.csv.gz &amp;amp;&amp;amp; gzip -d synop.202002.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202003.csv.gz &amp;amp;&amp;amp; gzip -d synop.202003.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202004.csv.gz &amp;amp;&amp;amp; gzip -d synop.202004.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202005.csv.gz &amp;amp;&amp;amp; gzip -d synop.202005.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202006.csv.gz &amp;amp;&amp;amp; gzip -d synop.202006.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202007.csv.gz &amp;amp;&amp;amp; gzip -d synop.202007.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202008.csv.gz &amp;amp;&amp;amp; gzip -d synop.202008.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202009.csv.gz &amp;amp;&amp;amp; gzip -d synop.202009.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202010.csv.gz &amp;amp;&amp;amp; gzip -d synop.202010.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202011.csv.gz &amp;amp;&amp;amp; gzip -d synop.202011.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
wget http://data.cquest.org/meteo-france/synop/synop.202012.csv.gz &amp;amp;&amp;amp; gzip -d synop.202012.csv.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Pour utiliser python sous un autre os que linux, débrouillez vous avec vos daubes propriétaires intrusives.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Sous linux, python est généralement installé et pour utiliser le code partagé dans &lt;br /&gt;
ce tuto, il suffira de copier coller le code dans un fichier processing.py puis entrer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
python processing.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Cependant, il faut installer la librairie pandas qui est très largement utilisé &lt;br /&gt;
dans le monde de la finance et dans le monde scientifique, notamment pour sa &lt;br /&gt;
gestion efficace des séries temporelles et sa capacité de vectorisation des données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Pour cela voici les commandes à entrer dans linux debian avant de lancer le &lt;br /&gt;
script processing.py pour être tranquille:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
sudo apt install python3 python3-venv python3-pip python-is-python3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; python -m venv venv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
pip install pandas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
Penser ensuite à activer l&#039;environnement virtuel dans lequel est installé &lt;br /&gt;
pandas chaque fois que vous utilisez le script (apres un reboot ou si vous &lt;br /&gt;
fermez et reouvrez votre terminal) en lançant la commande:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
cd ~ &amp;amp;&amp;amp; source venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
Nous sommes en 2024 et si vous êtes cibles d&#039;entraves anti éco-terroristes &lt;br /&gt;
de psychopathes comme moi, et en bon scientifique qui se respecte vous &lt;br /&gt;
inspectez vos instruments de mesures avant de les utiliser, vous pouvez &lt;br /&gt;
inspectez le code source de pandas qui est évidemment logiciel libre ici : &lt;br /&gt;
https://github.com/pandas-dev/pandas , ou vous pouvez faire l&#039;hypothèse &lt;br /&gt;
discutable qu&#039;on peut avoir confiance dans un logiciel aussi massivement &lt;br /&gt;
utilisé dans le monde de la finance et de la science.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Python reposant sur des librairies C pour un certains nombres d&#039;opérations &lt;br /&gt;
de base, le hack, y compris le hack scientifique, n&#039;est jamais impossible &lt;br /&gt;
mais on laissera de coté ces considérations pro-lowtech qui n&#039;entrent pas &lt;br /&gt;
dans le champ de réflexion de ce tutoriel.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
Evaluer les besoins&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
Pour évaluer les besoins pour des installations domestiques, rien de plus efficace que le compteur d&#039;eau. Une première approche peut être de faire une règle de trois à partir de votre consommation hebdomadaire. Vous pouvez aussi mesurer individuellement chaque poste de consommation (douche, machine à laver, cuisine, jardin, wc, etc) afin de faire des projections saisonnières plus justes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Pour un mobile home avec toilettes sèches on a :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conso solo - 2 douches semaine (L)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
douche (L)			50&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
boisson				4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
vaisselle			10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
cuisine				4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
machine a laver			50&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
semaine (2douches, 1 machine)	276&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
journalier			39&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
trimestre (13 semaines)		3588&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
conso à deux - 4 douches semaine (L)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
douche				50&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
boisson				4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
vaisselle			10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
cuisine				4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
machine a laver			50&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
semaine (4douches, 1 machine)	752&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
journalier			107&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
trimestre (13 semaines)		9776&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
Calculer rétrospectivement les précipitations journalieres et saisonnieres&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
Pour dimensionner correctement le stockage, il convient d&#039;abord d&#039;avoir des informations sur les précipitations &amp;quot;moyennes&amp;quot; des années précédentes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Pour cela, on fournit le bout de code python suivant (valable avec les données météo france mais adaptable à d&#039;autres données météos ailleurs, le synop étant un encodage de données utilisé par l&#039;OMM):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
import os&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
# Attention si vous utilisez ce bout de code dans d&#039;autres pays que la france, il faut ajouter&lt;br /&gt;
# les stations météos adhoc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
# Processing des data&lt;br /&gt;
print(&amp;quot;\nprocessing des data\n&amp;quot;)&lt;br /&gt;
files=os.listdir(&#039;.&#039;)&lt;br /&gt;
csv=[a for a in files if a[-3:]==&#039;csv&#039;]&lt;br /&gt;
combined_df = pd.concat((pd.read_csv(f,sep=&#039;;&#039;) for f in csv), ignore_index=True)&lt;br /&gt;
#07510 bordeaux&lt;br /&gt;
#07535 gourdon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
#stations météos &amp;quot;hard coded&amp;quot;&lt;br /&gt;
stations=[{&#039;ID&#039;: &#039;07005&#039;, &#039;Nom&#039;: &#039;ABBEVILLE&#039;, &#039;Latitude&#039;: &#039;50.136000&#039;, &#039;Longitude&#039;: &#039;1.834000&#039;, &#039;Altitude&#039;: &#039;69&#039;}, {&#039;ID&#039;: &#039;07015&#039;, &#039;Nom&#039;: &#039;LILLE-LESQUIN&#039;, &#039;Latitude&#039;: &#039;50.570000&#039;, &#039;Longitude&#039;: &#039;3.097500&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07020&#039;, &#039;Nom&#039;: &#039;PTE DE LA HAGUE&#039;, &#039;Latitude&#039;: &#039;49.725167&#039;, &#039;Longitude&#039;: &#039;-1.939833&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;07027&#039;, &#039;Nom&#039;: &#039;CAEN-CARPIQUET&#039;, &#039;Latitude&#039;: &#039;49.180000&#039;, &#039;Longitude&#039;: &#039;-0.456167&#039;, &#039;Altitude&#039;: &#039;67&#039;}, {&#039;ID&#039;: &#039;07037&#039;, &#039;Nom&#039;: &#039;ROUEN-BOOS&#039;, &#039;Latitude&#039;: &#039;49.383000&#039;, &#039;Longitude&#039;: &#039;1.181667&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07072&#039;, &#039;Nom&#039;: &#039;REIMS-PRUNAY&#039;, &#039;Latitude&#039;: &#039;49.209667&#039;, &#039;Longitude&#039;: &#039;4.155333&#039;, &#039;Altitude&#039;: &#039;95&#039;}, {&#039;ID&#039;: &#039;07110&#039;, &#039;Nom&#039;: &#039;BREST-GUIPAVAS&#039;, &#039;Latitude&#039;: &#039;48.444167&#039;, &#039;Longitude&#039;: &#039;-4.412000&#039;, &#039;Altitude&#039;: &#039;94&#039;}, {&#039;ID&#039;: &#039;07117&#039;, &#039;Nom&#039;: &amp;quot;PLOUMANAC&#039;H&amp;quot;, &#039;Latitude&#039;: &#039;48.825833&#039;, &#039;Longitude&#039;: &#039;-3.473167&#039;, &#039;Altitude&#039;: &#039;55&#039;}, {&#039;ID&#039;: &#039;07130&#039;, &#039;Nom&#039;: &#039;RENNES-ST JACQUES&#039;, &#039;Latitude&#039;: &#039;48.068833&#039;, &#039;Longitude&#039;: &#039;-1.734000&#039;, &#039;Altitude&#039;: &#039;36&#039;}, {&#039;ID&#039;: &#039;07139&#039;, &#039;Nom&#039;: &#039;ALENCON&#039;, &#039;Latitude&#039;: &#039;48.445500&#039;, &#039;Longitude&#039;: &#039;0.110167&#039;, &#039;Altitude&#039;: &#039;143&#039;}, {&#039;ID&#039;: &#039;07149&#039;, &#039;Nom&#039;: &#039;ORLY&#039;, &#039;Latitude&#039;: &#039;48.716833&#039;, &#039;Longitude&#039;: &#039;2.384333&#039;, &#039;Altitude&#039;: &#039;89&#039;}, {&#039;ID&#039;: &#039;07168&#039;, &#039;Nom&#039;: &#039;TROYES-BARBEREY&#039;, &#039;Latitude&#039;: &#039;48.324667&#039;, &#039;Longitude&#039;: &#039;4.020000&#039;, &#039;Altitude&#039;: &#039;112&#039;}, {&#039;ID&#039;: &#039;07181&#039;, &#039;Nom&#039;: &#039;NANCY-OCHEY&#039;, &#039;Latitude&#039;: &#039;48.581000&#039;, &#039;Longitude&#039;: &#039;5.959833&#039;, &#039;Altitude&#039;: &#039;336&#039;}, {&#039;ID&#039;: &#039;07190&#039;, &#039;Nom&#039;: &#039;STRASBOURG-ENTZHEIM&#039;, &#039;Latitude&#039;: &#039;48.549500&#039;, &#039;Longitude&#039;: &#039;7.640333&#039;, &#039;Altitude&#039;: &#039;150&#039;}, {&#039;ID&#039;: &#039;07207&#039;, &#039;Nom&#039;: &#039;BELLE ILE-LE TALUT&#039;, &#039;Latitude&#039;: &#039;47.294333&#039;, &#039;Longitude&#039;: &#039;-3.218333&#039;, &#039;Altitude&#039;: &#039;34&#039;}, {&#039;ID&#039;: &#039;07222&#039;, &#039;Nom&#039;: &#039;NANTES-BOUGUENAIS&#039;, &#039;Latitude&#039;: &#039;47.150000&#039;, &#039;Longitude&#039;: &#039;-1.608833&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;07240&#039;, &#039;Nom&#039;: &#039;TOURS&#039;, &#039;Latitude&#039;: &#039;47.444500&#039;, &#039;Longitude&#039;: &#039;0.727333&#039;, &#039;Altitude&#039;: &#039;108&#039;}, {&#039;ID&#039;: &#039;07255&#039;, &#039;Nom&#039;: &#039;BOURGES&#039;, &#039;Latitude&#039;: &#039;47.059167&#039;, &#039;Longitude&#039;: &#039;2.359833&#039;, &#039;Altitude&#039;: &#039;161&#039;}, {&#039;ID&#039;: &#039;07280&#039;, &#039;Nom&#039;: &#039;DIJON-LONGVIC&#039;, &#039;Latitude&#039;: &#039;47.267833&#039;, &#039;Longitude&#039;: &#039;5.088333&#039;, &#039;Altitude&#039;: &#039;219&#039;}, {&#039;ID&#039;: &#039;07299&#039;, &#039;Nom&#039;: &#039;BALE-MULHOUSE&#039;, &#039;Latitude&#039;: &#039;47.614333&#039;, &#039;Longitude&#039;: &#039;7.510000&#039;, &#039;Altitude&#039;: &#039;263&#039;}, {&#039;ID&#039;: &#039;07314&#039;, &#039;Nom&#039;: &#039;PTE DE CHASSIRON&#039;, &#039;Latitude&#039;: &#039;46.046833&#039;, &#039;Longitude&#039;: &#039;-1.411500&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;07335&#039;, &#039;Nom&#039;: &#039;POITIERS-BIARD&#039;, &#039;Latitude&#039;: &#039;46.593833&#039;, &#039;Longitude&#039;: &#039;0.314333&#039;, &#039;Altitude&#039;: &#039;123&#039;}, {&#039;ID&#039;: &#039;07434&#039;, &#039;Nom&#039;: &#039;LIMOGES-BELLEGARDE&#039;, &#039;Latitude&#039;: &#039;45.861167&#039;, &#039;Longitude&#039;: &#039;1.175000&#039;, &#039;Altitude&#039;: &#039;402&#039;}, {&#039;ID&#039;: &#039;07460&#039;, &#039;Nom&#039;: &#039;CLERMONT-FD&#039;, &#039;Latitude&#039;: &#039;45.786833&#039;, &#039;Longitude&#039;: &#039;3.149333&#039;, &#039;Altitude&#039;: &#039;331&#039;}, {&#039;ID&#039;: &#039;07471&#039;, &#039;Nom&#039;: &#039;LE PUY-LOUDES&#039;, &#039;Latitude&#039;: &#039;45.074500&#039;, &#039;Longitude&#039;: &#039;3.764000&#039;, &#039;Altitude&#039;: &#039;833&#039;}, {&#039;ID&#039;: &#039;07481&#039;, &#039;Nom&#039;: &#039;LYON-ST EXUPERY&#039;, &#039;Latitude&#039;: &#039;45.726500&#039;, &#039;Longitude&#039;: &#039;5.077833&#039;, &#039;Altitude&#039;: &#039;235&#039;}, {&#039;ID&#039;: &#039;07510&#039;, &#039;Nom&#039;: &#039;BORDEAUX-MERIGNAC&#039;, &#039;Latitude&#039;: &#039;44.830667&#039;, &#039;Longitude&#039;: &#039;-0.691333&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07535&#039;, &#039;Nom&#039;: &#039;GOURDON&#039;, &#039;Latitude&#039;: &#039;44.745000&#039;, &#039;Longitude&#039;: &#039;1.396667&#039;, &#039;Altitude&#039;: &#039;260&#039;}, {&#039;ID&#039;: &#039;07558&#039;, &#039;Nom&#039;: &#039;MILLAU&#039;, &#039;Latitude&#039;: &#039;44.118500&#039;, &#039;Longitude&#039;: &#039;3.019500&#039;, &#039;Altitude&#039;: &#039;712&#039;}, {&#039;ID&#039;: &#039;07577&#039;, &#039;Nom&#039;: &#039;MONTELIMAR&#039;, &#039;Latitude&#039;: &#039;44.581167&#039;, &#039;Longitude&#039;: &#039;4.733000&#039;, &#039;Altitude&#039;: &#039;73&#039;}, {&#039;ID&#039;: &#039;07591&#039;, &#039;Nom&#039;: &#039;EMBRUN&#039;, &#039;Latitude&#039;: &#039;44.565667&#039;, &#039;Longitude&#039;: &#039;6.502333&#039;, &#039;Altitude&#039;: &#039;871&#039;}, {&#039;ID&#039;: &#039;07607&#039;, &#039;Nom&#039;: &#039;MONT-DE-MARSAN&#039;, &#039;Latitude&#039;: &#039;43.909833&#039;, &#039;Longitude&#039;: &#039;-0.500167&#039;, &#039;Altitude&#039;: &#039;59&#039;}, {&#039;ID&#039;: &#039;07621&#039;, &#039;Nom&#039;: &#039;TARBES-OSSUN&#039;, &#039;Latitude&#039;: &#039;43.188000&#039;, &#039;Longitude&#039;: &#039;0.000000&#039;, &#039;Altitude&#039;: &#039;360&#039;}, {&#039;ID&#039;: &#039;07627&#039;, &#039;Nom&#039;: &#039;ST GIRONS&#039;, &#039;Latitude&#039;: &#039;43.005333&#039;, &#039;Longitude&#039;: &#039;1.106833&#039;, &#039;Altitude&#039;: &#039;414&#039;}, {&#039;ID&#039;: &#039;07630&#039;, &#039;Nom&#039;: &#039;TOULOUSE-BLAGNAC&#039;, &#039;Latitude&#039;: &#039;43.621000&#039;, &#039;Longitude&#039;: &#039;1.378833&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07643&#039;, &#039;Nom&#039;: &#039;MONTPELLIER&#039;, &#039;Latitude&#039;: &#039;43.577000&#039;, &#039;Longitude&#039;: &#039;3.963167&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07650&#039;, &#039;Nom&#039;: &#039;MARIGNANE&#039;, &#039;Latitude&#039;: &#039;43.437667&#039;, &#039;Longitude&#039;: &#039;5.216000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;07661&#039;, &#039;Nom&#039;: &#039;CAP CEPET&#039;, &#039;Latitude&#039;: &#039;43.079333&#039;, &#039;Longitude&#039;: &#039;5.940833&#039;, &#039;Altitude&#039;: &#039;115&#039;}, {&#039;ID&#039;: &#039;07690&#039;, &#039;Nom&#039;: &#039;NICE&#039;, &#039;Latitude&#039;: &#039;43.648833&#039;, &#039;Longitude&#039;: &#039;7.209000&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07747&#039;, &#039;Nom&#039;: &#039;PERPIGNAN&#039;, &#039;Latitude&#039;: &#039;42.737167&#039;, &#039;Longitude&#039;: &#039;2.872833&#039;, &#039;Altitude&#039;: &#039;42&#039;}, {&#039;ID&#039;: &#039;07761&#039;, &#039;Nom&#039;: &#039;AJACCIO&#039;, &#039;Latitude&#039;: &#039;41.918000&#039;, &#039;Longitude&#039;: &#039;8.792667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;07790&#039;, &#039;Nom&#039;: &#039;BASTIA&#039;, &#039;Latitude&#039;: &#039;42.540667&#039;, &#039;Longitude&#039;: &#039;9.485167&#039;, &#039;Altitude&#039;: &#039;10&#039;}, {&#039;ID&#039;: &#039;61968&#039;, &#039;Nom&#039;: &#039;GLORIEUSES&#039;, &#039;Latitude&#039;: &#039;-11.582667&#039;, &#039;Longitude&#039;: &#039;47.289667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;61970&#039;, &#039;Nom&#039;: &#039;JUAN DE NOVA&#039;, &#039;Latitude&#039;: &#039;-17.054667&#039;, &#039;Longitude&#039;: &#039;42.712000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;61972&#039;, &#039;Nom&#039;: &#039;EUROPA&#039;, &#039;Latitude&#039;: &#039;-22.344167&#039;, &#039;Longitude&#039;: &#039;40.340667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;61976&#039;, &#039;Nom&#039;: &#039;TROMELIN&#039;, &#039;Latitude&#039;: &#039;-15.887667&#039;, &#039;Longitude&#039;: &#039;54.520667&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;61980&#039;, &#039;Nom&#039;: &#039;GILLOT-AEROPORT&#039;, &#039;Latitude&#039;: &#039;-20.892500&#039;, &#039;Longitude&#039;: &#039;55.528667&#039;, &#039;Altitude&#039;: &#039;8&#039;}, {&#039;ID&#039;: &#039;61996&#039;, &#039;Nom&#039;: &#039;NOUVELLE AMSTERDAM&#039;, &#039;Latitude&#039;: &#039;-37.795167&#039;, &#039;Longitude&#039;: &#039;77.569167&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;61997&#039;, &#039;Nom&#039;: &#039;CROZET&#039;, &#039;Latitude&#039;: &#039;-46.432500&#039;, &#039;Longitude&#039;: &#039;51.856667&#039;, &#039;Altitude&#039;: &#039;146&#039;}, {&#039;ID&#039;: &#039;61998&#039;, &#039;Nom&#039;: &#039;KERGUELEN&#039;, &#039;Latitude&#039;: &#039;-49.352333&#039;, &#039;Longitude&#039;: &#039;70.243333&#039;, &#039;Altitude&#039;: &#039;29&#039;}, {&#039;ID&#039;: &#039;67005&#039;, &#039;Nom&#039;: &#039;PAMANDZI&#039;, &#039;Latitude&#039;: &#039;-12.805500&#039;, &#039;Longitude&#039;: &#039;45.282833&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;71805&#039;, &#039;Nom&#039;: &#039;ST-PIERRE&#039;, &#039;Latitude&#039;: &#039;46.766333&#039;, &#039;Longitude&#039;: &#039;-56.179167&#039;, &#039;Altitude&#039;: &#039;21&#039;}, {&#039;ID&#039;: &#039;78890&#039;, &#039;Nom&#039;: &#039;LA DESIRADE METEO&#039;, &#039;Latitude&#039;: &#039;16.335000&#039;, &#039;Longitude&#039;: &#039;-61.004000&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;78894&#039;, &#039;Nom&#039;: &#039;ST-BARTHELEMY METEO&#039;, &#039;Latitude&#039;: &#039;17.901500&#039;, &#039;Longitude&#039;: &#039;-62.852167&#039;, &#039;Altitude&#039;: &#039;44&#039;}, {&#039;ID&#039;: &#039;78897&#039;, &#039;Nom&#039;: &#039;LE RAIZET AERO&#039;, &#039;Latitude&#039;: &#039;16.264000&#039;, &#039;Longitude&#039;: &#039;-61.516333&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;78922&#039;, &#039;Nom&#039;: &#039;TRINITE-CARAVEL&#039;, &#039;Latitude&#039;: &#039;14.774500&#039;, &#039;Longitude&#039;: &#039;-60.875333&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;78925&#039;, &#039;Nom&#039;: &#039;LAMENTIN-AERO&#039;, &#039;Latitude&#039;: &#039;14.595333&#039;, &#039;Longitude&#039;: &#039;-60.995667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;81401&#039;, &#039;Nom&#039;: &#039;SAINT LAURENT&#039;, &#039;Latitude&#039;: &#039;5.485500&#039;, &#039;Longitude&#039;: &#039;-54.031667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;81405&#039;, &#039;Nom&#039;: &#039;CAYENNE-MATOURY&#039;, &#039;Latitude&#039;: &#039;4.822333&#039;, &#039;Longitude&#039;: &#039;-52.365333&#039;, &#039;Altitude&#039;: &#039;4&#039;}, {&#039;ID&#039;: &#039;81408&#039;, &#039;Nom&#039;: &#039;SAINT GEORGES&#039;, &#039;Latitude&#039;: &#039;3.890667&#039;, &#039;Longitude&#039;: &#039;-51.804667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;81415&#039;, &#039;Nom&#039;: &#039;MARIPASOULA&#039;, &#039;Latitude&#039;: &#039;3.640167&#039;, &#039;Longitude&#039;: &#039;-54.028333&#039;, &#039;Altitude&#039;: &#039;106&#039;}, {&#039;ID&#039;: &#039;89642&#039;, &#039;Nom&#039;: &amp;quot;DUMONT D&#039;URVILLE&amp;quot;, &#039;Latitude&#039;: &#039;-66.663167&#039;, &#039;Longitude&#039;: &#039;140.001000&#039;, &#039;Altitude&#039;: &#039;43&#039;}]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
def distance(lat1, lon1, lat2, lon2):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Calcule la distance entre deux points géographiques en utilisant la formule de la distance euclidienne.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return math.sqrt((lat2 - lat1)**2 + (lon2 - lon1)**2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
def station_la_plus_proche(x, y, stations):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Trouve la station météo la plus proche en utilisant les coordonnées x et y (latitude et longitude).&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    distance_min = float(&#039;inf&#039;)&lt;br /&gt;
    station_proche = None&lt;br /&gt;
    &lt;br /&gt;
    for station in stations:&lt;br /&gt;
        lat_station = float(station[&#039;Latitude&#039;])&lt;br /&gt;
        lon_station = float(station[&#039;Longitude&#039;])&lt;br /&gt;
        d = distance(x, y, lat_station, lon_station)&lt;br /&gt;
        if d &amp;lt; distance_min:&lt;br /&gt;
            distance_min = d&lt;br /&gt;
            station_proche = station&lt;br /&gt;
    &lt;br /&gt;
    return station_proche&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la latitude et la longitude&lt;br /&gt;
x_input = input(&amp;quot;Entrez la latitude de votre lieux: &amp;quot;)&lt;br /&gt;
y_input = input(&amp;quot;Entrez la longitude de votre lieux: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
x_input = float(x_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
y_input = float(y_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
# Utilisez les valeurs entrées par l&#039;utilisateur comme variables x et y pour trouver la station météo la plus proche&lt;br /&gt;
station_proche = station_la_plus_proche(x_input, y_input, stations)&lt;br /&gt;
print(&amp;quot;La station météo la plus proche est:&amp;quot;, station_proche[&#039;Nom&#039;])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
result=combined_df[combined_df[&#039;numer_sta&#039;]==int(station_proche[&#039;ID&#039;])]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
# Convertir la colonne &#039;date_column&#039; dans un format datetime et la mettre en index trié&lt;br /&gt;
result[&#039;datetime&#039;] = pd.to_datetime(result[&#039;date&#039;], format=&#039;%Y%m%d%H%M%S&#039;)&lt;br /&gt;
result.set_index(&#039;datetime&#039;, inplace=True)&lt;br /&gt;
result = result.sort_index()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
# remplacer les données manquantes par 0&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].replace(&#039;mq&#039;,&#039;0&#039;)&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].astype(&#039;float&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
# Ne garder que la colonne des précipitations des 3 dernieres heures&lt;br /&gt;
result=result[&#039;rr3&#039;]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par jour&lt;br /&gt;
resultday=result.resample(&#039;D&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour (mm):\n&amp;quot;, resultday.mean())&lt;br /&gt;
print(&amp;quot;Minimum par jour (mm):\n&amp;quot;, resultday.min())&lt;br /&gt;
print(&amp;quot;Maximum par jour  (mm):\n&amp;quot;, resultday.max())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par semaine&lt;br /&gt;
resultweek=result.resample(&#039;W&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par mois&lt;br /&gt;
resultmonth=result.resample(&#039;ME&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par trimestre&lt;br /&gt;
resulttrim=result.resample(&#039;QE&#039;).sum()&lt;br /&gt;
resulttrim=resulttrim.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
print(resulttrim)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par an&lt;br /&gt;
resultyear=result.resample(&#039;YE&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nPrécipitations annuelles moyennes (mm):\n&amp;quot;,resultyear.mean())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
# Calculer le nombre de jours consécutifs maximum sans pluie&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
for value in resultday:&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        current_streak = 0  # Reset the streak if the value is not zero&lt;br /&gt;
print(f&amp;quot;\nNombre de jours consecutifs maximum sans pluie: {max_streak}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
# Moyenne par trimestre pour chaque trimestre&lt;br /&gt;
moyenne_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).mean()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
# Minimum par trimestre pour chaque trimestre&lt;br /&gt;
min_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).min()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
# Maximum par trimestre pour chaque trimestre&lt;br /&gt;
max_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).max()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre (mm):\n&amp;quot;, moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMinimum par trimestre pour chaque trimestre (mm):\n&amp;quot;, min_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par trimestre pour chaque trimestre (mm):\n&amp;quot;, max_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
# Minimum par jour pour chaque trimestre&lt;br /&gt;
min_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).min()&lt;br /&gt;
min_par_jour_par_trimestre=min_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
# Maximum par jour pour chaque trimestre&lt;br /&gt;
max_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).max()&lt;br /&gt;
max_par_jour_par_trimestre=max_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
# Moyenne par jour pour chaque trimestre&lt;br /&gt;
moyenne_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).mean()&lt;br /&gt;
moyenne_par_jour_par_trimestre=moyenne_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMinimum par jour pour chaque trimestre (mm):\n&amp;quot;, min_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par jour pour chaque trimestre (mm):\n&amp;quot;, max_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour pour chaque trimestre (mm):\n&amp;quot;, moyenne_par_jour_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
Pour la latitude 44.2 et longitude 0.6 on obtient:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processing des data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Entrez la latitude de votre lieux: 44.2&lt;br /&gt;
Entrez la longitude de votre lieux: 0.6&lt;br /&gt;
La station météo la plus proche est: GOURDON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
Moyenne par jour (mm):&lt;br /&gt;
 2.022896963663514&lt;br /&gt;
Minimum par jour (mm):&lt;br /&gt;
 -0.6000000000000001&lt;br /&gt;
Maximum par jour  (mm):&lt;br /&gt;
 55.0&lt;br /&gt;
trimestre&lt;br /&gt;
2010-03-31    202.0&lt;br /&gt;
2010-06-30    245.4&lt;br /&gt;
2010-09-30    132.2&lt;br /&gt;
2010-12-31    201.2&lt;br /&gt;
2011-03-31    126.7&lt;br /&gt;
2011-06-30    102.2&lt;br /&gt;
2011-09-30    164.6&lt;br /&gt;
2011-12-31    207.0&lt;br /&gt;
2012-03-31     99.8&lt;br /&gt;
2012-06-30    341.0&lt;br /&gt;
2012-09-30    100.0&lt;br /&gt;
2012-12-31    188.8&lt;br /&gt;
2013-03-31    248.4&lt;br /&gt;
2013-06-30    307.5&lt;br /&gt;
2013-09-30    136.6&lt;br /&gt;
2013-12-31    247.8&lt;br /&gt;
2014-03-31    253.8&lt;br /&gt;
2014-06-30    201.8&lt;br /&gt;
2014-09-30    192.8&lt;br /&gt;
2014-12-31    139.0&lt;br /&gt;
2015-03-31    176.4&lt;br /&gt;
2015-06-30    155.7&lt;br /&gt;
2015-09-30    184.6&lt;br /&gt;
2015-12-31     82.6&lt;br /&gt;
2016-03-31    322.1&lt;br /&gt;
2016-06-30    300.4&lt;br /&gt;
2016-09-30     29.0&lt;br /&gt;
2016-12-31    115.1&lt;br /&gt;
2017-03-31    213.0&lt;br /&gt;
2017-06-30    216.3&lt;br /&gt;
2017-09-30    133.2&lt;br /&gt;
2017-12-31    155.3&lt;br /&gt;
2018-03-31    252.8&lt;br /&gt;
2018-06-30    251.9&lt;br /&gt;
2018-09-30    103.7&lt;br /&gt;
2018-12-31    199.3&lt;br /&gt;
2019-03-31    100.1&lt;br /&gt;
2019-06-30    203.5&lt;br /&gt;
2019-09-30    138.8&lt;br /&gt;
2019-12-31    350.9&lt;br /&gt;
2020-03-31    149.5&lt;br /&gt;
2020-06-30    150.9&lt;br /&gt;
2020-09-30     66.9&lt;br /&gt;
2020-12-31    237.4&lt;br /&gt;
Freq: QE-DEC, Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
Précipitations annuelles moyennes (mm):&lt;br /&gt;
 738.9090909090909&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
Nombre de jours consecutifs maximum sans pluie: 44&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
Moyenne par trimestre pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    194.963636&lt;br /&gt;
2    225.145455&lt;br /&gt;
3    125.672727&lt;br /&gt;
4    193.127273&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
Minimum par trimestre pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1     99.8&lt;br /&gt;
2    102.2&lt;br /&gt;
3     29.0&lt;br /&gt;
4     82.6&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Maximum par trimestre pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    322.1&lt;br /&gt;
2    341.0&lt;br /&gt;
3    192.8&lt;br /&gt;
4    350.9&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
Minimum par jour pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1   -0.6&lt;br /&gt;
2   -0.4&lt;br /&gt;
3   -0.3&lt;br /&gt;
4   -0.5&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
Maximum par jour pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    42.8&lt;br /&gt;
2    55.0&lt;br /&gt;
3    50.2&lt;br /&gt;
4    28.0&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
Moyenne par jour pour chaque trimestre (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    2.159718&lt;br /&gt;
2    2.474126&lt;br /&gt;
3    1.366008&lt;br /&gt;
4    2.099209&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
Dimensionner la surfce de récupération et le stockage&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
Pour dimensionner, le stockage, on se rappellera utilement que 1m2 de surface donne un équivalent d&#039;1L pour 1mm de précipitations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
On peut alors faire des calculs avec les précipitations moyennes précédemment estimées et les consommations moyennes précédemment mesurées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exemple pour 1m2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
annuel (L)				739&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
max jour (L)				55&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
min trimestre (L)			29&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
max trimestre (L)			350&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
moyenne min trimestre(L)		125&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
Besoins:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
Max 44 j sans pluie solo (L)		1735&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
Max 44 j sans pluie duo (L)		4727&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
consommation solo trimestre		3549&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
consommation duo trimestre		9669&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
Estimation &amp;quot;grosse louche&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
conso trimestre/precipitations moyenne min trimestre  =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
solo : 3588/125=29&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
duo: 9776/125=78&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
=&amp;gt; Il faut 29m2 pour satisfaire les besoins solo avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
=&amp;gt; Il faut 78m2 pour satisfaire les besoins duo avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
Les fortes précipitations sont généralement regroupées (grand écartype a la moyenne),&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
et on prendra par conséquent un réservoir minimum dimensionné à deux fois et demi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
ce qui est nécessaire pour la précipitation journalière maximum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
Contraintes précipitations importantes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
Il faut a minima un reservoir de 3987L en solo (2.5*précipitations journaliere max*29)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
et 10725L en duo (2.5*précipitations max *78)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
Mais il faut également un minimum pour les périodes de sécheresses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
1735L en solo (44j consécutifs max sans pluie) de réserve avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
4727L en duo (44j consécutifs max sans pluie) de réserve avec les hypothèses etape 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
ce qui est satisfait avec la contrainte précédente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
On va maintenant utiliser ces résultats de surface minimum et de stockage minimum&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
comme hypothèse de base et ajouter un &amp;quot;data-test&amp;quot; avec des itérations (50% de la surface min&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
et 100% du volume min comme points de depart de l&#039;iteration) sur la surface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
de récupération et le volume de stockage pour vérifier qu&#039;on n&#039;a pas de tarissement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
de notre stockage (on fait l&#039;hypothèse qu&#039;il y a une gestion du trop plein et qu&#039;on n&#039;a donc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
pas de problèmes de réservoir qui déborde) et qu&#039;on satisfait les besoins de consommation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
Optimiser le stockage et prendre en compte une utilisation supplémentaire d&#039;eau en periode estivale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
Le bout de code python amélioré est le suivant (les commentaires expliquent chaque etape).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
Pour expliquer un peu l’étape de l’itération :&lt;br /&gt;
On démarre aux volume0 de capacité et surface0 de surface précalculées dans l’étape précédente.&lt;br /&gt;
On fait des boucles d&#039;itérations sur les données de précipitations et chaque jour on fait la soustraction &lt;br /&gt;
eau recupérée-consommation journalière+consommation estivale si en periode estivale&lt;br /&gt;
En cas de tarissement: &lt;br /&gt;
on a une première boucle d’iteration 6 fois de +33 % de la surface, et pour chaque itération de surface, on a une deuxième boucle d’iteration 40 fois de +50 % du volume. On s’arrete à chaque boucle d’iteration dès que le dimensionnement convient et on enregistre le resultat.&lt;br /&gt;
On affiche les résultats à la fin des itérations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
import os&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import time&lt;br /&gt;
# Attention si vous utilisez ce bout de code dans d&#039;autres pays que la france, il faut ajouter&lt;br /&gt;
# les stations météos adhoc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
# Processing des data&lt;br /&gt;
print(&amp;quot;\nprocessing des data\n&amp;quot;)&lt;br /&gt;
files=os.listdir(&#039;.&#039;)&lt;br /&gt;
csv=[a for a in files if a[-3:]==&#039;csv&#039;]&lt;br /&gt;
combined_df = pd.concat((pd.read_csv(f,sep=&#039;;&#039;) for f in csv), ignore_index=True)&lt;br /&gt;
#07510 bordeaux&lt;br /&gt;
#07535 gourdon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
#stations météos &amp;quot;hard coded&amp;quot;&lt;br /&gt;
stations=[{&#039;ID&#039;: &#039;07005&#039;, &#039;Nom&#039;: &#039;ABBEVILLE&#039;, &#039;Latitude&#039;: &#039;50.136000&#039;, &#039;Longitude&#039;: &#039;1.834000&#039;, &#039;Altitude&#039;: &#039;69&#039;}, {&#039;ID&#039;: &#039;07015&#039;, &#039;Nom&#039;: &#039;LILLE-LESQUIN&#039;, &#039;Latitude&#039;: &#039;50.570000&#039;, &#039;Longitude&#039;: &#039;3.097500&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07020&#039;, &#039;Nom&#039;: &#039;PTE DE LA HAGUE&#039;, &#039;Latitude&#039;: &#039;49.725167&#039;, &#039;Longitude&#039;: &#039;-1.939833&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;07027&#039;, &#039;Nom&#039;: &#039;CAEN-CARPIQUET&#039;, &#039;Latitude&#039;: &#039;49.180000&#039;, &#039;Longitude&#039;: &#039;-0.456167&#039;, &#039;Altitude&#039;: &#039;67&#039;}, {&#039;ID&#039;: &#039;07037&#039;, &#039;Nom&#039;: &#039;ROUEN-BOOS&#039;, &#039;Latitude&#039;: &#039;49.383000&#039;, &#039;Longitude&#039;: &#039;1.181667&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07072&#039;, &#039;Nom&#039;: &#039;REIMS-PRUNAY&#039;, &#039;Latitude&#039;: &#039;49.209667&#039;, &#039;Longitude&#039;: &#039;4.155333&#039;, &#039;Altitude&#039;: &#039;95&#039;}, {&#039;ID&#039;: &#039;07110&#039;, &#039;Nom&#039;: &#039;BREST-GUIPAVAS&#039;, &#039;Latitude&#039;: &#039;48.444167&#039;, &#039;Longitude&#039;: &#039;-4.412000&#039;, &#039;Altitude&#039;: &#039;94&#039;}, {&#039;ID&#039;: &#039;07117&#039;, &#039;Nom&#039;: &amp;quot;PLOUMANAC&#039;H&amp;quot;, &#039;Latitude&#039;: &#039;48.825833&#039;, &#039;Longitude&#039;: &#039;-3.473167&#039;, &#039;Altitude&#039;: &#039;55&#039;}, {&#039;ID&#039;: &#039;07130&#039;, &#039;Nom&#039;: &#039;RENNES-ST JACQUES&#039;, &#039;Latitude&#039;: &#039;48.068833&#039;, &#039;Longitude&#039;: &#039;-1.734000&#039;, &#039;Altitude&#039;: &#039;36&#039;}, {&#039;ID&#039;: &#039;07139&#039;, &#039;Nom&#039;: &#039;ALENCON&#039;, &#039;Latitude&#039;: &#039;48.445500&#039;, &#039;Longitude&#039;: &#039;0.110167&#039;, &#039;Altitude&#039;: &#039;143&#039;}, {&#039;ID&#039;: &#039;07149&#039;, &#039;Nom&#039;: &#039;ORLY&#039;, &#039;Latitude&#039;: &#039;48.716833&#039;, &#039;Longitude&#039;: &#039;2.384333&#039;, &#039;Altitude&#039;: &#039;89&#039;}, {&#039;ID&#039;: &#039;07168&#039;, &#039;Nom&#039;: &#039;TROYES-BARBEREY&#039;, &#039;Latitude&#039;: &#039;48.324667&#039;, &#039;Longitude&#039;: &#039;4.020000&#039;, &#039;Altitude&#039;: &#039;112&#039;}, {&#039;ID&#039;: &#039;07181&#039;, &#039;Nom&#039;: &#039;NANCY-OCHEY&#039;, &#039;Latitude&#039;: &#039;48.581000&#039;, &#039;Longitude&#039;: &#039;5.959833&#039;, &#039;Altitude&#039;: &#039;336&#039;}, {&#039;ID&#039;: &#039;07190&#039;, &#039;Nom&#039;: &#039;STRASBOURG-ENTZHEIM&#039;, &#039;Latitude&#039;: &#039;48.549500&#039;, &#039;Longitude&#039;: &#039;7.640333&#039;, &#039;Altitude&#039;: &#039;150&#039;}, {&#039;ID&#039;: &#039;07207&#039;, &#039;Nom&#039;: &#039;BELLE ILE-LE TALUT&#039;, &#039;Latitude&#039;: &#039;47.294333&#039;, &#039;Longitude&#039;: &#039;-3.218333&#039;, &#039;Altitude&#039;: &#039;34&#039;}, {&#039;ID&#039;: &#039;07222&#039;, &#039;Nom&#039;: &#039;NANTES-BOUGUENAIS&#039;, &#039;Latitude&#039;: &#039;47.150000&#039;, &#039;Longitude&#039;: &#039;-1.608833&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;07240&#039;, &#039;Nom&#039;: &#039;TOURS&#039;, &#039;Latitude&#039;: &#039;47.444500&#039;, &#039;Longitude&#039;: &#039;0.727333&#039;, &#039;Altitude&#039;: &#039;108&#039;}, {&#039;ID&#039;: &#039;07255&#039;, &#039;Nom&#039;: &#039;BOURGES&#039;, &#039;Latitude&#039;: &#039;47.059167&#039;, &#039;Longitude&#039;: &#039;2.359833&#039;, &#039;Altitude&#039;: &#039;161&#039;}, {&#039;ID&#039;: &#039;07280&#039;, &#039;Nom&#039;: &#039;DIJON-LONGVIC&#039;, &#039;Latitude&#039;: &#039;47.267833&#039;, &#039;Longitude&#039;: &#039;5.088333&#039;, &#039;Altitude&#039;: &#039;219&#039;}, {&#039;ID&#039;: &#039;07299&#039;, &#039;Nom&#039;: &#039;BALE-MULHOUSE&#039;, &#039;Latitude&#039;: &#039;47.614333&#039;, &#039;Longitude&#039;: &#039;7.510000&#039;, &#039;Altitude&#039;: &#039;263&#039;}, {&#039;ID&#039;: &#039;07314&#039;, &#039;Nom&#039;: &#039;PTE DE CHASSIRON&#039;, &#039;Latitude&#039;: &#039;46.046833&#039;, &#039;Longitude&#039;: &#039;-1.411500&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;07335&#039;, &#039;Nom&#039;: &#039;POITIERS-BIARD&#039;, &#039;Latitude&#039;: &#039;46.593833&#039;, &#039;Longitude&#039;: &#039;0.314333&#039;, &#039;Altitude&#039;: &#039;123&#039;}, {&#039;ID&#039;: &#039;07434&#039;, &#039;Nom&#039;: &#039;LIMOGES-BELLEGARDE&#039;, &#039;Latitude&#039;: &#039;45.861167&#039;, &#039;Longitude&#039;: &#039;1.175000&#039;, &#039;Altitude&#039;: &#039;402&#039;}, {&#039;ID&#039;: &#039;07460&#039;, &#039;Nom&#039;: &#039;CLERMONT-FD&#039;, &#039;Latitude&#039;: &#039;45.786833&#039;, &#039;Longitude&#039;: &#039;3.149333&#039;, &#039;Altitude&#039;: &#039;331&#039;}, {&#039;ID&#039;: &#039;07471&#039;, &#039;Nom&#039;: &#039;LE PUY-LOUDES&#039;, &#039;Latitude&#039;: &#039;45.074500&#039;, &#039;Longitude&#039;: &#039;3.764000&#039;, &#039;Altitude&#039;: &#039;833&#039;}, {&#039;ID&#039;: &#039;07481&#039;, &#039;Nom&#039;: &#039;LYON-ST EXUPERY&#039;, &#039;Latitude&#039;: &#039;45.726500&#039;, &#039;Longitude&#039;: &#039;5.077833&#039;, &#039;Altitude&#039;: &#039;235&#039;}, {&#039;ID&#039;: &#039;07510&#039;, &#039;Nom&#039;: &#039;BORDEAUX-MERIGNAC&#039;, &#039;Latitude&#039;: &#039;44.830667&#039;, &#039;Longitude&#039;: &#039;-0.691333&#039;, &#039;Altitude&#039;: &#039;47&#039;}, {&#039;ID&#039;: &#039;07535&#039;, &#039;Nom&#039;: &#039;GOURDON&#039;, &#039;Latitude&#039;: &#039;44.745000&#039;, &#039;Longitude&#039;: &#039;1.396667&#039;, &#039;Altitude&#039;: &#039;260&#039;}, {&#039;ID&#039;: &#039;07558&#039;, &#039;Nom&#039;: &#039;MILLAU&#039;, &#039;Latitude&#039;: &#039;44.118500&#039;, &#039;Longitude&#039;: &#039;3.019500&#039;, &#039;Altitude&#039;: &#039;712&#039;}, {&#039;ID&#039;: &#039;07577&#039;, &#039;Nom&#039;: &#039;MONTELIMAR&#039;, &#039;Latitude&#039;: &#039;44.581167&#039;, &#039;Longitude&#039;: &#039;4.733000&#039;, &#039;Altitude&#039;: &#039;73&#039;}, {&#039;ID&#039;: &#039;07591&#039;, &#039;Nom&#039;: &#039;EMBRUN&#039;, &#039;Latitude&#039;: &#039;44.565667&#039;, &#039;Longitude&#039;: &#039;6.502333&#039;, &#039;Altitude&#039;: &#039;871&#039;}, {&#039;ID&#039;: &#039;07607&#039;, &#039;Nom&#039;: &#039;MONT-DE-MARSAN&#039;, &#039;Latitude&#039;: &#039;43.909833&#039;, &#039;Longitude&#039;: &#039;-0.500167&#039;, &#039;Altitude&#039;: &#039;59&#039;}, {&#039;ID&#039;: &#039;07621&#039;, &#039;Nom&#039;: &#039;TARBES-OSSUN&#039;, &#039;Latitude&#039;: &#039;43.188000&#039;, &#039;Longitude&#039;: &#039;0.000000&#039;, &#039;Altitude&#039;: &#039;360&#039;}, {&#039;ID&#039;: &#039;07627&#039;, &#039;Nom&#039;: &#039;ST GIRONS&#039;, &#039;Latitude&#039;: &#039;43.005333&#039;, &#039;Longitude&#039;: &#039;1.106833&#039;, &#039;Altitude&#039;: &#039;414&#039;}, {&#039;ID&#039;: &#039;07630&#039;, &#039;Nom&#039;: &#039;TOULOUSE-BLAGNAC&#039;, &#039;Latitude&#039;: &#039;43.621000&#039;, &#039;Longitude&#039;: &#039;1.378833&#039;, &#039;Altitude&#039;: &#039;151&#039;}, {&#039;ID&#039;: &#039;07643&#039;, &#039;Nom&#039;: &#039;MONTPELLIER&#039;, &#039;Latitude&#039;: &#039;43.577000&#039;, &#039;Longitude&#039;: &#039;3.963167&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07650&#039;, &#039;Nom&#039;: &#039;MARIGNANE&#039;, &#039;Latitude&#039;: &#039;43.437667&#039;, &#039;Longitude&#039;: &#039;5.216000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;07661&#039;, &#039;Nom&#039;: &#039;CAP CEPET&#039;, &#039;Latitude&#039;: &#039;43.079333&#039;, &#039;Longitude&#039;: &#039;5.940833&#039;, &#039;Altitude&#039;: &#039;115&#039;}, {&#039;ID&#039;: &#039;07690&#039;, &#039;Nom&#039;: &#039;NICE&#039;, &#039;Latitude&#039;: &#039;43.648833&#039;, &#039;Longitude&#039;: &#039;7.209000&#039;, &#039;Altitude&#039;: &#039;2&#039;}, {&#039;ID&#039;: &#039;07747&#039;, &#039;Nom&#039;: &#039;PERPIGNAN&#039;, &#039;Latitude&#039;: &#039;42.737167&#039;, &#039;Longitude&#039;: &#039;2.872833&#039;, &#039;Altitude&#039;: &#039;42&#039;}, {&#039;ID&#039;: &#039;07761&#039;, &#039;Nom&#039;: &#039;AJACCIO&#039;, &#039;Latitude&#039;: &#039;41.918000&#039;, &#039;Longitude&#039;: &#039;8.792667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;07790&#039;, &#039;Nom&#039;: &#039;BASTIA&#039;, &#039;Latitude&#039;: &#039;42.540667&#039;, &#039;Longitude&#039;: &#039;9.485167&#039;, &#039;Altitude&#039;: &#039;10&#039;}, {&#039;ID&#039;: &#039;61968&#039;, &#039;Nom&#039;: &#039;GLORIEUSES&#039;, &#039;Latitude&#039;: &#039;-11.582667&#039;, &#039;Longitude&#039;: &#039;47.289667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;61970&#039;, &#039;Nom&#039;: &#039;JUAN DE NOVA&#039;, &#039;Latitude&#039;: &#039;-17.054667&#039;, &#039;Longitude&#039;: &#039;42.712000&#039;, &#039;Altitude&#039;: &#039;9&#039;}, {&#039;ID&#039;: &#039;61972&#039;, &#039;Nom&#039;: &#039;EUROPA&#039;, &#039;Latitude&#039;: &#039;-22.344167&#039;, &#039;Longitude&#039;: &#039;40.340667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;61976&#039;, &#039;Nom&#039;: &#039;TROMELIN&#039;, &#039;Latitude&#039;: &#039;-15.887667&#039;, &#039;Longitude&#039;: &#039;54.520667&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;61980&#039;, &#039;Nom&#039;: &#039;GILLOT-AEROPORT&#039;, &#039;Latitude&#039;: &#039;-20.892500&#039;, &#039;Longitude&#039;: &#039;55.528667&#039;, &#039;Altitude&#039;: &#039;8&#039;}, {&#039;ID&#039;: &#039;61996&#039;, &#039;Nom&#039;: &#039;NOUVELLE AMSTERDAM&#039;, &#039;Latitude&#039;: &#039;-37.795167&#039;, &#039;Longitude&#039;: &#039;77.569167&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;61997&#039;, &#039;Nom&#039;: &#039;CROZET&#039;, &#039;Latitude&#039;: &#039;-46.432500&#039;, &#039;Longitude&#039;: &#039;51.856667&#039;, &#039;Altitude&#039;: &#039;146&#039;}, {&#039;ID&#039;: &#039;61998&#039;, &#039;Nom&#039;: &#039;KERGUELEN&#039;, &#039;Latitude&#039;: &#039;-49.352333&#039;, &#039;Longitude&#039;: &#039;70.243333&#039;, &#039;Altitude&#039;: &#039;29&#039;}, {&#039;ID&#039;: &#039;67005&#039;, &#039;Nom&#039;: &#039;PAMANDZI&#039;, &#039;Latitude&#039;: &#039;-12.805500&#039;, &#039;Longitude&#039;: &#039;45.282833&#039;, &#039;Altitude&#039;: &#039;7&#039;}, {&#039;ID&#039;: &#039;71805&#039;, &#039;Nom&#039;: &#039;ST-PIERRE&#039;, &#039;Latitude&#039;: &#039;46.766333&#039;, &#039;Longitude&#039;: &#039;-56.179167&#039;, &#039;Altitude&#039;: &#039;21&#039;}, {&#039;ID&#039;: &#039;78890&#039;, &#039;Nom&#039;: &#039;LA DESIRADE METEO&#039;, &#039;Latitude&#039;: &#039;16.335000&#039;, &#039;Longitude&#039;: &#039;-61.004000&#039;, &#039;Altitude&#039;: &#039;27&#039;}, {&#039;ID&#039;: &#039;78894&#039;, &#039;Nom&#039;: &#039;ST-BARTHELEMY METEO&#039;, &#039;Latitude&#039;: &#039;17.901500&#039;, &#039;Longitude&#039;: &#039;-62.852167&#039;, &#039;Altitude&#039;: &#039;44&#039;}, {&#039;ID&#039;: &#039;78897&#039;, &#039;Nom&#039;: &#039;LE RAIZET AERO&#039;, &#039;Latitude&#039;: &#039;16.264000&#039;, &#039;Longitude&#039;: &#039;-61.516333&#039;, &#039;Altitude&#039;: &#039;11&#039;}, {&#039;ID&#039;: &#039;78922&#039;, &#039;Nom&#039;: &#039;TRINITE-CARAVEL&#039;, &#039;Latitude&#039;: &#039;14.774500&#039;, &#039;Longitude&#039;: &#039;-60.875333&#039;, &#039;Altitude&#039;: &#039;26&#039;}, {&#039;ID&#039;: &#039;78925&#039;, &#039;Nom&#039;: &#039;LAMENTIN-AERO&#039;, &#039;Latitude&#039;: &#039;14.595333&#039;, &#039;Longitude&#039;: &#039;-60.995667&#039;, &#039;Altitude&#039;: &#039;3&#039;}, {&#039;ID&#039;: &#039;81401&#039;, &#039;Nom&#039;: &#039;SAINT LAURENT&#039;, &#039;Latitude&#039;: &#039;5.485500&#039;, &#039;Longitude&#039;: &#039;-54.031667&#039;, &#039;Altitude&#039;: &#039;5&#039;}, {&#039;ID&#039;: &#039;81405&#039;, &#039;Nom&#039;: &#039;CAYENNE-MATOURY&#039;, &#039;Latitude&#039;: &#039;4.822333&#039;, &#039;Longitude&#039;: &#039;-52.365333&#039;, &#039;Altitude&#039;: &#039;4&#039;}, {&#039;ID&#039;: &#039;81408&#039;, &#039;Nom&#039;: &#039;SAINT GEORGES&#039;, &#039;Latitude&#039;: &#039;3.890667&#039;, &#039;Longitude&#039;: &#039;-51.804667&#039;, &#039;Altitude&#039;: &#039;6&#039;}, {&#039;ID&#039;: &#039;81415&#039;, &#039;Nom&#039;: &#039;MARIPASOULA&#039;, &#039;Latitude&#039;: &#039;3.640167&#039;, &#039;Longitude&#039;: &#039;-54.028333&#039;, &#039;Altitude&#039;: &#039;106&#039;}, {&#039;ID&#039;: &#039;89642&#039;, &#039;Nom&#039;: &amp;quot;DUMONT D&#039;URVILLE&amp;quot;, &#039;Latitude&#039;: &#039;-66.663167&#039;, &#039;Longitude&#039;: &#039;140.001000&#039;, &#039;Altitude&#039;: &#039;43&#039;}]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
def distance(lat1, lon1, lat2, lon2):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Calcule la distance entre deux points géographiques en utilisant la formule de la distance euclidienne.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return math.sqrt((lat2 - lat1)**2 + (lon2 - lon1)**2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
def station_la_plus_proche(x, y, stations):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Trouve la station météo la plus proche en utilisant les coordonnées x et y (latitude et longitude).&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    distance_min = float(&#039;inf&#039;)&lt;br /&gt;
    station_proche = None&lt;br /&gt;
    &lt;br /&gt;
    for station in stations:&lt;br /&gt;
        lat_station = float(station[&#039;Latitude&#039;])&lt;br /&gt;
        lon_station = float(station[&#039;Longitude&#039;])&lt;br /&gt;
        d = distance(x, y, lat_station, lon_station)&lt;br /&gt;
        if d &amp;lt; distance_min:&lt;br /&gt;
            distance_min = d&lt;br /&gt;
            station_proche = station&lt;br /&gt;
    &lt;br /&gt;
    return station_proche&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la latitude et la longitude&lt;br /&gt;
x_input = input(&amp;quot;Entrez la latitude de votre lieux: &amp;quot;)&lt;br /&gt;
y_input = input(&amp;quot;Entrez la longitude de votre lieux: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
x_input = float(x_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
y_input = float(y_input.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
# Utilisez les valeurs entrées par l&#039;utilisateur comme variables x et y pour trouver la station météo la plus proche&lt;br /&gt;
station_proche = station_la_plus_proche(x_input, y_input, stations)&lt;br /&gt;
print(&amp;quot;\nLa station météo la plus proche est:&amp;quot;, station_proche[&#039;Nom&#039;])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer sa consommation d&#039;eau hebdomadaire&lt;br /&gt;
waterconsohebdo = input(&amp;quot;Entrez la consommation d&#039;eau hebdomadaire constante(L): &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
# Remplacer les virgules par des points&lt;br /&gt;
waterconsohebdo = float(waterconsohebdo.replace(&#039;,&#039;, &#039;.&#039;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
# Calcul consommation journaliere moyenne&lt;br /&gt;
waterconsojour = waterconsohebdo/7&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer le mois de debut de la periode estivale&lt;br /&gt;
moisdebutete = input(&amp;quot;Entrez le mois de début pour la consommation d&#039;eau hebdomadaire supplémentaire en periode estivale (1,2,3,4,5,6,7,8,9,10,11,12): &amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=int(moisdebutete)&lt;br /&gt;
    moisdebutete=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    moisdebutete=5&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de moisdebutete={moisdebutete}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer le mois de fin de la periode estivale&lt;br /&gt;
moisfinete = input(&amp;quot;Entrez le mois de fin pour la consommation d&#039;eau hebdomadaire supplémentaire en periode estivale (1,2,3,4,5,6,7,8,9,10,11,12): &amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=int(moisfinete)&lt;br /&gt;
    moisfinete=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    moisfinete=9&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de moisfinete={moisfinete}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
# Demander à l&#039;utilisateur d&#039;entrer la consommation d&#039;eau supplémentaire en periode estivale&lt;br /&gt;
waterconsohebdoete = input(&amp;quot;Entrez la consommation d&#039;eau hebdomadaire supplémentaire en periode estivale (L) - 0 L par defaut: &amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(waterconsohebdoete.replace(&#039;,&#039;, &#039;.&#039;)) # Remplacer les virgules par des points&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
waterconsohebdoete=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    waterconsohebdoete=0&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de waterconsohebdoete={waterconsohebdoete}L&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
# Calcul consommation journaliere moyenne&lt;br /&gt;
waterconsojourete = waterconsohebdoete/7&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
result=combined_df[combined_df[&#039;numer_sta&#039;]==int(station_proche[&#039;ID&#039;])]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
# Convertir la colonne &#039;date_column&#039; dans un format datetime et la mettre en index trié&lt;br /&gt;
result[&#039;datetime&#039;] = pd.to_datetime(result[&#039;date&#039;], format=&#039;%Y%m%d%H%M%S&#039;)&lt;br /&gt;
result.set_index(&#039;datetime&#039;, inplace=True)&lt;br /&gt;
result = result.sort_index()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
# remplacer les données manquantes par 0&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].replace(&#039;mq&#039;,&#039;0&#039;)&lt;br /&gt;
result[&#039;rr3&#039;]=result[&#039;rr3&#039;].astype(&#039;float&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
# Ne garder que la colonne des précipitations des 3 dernieres heures&lt;br /&gt;
result=result[&#039;rr3&#039;]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par jour&lt;br /&gt;
resultday=result.resample(&#039;D&#039;).sum()&lt;br /&gt;
resultdaymonthindex=resultday.copy()&lt;br /&gt;
resultdaymonthindex.index=resultdaymonthindex.index.month&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour (mm):\n&amp;quot;, resultday.mean())&lt;br /&gt;
print(&amp;quot;Minimum par jour (mm):\n&amp;quot;, resultday.min())&lt;br /&gt;
print(&amp;quot;Maximum par jour  (mm):\n&amp;quot;, resultday.max())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par semaine&lt;br /&gt;
resultweek=result.resample(&#039;W&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par mois&lt;br /&gt;
resultmonth=result.resample(&#039;ME&#039;).sum()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par trimestre&lt;br /&gt;
resulttrim=result.resample(&#039;QE&#039;).sum()&lt;br /&gt;
resulttrim=resulttrim.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
print(resulttrim)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
# Calculer les sommes de précipitations par an&lt;br /&gt;
resultyear=result.resample(&#039;YE&#039;).sum()&lt;br /&gt;
print(&amp;quot;\nPrécipitations annuelles moyennes (mm):\n&amp;quot;,resultyear.mean())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
# Calculer le nombre de jours consécutifs maximum sans pluie&lt;br /&gt;
max_streak = 0&lt;br /&gt;
current_streak = 0&lt;br /&gt;
for value in resultday:&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        current_streak += 1&lt;br /&gt;
        max_streak = max(max_streak, current_streak)&lt;br /&gt;
    else:&lt;br /&gt;
        current_streak = 0  # Reset the streak if the value is not zero&lt;br /&gt;
print(f&amp;quot;\nNombre de jours consecutifs maximum sans pluie: {max_streak}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
# Moyenne par trimestre pour chaque trimestre&lt;br /&gt;
moyenne_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).mean()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
# Minimum par trimestre pour chaque trimestre&lt;br /&gt;
min_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).min()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
# Maximum par trimestre pour chaque trimestre&lt;br /&gt;
max_trimestrielle_par_trimestre = resulttrim.groupby(resulttrim.index.quarter).max()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre (mm):\n&amp;quot;, moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMinimum par trimestre pour chaque trimestre (mm):\n&amp;quot;, min_trimestrielle_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par trimestre pour chaque trimestre (mm):\n&amp;quot;, max_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
#Prise en comptes changement climatiques (hypothèses conservatrices multimodeles drias precipitations):&lt;br /&gt;
# Definir les impacts sur les volumes de précipitations par saison&lt;br /&gt;
adjustments = {0: -15, 1: -10, 2: -50, 3: -15}  # Adjust line 1 by -15%, line 2 by -10%, line 3 by -50%, line 4 by -15%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
# Appliquer les impacts sur les précipitations moyennes par trimestres:&lt;br /&gt;
cc_moyenne_trimestrielle_par_trimestre=moyenne_trimestrielle_par_trimestre.copy()&lt;br /&gt;
for line, adjustment in adjustments.items():&lt;br /&gt;
    cc_moyenne_trimestrielle_par_trimestre.iloc[line] = cc_moyenne_trimestrielle_par_trimestre.iloc[line]+cc_moyenne_trimestrielle_par_trimestre.iloc[line]*adjustment/100&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre avec prise en compte du changement climatique (mm):\n&amp;quot;, cc_moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
# Minimum par jour pour chaque trimestre&lt;br /&gt;
min_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).min()&lt;br /&gt;
min_par_jour_par_trimestre=min_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
# Maximum par jour pour chaque trimestre&lt;br /&gt;
max_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).max()&lt;br /&gt;
max_par_jour_par_trimestre=max_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
# Moyenne par jour pour chaque trimestre&lt;br /&gt;
moyenne_par_jour_par_trimestre = resultday.groupby(resultday.index.quarter).mean()&lt;br /&gt;
moyenne_par_jour_par_trimestre=moyenne_par_jour_par_trimestre.rename_axis(&#039;trimestre&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
# Imprimer les résultats&lt;br /&gt;
print(&amp;quot;\nMinimum par jour pour chaque trimestre (mm):\n&amp;quot;, min_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMaximum par jour pour chaque trimestre (mm):\n&amp;quot;, max_par_jour_par_trimestre)&lt;br /&gt;
print(&amp;quot;\nMoyenne par jour pour chaque trimestre (mm):\n&amp;quot;, moyenne_par_jour_par_trimestre)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
#Calcul seuil mini surface de recuperation:&lt;br /&gt;
surf0=(1/2)*math.ceil((13*waterconsohebdo)/min(moyenne_trimestrielle_par_trimestre))&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;Seuil surface recuperation avec hypothèse entrée et données fournies par l&#039;utilisateur (m2)&lt;br /&gt;
hypothese:(conso trimestre / precipitations moyenne min trimestre)&lt;br /&gt;
{int(math.ceil(surf0))} m2&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:195--&amp;gt;&lt;br /&gt;
#Calcul seuil mini reservoir:&lt;br /&gt;
contraintejourmax=(resultday.max())*surf0&lt;br /&gt;
contraintejourszero=max_streak*waterconsojour&lt;br /&gt;
volume0=math.ceil(max(2.5*contraintejourmax,contraintejourszero))&lt;br /&gt;
print(f&amp;quot;&amp;quot;&amp;quot;\nSeuil volume avec hypothèse entrée et données fournies par l&#039;utilisateur (L)&lt;br /&gt;
hypothèse: max((2.5*précipitations journaliere maxi*Seuil surface recuperation),(44j consécutifs max sans pluie*conso journaliere))&lt;br /&gt;
{int(math.ceil(volume0))} L&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:196--&amp;gt;&lt;br /&gt;
surf0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de surface (m2) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(surf0_input)&lt;br /&gt;
    surf0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de surf0={surf0}m2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
volume0_input = input(&amp;quot;\n\nSi vous souhaitez corriger la valeur initiale de volume (L) pour les itérations, entrer votre valeur, sinon appuyer sur entree&amp;quot;)&lt;br /&gt;
try:&lt;br /&gt;
    _=float(volume0_input)&lt;br /&gt;
    volume0=_&lt;br /&gt;
except Exception as err:&lt;br /&gt;
    print(f&amp;quot;\nerreur de type ou valeur utilisateur vide, poursuite avec utilisation de volume0={volume0}L&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
# Itérations algorithmiques stockage&amp;amp;consommation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:199--&amp;gt;&lt;br /&gt;
#hypothèse récupérateur 2/3 plein à t0&lt;br /&gt;
water=(2/3)*volume0&lt;br /&gt;
resultsurfvolume=(volume0,surf0)&lt;br /&gt;
#boucle iteration&lt;br /&gt;
listsurf0=[surf0*(1+i*0.33) for i in range(0,999)]&lt;br /&gt;
listvolume0=[volume0*(1+i*0.5) for i in range(0,999)]&lt;br /&gt;
listeday=list(resultday)&lt;br /&gt;
listemonth=list(resultdaymonthindex.index)&lt;br /&gt;
listresult=[]&lt;br /&gt;
#fonction check surface volume&lt;br /&gt;
def iterv(data, v0,s0):&lt;br /&gt;
    &amp;quot;fonction check surface volume&amp;quot;&lt;br /&gt;
    water=(2/3)*v0&lt;br /&gt;
    for k in range(0,len(data)):&lt;br /&gt;
        recupday=data[k]*s0&lt;br /&gt;
        #print(f&#039;recupday:{recupday}&#039;)&lt;br /&gt;
        if listemonth[k] in range(moisdebutete, moisfinete + 1):&lt;br /&gt;
            consoday = waterconsojour + waterconsojourete&lt;br /&gt;
        else:&lt;br /&gt;
            consoday = waterconsojour&lt;br /&gt;
        water=water+recupday-consoday&lt;br /&gt;
        #print(f&#039;water:{water}&#039;)&lt;br /&gt;
        if water&amp;gt;v0:&lt;br /&gt;
            print(&amp;quot;récupérateur plein&amp;quot;)&lt;br /&gt;
            water=v0 #hypothese gestion du trop plein ok&lt;br /&gt;
            continue&lt;br /&gt;
        if water&amp;lt;0:&lt;br /&gt;
            print(&amp;quot;récupérateur vide&amp;quot;)&lt;br /&gt;
            #time.sleep(1)&lt;br /&gt;
            return (0,0)&lt;br /&gt;
    print(&amp;quot;les surfaces et volumes permettent de subvenir à la consommation d&#039;eau sur le dataset&amp;quot;)&lt;br /&gt;
    return (v0,s0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
for i in range(0,6): #boucle iteration surface&lt;br /&gt;
    for k in range(0,len(listeday)):&lt;br /&gt;
        recupday=listeday[k]*listsurf0[i]&lt;br /&gt;
        print(f&#039;recupday:{recupday}&#039;)&lt;br /&gt;
        if listemonth[k] in range(moisdebutete,moisfinete+1):&lt;br /&gt;
            consoday=waterconsojour+waterconsojourete&lt;br /&gt;
        else:&lt;br /&gt;
            consoday = waterconsojour&lt;br /&gt;
        water=water+recupday-consoday&lt;br /&gt;
        print(f&#039;water:{water}&#039;)&lt;br /&gt;
        if water&amp;gt;volume0:&lt;br /&gt;
            print(&amp;quot;récupérateur plein&amp;quot;)&lt;br /&gt;
            water=volume0 #hypothese gestion du trop plein ok&lt;br /&gt;
            continue&lt;br /&gt;
        if water&amp;lt;0:&lt;br /&gt;
            print(&amp;quot;récupérateur vide, iteration avec hypothèse volume de récupération plus grand&amp;quot;)&lt;br /&gt;
            #time.sleep(1)&lt;br /&gt;
            for j in range (1,i+40):&lt;br /&gt;
                resultsurfvolume=iterv(listeday,listvolume0[j],listsurf0[i])&lt;br /&gt;
                if resultsurfvolume!=(0,0):&lt;br /&gt;
                    listresult.append(resultsurfvolume)&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    continue&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:201--&amp;gt;&lt;br /&gt;
for k in listresult:&lt;br /&gt;
    print(f&amp;quot;&amp;quot;&amp;quot;avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de {int(k[0])}L et &lt;br /&gt;
une surface de {int(k[1])}m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs ({waterconsohebdo}L/semaine constant) &lt;br /&gt;
et {waterconsohebdoete}L/semaine en periode estivale (du mois {moisdebutete} au mois {moisfinete})&lt;br /&gt;
entrées en hypothèse\n&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:202--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:203--&amp;gt;&lt;br /&gt;
On fait le test avec les hypothèses ci dessus (latitude 44.2, longitude 0.6, solo 276L semaine, duo 752L semaine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:204--&amp;gt;&lt;br /&gt;
On obtient les résultats suivants:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
solo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 7976L et &lt;br /&gt;
une surface de 19m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:206--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 5982L et &lt;br /&gt;
une surface de 24m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 4985L et &lt;br /&gt;
une surface de 28m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:208--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 3988L et &lt;br /&gt;
une surface de 33m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 3988L et &lt;br /&gt;
une surface de 38m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
solo avec 600L/semaine en periode estivale: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 15642L et &lt;br /&gt;
une surface de 45m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:212--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 15642L et &lt;br /&gt;
une surface de 60m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 75m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 90m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 105m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 12514L et &lt;br /&gt;
une surface de 120m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (276.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
duo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 24133L et &lt;br /&gt;
une surface de 51m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 16089L et &lt;br /&gt;
une surface de 64m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 13407L et &lt;br /&gt;
une surface de 77m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 10726L et &lt;br /&gt;
une surface de 90m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 10726L et &lt;br /&gt;
une surface de 103m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:223--&amp;gt;&lt;br /&gt;
duo avec 600L/semaine en periode estivale: : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 33687L et &lt;br /&gt;
une surface de 70m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 24062L et &lt;br /&gt;
une surface de 93m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:225--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 116m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 139m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 162m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
avec les données fournies par l&#039;utilisateur, et &lt;br /&gt;
un volume de 19250L et &lt;br /&gt;
une surface de 185m2,&lt;br /&gt;
on satisfait aux besoins utilisateurs (752.0L/semaine constant) &lt;br /&gt;
et 600.0L/semaine supplémentaire en periode estivale (du mois 5 au mois 9)&lt;br /&gt;
entrées en hypothèse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:229--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:230--&amp;gt;&lt;br /&gt;
Utiliser des data du changement climatique&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:231--&amp;gt;&lt;br /&gt;
Comme très bien expliqué dans cet autre tuto : [[Estimer la quantité d&#039;eau de pluie récupérable grâce à une toiture, dimensionner son stockage en prenant en compte les changements climatiques]], le changement climatique va perturber les précipitations en termes de quantités mais surtout de fréquences.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
Pour de la récupération/stockage, c&#039;est particulièrement important notamment pour les périodes de sécheresses qui risques de s&#039;accentuer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
Techniquement, on peut &amp;quot;data-tester&amp;quot; au jour le jour avec les données de prévisions du portail drias (https://drias-climat.fr/). Cependant, il faudrait d&#039;une part data tester avec plusieurs set de données car les modèles sont tres différents les uns des autres, et d&#039;autres part il s&#039;agit de modèles climatiques et pas météorologiques, ce qui limite la pertinence d&#039;utiliser des résultats comme input meteo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
En attendant que les scientifiques affinent leurs modèles pour la prospective à échelle plus fine (spatiale et temporelle), on peut reprendre les estimations d&#039;impact sur les volumes de précipitations par saisons à partir des modèles drias 2070-2100 rcp 8.5 (+10% à -10% selon modèles au printemps, -50% à +20% en été,-15% à +5% en automne, -15% à +30% en hiver)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
En étant prudent pour chaque saison, c&#039;est à dire en prenant l&#039;hypothèse la plus conservatrice pour chaque saison, on obtient des volumes réduits de :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:236--&amp;gt;&lt;br /&gt;
-10% au printemps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
-50% en été&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
-15% en automne&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
-15% en hiver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:240--&amp;gt;&lt;br /&gt;
On peut alors mettre à jour l&#039;algorithme :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:241--&amp;gt;&lt;br /&gt;
Vous noterez qu&#039;on a déjà ajouté les lignes suivantes dans le code de l&#039;etape 5 juste avant le calcul de # Moyenne par trimestre pour chaque trimestre:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Prise en comptes changement climatiques (hypothèses conservatrices multimodeles drias precipitations):&lt;br /&gt;
# Definir les impacts sur les volumes de précipitations par saison&lt;br /&gt;
adjustments = {0: -15, 1: -10, 2: -50, 3: -15}  # Adjust line 1 by -15%, line 2 by -10%, line 3 by -50%, line 4 by -15%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
# Appliquer les impacts sur les précipitations moyennes par trimestres:&lt;br /&gt;
cc_moyenne_trimestrielle_par_trimestre=moyenne_trimestrielle_par_trimestre.copy()&lt;br /&gt;
for line, adjustment in adjustments.items():&lt;br /&gt;
    cc_moyenne_trimestrielle_par_trimestre.iloc[line] = cc_moyenne_trimestrielle_par_trimestre.iloc[line]+cc_moyenne_trimestrielle_par_trimestre.iloc[line]*adjustment/100&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:243--&amp;gt;&lt;br /&gt;
print(&amp;quot;\nMoyenne par trimestre pour chaque trimestre avec prise en compte du changement climatique (mm):\n&amp;quot;, cc_moyenne_trimestrielle_par_trimestre)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
Ce qui affiche:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:245--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Moyenne par trimestre pour chaque trimestre avec prise en compte du changement climatique (mm):&lt;br /&gt;
 trimestre&lt;br /&gt;
1    165.719091&lt;br /&gt;
2    202.630909&lt;br /&gt;
3     62.836364&lt;br /&gt;
4    164.158182&lt;br /&gt;
Name: rr3, dtype: float64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:246--&amp;gt;&lt;br /&gt;
On n&#039;effectue pas le data-test au jour le jour compte tenu des biais trop importants induits par le choix d&#039;un seul modèle de prévision.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
En première approximation l&#039;impact sur les résultats est de doubler la surface de récupération nécessaire à partir de la méthode décrite dans les étapes précédentes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_la_r_cup_ration_d_eau_de_pluie_pour_tre_autonome_drias.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Dimensionner_et_faire_un_tracker_solaire_photovolat%C3%AFque_low_tech&amp;diff=152004</id>
		<title>Dimensionner et faire un tracker solaire photovolatïque low tech</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Dimensionner_et_faire_un_tracker_solaire_photovolat%C3%AFque_low_tech&amp;diff=152004"/>
		<updated>2025-11-28T19:05:41Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240723_184804.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:99,&amp;quot;top&amp;quot;:-95,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.14,&amp;quot;scaleY&amp;quot;:0.14,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/f/fc/Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240723_184804.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Construction d&#039;un tracker photovoltaique à partir d&#039;un leve plaque&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Hard&lt;br /&gt;
|Duration=4&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=600&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=tracker, photovoltaique, phtv, dimensionnement&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_leveplaque.jpg&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
tracker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Leve plaque BRD : 150€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
verin &amp;quot;Actionneur linéaire 12V DC , 1320LBS(6000N) 20 pouces (500mm) moteur électrique&amp;quot;  : 69€ sur aliexpress, disponible sur amazon un peu plus cher&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Hbridge L298n 7a: 11€ livré sur aliexpress (&amp;quot;Moteur d&#039;entrainement PWM 160W 7A 12V 24V, Module de commande L298, Signal de commande logique, optocoupleur, frein&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
2 Pignon chaine 92T: &amp;quot;Pignon arrière 25H JO98/108/138 maillons 55T 65T 68T 70T 80T 92T, pour 47CC 49CC Mini Moto RL facades D343 Pit Pocket Bike&amp;quot; : 40€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
2 Pignons &amp;quot;Pignon pour scooter électrique 8T 9T 11T 13T 25H 410 420, pour moteur à courant continu 25H JOMotor MY1020 BM1109 MY1016Z MY1018&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
2 Pignons &amp;quot;Pignon de moteur électrique pour Pit-Bike, pignon de moteur à courant continu, pièces RL, D343, 9T, 11T, 13T, 25H, JOMotor 25H&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
4€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Moteur &amp;quot;Moteur à engrenages CC à vis sans fin autobloquant, couple de bain, moteur de boîte de vitesses turbo en métal, inversé, basse vitesse, DC 12V, 24V, 200kg.cm&amp;quot; 62€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Module&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Module photovoltaique Voltech 2mx1m 375W: 200€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Pilotage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
raspberry: environ 100€&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
metre facom: 20€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
kit de poids soviétique: 60€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
niveau à bulle: 5€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
equerre alu: 6€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
ebarbeuse: 50€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
perceuse: 50€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
poste à souder: 100€&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Dimensionner : mesurer les moments d&#039;inertie&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Nous posons deux axes pour notre module:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
un axe Oz perpendiculaire au plan du module (vertical lorsque le module est à plat) et un axe Ox paralelle au plan du module (horizontal lorsque le module est à plat)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Caractéristiques du module:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
poids 21,2kg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Longueur: 1,8m&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Largeur: 1m&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
La théorie de wikipedia nous dit que le moment d&#039;inertie selon l&#039;axe Oz est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Jdelta=1/12*m*L (avec m masse du module et L longueur du module)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Jdelta=1/12*1,8*21,2=3,18Nm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Ndt: on assimile le module à une &amp;quot;barre&amp;quot; car ici l&#039;axe de rotatation est l&#039;axe paralelle au plan du rectangle formé par le module et non l&#039;axe perpendiculaire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
On verifie maintenant experiementalement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Centrer le module sur le leve plaque et le mettre horizontalement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
verifier qu&#039;il n&#039;y a pas de vent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
faire le niveau de la surface sur laquelle le mat du leve plaque est posé&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
fixer un repere horizontal au niveau du bas du module&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
poser un poids de 500g à l&#039;extremité du module&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
mesurer la distance entre la position à l&#039;équilibre et la position avec le poids&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
On a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Jdelta=d*F&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
avec d distance en metre à l&#039;axe de rotation (bras de levier)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
F force appliquée au solide (ici mg avec m masse du solide en kg, et g constance gravitationelle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
On a donc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Jdelta=0,9*0,5*9,8=4,41Nm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
On mesure la rotation : dans notre cas, la distance de rotation à l&#039;extrémité du module varie entre 3 et 10 cm. Les variations importantes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
sont dus aux frotements de l&#039;axe qui peut etre en force ou coulisser plus librement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
L&#039;ordre de grandeur du moment d&#039;inertie est bien vérifié.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
Pour le moment d&#039;inertie selon l&#039;axe Ox, il est plus difficile de vérifier expérimentalement, car l&#039;axe du lève plaque ne permet pas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
d&#039;avoir une position à l&#039;équilibre avec le poids du module (qui viendra caler sur la butée en subissant son poids)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
On se contentera donc de la théorie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
La theorie nous dit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Jdelta=1/12*m(b²+c²) avec m masse du module, b longueur du petit coté, c longueur du grand coté&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Jdelta=1/12*21,2*(1,8²+1²)=7,49NM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Ce resultat theorique étant tres fortement inferieur au poids du module, on dimensionnera à partir de la force necessaire pour soulever le poids du module (l&#039;axe etant soumis au poids):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
F=mg=21,2*9,8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Soit 200Nm en ordre de grandeur (1m de bras de levier en ordre de grandeur)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
On a donc maintenant les caractéristiques pour dimensionner les moteurs d&#039;entrainement de notre module selon les deux axes de rotation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
Mais les trackers ont une prise au vent conséquente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
Si on souhaite prendre en compte la résitance au vent il faut mesurer la force appliqué au module selon la vitesse du vent:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Fp​=1/2*ρ*v²*S*Cp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
Avec ​ρ densité de l&#039;air egal à 1,2 kg/m3 en ordre de grandeur pour des conditions de temperature et de pressions &amp;quot;standards&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
v vitesse du vent en m/s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
S surface de l&#039;objet en m²&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
Cp coefficient de pression sans dimension égal à 2 pour une plaque rectangulaire en métal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
On a donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
Fp=1/2*1,2*1,8*2*v²=2,16*v²&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
Chatgpt nous donne les abaques des vitesses de vent en km/h et leurs conversions en m/s et le nom generique en météorologie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Calme : Moins de 1 km/h (Moins de 0.3 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
Très légère brise : 1-5 km/h (0.3-1.5 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
Légère brise : 6-11 km/h (1.6-3.0 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
Petite brise : 12-19 km/h (3.4-5.4 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
Jolie brise : 20-28 km/h (5.5-7.9 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Bonne brise : 29-38 km/h (8.0-10.7 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
Vent frais : 39-49 km/h (10.8-13.8 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Vent modéré : 50-61 km/h (13.9-16.9 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
Vent assez fort : 62-74 km/h (17.2-20.6 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
Fort vent : 75-88 km/h (20.8-24.4 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
Tempête : 89-102 km/h (24.7-28.3 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
Violente tempête : 103-117 km/h (28.6-32.5 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
Ouragan : Au moins 118 km/h (Au moins 32.8 m/s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
Nous avons donc une Force Fp qui peut varier de&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Un ordre de grandeur de 20N pour une legere brise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
à&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
Un ordre de grandeur de 2000N pour une tempete&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
(Ndt: la force de gravité d&#039;1 kg est d&#039;environ 10N donc la force de 2000N correspond en ordre de grandeur à la force de gravité de 200kg).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Les moments d&#039;inertie sur les axes sont du meme ordre de grandeur (20Nm et 2000Nm) puisque les dimensions du modules sont de l&#039;ordre du metre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
Si vous souhaitez construire un tracker qui resiste donc à des conditions de tempete, il est conseillé de dimensionner le tracker en conséquence&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
d&#039;une part avec des attaches au sol suffisante, d&#039;autres part avec une armature adaptée -voir astuce caravane a la fin de cette etape-, et désactiver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
lors des vents de tempetes ou plus important.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
Le dimensionnement pour la résistance au vent est une des raisons pour lesquelles les trackers sont cher et donc moins répandus que les installations photovoltaïques fixes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
Les moteurs pas à pas et servomoteurs (step motors en anglais) qui ont un couple suffisant pour résister à des vents importants sont chers, et ca peut se comprendre pour des moteurs conçu pour de la précision dans les pas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
(par exemple là: &amp;lt;nowiki&amp;gt;https://www.distrelec.fr/fr/automatisation/moteurs-et-entrainements/moteurs-pas-pas-et-servocommandes/c/cat-L3D_525513&amp;lt;/nowiki&amp;gt; )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
Pour les verins (hydraulic cylinder en anglais), la force de poussée est généralement dans des ordres de grandeurs suffisant pour resister aux tempetes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;Pour notre tutoriel low-tech, on sait que les moteurs de carotteuse ont des couples (torque en anglais) d&#039;un ordre de grandeur suffisant pour résiter à des tempêtes (1W correspond à 1 newton que multiplie 1 mètre par seconde, une carotteuse de 2000W devrait donc avoir un couple d&#039;un ordre de grandeur plus ou moins dans les 2000Nm).&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
Après vérification sur les caractéristiques techniques des perceuses, visseuses à choc, et caroteuses, et une vérification manuelle des résistances (frein/embreillage) lorsque le moteur n&#039;est pas alimenté, ce type de moteur ne conviendra pas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
Pour pouvoir dimensionner une résistance à des vents entre la violente tempête et l&#039;ouragan, on va donc procéder différemment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
on trouve sur aliexpress à des prix abordables (70€) des moteurs pas à pas ou des moteurs à engrenage/vis sans fin dont le torque (le couple) est d&#039;un ordre de grandeur de 20Nm (200kgcm). On va donc utiliser ce moteur avec deux réducteurs 1:10 pour obtenir un couple résistant à 2000Nm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
Rappel : le couple exprimé en Nm est une force de rotation produite par le moteur qui se calcule selon le meme principe que le moment d&#039;inertie: la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
Les transmissions par couroie ou chaine permettent de réduire ce torque/couple, et cela se calcule très simplement:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
C1=(R1/R2)*C2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
Avec C1 couple sur la poulie 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
R1 rayon de la poulie 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
C2 couple sur la poulie2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
R2 rayon de la poulie 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
Le rayon etant directement proportionnel aux nombre de dents d&#039;une roue dentée (un pignon de vélo ou de moto par exemple), on peut facilement calculer les rapports de transmission en divisant le nombre de dents du grand pignon par le nombre de dents du petit pignon (en vérifiant que cest bien le meme standard de dents).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
Ainsi une transmission 80 dents/10 dents (80T / 10T en anglais avec T pour tooth) produira une réduction de 1:8, comme ici sur amazon pour du vélo électrique (&amp;quot;Keenso Kit Chaîne et Pignon 80T 25H 34mm 3 Trous Pignon 10T H Trou Chaîne Pignon 146 Maillons Chaîne&amp;quot;) à 30€.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
On remarquera que les transmission de vélo standard ont des rapport de réduction maximum de 50dents/11dents, soit une réduction de 1:5, ce qui est insuffisant pour des réductions efficaces sans multiplier les poulies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
Il est difficile de trouver des transmissions avec des réductions de 1:10, mais on en trouve sur aliexpress et on pourra assez facilement adapter un pédalier de vélo sur lequel on va venir souder des pignons, ce qui nous permettra de faire une reduction 1:100 avec un seul axe ajouté en plus de l&#039;axe principal et de l&#039;axe du moteur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
On va donc à utiliser un moteur pas à pas ou un moteur à engrenage avec vis sans fin (test de résistance non alimenté à réception des pièces) commandé par un raspberry pi (mais le porte plaque etant sur roulette, on prendra la précaution de ranger le tracker en cas de tempete ;))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Astuce caravane: pour dimensionner l&#039;épaisseur de l&#039;armature en métal, les normes modernes semblent être moins faites sur des bases scientifiques que sur des bases commerciales pour faite vendre. On pourra donc utilement mesurer l&#039;épaisseur de vieux matériel (années 70). Par exemple l&#039;armature de cette vieille caravane homologuée carte grise 750kg a une armature métal de 5mm d&#039;épaisseur. On pourra ensuite faire une règle de 3 pour vérifier que l&#039;épaisseur de notre armature est convenable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
C&#039;est rustique (les calculs de resistance des matériaux rigoureux sont complexes), mais ca permet d&#039;avoir une première approximation &amp;quot;a visto de nas&amp;quot; comme on dit en gascon&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie1.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie3.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie4.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie5.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_momentinertie6.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240530_093819.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
Test la resistance des moteurs&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
Voir vidéos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
Le moteur rotatif (&amp;quot;Moteur à engrenages CC à vis sans fin autobloquant, couple de bain, moteur de boîte de vitesses turbo en métal, inversé, basse vitesse, DC 12V, 24V, 200kg.cm&amp;quot; sur aliexpress) tient bien à 20Nmà vide hors tension et en rotation sous tension.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
Rappel : torque ou couple = moment d&#039;inertie engendré par le moteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
=force*distance à l&#039;axe du moteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
ici 4kg à 0,5m=9,8*4*0,5=20Nm (en ordre de grandeur)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_resistance_a_vide_VID_20240529_185214.mp4&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_resistance_sous_tension_VID_20240529_185517.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
Dimensionner : mesurer les angles et débattements&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
On va d&#039;abord s&#039;interesser à la trajectoire solaire ou solar trajectory en anglais.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
On mesure typiquement la position du soleil selon deux systemes de coordonnées:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
le systeme equatorial avec des coordonnées exprimées en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
ascension droite equivalente à la longitude terrestre mesurée en heures minutes secondes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
déclinaison équivalente à la latitude terrestre mesurée en degré minutes secondes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
le systeme horizontal avec des coordonnées exprimées en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
degré d&#039;azimut&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
degré d&#039;altitude ou de hauteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
Les abaques de trajectoire solaire (par exemple disponibles ici : https://www.astrolabe-science.fr/diagramme-solaire-azimut-hauteur ) nous donnent les trajectoires du soleil dans une journée (généralement plusieurs journées typiques de plusieurs saisons) exprimées en degrés horizontal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
Pour lire un graphique de ce type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
si on suit le graphique inséré dans ce tuto et issu du lien ci-dessus, lorsqu&#039;on suit par exemple la courbe rouge pour paris, voici ce qu&#039;on peut lire:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
le 21 décembre, lorsqu&#039;on regarde le sud, le soleil suit une trajectoire qui commence à -50° d&#039;azimut (vers l&#039;Est sur l&#039;axe horizontal) lorsque le soleil se lève, puis lorsque le soleil va vers l&#039;ouest tout au long de la journée (on suit la courbe rouge), il prend de la hauteur jusqu&#039;à atteindre 17° de hauteur (sur l&#039;axe vertical) à midi (position 0° d&#039;azimut sur l&#039;axe horizontal) puis redescend jusqu&#039;à 0° de heuteur lorsqu&#039;il se couche (vers l&#039;Ouest sur l&#039;axe horizontal).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
Pour paris, on a :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
un degré d&#039;azimut qui varie de -130° à +130° selon l&#039;heure et la saison&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
un degré d&#039;altitude ou de hauteur qui varie de 0° à 64° selon l&#039;heure et la saison&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
Pour notre tracker,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
Pour calculer notre débattement horizontal (selon un axe Oz vertical si le module est posé au sol), on n&#039;a pas vraiment de contrainte sur le lève plaque utilisé puisque l&#039;axe tourne à 360° sans probleme. Donc on pourra suivre le soleil de -130° d&#039;azimut à +130° d&#039;azimut sans probleme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
Pour calculer notre debattement vertical  (selon l&#039;axe Ox horizontal si le module est posé au sol), on a une contrainte sur l&#039;angle maximal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
N&#039;ayant pas de décimetre sous la main, on va utiliser pythagore (voir photo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
64cm*150cm*134cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
socatoa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
sinus phi=opposé/hypothenus&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
sinus phi=134/150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
sinus phi=0,8933&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
phi=1,1046 rad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
phi=1,1046*180/pi=63°&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
On a donc une contrainte pour notre leve plaque qui accepte des angles selon l&#039;axe Ox de 0° à 63°.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
Lorsque le tracker est à son angle maximum (63°), on est perpendiculaire au soleil lorsque le soleil est à un angle phi de &lt;br /&gt;
phi=180-63-90=27°&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
Lorsque le soleil a un angle plus faible que 27°, le tracker ne pourra pas suivre en étant perpendiculaire au soleil.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
On voit cependant que la butée est assurée par le ressort (sur la photo on voit la marque au niveau de la peinture). On peut donc gagner en amplitude sur la butée en perçant et en faisant une encoche dans la potence.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
La mesure manuelle du débattement entre l&#039;axe du tube sur lequel est fixé la manivelle et le dos du module lorsque le leve plaque est incliné à son angle maximum nous donne 42cm. (voir photo)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pythagore1.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pythagore2.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pythagore3.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_butee1.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_butee2.JPG&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_debattement.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
Installer le verin sur l&#039;axe horizontal&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
On va fixer une potence sur la partie fixe du porte plaque qui tourne avec l&#039;axe vertical, afin d&#039;y fixer une tige sur laquelle on fixera le verin qui pourra tourner avec l&#039;axe vertical afin d&#039;ajuster l&#039;angle sur l&#039;axe horizontal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
On commence par fixer la potence en metal en la soudant à la partie fixe vis à vis de l&#039;axe vertical. Il faut bien poncer la peinture avant de faire la soudure. (voir photo). On fait ici une soudure à l&#039;arc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
On perce ensuite une tige en metal qu&#039;on vient boulonner à la potence (voir photo).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
On perce et on fixe également une tige en métal qu&#039;on vient boulonner à la partie mobile qui ajuste l&#039;angle sur l&#039;axe horizontal, cad les &amp;quot;bras&amp;quot; qui permettent de porter la plaque ou le module photovoltaïque (voir photo).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
On fixe ensuite le verin aux deux tiges en métal. Le verin est équipé de fixations avec des chevilles qui permettent de &amp;quot;suivre&amp;quot; l&#039;angle pris par les tiges sur lesquelles il est fixé. (voir photo)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
Remarquez qu&#039;on a pris une tige en métal en angle droit afin d&#039;éviter que cette fixation soit entièrement libre. Elle vient buter sur une partie de la tige, ce qui permet par la suite d&#039;étaloner plus précisément l&#039;amplitude du verin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
On teste ensuite la course du verin. Il faudra faire attention, car on arrive sur la butée du porte plaque à une avancée du verin d&#039;environ 40cm et ce modèle a une course de 50cm. (voir photos)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_potence.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_tige1.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_tige2.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_verin1.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_verin2.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_verincourse.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
Augmenter l&#039;angle maximum du lève plaque&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
Après observation des éléments bloquant, on va modifier la potence pour éviter la butée lorsque le soleil a un degré d&#039;altitude inférieur à 27°.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
Pour cela on va :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
-laisser passer le ressort en évidant la potence (pour éviter que le ressort fasse butée)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
-augmenter l&#039;angle en abaissant la fixation du ressort en perçant la potence&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
-augmenter l&#039;angle en coupant les bords de la potence&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
Voir photos :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
1/2: observation dessus/dessous&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
3/4: demontage potence&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
4/5 : observation dessous, angle max à l&#039;equerre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
On arrive ainsi à un angle maximum de quasi 90° et on peut donc suivre le soleil sous tous les angles!&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_observation_dessus.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_observation_dessous.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_demontee1.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_demontee2.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_apres_dessous.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_apres_angle_max_90.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
Tester les commandes du verin et du moteur rotatif&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
Pour controller le verin, on va utiliser un raspberry pi, l&#039;ordinateur monocarte le plus répandu.&lt;br /&gt;
Il est doté de d&#039;une série 40 pins, qu&#039;on peut connecter à divers appareils, appelés &amp;quot;controlleur GPIO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
Une première lecture des tutos et librairies disponibles pour utiliser le gpio et des un certain temps passer à tester des hypothèses éronnées pour installer correctement en utilisant les bonnes versions m&#039;amène à vous &lt;br /&gt;
exposer les options possibles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
-système d&#039;exploitation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
*dietpi  images (debian) disponibles ici:  https://dietpi.com/#download  (voir mon autre tuto ici pour l&#039;installation et l&#039;activation du wifi : https://wiki.lowtechlab.org/wiki/Serveur_orangepi-raspberry_nextcloud_en_photovolta%C3%AFque_autonome)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
*raspberry pi os (systeme d&#039;exploitation par défaut) images disponibles ici: https://www.raspberrypi.com/software/operating-systems/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
Archives et versions de systemes d&#039;exploitation utiles pour la rétrocompatibilité (tout lecteur soucieux de l&#039;informatique low tech est incité à télécharger et garder des copies en local de ces archives et les partager en torrent!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;dietpi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
https://dietpi.com/downloads/images/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;raspberry pi os:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
https://downloads.raspberrypi.org/raspbian/images&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
si vous utilisez wheezy,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
attention à bien mettre a jour votre /etc/apt/sources.list en faisant:&lt;br /&gt;
&amp;lt;pre&amp;gt;echo &amp;quot;deb http://legacy.raspbian.org/raspbian/ wheezy main contrib non-free rpi&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
NB: ChatGPT nous donne les dates suivantes de sortie des raspberry:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model B&#039;&#039;&#039; : 29 février 2012&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model A&#039;&#039;&#039; : 4 février 2013&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model B+&#039;&#039;&#039; : 14 juillet 2014&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Model A+&#039;&#039;&#039; : 10 novembre 2014&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 2 Model B&#039;&#039;&#039; : 2 février 2015&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Zero&#039;&#039;&#039; : 30 novembre 2015&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 3 Model B&#039;&#039;&#039; : 29 février 2016&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Zero W&#039;&#039;&#039; : 28 février 2017&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 3 Model B+&#039;&#039;&#039; : 14 mars 2018&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 3 Model A+&#039;&#039;&#039; : 15 novembre 2018&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 4 Model B&#039;&#039;&#039; : 24 juin 2019&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi 400&#039;&#039;&#039; : 2 novembre 2020&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Pico&#039;&#039;&#039; : 21 janvier 2021&lt;br /&gt;
#&#039;&#039;&#039;Raspberry Pi Zero 2 W&#039;&#039;&#039; : 28 octobre 2021&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
On espère que c&#039;est vrai (ca vient de chatgpt), mais vous pouvez vérifier sur ce qui est écrit sur le pcb de votre carte.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
Pour vérifier la version de votre raspberry sous raspberry pi os si vous ne savez pas quelle version cest(voir photo):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo usermod -a G gpio pi&lt;br /&gt;
pinout&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
Ajustez avec le système d&#039;exploitation qui vous parait le plus pertinent au regard des filtres de pertinence que vous utilisez. Vous avez la liste des anciennes versions d&#039;os de dietpi et de raspberry pi os au cas où les versions les plus récentes ne fonctionneraient plus (et je me repette : tout lecteur soucieux de l&#039;informatique low tech est incité à télécharger et garder des copies en local de ces archives et les partager en torrent!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
Pour l&#039;install, comme d&#039;habitude, telecharger balenaetcher, flasher une clé usb avec l&#039;image téléchargée,&lt;br /&gt;
booter.&lt;br /&gt;
Les login/mdp par défaut pour dietpi sont root/dietpi et pour raspberry pi os pi/raspberry (attention au clavier en qwerty par défaut sous raspberry pi os au démmarage).&lt;br /&gt;
Pour configurer le clavier, les locales, la timezone et le wifi, faire &lt;br /&gt;
&amp;lt;pre&amp;gt;sudo dietpi-config&amp;lt;/pre&amp;gt; sous dietpi et &amp;lt;pre&amp;gt;sudo raspi-config&amp;lt;/pre&amp;gt; sous raspberry pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
-driver utilisé pour controler le gpio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
*RPi.GPIO(dev independant) ou RPi.GPIO2(dev redhat, repo recent)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
Essais infructueux avec pip et le depot pypi (erreur de compilations etc.). &lt;br /&gt;
Installer en passant en root avec la commande &lt;br /&gt;
&amp;lt;pre&amp;gt;sudo -s &amp;lt;/pre&amp;gt;&lt;br /&gt;
le plus simple est alors d&#039;installer une version déjà compilée avec apt:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-rpi.gpio&amp;lt;/pre&amp;gt;&lt;br /&gt;
faire un test pour voir si ca fonctionne bien (toujours en etant utilisateur root):&lt;br /&gt;
&amp;lt;pre&amp;gt;python3&lt;br /&gt;
import RPi.GPIO&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:195--&amp;gt;&lt;br /&gt;
Se reporter à la doc de sourceforge, plus explicite que celle de pypi:&lt;br /&gt;
http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:196--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
*gpiozero&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
installé par défaut sous raspberry pi&lt;br /&gt;
 &lt;br /&gt;
sous dietpi faire &lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3 python3-venv python3-pip&lt;br /&gt;
python3 -m venv venv&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
pip install lgpio gpiozero&lt;br /&gt;
ou&lt;br /&gt;
sudo apt install python3-gpiozero&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:199--&amp;gt;&lt;br /&gt;
Le premier point à comprendre est la numérotation des fiches:&lt;br /&gt;
les pins (fiches) ont chacune un numéro qui va de 1 à 40 en suivant un ordre de bas en haut et de gauche à droite, et chaque pin a également un numéro GPIO qui est différent du numero de pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
Pour cela on peut chercher les infos sur internet: &lt;br /&gt;
https://wiki.lowtechlab.org/wiki/Serveur_orangepi-raspberry_nextcloud_en_photovolta%C3%AFque_autonome&lt;br /&gt;
ou taper les commande suivantes dans raspberry pi os (voir image)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:201--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo usermod -aG gpio votre_user&lt;br /&gt;
pinout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:202--&amp;gt;&lt;br /&gt;
Dans ce tuto, que ce soit avec gpiozero ou RPi.GPIO, on utilisera la numerotation GPIO et pas la numérotation pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:203--&amp;gt;&lt;br /&gt;
On branche les GPIO 2 et 4 (alim +5V) aux deux fiches +5V du HBrdige &lt;br /&gt;
On branche les GPIO 6 et 7 (Ground, la terre) aux deux fiches GND du HBrdige&lt;br /&gt;
On branche les GPIO 23 et 16 à l&#039;interrupteur 3 du HBridge &lt;br /&gt;
Pour tester le &amp;quot;enable&amp;quot; du HBridge, on branche les GPIO 20 et 21 au ENA du HBridge&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:204--&amp;gt;&lt;br /&gt;
On  utilise ensuite les scripts suivants :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import time&lt;br /&gt;
import RPi.GPIO as GPIO&lt;br /&gt;
import gpiozero&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:206--&amp;gt;&lt;br /&gt;
def forwardzero(wait):&lt;br /&gt;
    led16=gpiozero.LED(16) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    led20=gpiozero.LED(20) #enable&lt;br /&gt;
    led21=gpiozero.LED(21) #enable&lt;br /&gt;
    led1=gpiozero.LED(1)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forwardzero&amp;quot;)&lt;br /&gt;
        #cas où le hbridge necessite un signal enable&lt;br /&gt;
        led21.off()&lt;br /&gt;
        led20.on()&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #mettre un signal sur l&#039;interrupteur 1&lt;br /&gt;
        led23.on()&lt;br /&gt;
        led16.off()&lt;br /&gt;
        #laisser le signal actif le temps de wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #eteindre le signal sur l&#039;interrupteur&lt;br /&gt;
        led23.off()&lt;br /&gt;
        led20.off()&lt;br /&gt;
    except KeyboardnInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur l&#039;interrupteur 1&lt;br /&gt;
        led16.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        led20.off()&lt;br /&gt;
        led21.off()&lt;br /&gt;
def backwardzero(wait):&lt;br /&gt;
    led1=gpiozero.LED(1)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    led16=gpiozero.LED(16) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    led20=gpiozero.LED(20) #enable&lt;br /&gt;
    led21=gpiozero.LED(21) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backwardzero&amp;quot;)&lt;br /&gt;
        #signal zero sur interupteur 1&lt;br /&gt;
        led16.on()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #cas où le hbrige necessite un signal sur enable&lt;br /&gt;
        led20.off()&lt;br /&gt;
        led21.on()&lt;br /&gt;
        #signal sur interrupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #signal off sur interrupteur&lt;br /&gt;
        led16.off()&lt;br /&gt;
        led21.off()&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 1&lt;br /&gt;
        led16.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur l&#039;interupteur 2&lt;br /&gt;
        led1.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        led20.off()&lt;br /&gt;
        led21.off()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
#pin16 gpio23&lt;br /&gt;
#pin36 gpio25&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:208--&amp;gt;&lt;br /&gt;
def forward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(16,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(1,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forward&amp;quot;)&lt;br /&gt;
        GPIO.output(1,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.LOW)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi, ca n&#039;enleve pas les +3V&lt;br /&gt;
def backward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    GPIO.setup(1,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(16,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backward&amp;quot;)&lt;br /&gt;
        GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        GPIO.output(16,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(1,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi ca n&#039;enleve pas les +3V&lt;br /&gt;
forward(2) #rotation horaire motor2&lt;br /&gt;
backward(2) #rotation antihoraire motor2&lt;br /&gt;
forwardzero(10) #verin extension motor1 111 max&lt;br /&gt;
backwardzero(10) #verin retractation motor1 107 max&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
GPIO.BCM permet d&#039;utiliser la numerotation GPIO&lt;br /&gt;
GPIO.HIGH envoie un signal de +3V dans la fiche concernée&lt;br /&gt;
GPIO.LOW remet le signal à 0V (GND, la terre)&lt;br /&gt;
gpiozero fait la meme chose avec les methodes .on() et .off()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
Update 31.05.24 : vous l&#039;attendiez, voilà l&#039;update du jour avec le hbridge made in europe, ca roule, voir vidéo! :)&lt;br /&gt;
Update de l&#039;étalonnage rapidement à reception d&#039;un truc pour mesurer les angles un peu pratique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
Remarquez que les fiches 20 et 21 ne sont pas branchées au hbridge. &lt;br /&gt;
Le &amp;quot;pwm&amp;quot; (pulse width modulation) n&#039;est pas utilisé &lt;br /&gt;
pour &amp;quot;activer&amp;quot; (enable dans le code) le moteur car des cavaliers placés sur les &lt;br /&gt;
deux fiches ENA du hbridge suffisent (ici on n&#039;a pas besoin de moduler la vitesse du moteur).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:289--&amp;gt;&lt;br /&gt;
Update 17.12.24:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:290--&amp;gt;&lt;br /&gt;
Chez moi, la configuration qui semble passer les interférences est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:291--&amp;gt;&lt;br /&gt;
Raspberry Pi Model B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:292--&amp;gt;&lt;br /&gt;
Dietpi&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_apt_install.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_pinout.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_cablage_pi.JPG&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_moteurs_pi.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:212--&amp;gt;&lt;br /&gt;
Verin hydraulique pour la rotation d&#039;axe vertical&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;s&amp;gt;&amp;lt;big&amp;gt;Fixer les poulies et la transmission 1:100 pour le moteur rotatif&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;On commence par récupérer deux pédaliers sur des vélos d&#039;occasion à l&#039;ébarbeuse en prenant soin de garder une tige du cadre.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
On va venir y souder les pignons 92T (92 dents).&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;On soude ensuite les pignons 8T (8 dents) dessus.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;On soude un pignon 8T sur un pignon avec une clavette qui s&#039;adapte à l&#039;axe du moteur.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;On découpe une tige en fer et on soude un aplat le long de l&#039;axe du lève plaque sur lequel on va venir fixer avec des boulons les tiges découpées dans les cadres de vélo qui prolongent le pédalier ainsi qu&#039;une tige sur laquelle on va fixer le moteur.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;On assemble et on boulonne.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;Update à réceptiond de la 3eme chaine et en attendant de réfléchir à un moyen de régler les tensions de chaine.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Update du 11.6.24: les contraintes de l&#039;axe du leve plaque font qu&#039;on ne peut y fixer un grand pignon pour bénéficier d&#039;un rapport de réduction favorable sur la derniere chaine de transmission. Malgré les réductions des transmissions des autres poulies, le lève plaque n&#039;est pas entrainé en rotation (voir vidéo).&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;update du 16.6.24: réception du verin supplémentaire, date livraison estimée : 28 juin-2juillet&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:223--&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
On va donc entrainer la rotation avec deux verins. Update à réception des verins fin juin (en stage et non dispo pour update ces prochaines semaines)&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
La tension de chaine etant mauvaise, on remplace les transmissions par un verrin hydraulique permettant de faire la rotation mais sur un angle réduit (environ 70° faute de verrin telescopique à plusieurs brins)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_134410.jpg&lt;br /&gt;
|Step_Picture_01=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_174848.jpg&lt;br /&gt;
|Step_Picture_02=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_175050.jpg&lt;br /&gt;
|Step_Picture_03=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240605_202715.jpg&lt;br /&gt;
|Step_Picture_04=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240715_133706.jpg&lt;br /&gt;
|Step_Picture_05=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240723_184821.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:225--&amp;gt;&lt;br /&gt;
Etalonner les moteurs&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
Le code mis à jour est le suivant: on définit des dictionnaire qui associe chaque angle recherché à un temps d&#039;activation du moteur (à tester à la main et à mesurer)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Etalonnage&lt;br /&gt;
#dict_angle_rotation= sun_degre_azimut:motoractivationtime&lt;br /&gt;
dict_angle_verin={1:0,&lt;br /&gt;
                2:0,&lt;br /&gt;
                3:0,&lt;br /&gt;
                4:0,&lt;br /&gt;
                5:0,&lt;br /&gt;
                6:0,&lt;br /&gt;
                7:0,&lt;br /&gt;
                8:0,&lt;br /&gt;
                9:0,&lt;br /&gt;
                10:0,&lt;br /&gt;
                11:1,&lt;br /&gt;
                12:1,&lt;br /&gt;
                13:2,&lt;br /&gt;
                14:3,&lt;br /&gt;
                15:4,&lt;br /&gt;
                16:5,&lt;br /&gt;
                17:6,&lt;br /&gt;
                18:7,&lt;br /&gt;
                19:8,&lt;br /&gt;
                20:9,&lt;br /&gt;
                21:10,&lt;br /&gt;
                22:11,&lt;br /&gt;
                23:12,&lt;br /&gt;
                24:13,&lt;br /&gt;
                25:14,&lt;br /&gt;
                26:15,&lt;br /&gt;
                27:16,&lt;br /&gt;
                28:16,&lt;br /&gt;
                29:17,&lt;br /&gt;
                30:18,&lt;br /&gt;
                31:19,&lt;br /&gt;
                32:20,&lt;br /&gt;
                33:21,&lt;br /&gt;
                34:22,&lt;br /&gt;
                35:23,&lt;br /&gt;
                36:24,&lt;br /&gt;
                37:25,&lt;br /&gt;
                38:27,&lt;br /&gt;
                39:28,&lt;br /&gt;
                40:29,&lt;br /&gt;
                41:30,&lt;br /&gt;
                42:32,&lt;br /&gt;
                43:33,&lt;br /&gt;
                44:34,&lt;br /&gt;
                45:35,&lt;br /&gt;
                46:37,&lt;br /&gt;
                47:38,&lt;br /&gt;
                48:39,&lt;br /&gt;
                49:41,&lt;br /&gt;
                50:42,&lt;br /&gt;
                51:44,&lt;br /&gt;
                52:45,&lt;br /&gt;
                53:47,&lt;br /&gt;
                54:48,&lt;br /&gt;
                55:50,&lt;br /&gt;
                56:51,&lt;br /&gt;
                57:52,&lt;br /&gt;
                58:54,&lt;br /&gt;
                59:56,&lt;br /&gt;
                60:58,&lt;br /&gt;
                61:59,&lt;br /&gt;
                62:59,&lt;br /&gt;
                63:59,&lt;br /&gt;
                64:60,&lt;br /&gt;
                65:63,&lt;br /&gt;
                66:64,&lt;br /&gt;
                67:65,&lt;br /&gt;
                68:66,&lt;br /&gt;
                69:68,&lt;br /&gt;
                70:68,&lt;br /&gt;
                71:71,&lt;br /&gt;
                72:73,&lt;br /&gt;
                73:75,&lt;br /&gt;
                74:77,&lt;br /&gt;
                75:79,&lt;br /&gt;
                76:81,&lt;br /&gt;
                77:82,&lt;br /&gt;
                78:83,&lt;br /&gt;
                79:85,&lt;br /&gt;
                80:86,&lt;br /&gt;
                81:87,&lt;br /&gt;
                82:89,&lt;br /&gt;
                83:91,&lt;br /&gt;
                84:94,&lt;br /&gt;
                85:96,&lt;br /&gt;
                86:98,&lt;br /&gt;
                87:100}&lt;br /&gt;
dict_angle_rotation={&lt;br /&gt;
                0:41,&lt;br /&gt;
                1:42,&lt;br /&gt;
                2:43,&lt;br /&gt;
                3:44,&lt;br /&gt;
                4:45,&lt;br /&gt;
                5:46,&lt;br /&gt;
                6:47,&lt;br /&gt;
                7:48,&lt;br /&gt;
                8:49,&lt;br /&gt;
                9:50,&lt;br /&gt;
                10:52,&lt;br /&gt;
                11:53,&lt;br /&gt;
                12:54,&lt;br /&gt;
                13:55,&lt;br /&gt;
                14:56,&lt;br /&gt;
                15:57,&lt;br /&gt;
                16:58,&lt;br /&gt;
                17:59,&lt;br /&gt;
                18:60,&lt;br /&gt;
                19:61,&lt;br /&gt;
                20:63,&lt;br /&gt;
                21:64,&lt;br /&gt;
                22:65,&lt;br /&gt;
                23:66,&lt;br /&gt;
                24:67,&lt;br /&gt;
                25:68,&lt;br /&gt;
                26:69,&lt;br /&gt;
                27:70,&lt;br /&gt;
                28:71,&lt;br /&gt;
                29:72,&lt;br /&gt;
                30:73,&lt;br /&gt;
                31:75,&lt;br /&gt;
                32:76,&lt;br /&gt;
                33:77,&lt;br /&gt;
                34:78,&lt;br /&gt;
                35:79,&lt;br /&gt;
                36:82,&lt;br /&gt;
                37:82,&lt;br /&gt;
                38:82,&lt;br /&gt;
                39:82,&lt;br /&gt;
                40:82,&lt;br /&gt;
                41:82,&lt;br /&gt;
                42:82,&lt;br /&gt;
                43:82,&lt;br /&gt;
                44:82,&lt;br /&gt;
                45:82,&lt;br /&gt;
                46:82,&lt;br /&gt;
                47:82,&lt;br /&gt;
                -1:39,&lt;br /&gt;
                -2:37,&lt;br /&gt;
                -3:35,&lt;br /&gt;
                -4:33,&lt;br /&gt;
                -5:32,&lt;br /&gt;
                -6:30,&lt;br /&gt;
                -7:29,&lt;br /&gt;
                -8:27,&lt;br /&gt;
                -9:26,&lt;br /&gt;
                -10:25,&lt;br /&gt;
                -11:23,&lt;br /&gt;
                -12:22,&lt;br /&gt;
                -13:19,&lt;br /&gt;
                -14:18,&lt;br /&gt;
                -15:17,&lt;br /&gt;
                -16:16,&lt;br /&gt;
                -17:15,&lt;br /&gt;
                -18:14,&lt;br /&gt;
                -19:6,&lt;br /&gt;
                -20:2,&lt;br /&gt;
                -21:1,&lt;br /&gt;
                -22:0,&lt;br /&gt;
                }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_IMG_20240604_134029.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
Coder le tracking en &amp;quot;dur&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:229--&amp;gt;&lt;br /&gt;
Le code mis à jour est le suivant&lt;br /&gt;
Maj 21.12.24: raspberry model b, 2 vérins, ut datetime, code commenté (utile pour se rappeler de ce qu&#039;on a codé il y a 6 mois!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:298--&amp;gt;&lt;br /&gt;
video du re-etalonage du 21.12.24 qui montre que les deux verins fonctionnent (enfin!). Mais ca ne marche pas, le module suit le soleil mais avec des angles corrompus : sun.az et sun.alt ne sont pas bons, possiblement probleme de datetime ou de système de coordonnées pas adaptés à l&#039;exercice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:305--&amp;gt;&lt;br /&gt;
Possible fix: faire un dispositif de tracking qui actionne les verins avec 4 celulles photovoltaïques:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:306--&amp;gt;&lt;br /&gt;
deux celulle alignées horizontalement coté gauche et droit du panneau, deux celulles alignées verticalement coté haut et bas du panneau. Calculer le differentiel de tension entre les deux paires de celulles, relier chaque paire à un hbridge electronique qui active le verin lorsque le differentiel de tension dépasse un &amp;quot;treshold&amp;quot; (hypothese differentiel nul quand le panneau est perpendiculaire au soleil, et positif ou négatif dans le cas contraire), trouver un hbridge dont le treshold est adapté pour pas que ca actionne continuellement les verins autour de la position d&#039;équilibre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:304--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:230--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import time&lt;br /&gt;
import RPi.GPIO as GPIO&lt;br /&gt;
import gpiozero&lt;br /&gt;
import ephem&lt;br /&gt;
import datetime&lt;br /&gt;
def forwardzero(wait):&lt;br /&gt;
    led24=gpiozero.LED(24) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    #led20=gpiozero.LED(20) #enable&lt;br /&gt;
    #led21=gpiozero.LED(21) #enable&lt;br /&gt;
    led8=gpiozero.LED(8)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forwardzero&amp;quot;)&lt;br /&gt;
        #cas où le hbridge necessite un signal enable&lt;br /&gt;
        #led21.on()&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #mettre un signal sur l&#039;interrupteur 1&lt;br /&gt;
        led23.on()&lt;br /&gt;
        led24.off()&lt;br /&gt;
        #laisser le signal actif le temps de wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #eteindre le signal sur l&#039;interrupteur&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #eteindre le hbridge enable&lt;br /&gt;
        #led21.off()&lt;br /&gt;
        #led20.off()&lt;br /&gt;
    except KeyboardnInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur l&#039;interrupteur 1&lt;br /&gt;
        led24.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #led21.off()&lt;br /&gt;
def backwardzero(wait):&lt;br /&gt;
    led8=gpiozero.LED(8)&lt;br /&gt;
    led7=gpiozero.LED(7)&lt;br /&gt;
    led24=gpiozero.LED(24) #motor1&lt;br /&gt;
    led23=gpiozero.LED(23) #motor1&lt;br /&gt;
    #cas où le hbridge necessite un signal enable&lt;br /&gt;
    #led20=gpiozero.LED(20) #enable&lt;br /&gt;
    #led21=gpiozero.LED(21) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backwardzero&amp;quot;)&lt;br /&gt;
        #signal zero sur interupteur 1&lt;br /&gt;
        led24.on()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #cas où le hbrige necessite un signal sur enable&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #led21.on()&lt;br /&gt;
        #signal sur interrupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #wait&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        #signal off sur interrupteur&lt;br /&gt;
        led24.off()&lt;br /&gt;
        #hbridge enable&lt;br /&gt;
        #led21.off()&lt;br /&gt;
        #led20.off()&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        #signal à zero sur interupteur 1&lt;br /&gt;
        led24.off()&lt;br /&gt;
        led23.off()&lt;br /&gt;
        #signal à zero sur l&#039;interupteur 2&lt;br /&gt;
        led8.off()&lt;br /&gt;
        led7.off()&lt;br /&gt;
        #signal à zero sur la fiche enable&lt;br /&gt;
        #led20.off()&lt;br /&gt;
        #led21.off()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
#pin16 gpio23&lt;br /&gt;
#pin36 gpio25&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:300--&amp;gt;&lt;br /&gt;
def forward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(24,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(8,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    #GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    #GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;forward&amp;quot;)&lt;br /&gt;
        GPIO.output(8,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.HIGH)&lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboard interrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi, ca n&#039;enleve pas les +3V&lt;br /&gt;
def backward(wait):&lt;br /&gt;
    GPIO.setmode(GPIO.BCM)&lt;br /&gt;
    GPIO.setup(8,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(7,GPIO.OUT)  #motor2&lt;br /&gt;
    GPIO.setup(24,GPIO.OUT) #motor1&lt;br /&gt;
    GPIO.setup(23,GPIO.OUT) #motor1    &lt;br /&gt;
    #GPIO.setup(20,GPIO.OUT) #enable&lt;br /&gt;
    #GPIO.setup(21,GPIO.OUT) #enable&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;backward&amp;quot;)&lt;br /&gt;
        #GPIO.output(21,GPIO.HIGH)        &lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.HIGH)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        for k in range(wait):&lt;br /&gt;
            print(k)&lt;br /&gt;
            time.sleep(1)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;keyboardinterrupt&amp;quot;)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print(err)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;zero&amp;quot;)        &lt;br /&gt;
        #GPIO.output(20,GPIO.LOW)&lt;br /&gt;
        #GPIO.output(21,GPIO.LOW)&lt;br /&gt;
        GPIO.output(24,GPIO.LOW)&lt;br /&gt;
        GPIO.output(23,GPIO.LOW)&lt;br /&gt;
        GPIO.output(8,GPIO.LOW)&lt;br /&gt;
        GPIO.output(7,GPIO.LOW)&lt;br /&gt;
        #GPIO.cleanup() chez moi ca n&#039;enleve pas les +3V&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
#Courses min max:&lt;br /&gt;
#forward(41) #rotation horaire motor2&lt;br /&gt;
#backward(90) #rotation antihoraire motor2&lt;br /&gt;
#forwardzero(10) #verin extension motor1 111 max&lt;br /&gt;
#backwardzero(2) #verin retractation motor1 107 max&lt;br /&gt;
#forwardzero(90)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:302--&amp;gt;&lt;br /&gt;
#Etalonnage:&lt;br /&gt;
#dict_angle_verin formating: &amp;quot;degre_alt:motor activation time (retractation)&amp;quot;&lt;br /&gt;
dict_angle_verin={1:0,&lt;br /&gt;
                2:0,&lt;br /&gt;
                3:0,&lt;br /&gt;
                4:0,&lt;br /&gt;
                5:0,&lt;br /&gt;
                6:0,&lt;br /&gt;
                7:0,&lt;br /&gt;
                8:0,&lt;br /&gt;
                9:0,&lt;br /&gt;
                10:0,&lt;br /&gt;
                11:1,&lt;br /&gt;
                12:1,&lt;br /&gt;
                13:2,&lt;br /&gt;
                14:3,&lt;br /&gt;
                15:4,&lt;br /&gt;
                16:5,&lt;br /&gt;
                17:6,&lt;br /&gt;
                18:7,&lt;br /&gt;
                19:8,&lt;br /&gt;
                20:9,&lt;br /&gt;
                21:10,&lt;br /&gt;
                22:11,&lt;br /&gt;
                23:12,&lt;br /&gt;
                24:13,&lt;br /&gt;
                25:14,&lt;br /&gt;
                26:15,&lt;br /&gt;
                27:16,&lt;br /&gt;
                28:16,&lt;br /&gt;
                29:17,&lt;br /&gt;
                30:18,&lt;br /&gt;
                31:19,&lt;br /&gt;
                32:20,&lt;br /&gt;
                33:21,&lt;br /&gt;
                34:22,&lt;br /&gt;
                35:23,&lt;br /&gt;
                36:24,&lt;br /&gt;
                37:25,&lt;br /&gt;
                38:27,&lt;br /&gt;
                39:28,&lt;br /&gt;
                40:29,&lt;br /&gt;
                41:30,&lt;br /&gt;
                42:32,&lt;br /&gt;
                43:33,&lt;br /&gt;
                44:34,&lt;br /&gt;
                45:35,&lt;br /&gt;
                46:37,&lt;br /&gt;
                47:38,&lt;br /&gt;
                48:39,&lt;br /&gt;
                49:41,&lt;br /&gt;
                50:42,&lt;br /&gt;
                51:44,&lt;br /&gt;
                52:45,&lt;br /&gt;
                53:47,&lt;br /&gt;
                54:48,&lt;br /&gt;
                55:50,&lt;br /&gt;
                56:51,&lt;br /&gt;
                57:52,&lt;br /&gt;
                58:54,&lt;br /&gt;
                59:56,&lt;br /&gt;
                60:58,&lt;br /&gt;
                61:59,&lt;br /&gt;
                62:59,&lt;br /&gt;
                63:59,&lt;br /&gt;
                64:60,&lt;br /&gt;
                65:63,&lt;br /&gt;
                66:64,&lt;br /&gt;
                67:65,&lt;br /&gt;
                68:66,&lt;br /&gt;
                69:68,&lt;br /&gt;
                70:68,&lt;br /&gt;
                71:71,&lt;br /&gt;
                72:73,&lt;br /&gt;
                73:75,&lt;br /&gt;
                74:77,&lt;br /&gt;
                75:79,&lt;br /&gt;
                76:81,&lt;br /&gt;
                77:82,&lt;br /&gt;
                78:83,&lt;br /&gt;
                79:85,&lt;br /&gt;
                80:86,&lt;br /&gt;
                81:87,&lt;br /&gt;
                82:89,&lt;br /&gt;
                83:91,&lt;br /&gt;
                84:94,&lt;br /&gt;
                85:96,&lt;br /&gt;
                86:98,&lt;br /&gt;
                87:100}&lt;br /&gt;
#dict angle rotation formating: &amp;quot;degre azimut - 180: motor activation time (retractation)&amp;quot;&lt;br /&gt;
dict_angle_rotation={&lt;br /&gt;
                0:41,&lt;br /&gt;
                1:42,&lt;br /&gt;
                2:43,&lt;br /&gt;
                3:44,&lt;br /&gt;
                4:45,&lt;br /&gt;
                5:46,&lt;br /&gt;
                6:47,&lt;br /&gt;
                7:48,&lt;br /&gt;
                8:49,&lt;br /&gt;
                9:50,&lt;br /&gt;
                10:52,&lt;br /&gt;
                11:53,&lt;br /&gt;
                12:54,&lt;br /&gt;
                13:55,&lt;br /&gt;
                14:56,&lt;br /&gt;
                15:57,&lt;br /&gt;
                16:58,&lt;br /&gt;
                17:59,&lt;br /&gt;
                18:60,&lt;br /&gt;
                19:61,&lt;br /&gt;
                20:63,&lt;br /&gt;
                21:64,&lt;br /&gt;
                22:65,&lt;br /&gt;
                23:66,&lt;br /&gt;
                24:67,&lt;br /&gt;
                25:68,&lt;br /&gt;
                26:69,&lt;br /&gt;
                27:70,&lt;br /&gt;
                28:71,&lt;br /&gt;
                29:72,&lt;br /&gt;
                30:73,&lt;br /&gt;
                31:75,&lt;br /&gt;
                32:76,&lt;br /&gt;
                33:77,&lt;br /&gt;
                34:78,&lt;br /&gt;
                35:79,&lt;br /&gt;
                36:82,&lt;br /&gt;
                37:82,&lt;br /&gt;
                38:82,&lt;br /&gt;
                39:82,&lt;br /&gt;
                40:82,&lt;br /&gt;
                41:82,&lt;br /&gt;
                42:82,&lt;br /&gt;
                43:82,&lt;br /&gt;
                44:82,&lt;br /&gt;
                45:82,&lt;br /&gt;
                46:82,&lt;br /&gt;
                47:82,&lt;br /&gt;
                -1:39,&lt;br /&gt;
                -2:37,&lt;br /&gt;
                -3:35,&lt;br /&gt;
                -4:33,&lt;br /&gt;
                -5:32,&lt;br /&gt;
                -6:30,&lt;br /&gt;
                -7:29,&lt;br /&gt;
                -8:27,&lt;br /&gt;
                -9:26,&lt;br /&gt;
                -10:25,&lt;br /&gt;
                -11:23,&lt;br /&gt;
                -12:22,&lt;br /&gt;
                -13:19,&lt;br /&gt;
                -14:18,&lt;br /&gt;
                -15:17,&lt;br /&gt;
                -16:16,&lt;br /&gt;
                -17:15,&lt;br /&gt;
                -18:14,&lt;br /&gt;
                -19:6,&lt;br /&gt;
                -20:2,&lt;br /&gt;
                -21:1,&lt;br /&gt;
                -22:0,&lt;br /&gt;
                }&lt;br /&gt;
def sun_position(lat,lon):&lt;br /&gt;
    &amp;quot;calcule la position degre azimut, degre horizontal du soleil avec pyephem&amp;quot;&lt;br /&gt;
    now_here = ephem.Observer()&lt;br /&gt;
    now_here.lat = lat&lt;br /&gt;
    now_here.lon = lon&lt;br /&gt;
    #Ajustement heure en UT pour la france&lt;br /&gt;
    #PyEphem only processes and returns dates that are in Universal Time (UT), which is simliar to Standard Time in Greenwich, England, on the Earth&#039;s Prime Meridian&lt;br /&gt;
    #Europe/Paris is GMT+2&lt;br /&gt;
    utc_now=datetime.datetime.utcnow()&lt;br /&gt;
    is_dst=datetime.datetime(year=utc_now.year,month=utc_now.month,day=utc_now.day).dst()&lt;br /&gt;
    time_diff=datetime.timedelta(hours=(1 if not is_dst else 2))&lt;br /&gt;
    time_diff_gmt2=datetime.timedelta(hours=2)&lt;br /&gt;
    now_here.date = utc_now - time_diff - time_diff_gmt2 #formatting is &#039;2007/12/13 00:50:22&#039;&lt;br /&gt;
    sun=ephem.Sun()&lt;br /&gt;
    sun.compute(now_here)&lt;br /&gt;
    sun_degre_azimut=int(sun.az*180/3.141592653589793)&lt;br /&gt;
    sun_degre_alt=int(sun.alt*180/3.141592653589793)&lt;br /&gt;
    return([sun_degre_alt,sun_degre_azimut])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:303--&amp;gt;&lt;br /&gt;
def init():&lt;br /&gt;
    &amp;quot;fonction qui active les verins pour les placer en debut(vertical) et fin(horizontal) de course&amp;quot; &lt;br /&gt;
    print(&amp;quot;init&amp;quot;)&lt;br /&gt;
    #forward(100)&lt;br /&gt;
    #forwardzero(82)&lt;br /&gt;
def track(lat,lon):&lt;br /&gt;
    &amp;quot;fonction qui active les verins du tracker pour orienter le module solaire perpendiculaire au soleil&amp;quot;&lt;br /&gt;
    init()&lt;br /&gt;
    sun_degre_alt,sun_degre_azimut=sun_position(lat,lon)&lt;br /&gt;
    print(f&amp;quot;sun degre azimut: {sun_degre_azimut}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;sun degre alt: {sun_degre_alt}&amp;quot;)&lt;br /&gt;
    #calage sur etalonage verin vertical avec angle max et degre 0 au nord (referentiel 0 au sud dans ephem)&lt;br /&gt;
    sun_degre_alt=min(sun_degre_alt,87)&lt;br /&gt;
    #calage angle sur etalonage verin horizontal (angle 0 panneau plat) avec courses min et max&lt;br /&gt;
    sun_degre_azimut=sun_degre_azimut-180&lt;br /&gt;
    sun_degre_azimut=max(-47,sun_degre_azimut)&lt;br /&gt;
    sun_degre_azimut=min(sun_degre_azimut,22)&lt;br /&gt;
    #print&lt;br /&gt;
    print(f&amp;quot;sun degre azimut ajusté: {sun_degre_azimut}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;sun degre alt ajusté: {sun_degre_alt}&amp;quot;)&lt;br /&gt;
    #verin vertical. angle 0 verin retracté panneau plat.&lt;br /&gt;
    print(f&amp;quot;retractation verticale backward {dict_angle_verin[sun_degre_alt]}&amp;quot;)&lt;br /&gt;
    backward(dict_angle_verin[sun_degre_alt])&lt;br /&gt;
    #verin horizontal. angle 0 referentiel ephem au nord. angle 0 verin à mi course panneau vers le sud.&lt;br /&gt;
    print(f&amp;quot;retractation horizontale backwardzero {dict_angle_rotation[sun_degre_azimut]}&amp;quot;)&lt;br /&gt;
    backwardzero(dict_angle_rotation[sun_degre_azimut])&lt;br /&gt;
#test Agen&lt;br /&gt;
lat=44.2&lt;br /&gt;
lon=0.6&lt;br /&gt;
#test forward backward(alt,vertical) &lt;br /&gt;
print(&amp;quot;forward 4&amp;quot;)&lt;br /&gt;
forward(4)&lt;br /&gt;
print(&amp;quot;backward 4&amp;quot;)&lt;br /&gt;
backward(4)&lt;br /&gt;
#test forwardzero backwardzero(az,horizontal)&lt;br /&gt;
print(&amp;quot;forwardzero 4&amp;quot;)&lt;br /&gt;
forwardzero(4)&lt;br /&gt;
print(&amp;quot;backwardzero 4&amp;quot;)&lt;br /&gt;
backwardzero(4)&lt;br /&gt;
#placer le tracker direction sud (verin horizontal à mi course)&lt;br /&gt;
#forwardzero(41)&lt;br /&gt;
#time.sleep(100)&lt;br /&gt;
while True:&lt;br /&gt;
    track(lat,lon)&lt;br /&gt;
    time.sleep(10*60) #activer le tracking toutes les 10 minutes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_tracking_capricieux.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
Coder le tracking avec une IA&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:236--&amp;gt;&lt;br /&gt;
On va maintenant coder une &amp;quot;IA lowtech&amp;quot; pour le côté pédagogique (du ML pour machine learning, comme utilisé massivement depuis une quinzaine d&#039;année dans de nombreux secteurs d&#039;activité, cad pas l&#039;ia au sens chatgptesque du terme en 2024). On pourrait dire que l&#039;ia lowtech est l&#039;ia dont les résultats ne relèvent pas de la pensée magique, dont les data et le code sont open source, non volés, dont les data sont à nous, par nous et pour nous et sur laquelle on a la main (ce dernier point est essentiel mais l&#039;expérience de sortir du rang me pousse au pessimisme à ce sujet car la vérification s&#039;il y a interférence ou pas dans les résultats du machine learning est assez difficile à détecter)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
On branche une webcam, on enregistre les images comme données d&#039;entrée, on traite l&#039;image pour en faire un tableaux de chiffres correspondant à des variables avec lesquelles on va chercher à corréler avec un signal positif ou négatif (tourner le moter dans un sens ou moteur à l&#039;arret).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
Ici, les données d&#039;entrées sont uniquement les 640*480*3=921600 variables des pixels des images de la vidéo (921600 colonnes/variables par lignes, à partir desquelles on cherche une corrélation avec le signal positif 1 ou 0 de la dernière colonne).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
Pour faire fonctionner le tracker, ca ne fonctionnera pas bien, il faudrait faire du &amp;quot;feature engineering&amp;quot; (nom compliqué pour dire rajouter des colones de variables plus proabablement corrélées au signal positif) en rajoutant la luminosité et/ou la date et l&#039;heure, sur des échantillons de vidéos couvrant toutes les saisons sur plusieurs années.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:240--&amp;gt;&lt;br /&gt;
Si vous voulez apprendre les bases sur lesquelles reposent ce code, je recommande le cours &amp;quot;Applied Data Science with Python&amp;quot; de l&#039;université du michigan dans lequelvous apprendrez des bases de python,pandas, et machine learning &amp;quot;no bullshit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:241--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import cv2&lt;br /&gt;
import time&lt;br /&gt;
import numpy as np&lt;br /&gt;
import os&lt;br /&gt;
import argparse&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
import seaborn as sns&lt;br /&gt;
import sklearn.model_selection&lt;br /&gt;
import sklearn.metrics&lt;br /&gt;
import sklearn.decomposition&lt;br /&gt;
from sklearn.neighbors import KNeighborsClassifier&lt;br /&gt;
from sklearn.naive_bayes import GaussianNB&lt;br /&gt;
from sklearn.ensemble import RandomForestClassifier&lt;br /&gt;
from sklearn.ensemble import GradientBoostingClassifier&lt;br /&gt;
from sklearn.neural_network import MLPClassifier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
def enregistrer_video(out_file,fps,capture_duration):&lt;br /&gt;
    # Open the webcam&lt;br /&gt;
    cap = cv2.VideoCapture(0)  # Use 0 for default webcam&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:243--&amp;gt;&lt;br /&gt;
fourcc = cv2.VideoWriter_fourcc(*&#039;XVID&#039;)  # Codec (e.g., XVID)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # Get webcam frame width&lt;br /&gt;
    frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # Get webcam frame height&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:245--&amp;gt;&lt;br /&gt;
# Check if webcam opened successfully&lt;br /&gt;
    if not cap.isOpened():&lt;br /&gt;
        print(&amp;quot;Error opening webcam&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:246--&amp;gt;&lt;br /&gt;
# Create the VideoWriter object&lt;br /&gt;
    out = cv2.VideoWriter(out_file, fourcc, fps, (frame_width, frame_height))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
# Start time for tracking duration&lt;br /&gt;
    start_time = time.time()&lt;br /&gt;
    while time.time() - start_time &amp;lt; capture_duration:&lt;br /&gt;
        # Capture frame-by-frame&lt;br /&gt;
        ret, frame = cap.read()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:248--&amp;gt;&lt;br /&gt;
# Check if frame captured successfully&lt;br /&gt;
        if not ret:&lt;br /&gt;
            print(&amp;quot;Error capturing frame&amp;quot;)&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:249--&amp;gt;&lt;br /&gt;
# Write the frame to the video file&lt;br /&gt;
        out.write(frame)&lt;br /&gt;
    &lt;br /&gt;
        # Display the captured frame (optional)&lt;br /&gt;
        cv2.imshow(&#039;Webcam Video&#039;, frame)&lt;br /&gt;
    &lt;br /&gt;
        # Check if the user wants to quit (press &#039;q&#039;)&lt;br /&gt;
        if cv2.waitKey(1) &amp;amp; 0xFF == ord(&#039;q&#039;):&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:250--&amp;gt;&lt;br /&gt;
# Close resources&lt;br /&gt;
    cap.release()&lt;br /&gt;
    out.release()&lt;br /&gt;
    cv2.destroyAllWindows()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:251--&amp;gt;&lt;br /&gt;
print(f&amp;quot;1 minute video saved successfully as {out_file}!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:252--&amp;gt;&lt;br /&gt;
def charger_images_video(video_filename):&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Charge les images vidéo d&#039;un fichier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:253--&amp;gt;&lt;br /&gt;
Args:&lt;br /&gt;
      video_filename: Le chemin d&#039;accès au fichier vidéo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:254--&amp;gt;&lt;br /&gt;
Returns:&lt;br /&gt;
      Un tableau NumPy contenant les images vidéo (3D array: frames, rows, cols).&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:255--&amp;gt;&lt;br /&gt;
# Ouvrir la vidéo avec OpenCV&lt;br /&gt;
  cap = cv2.VideoCapture(video_filename)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:256--&amp;gt;&lt;br /&gt;
# Vérifier l&#039;ouverture réussie&lt;br /&gt;
  if not cap.isOpened():&lt;br /&gt;
      print(&amp;quot;Erreur d&#039;ouverture du fichier vidéo:&amp;quot;, video_filename)&lt;br /&gt;
      return None&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:257--&amp;gt;&lt;br /&gt;
# Liste vide pour stocker les images vidéo&lt;br /&gt;
  images_list = []&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:258--&amp;gt;&lt;br /&gt;
# Lire les images vidéo image par image&lt;br /&gt;
  while True:&lt;br /&gt;
      ret, frame = cap.read()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:259--&amp;gt;&lt;br /&gt;
# Vérifier la lecture de l&#039;image&lt;br /&gt;
      if not ret:&lt;br /&gt;
          break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:260--&amp;gt;&lt;br /&gt;
# Convertir l&#039;image en nuance de gris (optionnel pour la normalisation)&lt;br /&gt;
      # frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # Décommenter si nécessaire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:261--&amp;gt;&lt;br /&gt;
# Ajouter l&#039;image à la liste&lt;br /&gt;
      images_list.append(frame)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:262--&amp;gt;&lt;br /&gt;
# Fermer la capture vidéo&lt;br /&gt;
  cap.release()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
return images_list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:264--&amp;gt;&lt;br /&gt;
def flatten_images_video(images_array):&lt;br /&gt;
    &lt;br /&gt;
    # Initier une liste de resultat&lt;br /&gt;
    result=[]&lt;br /&gt;
    &lt;br /&gt;
    # Iterer sur le numpy array en input&lt;br /&gt;
    for k in images_array:&lt;br /&gt;
        result.append(k.flatten())&lt;br /&gt;
    # convertir la liste np.array&lt;br /&gt;
    result=np.asarray(result)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
return result&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
# Exemple d&#039;utilisation&lt;br /&gt;
# Define video parameters&lt;br /&gt;
out_file = &amp;quot;webcam_video_1min.mp4&amp;quot;  # Output video filename&lt;br /&gt;
fps = 20.0  # Frames per second&lt;br /&gt;
capture_duration = 60  # Seconds&lt;br /&gt;
#enregistrer_video(out_file,fps,capture_duration)&lt;br /&gt;
images_video = charger_images_video(&amp;quot;webcam_video_1min.mp4&amp;quot;)  # Fonction pour charger les images vidéo&lt;br /&gt;
print(images_video)&lt;br /&gt;
print(len(images_video))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
# Flattening and normalizing&lt;br /&gt;
images_video = flatten_images_video(images_video)&lt;br /&gt;
print(images_video[0])&lt;br /&gt;
print(len(images_video[0]))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
# compression/normalisation&lt;br /&gt;
scaling_factor = 1.0 / 255.0  # Divide by 255 to normalize between 0 and 1&lt;br /&gt;
images_video = images_video * scaling_factor&lt;br /&gt;
print(images_video[0])&lt;br /&gt;
print(len(images_video[0]))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
# checking data shape&lt;br /&gt;
#np.set_printoptions(threshold=np.inf)  # Set threshold to infinity&lt;br /&gt;
#print(np.array2string(images_video[0], suppress_small=True))&lt;br /&gt;
#print(len(images_video[0]))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:270--&amp;gt;&lt;br /&gt;
# Get the array shape&lt;br /&gt;
image_shape = images_video.shape&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
# Print the dimensions&lt;br /&gt;
print(&amp;quot;Image shape&amp;quot;, image_shape)&lt;br /&gt;
print(&amp;quot;Number of dimensions:&amp;quot;, len(image_shape))&lt;br /&gt;
print(&amp;quot;Image height:&amp;quot;, image_shape[0])   &lt;br /&gt;
print(&amp;quot;Image width:&amp;quot;, image_shape[1])&lt;br /&gt;
print(&amp;quot;Number of color channels:&amp;quot;, image_shape[2])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:272--&amp;gt;&lt;br /&gt;
# Total number of elements (height x width x color channels)&lt;br /&gt;
total_elements = image_shape[0] * image_shape[1] * image_shape[2]&lt;br /&gt;
print(&amp;quot;Total elements:&amp;quot;, total_elements)E&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
# création du dataset pour dire &amp;quot;oui&amp;quot; pour tourner à gauche (par exemple)&lt;br /&gt;
# ND: c&#039;est à cette étape que les géants de la tech emploient des kenyans sous payés&lt;br /&gt;
# dans une forme d&#039;esclavage moderne&lt;br /&gt;
# il s&#039;agit de définir, pour chaque image, si on doit activer le moteur vers &lt;br /&gt;
# la gauche (cad définir un signal positif pour que la machine fasse des corrélations&lt;br /&gt;
# positives avec cette image)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
positives=np.zeros_like(images_video)&lt;br /&gt;
#Si les 14 premieres images définissent un signal positif, on fera:&lt;br /&gt;
#en réalité il faudra traiter des segments de vidéos positivement en définissant&lt;br /&gt;
#chaque image auxquelles on va associer le signal positif&lt;br /&gt;
positives[0:14] = 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
class ML():&lt;br /&gt;
    @staticmethod&lt;br /&gt;
    def ml(X,y,classifier):&lt;br /&gt;
        &amp;quot;process machine learning on X data set, y yes/no data with classifier&amp;quot;&lt;br /&gt;
        # dataset&lt;br /&gt;
        #X = images_video&lt;br /&gt;
        #y = positives&lt;br /&gt;
        # classifier model training&lt;br /&gt;
        clf = ML.dico_classifier[classifier]()&lt;br /&gt;
        X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(&lt;br /&gt;
            X, y, random_state=0)&lt;br /&gt;
        clf.fit(X_train, y_train)&lt;br /&gt;
        # predictions&lt;br /&gt;
        _predicted = clf.predict(X_test)&lt;br /&gt;
        # scores&lt;br /&gt;
        _accuracy, _precision, _recall = ML.compute_scores(y_test, _predicted,&lt;br /&gt;
                                                        classifier)&lt;br /&gt;
        # confusion matrix&lt;br /&gt;
        ML.compute_confusion_matrix(y_test, _predicted, _accuracy, classifier)&lt;br /&gt;
        # courbes precision-recall&lt;br /&gt;
        ML.plot_precision_recall(clf, X_test, y_test, classifier, _predicted)&lt;br /&gt;
        # roc&lt;br /&gt;
        roc_auc_clf = ML.plot_roc(clf, X_test, y_test, classifier)[0]&lt;br /&gt;
        return pd.DataFrame(data=(_accuracy, _precision, _recall, roc_auc_clf),&lt;br /&gt;
                            index=[&#039;accuracy&#039;, &#039;precision&#039;, &#039;recall&#039;, &#039;AUC&#039;],&lt;br /&gt;
                            columns=[classifier])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
@staticmethod&lt;br /&gt;
    def compute_scores(y_test, _predicted, classifier):&lt;br /&gt;
        &amp;quot;compute machine learning scores&amp;quot;&lt;br /&gt;
        _accuracy = sklearn.metrics.accuracy_score(y_test, _predicted)&lt;br /&gt;
        _precision = sklearn.metrics.precision_score(y_test, _predicted)&lt;br /&gt;
        _recall = sklearn.metrics.recall_score(y_test, _predicted)&lt;br /&gt;
        print(str(classifier) + &#039; Accuracy: {:.2f}&#039;.format(_accuracy))&lt;br /&gt;
        print(str(classifier) + &#039; Precision: {:.2f}&#039;.format(_precision))&lt;br /&gt;
        print(str(classifier) + &#039; Recall: {:.2f}&#039;.format(_recall))&lt;br /&gt;
        return (_accuracy, _precision, _recall)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
@staticmethod&lt;br /&gt;
    def compute_confusion_matrix(y_test, _predicted, _accuracy, classifier):&lt;br /&gt;
        &amp;quot;compute confusion matrix&amp;quot;&lt;br /&gt;
        confusion_clf = sklearn.metrics.confusion_matrix(y_test, _predicted)&lt;br /&gt;
        df_clf = pd.DataFrame(confusion_clf,&lt;br /&gt;
                              index=list(range(0, 2)),&lt;br /&gt;
                              columns=list(range(0, 2)))&lt;br /&gt;
        plt.figure(figsize=(5.5, 4))&lt;br /&gt;
        ax_heatmap=sns.heatmap(df_clf, annot=True, vmin=0, vmax=11, cmap=&amp;quot;Blues&amp;quot;)&lt;br /&gt;
        plt.title(str(classifier) + &#039; \nAccuracy:{0:.3f}&#039;.format(_accuracy))&lt;br /&gt;
        plt.ylabel(&#039;True label&#039;)&lt;br /&gt;
        plt.xlabel(&#039;Predicted label&#039;)&lt;br /&gt;
        return df_clf,ax_heatmap&lt;br /&gt;
    @staticmethod&lt;br /&gt;
    def plot_precision_recall(clf, X_test, y_test, classifier, _predicted):&lt;br /&gt;
        &amp;quot;plot precision recall curve&amp;quot;&lt;br /&gt;
        _precision = sklearn.metrics.precision_score(y_test, _predicted)&lt;br /&gt;
        _recall = sklearn.metrics.recall_score(y_test, _predicted)&lt;br /&gt;
        y_score_clf = clf.predict_proba(X_test)&lt;br /&gt;
        y_score_df = pd.DataFrame(data=y_score_clf)&lt;br /&gt;
        precision, recall, thresholds = sklearn.metrics.precision_recall_curve(&lt;br /&gt;
            y_test, y_score_df[1])&lt;br /&gt;
        closest_zero = np.argmin(np.abs(thresholds))&lt;br /&gt;
        closest_zero_p = precision[closest_zero]&lt;br /&gt;
        closest_zero_r = recall[closest_zero]&lt;br /&gt;
        plt.figure()&lt;br /&gt;
        plt.xlim([0.0, 1.01])&lt;br /&gt;
        plt.ylim([0.0, 1.01])&lt;br /&gt;
        result,=plt.plot(precision, recall)&lt;br /&gt;
        plt.title(&lt;br /&gt;
            str(classifier) +&lt;br /&gt;
            &#039; Precision-Recall Curve \nprecision :{:0.2f}&#039;.format(_precision) +&lt;br /&gt;
            &#039; recall: {:0.2f}&#039;.format(_recall))&lt;br /&gt;
        plt.plot(closest_zero_p,&lt;br /&gt;
                 closest_zero_r,&lt;br /&gt;
                 &#039;o&#039;,&lt;br /&gt;
                 markersize=12,&lt;br /&gt;
                 fillstyle=&#039;none&#039;,&lt;br /&gt;
                 c=&#039;r&#039;,&lt;br /&gt;
                 mew=3)&lt;br /&gt;
        plt.xlabel(&#039;Precision&#039;, fontsize=16)&lt;br /&gt;
        plt.ylabel(&#039;Recall&#039;, fontsize=16)&lt;br /&gt;
        plt.show()&lt;br /&gt;
        return result&lt;br /&gt;
    @staticmethod&lt;br /&gt;
    def plot_roc(clf, X_test, y_test, classifier):&lt;br /&gt;
        &amp;quot;plot roc curve&amp;quot;&lt;br /&gt;
        y_score_clf = clf.predict_proba(X_test)&lt;br /&gt;
        y_score_df = pd.DataFrame(data=y_score_clf)&lt;br /&gt;
        fpr_clf, tpr_clf, _ = sklearn.metrics.roc_curve(y_test, y_score_df[1])&lt;br /&gt;
        roc_auc_clf = sklearn.metrics.auc(fpr_clf, tpr_clf)&lt;br /&gt;
        plt.figure()&lt;br /&gt;
        plt.xlim([-0.01, 1.00])&lt;br /&gt;
        plt.ylim([-0.01, 1.01])&lt;br /&gt;
        result,=plt.plot(fpr_clf,&lt;br /&gt;
                 tpr_clf,&lt;br /&gt;
                 lw=3,&lt;br /&gt;
                 label=str(classifier) +&lt;br /&gt;
                 &#039; ROC curve (area = {:0.2f})&#039;.format(roc_auc_clf))&lt;br /&gt;
        plt.xlabel(&#039;False Positive Rate&#039;, fontsize=16)&lt;br /&gt;
        plt.ylabel(&#039;True Positive Rate&#039;, fontsize=16)&lt;br /&gt;
        plt.title(&#039;ROC curve &#039; + str(classifier) +&lt;br /&gt;
                  &#039; \nAUC:{0:.3f}&#039;.format(roc_auc_clf),&lt;br /&gt;
                  fontsize=16)&lt;br /&gt;
        plt.legend(loc=&#039;lower right&#039;, fontsize=13)&lt;br /&gt;
        plt.plot([0, 1], [0, 1], color=&#039;navy&#039;, lw=3, linestyle=&#039;--&#039;)&lt;br /&gt;
        plt.show()&lt;br /&gt;
        return roc_auc_clf,result&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
dico_classifier = { &#039;knn&#039;: KNeighborsClassifier,&lt;br /&gt;
                        &#039;naiveb&#039;: GaussianNB,&lt;br /&gt;
                        &#039;randomforest&#039;: RandomForestClassifier,&lt;br /&gt;
                        &#039;gtree&#039;: GradientBoostingClassifier,&lt;br /&gt;
                        &#039;neural&#039;: MLPClassifier}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
@staticmethod&lt;br /&gt;
    def plot_heatmap(dataframe):&lt;br /&gt;
        &amp;quot;plot heatmap of accuracy, precision, recall, AUC&amp;quot;&lt;br /&gt;
        plt.figure()&lt;br /&gt;
        sns.heatmap(dataframe, annot=True, vmin=0, vmax=1, cmap=&amp;quot;Blues&amp;quot;)&lt;br /&gt;
        plt.title(&#039;scores des classifiers &#039;)&lt;br /&gt;
        plt.ylabel(&#039;scores&#039;)&lt;br /&gt;
        plt.xlabel(&#039;modeles&#039;)&lt;br /&gt;
        plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
#process machine learning for all classifiers in dico_classifier&lt;br /&gt;
#and plot a heatmap of their accuracy, precision, recall, AUC&lt;br /&gt;
df_result = pd.DataFrame(data=(0, 0, 0, 0),&lt;br /&gt;
                                 columns=[&#039;init&#039;],&lt;br /&gt;
                                 index=[&#039;accuracy&#039;, &#039;precision&#039;, &#039;recall&#039;, &#039;AUC&#039;])&lt;br /&gt;
for clf in ML.dico_classifier:&lt;br /&gt;
    print(clf)&lt;br /&gt;
    result_ml = ML.ml(images_video, positives, clf)&lt;br /&gt;
    df_result = pd.merge(df_result,&lt;br /&gt;
                                 result_ml,&lt;br /&gt;
                                 right_index=True,&lt;br /&gt;
                                 left_index=True)&lt;br /&gt;
df_result.drop(&#039;init&#039;, axis=1, inplace=True)&lt;br /&gt;
ML.plot_heatmap(df_result)&lt;br /&gt;
return df_result&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:281--&amp;gt;&lt;br /&gt;
Conclusion:&lt;br /&gt;
Voilà, maintenant que vous savez coder une IA, vous pouvez la critiquer d&#039;autant mieux,et promouvoir les lowtech en connaissance de cause.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:282--&amp;gt;&lt;br /&gt;
Vous noterez que les algorithmes d&#039;ia sont open sources et assez faciles à utiliser en tant que développeur &amp;quot;simple utilisateur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:283--&amp;gt;&lt;br /&gt;
Et aussi que sans data, l&#039;ia ne sert absolument à rien.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:284--&amp;gt;&lt;br /&gt;
C&#039;est pour cette raison que les géants de la tech veulent toujours plus de données et emploient des gens dans des conditions proches de l&#039;esclavage dans de nombreux pays pour les traiter avant d&#039;entrainer leurs modèles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:285--&amp;gt;&lt;br /&gt;
Tout comme pour les &amp;quot;données personnelles&amp;quot;, la question clé des ia repose sur les données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:286--&amp;gt;&lt;br /&gt;
Voir l&#039;excellente conf de benjamin bayart &amp;quot; Géopolitique de la data (Benjamin BAYART) &amp;quot; sur youtube ou en vidéo ici.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:287--&amp;gt;&lt;br /&gt;
Vous pouvez aussi faire un tracker lowtech, mais aussi adapter le code pour créer un véhicule  autonome lowtech avec 4 datasets/signaux positifs distincts pour entrainer l&#039;activation de &amp;quot;tourner à gauche&amp;quot;,&amp;quot;accélérer&amp;quot;, &amp;quot;tourner à droite&amp;quot;, &amp;quot;freiner&amp;quot;.  C&#039;est ce qu&#039;a fait [https://fr.wikipedia.org/wiki/George_Hotz#Conduite_autonome George Hotz] en proclamant qu&#039;il suffisait d&#039;une trentaine d&#039;heures de vidéos de conduite en enregistrant avec des capteurs pour avoir les signaux positifs correspondant aux images enregistrées pour que le machine learning fonctionne.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:288--&amp;gt;&lt;br /&gt;
Evidemment, on espere qu&#039;il n&#039;y aura pas de hack ou que le système n&#039;a pas de controle commande à distance sur ce type d&#039;algorithme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Dimensionner_et_faire_un_tracker_solaire_photovolat_que_low_tech_G_opolitique_de_la_data_Benjamin_BAYART_.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Couper_du_bois&amp;diff=152003</id>
		<title>Couper du bois</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Couper_du_bois&amp;diff=152003"/>
		<updated>2025-11-28T19:04:41Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Couper du bois&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Research&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=100&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=énergie, bois-énergie&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce tutoriel sur le bois clot une série sur l&#039;énergie dans lesquels vous trouverez des éléments qui accréditent des hypothèses plus ou moins fondamentales relatives aux énergies renouvelables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;bois sur pied&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;tronçonneuse, véhicule, fendeuse&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Couper du bois&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;4 jours passés à couper du bois sur pied 2h par jour incluant déplacement à moins d&#039;un kilometre&lt;br /&gt;
&lt;br /&gt;
8 jours passés à fendre du bois avec une fendeuse manuelle (masse+coin) 30 min par jour&lt;br /&gt;
&lt;br /&gt;
1,7 stère récupérée&lt;br /&gt;
&lt;br /&gt;
2L d&#039;essence utilisée&lt;br /&gt;
&lt;br /&gt;
1L d&#039;huile chaine utilisée&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Densité foncier argilo-calcaire laissée en friche avec des chênes :&lt;br /&gt;
&lt;br /&gt;
20 arbres de 8m de haut de 80cm de circonférence sur une surface de 20mx20m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vidéo de matériel lowtech pour utiliser du chauffage bois/vapeur pour un véhicule et une tronçonneuse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_Tronconneuse_voiture_a_vapeur_lowtech.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Construire_une_cabane_en_mode_autonome&amp;diff=152002</id>
		<title>Construire une cabane en mode autonome</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Construire_une_cabane_en_mode_autonome&amp;diff=152002"/>
		<updated>2025-11-28T19:04:17Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Construire_une_cabane_en_mode_autonome_cabaneperchee.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-99,&amp;quot;top&amp;quot;:7,&amp;quot;width&amp;quot;:1005,&amp;quot;height&amp;quot;:891,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.73,&amp;quot;scaleY&amp;quot;:0.73,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/7/74/Construire_une_cabane_en_mode_autonome_cabaneperchee.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Apprendre des procédés du monde de la construction (fondations, plots, fabrication fenetre, porte, toiture, etc.)&lt;br /&gt;
à partir de l&#039;observation&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Habitat&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Hard&lt;br /&gt;
|Duration=42&lt;br /&gt;
|Duration-type=day(s)&lt;br /&gt;
|Cost=42&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=cabane, construction bois&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Comme vous avez du vous en rendre compte dans le monde moderne, &lt;br /&gt;
&lt;br /&gt;
on apprend une grande partie des compétences dites &#039;&amp;quot;professionelle&amp;quot; &lt;br /&gt;
&lt;br /&gt;
en milieu professionnel, et souvent à partir de l&#039;observation.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez vous construire un abri pour faire face à l&#039;effondrement&lt;br /&gt;
&lt;br /&gt;
ou si vous voulez vivre en mode autonome avec peu de moyens,&lt;br /&gt;
&lt;br /&gt;
ou si vous voulez simplement construire une jolie cabane,&lt;br /&gt;
&lt;br /&gt;
vous n&#039;aurez pas beaucoup d&#039;occasions de développer ces compétences.&lt;br /&gt;
&lt;br /&gt;
Je vous propose donc une série de vidéos assez instructives sur la construction &lt;br /&gt;
&lt;br /&gt;
de cabanes pour la plupart avec un minimum d&#039;outils motorisés,&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;clous, bois, corde, pare-pluie, materiaux isolants, (parpaings, ciment/sable pour certaines fondations)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;scie, marteau, pelle, pioche/beche&lt;br /&gt;
&lt;br /&gt;
tronçonneuse (pour fabriquer des planches)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer des planches&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_decoupe-planches.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;fondations profondes avec rondins&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_fondations-profondes-rondins.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fondations rondins et construction palettes&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_palette-fondations-pilliers.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fondations pilliers betons&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_fondations-sur-pieux-betons.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;plots betons&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_plots-beton.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;semi enterrée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_semi-enterre-rondin-terre.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;semi enterrée toiture planches&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_semi-enterre-rondin-terre-toiture-planches.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;semi enterrée, arbre entiers&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_fullbuild-fondations-arbres-entiers.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fetage&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_maison-fetage-toiture-rondin-fondations-pieux.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Isolation et fenetres&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_fondations-parpaing-fenetres-isolation.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;ouverture cheminée, porte, fenetres&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_ouverture_chemin_e_fenetre_porte.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;De l&#039;arbre à la cabane&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_tree_to_house.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Socle cabane perchée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Construire_une_cabane_en_mode_autonome_socle-cabane-arbre.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=151999</id>
		<title>Concentrateurs solaires</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Concentrateurs_solaires&amp;diff=151999"/>
		<updated>2025-11-28T19:03:42Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Concentrateurs_solaires_parabole_platre.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:57,&amp;quot;top&amp;quot;:-161,&amp;quot;width&amp;quot;:3072,&amp;quot;height&amp;quot;:4096,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/0/0f/Concentrateurs_solaires_parabole_platre.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:449.80340760157276,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Fabrication de concentrateurs solaire (reflecteur+platre ouparabole de recup)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=80&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=solaire, energie, énergie, renouvelables, concentrateur, reflecteur, solaire thermique&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fabriqué des concentrateurs solaires pour essayer d&#039;entraîner un moteur stirling miniature (&amp;quot;jouet scientifique&amp;quot;) qu&#039;on appercoit sur quelques photos et vidéos et pour lequel j&#039;ai fait un autre tutoriel ici:  [[Moteur Stirling]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
L&#039;exercice n&#039;étant pas si simple, j&#039;ai décidé d&#039;en faire un tutoriel dédié.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Pour le moteur stirling miniature, il faut unhaut degré de concentration (2cm sur 4cm) et il est préférable d&#039;opter pour l&#039;achat de lentilles de fresnel.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
fabrication à partir de récupération d&#039;une antenne parabolique&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
- antenne parabolique  (40cm à plusieurs metres) en recyclerie ou sur internet : 10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
fabrication à partir de platre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
- ballon de yoga d&#039;un diametre 2x le diametre voulu pour le concentrateur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
- platre : 15kg pour reflecteur 80cm : 20€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
- sable : 4 truelles pour un seau&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
- colle à carreau : 4 truelles pour un seau 10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
- réflecteur adhésif: 20€/m2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
https://www.solarbrother.com/categorie-produit/reflecteur-solaire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
- super glue (20g) 5€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
- scotch peinture 10€&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
- pied de micro 5€&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
fabrication bout de sphere en platre&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Si vous optez pour la premiere option de récupération d&#039;antenne parabolique, passez directement à l&#039;étape 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Le choix du bout de sphere platre ou de l&#039;antenne parabolique peut poser question sur la focale du  concentrateur (cf vidéos dans etape 3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
La focale est la distance au centre du concentrateur à laquelle convergent les rayons du soleil reflétés par le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
La focale des bouts de sphere est nettement réduite par rapport aux antennes paraboliques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait des tests en bout de sphere platre pour essayer d&#039;obtenir un plus haut degré de concentration solaire, mais les résultats montrent des taches solaires d&#039;à peu près la même surface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0. Mélange de platre&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
On trouve des platres dédiés pour des moulures fines. Dans le doute, prenez plusieurs variétés et mélangez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
De toute façons, on ajoute un peu de sable et de colle à carreau pour solidifier le platre et éviter qu&#039;il soit friable ou fragile une fois sec.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Melangez dans les proportions 4 truelles de colles et de sable pour un seau de platre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Mélangez à de l&#039;eau, puis étalez sur votre ballon de yoga gonflé et stabilisé.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Pour pouvoir manipuler et orienter le reflecteur, on peut utiliser un pied de micro. Malheureusement, le bout du pied de micro est difficile à coller sur du platre, donc pensez à prendre le pied de micro dans la moulure de platre pendant le sechage si vous optez pour cette solution pour orienter le concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
NB: pour un concentrateur de 80cm de diametre, cest un peu trop lourd pour un pied de micro standard, pensez à verifier le dimensionnement pour que ca tienne.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Le ballon gris fait 75cm de diametre et le ballon orange 150cm de diametre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240825_140116.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241115_155751.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20240825_140915.jpg&lt;br /&gt;
|Step_Picture_03=Concentrateurs_solaires_IMG_20241115_192504.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
collage du reflecteur&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Initialement, j&#039;ai fait un essai sur un petit concentrateur de 10cm de coller des bouts de mirroirs pour réfléchir les rayons du soleil mais c&#039;était assez peu concluant donc j&#039;ai laissé tomber cette idée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
On trouve du reflecteur souple adhésif chez solar brother (voir lien dans materiel) qui est assez efficace et coute 20€/m2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Il y a deux points sur lesquels etre attentifs pour coller le reflecteur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
-Il faut éviter que le reflecteur souple gondole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
-Si vous avez une moulure platre, l&#039;adhésif colle mal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
On va donc procéder en découpant des triangles avec une base assez fine pour que ca ne gondole pas en collant. Sur mes essais, pour le concentrateur de 80cm de diametre, la base du triangle fait 7cm et pour le concentrateur de 40cm de diametre 10cm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Pour que ca colle sur le platre, on aplique d&#039;abbord du scotch peinture sur toute la surface du concentrateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Dans tous les cas, ajouter de la super glue à la surface adhésive car ca se décolle assez rapidement sinon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Concentrateurs_solaires_IMG_20240827_141431.jpg&lt;br /&gt;
|Step_Picture_01=Concentrateurs_solaires_IMG_20241127_151307.jpg&lt;br /&gt;
|Step_Picture_02=Concentrateurs_solaires_IMG_20241127_153118.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
mesure de puissance&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Pour l&#039;instant je n&#039;ai pas fait de mesure d&#039;évaporation d&#039;eau. J&#039;essaierai d&#039;en faire quand j&#039;aurai le temps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
En attendant voici des vidéos où on peut estimer la focale des concentrateurs et voir des planches commencer un processus de combustion (version parabole pour la vidéo avec le moteur stirling miniature au mois de juillet et version bout de sphere platre 80cm pour la video où le reflecteur est posé au sol au mois de novembre)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Moteur_Stirling_reflecteur80.mp4&lt;br /&gt;
|Step_Picture_01=Moteur_Stirling_reflecteur1.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151869</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151869"/>
		<updated>2025-11-03T15:10:00Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
&lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd par exemple un jerricane de 10L).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure) ou par la poignée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_jerricane_ref.png&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_objet_plancher.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Couper_du_bois_pesee_plancher.png&lt;br /&gt;
|Step_Picture_02=Couper_du_bois_pesee_plancher_ref.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 10kg pour l’objet 1, on a donc m2= 10 x d1/d2&lt;br /&gt;
&lt;br /&gt;
Pour le plancher (photos) : on a m2 = 10 x 84 / 18 = 47 kg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: ici, on fait une pesée dont la précision est peu importante (on veut un ordre de grandeur), mais si on veut plus de précision, il faut améliorer l&#039;attache de la corde (on voit sur la photo une imprécision de 3cm sur une longueur d2 de 18cm et une imprécision de 3,5 cm sur une longueur d1 de 84cm, soit 16% de marge d&#039;erreur dans la mesure pour d1, ce qui est trop important et 4% pour la mesure de d2). &lt;br /&gt;
&lt;br /&gt;
Pour améliorer cela, on peut faire la tare avec un poids sur le bras court et peser ensuite avec le crochet en mesurant précisément sa distance à l&#039;axe (ie une imprecision de mesure inférieure à 3,2 mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Publish&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151868</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151868"/>
		<updated>2025-11-03T15:09:27Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
&lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd par exemple un jerricane de 10L).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure) ou par la poignée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_jerricane_ref.png&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_objet_plancher.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Couper_du_bois_pesee_plancher.png&lt;br /&gt;
|Step_Picture_02=Couper_du_bois_pesee_plancher_ref.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 10kg pour l’objet 1, on a donc m2= 10 x d1/d2&lt;br /&gt;
&lt;br /&gt;
Pour le plancher (photos) : on a m2 = 10 x 84 / 18 = 47 kg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: ici, on fait une pesée dont la précision est peu importante (on veut un ordre de grandeur), mais si on veut plus de précision, il faut améliorer l&#039;attache de la corde (on voit sur la photo une imprécision de 3cm sur une longueur d2 de 18cm et une imprécision de 3,5 cm sur une longueur d1 de 84cm, soit 16% de marge d&#039;erreur dans la mesure pour d1, ce qui est trop important et 4% pour la mesure de d2). &lt;br /&gt;
&lt;br /&gt;
Pour améliorer cela, on peut faire la tare avec un poids sur le bras court et peser ensuite avec le crochet en mesurant précisément sa distance à l&#039;axe (ie une imprecision de mesure inférieure à 1,6mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Publish&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151867</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151867"/>
		<updated>2025-11-03T14:56:22Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
&lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd par exemple un jerricane de 10L).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure) ou par la poignée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_jerricane_ref.png&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_objet_plancher.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Couper_du_bois_pesee_plancher.png&lt;br /&gt;
|Step_Picture_02=Couper_du_bois_pesee_plancher_ref.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 10kg pour l’objet 1, on a donc m2= 10 x d1/d2&lt;br /&gt;
&lt;br /&gt;
Pour le plancher (photos) : on a m2 = 10 x 84 / 18 = 47 kg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NB: ici, on fait une pesée dont la précision est peu importante (on veut un ordre de grandeur), mais si on veut plus de précision, il faut améliorer l&#039;attache de la corde (on voit sur la photo une imprécision de 3cm sur une longueur d2 de 18cm et une imprécision de 3,5 cm sur une longueur d1 de 84cm, soit 16% de marge d&#039;erreur dans la mesure pour d1, ce qui est trop important et 4% pour la mesure de d2). &lt;br /&gt;
&lt;br /&gt;
Pour améliorer cela, on peut faire la tare avec un poids sur le bras court et peser ensuite avec le crochet en mesurant précisément sa distance à l&#039;axe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Publish&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151866</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151866"/>
		<updated>2025-11-03T14:50:08Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
&lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd par exemple un jerricane de 10L).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure) ou par la poignée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_jerricane_ref.png&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_objet_plancher.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Couper_du_bois_pesee_plancher.png&lt;br /&gt;
|Step_Picture_02=Couper_du_bois_pesee_plancher_ref.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151865</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151865"/>
		<updated>2025-11-03T14:48:57Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
&lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd par exemple un jerricane de 10L).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure) ou par la poignée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_jerricane_ref.png&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_pesee_objet_plancher.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_jerricane_ref.png&amp;diff=151864</id>
		<title>Fichier:Couper du bois pesee jerricane ref.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_jerricane_ref.png&amp;diff=151864"/>
		<updated>2025-11-03T14:46:55Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Couper_du_bois_pesee_jerricane_ref&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couper_du_bois_pesee_jerricane_ref&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_objet_plancher.png&amp;diff=151863</id>
		<title>Fichier:Couper du bois pesee objet plancher.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_objet_plancher.png&amp;diff=151863"/>
		<updated>2025-11-03T14:45:41Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Couper_du_bois_pesee_objet_plancher&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couper_du_bois_pesee_objet_plancher&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151862</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151862"/>
		<updated>2025-11-03T14:40:52Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
&lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151861</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151861"/>
		<updated>2025-11-03T14:40:13Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151860</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151860"/>
		<updated>2025-11-03T14:38:57Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
jerricane (10L, 20L)&lt;br /&gt;
ficelle ou corde&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=jerricane_tare.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_plancher.png&amp;diff=151859</id>
		<title>Fichier:Couper du bois pesee plancher.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_plancher.png&amp;diff=151859"/>
		<updated>2025-11-03T14:36:58Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Couper_du_bois_pesee_plancher&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couper_du_bois_pesee_plancher&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_plancher_ref.png&amp;diff=151858</id>
		<title>Fichier:Couper du bois pesee plancher ref.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_plancher_ref.png&amp;diff=151858"/>
		<updated>2025-11-03T14:36:53Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Couper_du_bois_pesee_plancher_ref&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couper_du_bois_pesee_plancher_ref&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_TDT.png&amp;diff=151857</id>
		<title>Fichier:Couper du bois pesee TDT.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_TDT.png&amp;diff=151857"/>
		<updated>2025-11-03T14:36:43Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Couper_du_bois_pesee_TDT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couper_du_bois_pesee_TDT&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_TDT_ref.png&amp;diff=151856</id>
		<title>Fichier:Couper du bois pesee TDT ref.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_pesee_TDT_ref.png&amp;diff=151856"/>
		<updated>2025-11-03T14:36:39Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Couper_du_bois_pesee_TDT_ref&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couper_du_bois_pesee_TDT_ref&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_jerricane_tare.png&amp;diff=151855</id>
		<title>Fichier:Couper du bois jerricane tare.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Couper_du_bois_jerricane_tare.png&amp;diff=151855"/>
		<updated>2025-11-03T14:36:36Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Couper_du_bois_jerricane_tare&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couper_du_bois_jerricane_tare&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151852</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151852"/>
		<updated>2025-11-02T16:17:25Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
&lt;br /&gt;
ficelle&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151851</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151851"/>
		<updated>2025-11-02T16:14:23Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
&lt;br /&gt;
ficelle&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Faire la tare&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&lt;br /&gt;
Èstimation marges d’erreurs : &lt;br /&gt;
&lt;br /&gt;
si mesure de distance faussé de 2mm sur distance crochet (qu&#039;on utiliserait pour suspendre l&#039;objet à peser) à axe (environ 2cm) : 10 % d’erreur&lt;br /&gt;
si tare sur crochet puis mesure poid à peser à 10 cm de l&#039;axe : 2mm faussé sur mesure de distance = 2 % d’erreur&lt;br /&gt;
si poids de référence de 1kg avec une erreur de 50g : 5 % d’erreur&lt;br /&gt;
si poids de référence de 10kg avec une erreur de 500g : 5 % d’erreurs&lt;br /&gt;
&lt;br /&gt;
Par principe : &lt;br /&gt;
- plus le poids de référence qu’on déplace sur le bras pour équilibrer est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
- plus la distance du poids à peser à l’axe est faible, plus la marge d’erreur de la mesure est grande&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le crochet sur le bras le plus court étant à 2cm de l’axe, on ne l’utilisera pas pour peser, mais pour tarer (mise à l’équilibre des deux bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac_plastique.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans l’exemple sur la photo, on a :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-une distance de 70cm entre le poids de référence de 1kg dans un sac plastique et l’axe,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-et une distance de 2cm entre l’axe et le crochet auquel est suspendu l’objet qu’on veut peser sur l’autre bras.&lt;br /&gt;
&lt;br /&gt;
donc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m2 = 70 / 2 = 35kg&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_70.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151848</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151848"/>
		<updated>2025-11-02T15:34:18Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
&lt;br /&gt;
ficelle&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac_plastique.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans l’exemple sur la photo, on a :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-une distance de 70cm entre le poids de référence de 1kg dans un sac plastique et l’axe,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-et une distance de 2cm entre l’axe et le crochet auquel est suspendu l’objet qu’on veut peser sur l’autre bras.&lt;br /&gt;
&lt;br /&gt;
donc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m2 = 70 / 2 = 35kg&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_70.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Couper_du_bois&amp;diff=151466</id>
		<title>Couper du bois</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Couper_du_bois&amp;diff=151466"/>
		<updated>2025-11-01T19:43:46Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Couper du bois&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Research&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=100&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=énergie, bois-énergie&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce tutoriel sur le bois clot une série sur l&#039;énergie dans lesquels vous trouverez des éléments qui accréditent des hypothèses plus ou moins fondamentales relatives aux énergies renouvelables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;bois sur pied&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;tronçonneuse, véhicule, fendeuse&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Couper du bois&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;4 jours passés à couper du bois sur pied 2h par jour incluant déplacement à moins d&#039;un kilometre&lt;br /&gt;
&lt;br /&gt;
8 jours passés à fendre du bois avec une fendeuse manuelle (masse+coin) 30 min par jour&lt;br /&gt;
&lt;br /&gt;
1,7 stère récupérée&lt;br /&gt;
&lt;br /&gt;
2L d&#039;essence utilisée&lt;br /&gt;
&lt;br /&gt;
1L d&#039;huile chaine utilisée&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Densité foncier argilo-calcaire laissée en friche avec des chênes :&lt;br /&gt;
&lt;br /&gt;
20 arbres de 8m de haut de 80cm de circonférence sur une surface de 20mx20m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vidéo de matériel lowtech pour utiliser du chauffage bois/vapeur pour un véhicule et une tronçonneuse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_Tronconneuse_voiture_a_vapeur_lowtech.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Published&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151465</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151465"/>
		<updated>2025-11-01T19:42:30Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
&lt;br /&gt;
ficelle&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac_plastique.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans l’exemple sur la photo, on a :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-une distance de 70cm entre le poids de référence de 1kg dans un sac plastique et l’axe,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-et une distance de 2cm entre l’axe et le crochet auquel est suspendu l’objet qu’on veut peser sur l’autre bras.&lt;br /&gt;
&lt;br /&gt;
donc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m2 = 70 / 2 = 35kg&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_70.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Published&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151464</id>
		<title>Peser avec une balance romaine</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Peser_avec_une_balance_romaine&amp;diff=151464"/>
		<updated>2025-11-01T19:23:52Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Page créée avec « {{Tuto Details |Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg |Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;o... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Peser_avec_une_balance_romaine_balance_romaine.jpg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-378,&amp;quot;top&amp;quot;:-108,&amp;quot;width&amp;quot;:2230,&amp;quot;height&amp;quot;:1486,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.48,&amp;quot;scaleY&amp;quot;:0.48,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wiki.lowtechlab.org/images/e/ea/Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Méthode pour effectuer une pesée avec une balance romaine&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Tools&lt;br /&gt;
|Type=Tutorial&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=30&lt;br /&gt;
|Duration-type=minute(s)&lt;br /&gt;
|Cost=3&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Si vous etes sujet à sabotage ou à divers bugs digitaux, il peut être utile d’avoir un instrument de pesée fiable, et la balance romaine peut faire l’affaire et peut permettre de peser des objets relativements lourds.&lt;br /&gt;
&lt;br /&gt;
On en trouve d’occasion dans les recycleries ou dans les vides greniers (celle ci a été achetée 3 euros).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir l’article wikipedia pour les termes « canoniques » : https://fr.wikipedia.org/wiki/Balance_romaine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En gros, il y a un axe autour duquel on trouve deux bras : un qui sert à peser l’objet qu’on veut peser, l’autre pour déplacer un poids de référence qui permet de calculer le poids de l’objet à peser. Quand c’est à l’horizontale, les poids des deux cotés sont équilibrés et on peut calculer le poids de l’objet à peser grace aux distances à l’axe et une petite équation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;sac plastique&lt;br /&gt;
&lt;br /&gt;
ficelle&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Fabriquer un poids de référence&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Faire un poids de référence de 1 kg avec un sac plastique qu’on remplit d’un litre d’eau (ou ajuster à la hausse si l’objet à peser est plus lourd).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’attacher sur le bras sur lequel on déplace ce poids de référence avec un fil ou une corde (le plus léger possible pour éviter de fausser la mesure).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention si vous utilisez une bouteille ou un contenant dont le poids est significatif par rapport au contenu qui constitue un poids de référence (idem pour ce qui est utilisé pour suspendre au bras)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Suspendre l’objet à peser sur le bras de pesée&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_sac_plastique.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Déplacer le poids de référence sur l’autre bras pour mettre à l’horizontale&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Bien vérifier que les éléments qui permettent l’articulation des bras ne « coince » nulle part&lt;br /&gt;
&lt;br /&gt;
(rouille, point d’accroche, etc.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&lt;br /&gt;
|Step_Picture_01=Peser_avec_une_balance_romaine_balance_romaine_mesure.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Calculer le poids&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;L’équation de pesée se fonde sur l’égalité des moments des deux bras :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P1 x d1 = P2 x d2&lt;br /&gt;
&lt;br /&gt;
(Poids objet 1 x distance 1 = Poids objet 2 x distance 2)&lt;br /&gt;
&lt;br /&gt;
Rappel : moment d’inertie = la force en newton x la distance à l&#039;axe de rotation en metre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x g x d1 = m2 x g x d2&lt;br /&gt;
&lt;br /&gt;
(masse objet 1 x constante gravitationnelle x distance 1 = masse objet 2 x constante gravitationelle x distance 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m1 x d1 = m2 x d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour une masse de 1kg pour l’objet 1, on a donc m2= d1/d2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans l’exemple sur la photo, on a :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-une distance de 70cm entre le poids de référence de 1kg dans un sac plastique et l’axe,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-et une distance de 2cm entre l’axe et le crochet auquel est suspendu l’objet qu’on veut peser sur l’autre bras.&lt;br /&gt;
&lt;br /&gt;
donc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m2 = 70 / 2 = 35kg&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Peser_avec_une_balance_romaine_balance_romaine_70.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_mesure.png&amp;diff=151463</id>
		<title>Fichier:Peser avec une balance romaine balance romaine mesure.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_mesure.png&amp;diff=151463"/>
		<updated>2025-11-01T19:23:20Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_balance_romaine_mesure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_balance_romaine_mesure&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_sac.png&amp;diff=151462</id>
		<title>Fichier:Peser avec une balance romaine balance romaine sac.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_sac.png&amp;diff=151462"/>
		<updated>2025-11-01T19:19:01Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_balance_romaine_sac&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_balance_romaine_sac&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;diff=151461</id>
		<title>Fichier:Peser avec une balance romaine balance romaine.jpg</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine.jpg&amp;diff=151461"/>
		<updated>2025-11-01T19:15:46Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_balance_romaine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_balance_romaine&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&amp;diff=151460</id>
		<title>Fichier:Peser avec une balance romaine balance romaine axe fluide.jpg</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_axe_fluide.jpg&amp;diff=151460"/>
		<updated>2025-11-01T19:15:45Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_balance_romaine_axe_fluide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_balance_romaine_axe_fluide&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_mesure.jpg&amp;diff=151459</id>
		<title>Fichier:Peser avec une balance romaine balance romaine mesure.jpg</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_mesure.jpg&amp;diff=151459"/>
		<updated>2025-11-01T19:15:44Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_balance_romaine_mesure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_balance_romaine_mesure&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_70.png&amp;diff=151458</id>
		<title>Fichier:Peser avec une balance romaine balance romaine 70.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_70.png&amp;diff=151458"/>
		<updated>2025-11-01T19:15:44Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_balance_romaine_70&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_balance_romaine_70&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_sac_plastique.png&amp;diff=151457</id>
		<title>Fichier:Peser avec une balance romaine balance romaine sac plastique.png</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_balance_romaine_sac_plastique.png&amp;diff=151457"/>
		<updated>2025-11-01T19:15:43Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_balance_romaine_sac_plastique&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_balance_romaine_sac_plastique&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_tuto_balance_romaine.odt&amp;diff=151456</id>
		<title>Fichier:Peser avec une balance romaine tuto balance romaine.odt</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Fichier:Peser_avec_une_balance_romaine_tuto_balance_romaine.odt&amp;diff=151456"/>
		<updated>2025-11-01T19:15:42Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Peser_avec_une_balance_romaine_tuto_balance_romaine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Peser_avec_une_balance_romaine_tuto_balance_romaine&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=CommentStreams:78d811ee3211aa5321a05d3f96e88a3b&amp;diff=134402</id>
		<title>CommentStreams:78d811ee3211aa5321a05d3f96e88a3b</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=CommentStreams:78d811ee3211aa5321a05d3f96e88a3b&amp;diff=134402"/>
		<updated>2024-12-29T18:22:28Z</updated>

		<summary type="html">&lt;p&gt;Bababa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;vu ce tuto aujourdhui. &lt;br /&gt;
sympa, dommage que ce ne soit pas un tuto reproductible, ca fait un peu vitrine commerciale pour solarfire.fr&lt;br /&gt;
mais intéressé s&#039;il y a des idées open source reproductibles de hbridge avec électronisation de comparateur de signaux en entrée qui arrete les moteurs quand les signaux sont égaux{{DISPLAYTITLE:&lt;br /&gt;
hbridge or not hbridge&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
	<entry>
		<id>https://lowtechlab.dokit.app/index.php?title=Couper_du_bois&amp;diff=134390</id>
		<title>Couper du bois</title>
		<link rel="alternate" type="text/html" href="https://lowtechlab.dokit.app/index.php?title=Couper_du_bois&amp;diff=134390"/>
		<updated>2024-12-26T15:26:16Z</updated>

		<summary type="html">&lt;p&gt;Bababa : Page créée avec « {{Tuto Details |Licences=Attribution (CC BY) |Description=&amp;lt;translate&amp;gt;Couper du bois&amp;lt;/translate&amp;gt; |Area=Energy |Type=Research |Difficulty=Easy |Duration=6 |Duration-type=hou... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Couper du bois&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Energy&lt;br /&gt;
|Type=Research&lt;br /&gt;
|Difficulty=Easy&lt;br /&gt;
|Duration=6&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=100&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=énergie, bois-énergie&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce tutoriel sur le bois clot une série sur l&#039;énergie dans lesquels vous trouverez des éléments qui accréditent des hypothèses plus ou moins fondamentales relatives aux énergies renouvelables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;bois sur pied&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;tronçonneuse, véhicule, fendeuse&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Couper du bois&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;4 jours passés à couper du bois sur pied 2h par jour incluant déplacement à moins d&#039;un kilometre&lt;br /&gt;
&lt;br /&gt;
8 jours passés à fendre du bois avec une fendeuse manuelle (masse+coin) 30 min par jour&lt;br /&gt;
&lt;br /&gt;
1,7 stère récupérée&lt;br /&gt;
&lt;br /&gt;
2L d&#039;essence utilisée&lt;br /&gt;
&lt;br /&gt;
1L d&#039;huile chaine utilisée&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Densité foncier argilo-calcaire laissée en friche avec des chênes :&lt;br /&gt;
&lt;br /&gt;
20 arbres de 8m de haut de 80cm de circonférence sur une surface de 20mx20m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vidéo de matériel lowtech pour utiliser du chauffage bois/vapeur pour un véhicule et une tronçonneuse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Couper_du_bois_Tronconneuse_voiture_a_vapeur_lowtech.mp4&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Bababa</name></author>
	</entry>
</feed>