OBSERVATOIRE et Autonomie: récupération d’eau de pluie

dans le cadre de mon projet d’observatoire privé fixe, celui ci étant loin de la maison et dans une partie de terrain non alimenté en électricité ni en eau , outre le problème de l’énergie (voir rubrique panneau photovoltaïque) , se pose la question de l’eau pour laquelle la réponse simple est la collecte des eaux de pluies .

pour la collecte des eaux pluviales, outre l’installation de chéneaux , il faudra prévoir une solution de stockage.

la solution la plus simple et économique pour le stockage est la cuves désignée sous l’anglicisme IBC soit Intermediate Bulk Container qui se traduit en français par GRV = Grand Récipient pour Vrac.

on trouve ce type de réservoir neuf en version 1000 litres pour un prix moyen de 180 a 200 euros ( tarifs 2022) et d’occasion pour environ 50 euros. ils existent posées sur palettes bois ou palettes plastique. pour une question de durabilité, préférer la version palette plastique.

afin d’éviter la formation de vase et d’algues dans l’eau , ici aussi si possible acheter une cuve noire ou sinon la recouvrir d’une bâche prévue a cet effet ( moins de 30 euros en achat en ligne début 2021).

pour les chéneaux de collecte , la aussi on trouve sur internet des dispositif type INEFA de petite section adaptée aux petites toitures des abris de jardin .

autre point a prendre en compte, prévoir un trop plein , ci dessous solution a partir d’un tube coudé prévu a cet effet et raccordé a un tuyau enterré:

panneaux solaires et Autonomie Énergétique

les panneaux solaires sont une alternative maintenant devenue classique pour l’alimentation d’un observatoire en mode autonome.

SCHÉMA BASIQUE D’UN DISPOSITIF PHOTOVOLTAÏQUE:

les éléments constitutif d’une installation photovoltaïque standard sont:

  • les panneaux photovoltaïques qui produisent le courant continu
  • le contrôleur qui adapte et régule la tension de sortie pour la charge des batteries .
  • les batteries qui stockent le courant
  • l’onduleur , qui produit du courant alternatif 230V a partir du courant continu.

pour les panneaux photovoltaïques, il existe 2 grandes catégories sur le marché: les panneaux polycristallins et les panneau monocristallins. les panneaux monocristallins ont un meilleur rendement ( 1 a 5% de plus) mais sont plus cher . concernant la durée de vie , pas de différence significative . le choix se fait donc surtout a partir de la dimension des panneaux vis a vis de la surface a couvrir disponible et des besoins en puissance .

concernant le contrôleur , 2 grandes catégories sur le marché , les contrôleurs PWM ( Pulse Width Modulation) et les contrôleurs MPPT (Maximum Power Point Tracking). comme pour les panneau et les batteries , les deuxièmes sont plus cher mais plus efficaces ( meilleur rendement), ici l’écart de rendement peut aller jusqu’à 30 % suivant les modèles . c’est le point a travailler le plus surtout en fonction des options disponibles sur le controleur et des possibilités éventuelles d’évolution de l’installation. sont a prendre en compte aussi les aspect communication avec le monde extérieur ( affichage, port Ethernet, wifi , etc ..) . les deux leader du marcher sont EPEVER et VICTRON . tous les deux proposent des solutions PWM ou MPPT .

pour les batteries , il est possible d’utiliser au choix des batterie auto classiques plomb/acide, des batteries auto plomb/acide a décharge lente , des batteries 12V au gel ou des batterie lithium-ion . comme les panneaux , le choix se fera en prenant en considération les aspect budget et durée de vie souhaitée. a noter qu’en général on évite les batteries au plomb acide classiques peu adaptée a de la décharge constante et longue mais plutôt au démarrage de puissance ( démarreur de voiture) . on met en général au moins des batteries plomb/acide a décharge lente plus adaptées a fournir une tension de façon continue sur un temps long . dernier point a noter , pour optimiser la durée de vie des batteries , on considère une décharge de 20% maximum . la dimension et le nombre de batteries nécessaires a la consommation recherchée doit donc être calculé en fonction de ce paramètre . quand on ne sait pas comment débuter au niveau de l’installation , on installe une seule batterie , on prévoit la place pour une ou deux de plus et on dimensionne le contrôleur pour pouvoir rajouter une ou deux batteries ensuite => largement surdimensionner le contrôleur a l’achat ( qui peut le plus , peut le moins) .

concernant l’Onduleur, c’est un appareil qui a un rendement plus ou moins efficace et génère donc des pertes de puissances par effet joules . il n’est donc pas indispensable si les appareils en aval du dispositif fonctionnent en courant continu . par exemple pour alimenter un PC portable qui fonctionne basiquement avec du 19V CC , il est possible de se passer d’onduleur et d’utiliser un adaptateur 12V/19V CC a la place du transfo secteur 230V/19V du PC. pareil pour un écran d’ordinateur . il est en effet asses facile de comprendre que le rendement de la chaine globale d’alimentation directe en Courant Continu sera bien meilleurs qu’une chaine de transformation 12V CC -> 230V AC -> 19V CC d’où des économies d’énergie ou de la capacité et de la durabilité a la clé.

DIMENSIONNEMENT SOMMAIRE DU PARC SOLAIRE

le dimensionnement du parc solaire (nombre de panneaux et caractéristiques des panneaux) se fait de façon sommaire a partir du calcul prévisionnel de votre consommation avec les équipements connectés au systeme photovoltaïque.

etape 1: listez la consommation en Watts de tous les appareils prévus d’etre connectés sur le parc solaire. si vous n’avez pas la consommation en W de chaque appareil , vous pouvez la calculer en multipliant la tension par l’ampérage.

etape 2: multiplier la consommation en Watts de chaque appareils par le temps d’utilisation prévu , vous obtenez une consommation individuelle en Watt-heure (Wh)

etape 3: Faites la somme de la consommation en Watt-heure pour tous vos appareils, et vous obtenez votre besoin en électricité

etape 4: Divisez votre besoin énergétique en Watt-heure par le temps pendant lequel le parc solaire produit de l’électricité pour obtenir la puissance en Watt dont vous avez besoin. En France, on estime qu’un panneau solaire produit en moyenne l’équivalent de 3 heures à 100%. Cependant, ce temps varie en fonction de votre zone géographique, des conditions météorologiques et du positionnement des panneaux solaires. prévoir une marge de sécurité d’au moins 15%..

CARACTERISTIQUES DES PANNEAUX SOLAIRES :

elles sont données dans la fiche technique des panneaux , et en général a l’arriere des panneaux sur une étiquette dédiée du type de celle ci dessous:

les 2 données importantes qui serviront pour dimensionner le régulateur et les batteries de stockage ( voir ci dessous) sont: Voc ( Open Circuit Voltage) et Isc (Short Circuit Current).

NOTA : la puissance crete (Wc) soit le Max Power at STC (Pmax) est une donnée qui stipule la puissance maxi délivrée par le panneau en conditions standard (STC = Standard Test Conditions) soit par exemple sur l’étiquette ci dessus , 175 W a une temperature de 25° avec une irradiance de 1000W/m² et un coefficient air-Masse de 1,5 . la puissance crête réelle que vous obtiendrez dépendra bien entendu de l’irradiance locale réelle de l’endroit ou seront utilisés les panneaux solaires ainsi que des conditions meteo, elle sera donc sans doute bien en dessous de celle mentionnée sur le panneau en conditions STC. Influent donc sur le résultat, l’ensoleillement de votre localisation, l’angle des panneaux par rapport a la position du soleil dans le ciel, la temperature , l’humidité, la transparence de l’air et les conditions nuageuses . cette puissance crête va donc varier en fonction de la période de l’année , du climat du moment , et du moment de la journée… attendez vous a un résultat réel au moins 20% en dessous du théorique et encore , les meilleures journées d’été a midi avec le soleil au zénith et le panneau bien perpendiculaire au soleil.

DIMENSIONNEMENT DU REGULATEUR DE CHARGE / PARC SOLAIRE

le dimensionnement du régulateur de charge se fait en fonction de la configuration de votre parc solaire ( nombre de panneaux, caractéristiques, et type de branchement) et ceci pour la production de pointe ( courant produit au point haut). Les données à prendre en compte sont : la tension de circuit (Voc) et le courant de court-circuit (Isc), ces données sont en général disponibles dans la fiche produit, dans le manuel ou directement sur les panneaux solaires. Ensuite il faudra calculer le Voc et le Isc resultant du type de montage des panneaux ; Serie, parallele ou hybride (mix série et parallèle). suivant le type les Voc et Isc resultant se calculent de la meme façon qu’un montage de resistances electriques en parallele ou en serie . le regulateur choisi devra donc etre dimensionné avec une marge de securité par rapport aux caracteristiques calculées ( au moins 10% de marge)

montage des panneaux en parallèle:

le Voc resultant est le Voc d’un seul panneau , et le Isc resultant est la somme des Isc individuels.

par exemple , avec 6 panneaux de Voc 19V et Isc 6A le Voc resultant est de 19V et le Isc resultant de 6×6=36 Amperes

montage des panneaux en série:

ici , le Voc resultant est la somme des Voc de chaque panneau , et le Isc resultant est l’ Isc d’un seul panneau.

avec les 6 panneaux de l’exemple précédent (Voc 19V et Isc 6A) le Voc resultant est de 6x19V= 114 Volts et le Isc resultant de 6 Amperes

montage Hybride:

dans le cas d’un montage hybride , par exemple le schema ci dessus avec 12 panneaux montés en parallele par groupe de 3 les caractéristiques résultantes seront:

Voc = 19+19+19= 57 Volts et Isc = 6+6+6 + 6 = 24Amperes

DIMENSIONNEMENT DU COUPLE REGULATEUR/BATTERIES

nous avons vu précédemment le dimensionnement du régulateur en fonction du parc solaire ( panneaux) , il faut également prendre en compte l’aspect stockage de l’énergie donc les batteries.

batteries: au niveau des batteries , ce sont les paramètres tension (V) et capacité ( Ah) dont il faut tenir compte . et la aussi , attention a la façon dont sont montées les batteries s’il y en a plusieurs . comme pour les panneaux solaires, ils est possible de monter des batteries de 12V en série ou en parallele . en parallele , la tension résultante reste de 12V mais en serie , les tensions s’additionnent donc si par exemple on met 2 batteries de 12V en série , la tension aux bornes de l’ensemble sera de 24V . il faudra donc veiller a charger ce couple de batteries avec un régulateur acceptant du 24 volt en sortie . les régulateurs actuel sont en général capable d’accepter 12 ou 24V mais si vous avez besoin de plus il faudra un régulateur de plus forte capacité .

courant de charge : Le contrôleur de charge va fonctionner comme un chargeur classique de batterie auto. mais au lieu d’être alimenté par une prise secteur , il est alimenté par des panneaux solaires. comme pour un chargeur de batterie classique, il faut que le courant de charge soit adapté à la batterie. Pour une batterie plomb (électrolyte liquide ou Gel), le courant de charge doit être situé entre 10 et 20% de la capacité en Ah de la batterie. Pour le bien et la longévité de la batterie, un courant de charge situé autour de 10% est préférable.Pour une batterie lithium, le courant de charge doit être situé entre 25 et 50% de la capacité de la batterie. ainsi par exemple , un controleur de 30 Amperes de capacité maximum peut charger idéalement un pack de batteries plomb d’une capacité totale de 300Ah ,soit 3 batteries de 100Ah chacune montées en parallèle .

DIMENSIONNEMENT DES CABLES

coté câbles , il y a également lieu de faire attention a la section de cuivre. en électricité , on considère en général que la capacité maximum d’un câble est de 10A par mm² de section. ensuite entre en compte la longueur du câble qui détermine une résistance correspondante et donc une perte de puissance par effet joules. vous trouverez ci dessous comment dimensionner vos câbles de façon plus optimisée en fonction de la partie de l’installation concernée . n’hésitez pas a prendre une marge de sécurité et surdimensionner vos câble , plus la section est importante moins il y a deperte.

NOTA: la longueur de câble est la longueur Aller + retour , soit pour un panneau et un régulateur a 3m l’un de l’autre , la distance a prendre en compte fait 3m + 3M = 6m

formule de calcul:

pour ceux qui souhaitent faire le calcul voici la formule :

tableau/abaque pour ceux pas a l’aise avec les calculs

EXEMPLE D’INSTALLATION

vue générale des panneaux sur le cabanon de l’observatoire: 4 panneaux de 175w 10A chacun en montage hybride 2+2 pour une sortie crete de 35V sous 20A soit 700Wc.

principe de fixation sur la toiture ( toit en shingle sur planche de coffrage de 2cm). les panneaux sont fixes chacun sur du rail Vslot Alu . chaque rail est fixé via une équerre alu sur une platine Vslot vissée dans la toiture (vis a bois)

jonction des panneaux

le systeme de régulation a l’intérieur : arrivée des panneaux sur interrupteurs a fusibles 25A et départ du régulateur vers les batteries avec interrupteur fusible de 20A sur borne +.

le bloc batteries 100Ah a decharge lente (batterie plomb acide)

Photovoltaïque: alimenter de l’électronique

présentation ici de différentes manières d’alimenter de l’électronique a partir d’un parc photovoltaïque sur batterie 12V.

LE CONVERTISSEUR 12V DC/230V AC

c’est un dispositif qui va transformer du courant continu 12Volts en courant alternatif 230 volts de façon a pouvoir utiliser des appareils électriques ou électroniques fonctionnant habituellement sur le réseau domestique 230V.

il en existe différents modèles a différents prix dépendant de la puissance a installer , ils ressemblent a ceci (modèle 1000W pur sinus) :

il faut privilégier les convertisseur dits “pur sinus” fournissant un courant sinusoïdal identique a celui du réseau EDF. ils sont bien entendus plus chers que les convertisseurs “pseudo sinus” qui eux, avec une électronique simplifiée moins couteuse, fournissent un signal dégradé voir proche d’un signal carré qui peut se traduire par un dysfonctionnement voir une destruction des éléments connectés dessus.

les convertisseurs sont maintenant en general munis aussi de prise USB 5V => vérifier l’ampérage disponible sur ces prises USB surtout si vous envisager d’y brancher un Raspberry PI qui en général nécessite au moins 3 Amperes.

L’ ONDULEUR :

sous la dénomination d’Onduleur se cache plusieurs types de convertisseur . chez les vendeurs de matériels photovoltaïque c’est en fait souvent le nom donné a un convertisseur 12V / 230V ( point précédent) mais de forte puissance ( au dessus de 1000W) , il en existe meme capable de transformer du courant continu en courant triphasé. en informatique , c’est un convertisseur muni d’une batterie de sécurité et d’un switch ultra rapide prenant le relai du secteur en cas de coupure d’alimentation du domicile . bien entendu , sur un dispositif photovoltaïque , pas besoin d’onduleur type informatique puisque l’énergie est déjà fournie par des batteries de stockage et non pas par le secteur, donc pas de risque de coupure du réseau a cause d’une panne EDF …

LE CONVERTISSEUR 12V DC / 19V DC :

pour connecter un PC portable sur une installation photovoltaïque 12V , il n’est pas nécessaire de passer par un onduleur , en effet les PC portable fonctionnent en général sur courant continu fourni par un transformateur (livré avec le portable) qui converti le 230 V secteur en une tension Continue adaptée au PC.

la majorité des PC portables fonctionnent en 19,5 Volts et on trouve sur le net des convertisseurs 12V / 19V tels que celui ci qui feront le travail sans utiliser le transfo secteur du PC portable. il faudra juste trouver le connecteur adéquat pour relier le convertisseur au PC: ce type de convertisseur existe dans une gamme de courant tres variable (3A-5A-8A-10A- etc ..)

LE CONVERTISSEUR 12V DC / 5V DC :

un bon nombre de composant électronique nécessitent du 5V pour fonctionner , heureusement il existe des convertisseurs 12V / 5V permettant de répondre au besoin. il en existe pléthore sur les site de ventes en ligne mais l’un des plus courant et moins cher du marché , est le HW-468 que l’on trouve pour environ 2€ sur les sites de vente en ligne (amazone, aliexpress, bangood) :

il a la particularité d’accepter en entrée une tension courant continu entre 9 et 35V et de donner en sortie du 5V et ceci jusqu’à 5 Ampères .

LE CONVERTISSEUR A TENSION DE SORTIE RÉGLABLE:

l’autre composant courant en électronique est le HW-411 aussi désigné sous la référence LM2596:

il accepte une tension d’entrée CC entre 3,2V et 40V et a la particularité de posséder un potentiomètre réglable( bloc bleu sur la photo) permettant de régler la tension de sortie dans les limites de la tension d’entrée => si 12V en entrée on peut régler la sortie a volonté entre 0v et 12V … inconvénient par rapport au HW-468, il est limité a 3 Ampères en sortie .

CHARGE DE BATTERIES Li-Ion ou Li-Po:

un petit circuit bien utile pour faire vos propres chargeurs de batteries , ou votre power bank perso: le J5019.

ci dessous le diagramme de branchement. la tension d’entrée peut être comprise entre 4 et 8V sur les broches Input et typiquement du 5 Volts via le connecteur Micro USB. la sortie OUTPUT est réglable entre 4,5 et 24V via le potentiomètre réglable (utiliser un multimètre pour la calibration de la tension de sortie)

ESP32cam: systeme PAN TILT

voyons ici comment implémenter un systeme PAN TILT a base de servo et d’un petit kit support. l’ensemble commandé via une page internet ( PC ou smartphone).

ce qui donnera le montage suivant:

et le résultat attendu :

pour réaliser ce montage , il est nécessaire de commander le module suivant :

on peut le trouver chez Bangood , Aliexpress ou Amazone . la version utilisée a été commandée chez Amazone pour un peu moins de 17 euros (aout 2021) avec les 2 servos G90 inclus . ce support peut également être utilisé pour des PIcam .

PRINCIPE DE FONCTIONNEMENT

l’ ESP32cam va héberger non seulement le programme Arduino de commande de la partie servo mais aussi la page HTML qui permettra l’affichage et la commande de mouvement . l’ESP32cam agira donc en serveur . la visualisation via un navigateur pourra donc se faire aussi bien sur PC que sur smartphone ou sur raspberry PI.

BIBLIOTHEQUE ARDUINO

pour le fonctionnement du programme arduino , il faudra la bibliotheque ESP32servo. pour l’installer , ouvrir le menu Outils >Gestionnaire de bibliotheque> puis dans la fenetre de recherche , tapper ESP32Servo puis installer la bibliothèque .

LE PROGRAMME ARDUINO:

ci dessous le programme arduino au format txt a copier/coller dans l’IDE arduino . pour plus d’info sur la configuration voir la rubrique dédiée a l’ESP32cam ICI.

IDENTIFICATION RÉSEAU:

pour utiliser le réseau domestique de votre box , il faudra fournir au programme votre identifiant et mot de passe réseau . cela se fait dans les lignes ci dessous:

CABLAGE

ci dessous le cablage des servos sur l’ ESP32cam.

CONNEXION

pour la connexion, ne reste plus qu’a ouvrir un navigateur web et saisir l’adresse IP de l’ESP32cam sur votre réseau ( faire une recherche via votre profil administrateur box) et une page devrait s’ouvrir avec la vidéo live view en partie haute et en dessous les touches de contrôle de mouvements PAN/TILT .

serveur WEB APACHE sur RPI

créer un serveur WEB APACHE avec votre raspberry PI c’est possible , nous allons voir ici comment faire tout cela.

MISE A JOUR DU PI:

comme toujours avant toute manip d’installation , faire une mise a jour de votre systeme:

sudo apt update
sudo apt upgrade 

INSTALLER APACHE :

nous allons commencer par installer la couche logicielle du serveur WEB , à savoir APACHE2 . rien de plus facile , taper:

sudo apt install apache2

TESTER L’INSTALLATION:

une fois l’installation faite , pour vérifier que tout fonctionne, essayer une connexion sur votre RPI via un PC lui aussi connecté sur votre réseau domestique . tout d’abord , récupérer l’adresse IP de votre RPI. pour cela positionner le pointeur de votre souris sur l’icône de connexion réseau dans la barre de menu du RPI ( en haut ou en bas a droite suivant le type d’affichage choisis).

vous devriez voir apparaitre quelque chose du genre:

eth0: Configured 193.168.1.17

c’est l’adresse IP de votre RPI sur votre reseau domestique.

ouvrez votre navigateur WEB et taper dans la barre de navigation l’adresse IP trouvée avec devant “http://” :

http://193.168.1.17

si tout est OK vous devriez voir apparaitre une page de ce type signe que tout fonctionne:

APACHE est donc installé et il utilise le répertoire /var/www/html comme racine pour le site.

l’installation a déposé dans le repertoire /var/www/html un fichier Index.html qui est la page d’exemple qui s’affiche .

quand on contact l’adresse IP du RPI , on se connecte sur le port 80 du RPI (commande http://…) et apache va cherche dans le repertoire /var/www/html/.

par exemple , si vous tappez : http:// 193.168.1.17/monsite apache cherchera automatiquement le fichier “monsite” dans le repertoire /var/www/html/ et si on ne rajoute pas de nom de fichier et juste la commande: http:// 193.168.1.17/ , apache va chercher le fichier index.html comme tout appel classique a un site internet .

MODIFIER LES DROITS D’ACCÈS:

nous allons donner des droits d’accès au dossier d’apache , ce qui permettra d’administrer les sites installés ( modification et création de fichiers => voir plus bas). Pour cela, lancez les commandes suivantes :

sudo chown -R pi:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/

INSTALLER PHP:

pour pouvoir faire fonctionner votre serveur et par exemple installer un site internet , il faudra pour interpréter des commandes PHP. pour cela nous allons devoir installer l’interpréteur PHP qui exécutera ces commandes PHP.

pour installer PHP sur votre RPI, taper:

sudo apt install php php-mbstring

TESTER PHP:

avant de continuer plus loin, comme pour apache, nous allons tester le fonctionnement de PHP. pour cela avec l’explorateur du RPI ou en ligne de commande , aller supprimer le fichier Index.html qui est dans le répertoire /var/www/html/ puis créer un fichier index.php avec un éditeur de texte et mettez y la commande simple suivante:

echo "<?php phpinfo(); ?>" > /var/www/html/index.php

NOTA : les modif précédentes ne peuvent être faites qu’a condition d’avoir modifié les droits d’accès.

ouvrir le navigateur web sur sotre PC connecté sur le reseau et connectez vous a l’adresse IP du RPI , vous devriez voir apparaitre ceci :

INSTALLER MySQL et mariadb-server

nous allons maintenant installer le moteur/gestionnaire de base de données MySQL, et mariadb-server, pour cela taper:

NOTA: mariadb-server remplace mysql-server

sudo apt install mariadb-server php-mysql

TEST DE MySQL:

le test se fait en ligne de commande avec : sudo mysql –user=root

cette commande démarre mariadb qui va nous permetre queluqes config de base, pour cela taper les commandes suivantes derrière le prompt MariaDB [(none)]>:

DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

dans la deuxieme ligne de commande , remplacer ‘password’ par un mot de passe de votre choix. ce mot de passe servira avec PHPmyAdmin

INSTALLER PHPMyAdmin:

PHPMyadmin est une interface plus simple qu’une console pour gerer une base de donnée MySQL. pour l’installer :

sudo apt install phpmyadmin

pendant l’installation, des fenêtres de configuration de paquet s’ouvre , réponses aux différentes questions:

serveur web a reconfigurer: apache2

config de phpmyadmin: repondre non

puis activer l’extension de mysqli avec :

sudo phpenmod mysqli
sudo /etc/init.d/apache2 restart

TEST de PHPmyadmin:

avec le navigateur internet de votre PC , connectez vous avec la commande:

http://193.168.1.17 /phpmyadmin

si vous avez un message d’erreur c’est parce que probablement le répertoire d’installation de phpmyadmin n’est pas dans var/www/html , en général , Phpmyadmin est installé dans usr/share/ , alors taper la commande ci dessous qui va créer un lien entre les 2 répertoires :

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

normalement tout devrait rentrer dans l’ordre et avec l’adresse plus haut on obtiens le

résultat suivant:

CONFIGURATION/CHANGEMENT DU MOT DE PASSE PHPmyAdmin:

en ligne de commande Bash, aller dans le repertoire var/www/html/phpmyadmin et copier/coller le fichier “config.sample.inc.php” en le renommant avec la commande shell ci dessous:

cp config.sample.inc.php config.inc.php

ensuite ouvrir le fichier config.inc.php avec l’editeur nano :

sudo nano config.inc.php

une fois le fichier ouvert en mode éditeur , au debut on trouve un ensemble de ligne sous le commentaire /* serveur parameter */ qui commencent toutes par $cfg[Servers’][$i][‘wxyz’]

aller sous la ligne : $cfg[‘Servers’][$i][‘host’] = ‘localhost’; et ajouter les 2 lignes suivantes ( a la place de password reprendre le mot de passe de la config mariaDB.:

$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'password';

enregistrer la modification (ctrl + O) et quitter l’éditeur (CTRL + X) , nous allons maintenant tester l’ouverture de PHPmyadmin. relancer la commande de test :

http://193.168.1.17 /phpmyadmin

puis saisissez l’identifiant root et votre mot de passe si tout est ok vous devriez avoir un écran de ce type :

RENDRE VOTRE RPI accessible depuis le WEB

le serveur Web est prêt mais il n’est pas encore accessible via le web , uniquement en local. pour cela il va falloir que la box redirige les requêtes entrantes vers le RPI qui héberge le serveur. Pour mettre ces redirections en place, nous allons devoir accéder a l’interface de configuration de la Box.

pour accéder a l’interface de config de votre box voir les documents relatif fournis par votre fournisseur d’accès . une fois dans l’interface via vos identifiants et mot de passe d’administration, il vous faudra trouver l’option qui permet de rediriger les connexions entrante . sur une box orange, il faut activer l’option “réseau” dans les préférences et créer/activer les service et port correspondants .

.une fois fait , votre RPI est accessible depuis l’extérieur via l’adresse IP de votre box .

DYN DNS:

votre fournisseur d’acces vous affecte une adresse dynamique , pour résoudre ce problème , il faut utiliser les service d’un fournisseur de nom de “domaine” reliant le nom de domaine a l’adresse dynamique . il en existe plusieurs , un des plus connus est le suivant:

http://noip.com

vous pouvez créer un compte et un nom de domaine fixe en quelques clic et faire le lien de ce nom de domaine fixe avec votre paramétrage DYN/DNS chez votre fournisseur d’accès .

pour cela , vous vous connectez a votre compte administrateur de box et saisissez les données de connexion a votre compte noip et le tour est joué (voir copie écran ci dessous dans le cas de la livebox orange) . il ne reste plus qu’a vous connecter au nom de domaine pour avoir accès a votre serveur web RPI quelque soit votre adresse IP dynamique …

ne reste plus qu’a créer votre site internet et donc les pages hébergées sur le serveur du RPI dans le repertoire var/www/html . ce sera l’objet d’un ou plusieurs autres tutos …

NOTA: si vous vous connectez de façon distante avec un http://domaine.ddns.net/phpmyadmin , vous pouvez aller configurer votre base de donnée de façon distante …

phpMyAdmin-Créer une base de donnée

vous avez installé APACHE, PHP ,MySQL et PhpMyAdmin, voyons comment créer une base de donnée et une table avec PhpMyAdmin.

connectez vous a votre adresse d’administration via votre IP , la connexion se fait avec un lien du type :

http://192.168.1.xx/phpmyadmin

après connexion au serveur , s’affiche l’écran de login, taper votre mot de passe puis “Exécuter”:

s’ouvre alors l’écran général de phpMyAdmin:

faisons un petit zoom dans cet ecran :

a gauche apparait la liste des bases de données existantes , pour pouvoir en créer une nouvelle , il suffit de cliquer dans la case “base de données” dans la bande de menu en haut (case entourée en rouge ci dessus).

dans l’ecran suivant ,en dessous de la ligne “créer une base de donnée” , donner un nom a votre BDD (ici MaBDDtest”), puis cliquer sur créer:

la base et créée , un nouvel ecran s’affiche , on voit a gauche la nouvelle BDD , reste a créer la premiere table de la base de données.

donner un nom a cette premiere table ( ici adherents par exemple pour créer un fichier d’adhérents a une asso) et spécifier le nombre de colonnes ( qui correspond au nombre de données a enregristrer dans la table), ici 7 . puis cliquez a droite de l’ecran sur executer

l’ecran suivant va vous permetre de donner un nom au differents champs d’enregistrement , de déclarer un type de donnée, puis le nombre de caracteres reservés a l’enregistrement concerné.

en bas de page a droite , le bouton ” ” vous permet de sauvegarder la saisie ;

voila votre base de donnée avec sa première table est créée , l’écran récapitulatif possède des options a droite permettant de modifier a tout moment la définition de chaque enregistrement. vous pouvez donc revenir ultérieurement sur votre table si besoin de la faire évoluer .

CREER UNE PREMIERE LIGNE DANS LE FICHIER:

pour pouvoir tester le fonctionnement de la base de donnée , il peut être utile de créer un premier enregistrement de données , pour cela aller dans l’onglet SQL et saisissez une ligne d’exemple sous ce format:

INSERT INTO MaBDDtest.adherents (NOM, PRENOM, RUE, CODEPOSTAL, VILLE, PORTABLE, MAIL) VALUES ('LEPONGE', 'Bob', '1 rue du lavabo', '75', 'PARIS', '0670564357', 'bobleponge@gmail.com');

puis faire exécuter en bas a droite , ne reste plus qu’a aller dans affichage pour constater l’enregistrement:

MESSAGE D’ERREUR LA PREMIÈRE FOIS:

il se peut que vous ayez un message d’erreur sur fonnd rouge/rose comme celui ci dessous a la première tentative ( c’était mon cas).

Warning in ./libraries/sql.lib.php#613
count(): Parameter must be an array or an object that implements Countable

une recherche google sur ce message d’erreur permet de résoudre le problème. voici la solution trouvée qui a réglé mon soucis:

  • aller dans le fichier /usr/share/phpmyadmin/libraries/sql.lib.php à l’aide de cette commande : nano /usr/share/phpmyadmin/libraries/sql.lib.php
  • Recherche (count($analyzed_sql_results[‘select_expr’] == 1) à l’aide des touches CTRL + W
  • Remplace le par ((count($analyzed_sql_results[‘select_expr’]) == 1)
  • Puis sauvegarder avec CTRL + X et confirmer avec Oui.
  • redémarrer le serveur web avec la commande : service apache2 restart

tout devrait rentrer dans l’ordre .

PHP et MYSQL pour les Nuls

pas de serveurs web et bases de données MySQL sans un minimum de connaissances des bases du PHP.

nous allons voir ici quelques manipulations “stratégiques” en PHP sur les bases de données. l’objectif ici n’est pas de faire un cours de PHP , mais de proposer des modules de programme “tout cuits” utilisables dans vos applications . pour une meilleure compréhension des instruction , faire une recherche type google.

pour tester les petits bouts de programmes suivants , il vous suffit de les copier/coller dans votre editeur raspberry et de les enregistrer dans le répertoire var/www/html puis de les lancer dans votre navigateur via une ligne du type :http://192.168.x.y/nomfichier.php ou 192.168.x.y est l’adresse ip locale de votre serveur RPI et nomfichier.php le nom de votre fichier enregistré dans ce repertoire

création d’ une base de donnée:

le petit bout de php ci dessous se connecte au serveur local avec le nom d’utilisateur et le mot de pass créés l’ors de l’installation de Mysql. et crée une base de donnée apellée demo .il integre des message de diagnostic . les commandes strategiques sont celles en rouge.

<?php
$link = mysqli_connect("localhost", "root", "password");
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
} 
$sql = "CREATE DATABASE demo";
if(mysqli_query($link, $sql)){
    echo "Database created successfully";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
mysqli_close($link);
?>

création d’ une table dans une base de donnée:

ci dessous , on se connecte a la base de donnée démo créée précédemment, et on crée une table “persons” qui contient 4 données: numero d’enregistrement , nom, prénom, adresse mail. c’est 4 données ont des noms de “variables” respectif : id, first_name, last_name et email. la variable id est en auto-incrémentation (la valeur associéé s’incrémente automatiquement a chaque nouvel enregistrement. c’est en plus la clé primaire de tri (PRIMARY KEY). pour les 3 autres variables, VARCHAR(x) précise le type de variable et la place (x) reservée a la variable. NOT NULL précise que l’enregistrement ne paut pas etre vide.

<?php
$link = mysqli_connect("localhost", "root", "password", "demo"); 
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "CREATE TABLE persons(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(30) NOT NULL,
    last_name VARCHAR(30) NOT NULL,
    email VARCHAR(70) NOT NULL UNIQUE
)";
if(mysqli_query($link, $sql)){
    echo "Table created successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
mysqli_close($link);
?>

REMARQUE: creation d’une base et de sa table sont plus facile via PhpMyAdmin. mais les 2 exemples fournis permettent eventuellement de créer des scripts dynamiques .

insertion d’un enregistrement :

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')";
if(mysqli_query($link, $sql)){
    echo "Records inserted successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
mysqli_close($link);
?>

affichage du contenu de la table d’une BDD :

<?php
$link = mysqli_connect("localhost", "root", "password", "demo");
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "SELECT * FROM persons";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
         mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

voici le résultat de l’affichage dans le navigateur dans le cas d’un exemple perso de base de donnée d’une station météo:

ENVOI DE DONNEES A PARTIR D’UN FORMULAIRE:

nous avons vu plus haut comment insérer des données avec un script PHP. nous allons voir maintenant comment insérer des données a partir d’un formulaire dans une page HTML.

1-creation du formulaire:

le fichier fourni au format txt devra etre enregistré au format html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>
</head>
<body>
<form action="insert.php" method="post">
    <p>
        <label for="firstName">First Name:</label>
        <input type="text" name="first_name" id="firstName">
    </p>
    <p>
        <label for="lastName">Last Name:</label>
        <input type="text" name="last_name" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Email Address:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Submit">
</form>
</body>
</html>

2-récuperation des données et insertion:

quand l’ utilisateur clique sur le bouton d’envoi du formulaire , le fichier formulaire HTML envoie les données au fichier « insert.php ». Le fichier ‘insert.php’ se connecte au serveur de base de données MySQL, récupère les champs des formulaires à l’aide des variables PHP $_REQUEST et exécute la requête d’insertion pour ajouter les enregistrements.

le fichier insert.txt devra etre chargé avec l’extension.php dans le repertoire var/www/html du serveur raspberry

<?php
$link = mysqli_connect("localhost", "root", "password", "demo"); 
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
} 
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']); 
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
} 
mysqli_close($link);
?>

pour faire fonctionner l’ensemble , une fois les 2 pages dans le repertoire html , il suffit d’appeler la page html avec le navigateur via une ligne de commande du type ci dessous:

http://192.168.x.y/formulaire

voici le résultat du formulaire test de mes essais sur une base de donnée météo ( exemple plus haut):

Un Site WEB Basique

une fois le serveur APACHE bâti , reste a faire son site web. voici un kit version light pour un premier site basique a structure légère , peu consommateur de ressources et dédié aux débutants n’ayant aucune connaissance en HTML ou PHP.

NOTA: pour des site beaucoup plus lourds et plus pro , je recommande l’installation et l’utilisation de WordPress comme c’est le cas pour ce site (hébergé chez un fournisseur dédié et non pas sur un serveur local RPI) .

FICHIERS :

pour batir un site a structure basique, vous trouverez ci dessous un dossier compressé “sitesimple.rar” contenant les fichier de base pour réaliser votre premier site sur votre serveur apache.

le dossier contient egalement des images et fichiers d’aide qui rappellent les consignes ci dessous.

INSTALLATION DU DOSSIER:

extraire les fichiers de l’archive RAR , vous obtenez l’ensemble des fichiers ci dessous:

copier l’ensemble de ces fichiers et dossiers dans la racine du site de votre serveur sur le RPI ( en general le dossier “var/www/html“.

si vous avez ouvert l’accès extérieur a votre serveur sur votre box ( detail de la manip en bas de page ICI) , et que vous vous connectez via un acces exterieur , la page Index doit s’ouvrir et vous afficher le site basique qui ressemble a cela:

PRINCIPE DE FONCTIONNEMENT:

cette version très basique fonctionne sur le principe des frames (fenetres). l’affichage est divisé en 3 fenetres (Frame) :

  • bandeau gris foncé horizontal du Haut avec le tire de votre site (ici “Ma page du Haut” )
  • le bandeau gris clair de gauche avec le Menu . 3 options de bases en standard , page “Accueil” , acces page 1 , acces page 2
  • la fenetre centrale qui affiche la page courante ( page d’accueil a l’ouverture)

le fait de cliquer sur une des options du menu de gauche fait changer/afficher la page concernée dans la fenetre centrale . pour tester sans passer par une navigation exterieure , il vous suffit d’aller dans le repertoir d’installation du package et de double cliquer sur le ficher “Index.html” . le site s’ouvre et si vous cliquez dans les différentes options de gauche vous verrez la page centrale changer. la page accueil affiche un tutos basiques qui explique comment changer tout ça. reste maintenant a modifier les fichiers pour batir votre site perso sur cette base. voyons comment faire.

MODIFICATIONS / ADAPTATION :

il ne vous reste plus qu’a modifier les contenu des différents fichiers pour adapter cette structure basique a vos souhaits :

modification du titre :

ouvrir le fichier “framehaut.html” avec l’editeur HTML ( libre office par exemple) et changer le titre “Ma page du haut” avec le titre que vous souhaitez . changer la police, la taille des caracteres et les couleurs en fonction de vos préférences. n’oubliez pas de sauvegarder le resultat avec l’extension html.

modification du menu de gauche:

ouvrez le fichier “framemenu.html” avec un éditeur de texte genre bloc note , et dans les 2 lignes ci dessous qui affichent les tire de menu et exécutent les redirection de pages, remplacez les testes en ROUGE par le texte de menu que vous souhaitez.

<P><A HREF="page1/page1.html" TARGET="pagesite"><SPAN STYLE="font-variant: normal"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><SPAN STYLE="font-style: normal"><B>Page1</B></SPAN></FONT></FONT></FONT></SPAN></A></P>
<P><A HREF="page2/page2.html" TARGET="pagesite"><SPAN STYLE="font-variant: normal"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><SPAN STYLE="font-style: normal"><B>Page2</B></SPAN></FONT></FONT></FONT></SPAN></A></P>

vous pouvez ensuite changer police de caractere, couleur et taille avec l’editeur de texte plus evolué ( libreoffice par exemple)

création/modification des différentes pages:

les différentes pages peuvent ensuite etre modifiées directement avec un editeur de texte evolué pour saisir le texte a afficher , les polices de caractere , les couleurs etc..

les 3 pages a modifier sont :

  • mapageaccueil.html” dans le repertoire racine
  • page1.html” dans le repertoire page1
  • page2.html” dans le repertoire page2

penser a chaque fois a bien sauvegarder vos pages au format HTML.

ajout d’une page pages:

pour ajouter une page, il y a 2 opérations a faire:

  • ajouter un repertoire supplémentaire page3 – page4-….pagex , par copy/paste d’un des 2 repertoires existant et en changeant le numéro du nom du repertoire “pagex” et du fichier “pagex.html” a l’intérieur et en modifiant le contenu du fichier “pagex.html” avec un editeur de texte
  • ajouter une ligne de menu dans “framemenu.html” pour renvoyer a la page supplémentaire. pour cela ouvrir “framemenu.html” dans un editeur de texte basique genre bloc note et faire un copy paste d’une des deux ligne appelant les pages 1 ou 2:
  • modifier les nom des liens de redirection et sauvegarder le fichier au format html :

on peut recommencer l’opération autant de fois que de pages a rajouter .

NOTA: les modifications du site peuvent etre effectuées sur un PC avant d’etre installées sur le Raspberry PI.

voila pour les consignes basiques pour un site Web basique sur serveur APACHE raspberry PI.

Une galerie photo basique

voyons comment implémenter une galerie photo basique avec le site web basique .

a partir du site simple décrit ici , nous allons modifier le répertoire “page1” en lui ajoutant 8 photos comme ci dessous . attention pour la dénomination des fichiers photos choisir une codification simple. ici en l’occurrence , les miniatures seront affichées par paquet de 4 sur plusieurs lignes ( 2 lignes pour cet exemple) donc le nom de fichier est numéroté avec un index ligne colonne

Contenu de “page1.html” :

voici le code html et les commandes de style de “page1.html” . ce fichier au format texte devra bien entendu etre modifié en html en changeant le nom de l’extension.

la partie entre les balise <style> et </style> permet de definir le style (formater) le contenu de la page . vous pouvez donc modifier les valeur suivant vos besoins .

voici le détail du code :

<!DOCTYPE html>
<html>
  <head>
	<title> GALERIE PHOTO 1</title>
	<style>
	img
	{
	  width: 140px;
	  heigh: 110px;
	}
	th
	{
	  font-size: 2em;
	  background-color: #f9ddff;
	  padding: 20px;
	}
	body
	{
	  font-family: sans-serif;
	  font-size: lem;
	  text-align: center;
	  background-color: slateblue;
        }
	table
	{
	  background-color: white;
	  width: 60%;
	}
	td
	{
	  padding: 25px;
	}
	</style>
   </head>

   <body>
	<table align="center">	
	<tr>
	  <th colspan="4">GALERIE PHOTO 1</th>
	</tr>
	<tr>
	  <td colspan="4">clicker sur la vignette pour agrandir la photo</td>
	</tr>
	<tr>
	  <td><a href="image01.jpg" target="_blank"><img src="image01.jpg"></a></td>
	  <td><a href="image02.jpg" target="_blank"><img src="image02.jpg"></a></td>
	  <td><a href="image03.jpg" target="_blank"><img src="image03.jpg"></a></td>
	  <td><a href="image04.jpg" target="_blank"><img src="image04.jpg"></a></td>
	</tr>

	<tr>
	<td><a href="image11.jpg" target="_blank"><img src="image11.jpg"></a></td>
	<td><a href="image12.jpg" target="_blank"><img src="image12.jpg"></a></td>
	<td><a href="image13.jpg" target="_blank"><img src="image13.jpg"></a></td>
	<td><a href="image14.jpg" target="_blank"><img src="image14.jpg"></a></td>
	</tr>
	</table>
  </body>
</html>

en appelant la page 1 via le menu de gauche du site web basique , on ouvre “page1.html” dans la fenetre de visualisation et cela donne:

et quand on clique sur une des vignettes de la page, on ouvre une nouvelle fenêtre avec la photo en taille maxi adaptée a la fenêtre , par exemple en cliquant sur la deuxième vignette de la deuxième ligne on obtient cette page:

voila , pas plus compliqué que ça . vous pouvez bien entendu créer plusieurs galeries photos , appelée chacune par une ligne différente dans le menu de gauche …

pour cela , créer autant de répertoire et de fichiers “pagex.html” avec les photos relatives dans le répertoire .

Une Galerie Vidéo Basique

Comme pour la galerie photo , voyons comment créer une page de vidéos. le principe est le meme que pour la galerie photo. on va créer un repertoire avec les videos ( ici au format MP4) et une page html pour l’affichage.

comme pour la page photo, voici le fichier htlm au format txt ( penser a remetre l’extension html dans votre repertoire du serveur ):

par rapport a la page de galerie photo , dans la partie table, on a remplacé les code de redirection photo par des codes de redirection video . ces codes lancent le lecteur vidéo maintenant inclus en standard dans les navigateurs classiques . le format vidéo MP4 est également maintenant un des format standard supporté => il vous faudra donc faire attention a ne pas utiliser n’importe quel format video sur votre site.

<!DOCTYPE html>
<html>
	<head>
		<title> VIDEOS 1</title>
		<style>
		th
		{
			font-size: 2em;
			background-color: #f9ddff;
			padding: 20px;
		}
		body
		{
			font-family: sans-serif;
			font-size: lem;
			text-align: center;
			background-color: slateblue;
		}
		table
		{
			background-color: white;
			width: 60%;
		}
		td
		{
			padding: 25px;
		}

		</style>
	</head>
	<body>
		<table align="center">	
			<tr>
				<th colspan="4">VIDEOS</th>
			</tr>
			<tr>
				<td>
				<video width="640" height="480" controls>
				<source src="saturneweb.mp4" type="video/mp4">
				Your browser does not support the video tag.
				</video>
				</td>
			</tr>
			<tr>
				<td>
				<video width="640" height="480" controls>
  				<source src="jupiterweb.mp4" type="video/mp4">
				Your browser does not support the video tag.
				</video>
				</td>
			</tr>
		</table>
	</body>
</html>

voila le look de la page ainsi bâtie après ouverture dans le navigateur: