Tutoriel Site web Raspberry pi

Préparation du Raspberry Pi

Distibution utilisé raspbian-stretch

On va donc Installer LAMP ( Linux Apache MySql PHP ) afin d'avoir un serveur web, des bases de données et PHP pour pouvoir les utiliser.

Dans le terminal, ou par SSH, on tape :

sudo apt-get update

Pour mysql (MariaDB est un fork de mysql):

sudo apt install mariadb-server

Puis une fois installé, il faut paramétrer le mot de passe root (admin), si pendant l'installation on vous demande pas de le créer il faudra taper :

sudo mysql_secure_installation

taper entrée à la demande du mot de passe root, pour une premiere utilisation, puis y à toutes les questions la première étant de definir le mot de passe.

Voià pour les bases de données, maintenant on installe Apache et PHP :

sudo apt install apache2 php libapache2-mod-php php-mysql -y

Et on redémarre apache :

sudo /etc/init.d/apache2 restart

Si vous tapez comme URL dans votre navigateur : http://adresse_du_pi vous tomberez sur la page d'accueil du votre serveur web apache.

Nous allons maintenant supprimer cette page d'accueil, on y créera plus tard notre dossier qui contiendra le site :

cd /var/www/html/

Puis

sudo rm index.html

On va donner les droits au dossier web à l'utilisateur pi: (pour un site en local, sinon faut passer par des liens symboliques et sécuriser apache)

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

Puis

sudo chmod -R 770 /var/www/html/

Puis on se replace dans le dossier /home/pi

cd /home/pi

Il nous reste a installer phpmyadmin pour administer les bdd en mode graphique

sudo apt install phpmyadmin -y

Pendant l'installation, il y faura choisir apache en le cochant avec la bar d'espace, et d'autre question :

image non disponible

image non disponible

image non disponible

image non disponible

image non disponible

image non disponible

image non disponible

image non disponible

Branchement de la sonde DHT22

image non disponible

On la branche ainsi :

On va installer la librairie Adafruit_Python_DHT

On met à jour les dépôts

sudo apt-get update

On installe les outils python, git

sudo apt-get install build-essential python-dev python-mysqldb python-setuptools git

On télécharge la librairie avec git

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

On se déplace dans le dossier téléchargé

cd Adafruit_Python_DHT

Et on installe la librairie

sudo python setup.py install

Une fois installée, on test la lecture de la sonde :

cd /home/pi/Adafruit_Python_DHT/examples

Et

sudo ./AdafruitDHT.py 22 22

vous devriez avoir ceci :

image non disponible

Ci ce n'est pas le cas, vérifier vos branchements.

Puis on se replace dans le dossier /home/pi

cd /home/pi

Préparation de la base de donnée

On va créer une base de données pour revoir les datas de la sonde

Elle va se composer d'une Table, qui contiendra 3 champs : la date et heure, la température et l'humidité

On va commencer par créer la base de donnée, on va la nommé DHT22 pour exemple.

Donc dans le terminal on tape :

sudo mysql -u root -p

tapez votre mot de passe mysql et vous entrez dans la console mysql :

image non disponible

On va maintenant créer notre base de donnée DHT22

create database DHT22;

image non disponible

Puis on la sélectionne

use DHT22;

image non disponible

On va maintenant créer un utilisateur et son mot de passe pour utiliser la base de donnée DHT22.

Pour l'exemple on va créer l'utilisateur manu et son mot de passe soundsysteme

create user 'manu'@'localhost' identified by 'soundsysteme';

On donne tous les privilèges à l'utilisateur manu sur la base de donnée DHT22.

grant all privileges on DHT22.* to 'manu'@'localhost';

On applique les privilèges

flush privileges;

ce qui donne dans le terminal

image non disponible

Et on quitte mysql

quit

image non disponible

Et on redémarre mysql

sudo service mysql restart

Voilà, maintenant on va se connecter en tant que l'utilisateur manu à la base de donnée DHT22 et définir le nom de la table et des champs

sudo mysql -u manu -p

tapez le mot de passe, dans notre exemple, soundsysteme et vous entrez dans la console mysql

use DHT22;

On va maintenant créer la table nommé temphumi qui contiendra les champs dateetheure de type DATETIME (format de date et heure), temp de type DOUBLE (nombre à virgule) et humi de type DOUBLE (nombre à virgule)

create table temphumi (dateetheure DATETIME, temp DOUBLE, humi DOUBLE);

image non disponible

Et on quitte MySQL :

quit

On redémarre MySQL :

sudo /etc/init.d/mysql restart

image non disponible

Voilà, la base de donnée est prête à recevoir nos datas.

Le programme

On va créer un petit programme qui lit la sonde et envoi les datas à notre base de donnée.

cd /home/pi

Puis

nano dht22.py

Et copier le programme suivant :

Et fermer et enregistrer nano ( ctrl x )

Pour vérifier que cela fonctionne, on tape

sudo python dht22.py

si aucune erreur apparaît, on peut vérifier notre base de donnée :

sudo mysql -u manu -p

use DHT22;

Puis on tape

select * from temphumi;

Vous devriez avoir ceci

image non disponible

Et on quitte MySQL :

quit

Automatisation des relevés

Pour lancer ce programme toute les minutes, on va passer par une tâche cron

On tape

crontab -e

validez le choix par defaut [2]

Puis on ajoute ces lignes à la fin (toute les minutes, le programme se lance et envoi les datas à la BDD)

* * * * * sudo python /home/pi/dht22.py

Comme ceci :

image non disponible

On quitte en enregistrant la modification (ctrl x pour quitter)

Voilà, les relevés vont se faire toute les minutes et les datas seront envoyées à la base de donnée DHT22

créations de la page web

Bon voilà tout es prêt, on va maintenant créer notre page web

cd /var/www/html

Puis on va créer le dossier du site web, on va le nommé sonde par exemple.

mkdir sonde

vous pouvez remplacer sonde par le nom que vous voulez.

On va créer une page web index.html et son fichier CSS pour la mise en page

On se déplace dans le dossier sonde

cd /var/www/html/sonde

On crée la page index.html

nano index.html

Et on y copie la page de base suivante :

On crée la page index.css

nano index.css

Et on y copie le code suivant :

Voilà, notre page de base est créé, pour voir le résultat il suffit d'ouvrir Firefox ou Chromium et d'entrer l'adresse suivante :

http://adresse_ip_du_pi/sonde/

Faire des graphes

Pour faire des graphes j'utilise la librairie Highcharts

On va donc la télécharger avec votre PC ici

Dézipper le dossier, puis à l'aide de Filezilla, copier le fichiers highcharts.js qui se trouve dans le sous-dossier code, et le thème gray.js qui se trouve dans le sous-dossier theme dans votre dossier /var/www/html/sonde du Raspberry Pi.

Télécharger également jquery en faisant un clic droit sur le lien et enregistrer la cible du lien sous..., renommer le en jquery.js ,et copier le à l'aide de Filezilla dans votre dossier web du Raspberry Pi /var/www/html/sonde.

nous avons donc 5 fichiers dans notre dossier /var/www/html/sonde (notre site web) du Rasperry Pi:

On va maintenant créer le fichier data.php qui va interroger la base de donnée et nous sortir les datas au format json, pour faire notre graphe

On se place dans le dossier sonde

cd /var/www/html/sonde

Puis on crée le fichier data.php

nano data.php

Et on y copie le code suivant :

Pour voir le résultat, il suffit d'ouvrir Firefox ou Chromium et d'entrer l'adresse suivante :

http://adresse_ip_du_pi/sonde/data.php

Et vous devriez avoir ceci :

image non disponible

On retrouve nos 3 champs :

image non disponible

chaque groupe de data, colorié ici sur l'image, correspond à un numéro de champ, nous avons ici 3 champs : champ 0 à champ 2.

On va maintenant créer le graphe en lui même

cd /var/www/html/sonde

Pour être sur de se trouver dans le bon dossier, puis

nano graphe.js

Et on y copie le code suivant :

On va maintenant modifier la page index.html pour intégrer notre graphe, on va appelé la librairie jquery, highcharts, le thème et le graphe dans cette ordre et dans le head de la page HTML comme ceci:

nano index.html

Puis modifier le code comme celui-ci :

Pour voir le résultat, il suffit d'ouvrir Firefox ou Chromium et d'entrer l'adresse suivante :

http://adresse_ip_du_pi/sonde/

Et vous devriez avoir ceci :

image non disponible

Faire des jauges

Pour dessiner ces jauges nous allons utiliser la librairie RGraph, télécharger la avec votre PC, et dé-zipper l'archive.

Puis à l'aide de Filezilla, copier les 3 fichiers suivant :

dans votre dossier web du Raspberry Pi /var/www/html/sonde

.

Pour afficher la dernière valeur dans la sonde, on va passer par un fichier CSV, on va donc modifier notre programme python dht22.py pour y ajouter l'écriture des datas dans un fichier CSV

Voici le fichier modifié :

On y à ajouté l'import de la librairie csv et la partie jauge, maintenant, toutes les minutes, le programme écrasera ce fichier avec les nouvelles valeurs

On va venir récupérer ces valeurs pour créer nos jauges

On créer donc le fichier jauge.html

cd /var/www/html/sonde

Puis

nano jauge.html

Et on y copie le code suivant :

Et maintenant on va modifier nos pages index.html et index.css pour y ajouter nos jauges

nano index.html

Puis modifier le code comme celui-ci :

Et

nano index.css

Puis modifier le code comme celui-ci :

Dans le fichier index.html on y a insérer une ligne de code en PHP qui récupère la page jauge.html

On doit donc renommer notre fichier index.html en index.php

Soit par Fillezilla, soit en ligne de commande :

mv /var/www/html/sonde/index.html /var/www/html/sonde/index.php

Pour voir le résultat, il suffit d'ouvrir Firefox ou Chromium et d'entrer l'adresse suivante :

http://adresse_ip_du_pi/sonde/

Et vous devriez avoir ceci :

image non disponible

Voilà, vos jauge se rafraîchissent toutes les 30 secondes.

Vous pouvez changer l'apparence des jauges en modifiant le fichier RGraph.gauge.js

Voici un exemple :

image non disponible

On harmonise en ajoutant dans le fichier index.css, un fond noir et l'écriture en blanc pour la balise html :

image non disponible