Réalisation d’un automatisme de portail roulant

Partie 2

Paramétrage du
Raspberry PI 3

 

 

 


Table des matières

1)          Installation et paramétrage du Raspberry. 4

A.      Quelques petits trucs et astuce pour vous aider avant de continuer 4

a)      Préliminaires. 4

b)      Eteindre proprement le Raspberry. 4

B.      Préparation de la carte SD.. 4

C.     Premiers lancements et paramétrages. 5

a)      Branchement 5

b)      Système et clavier en Français. 5

c)       Premier login. 6

d)      Afficher à nouveau le menu de configuration. 6

D.     Accédez à votre Raspberry par SSH.. 6

a)      Petit rappel pour les néophytes (initiation aux adresses IP) 6

b)      Comment trouvez l’adresse IP du Raspberry sur le réseau ?. 8

c)       Comment se connecter au Raspberry en SSH ?. 9

d)      Comment trouvez l’adresse IP du Raspberry sur le réseau (plus simple encore avec Bonjour)?. 10

E.      Paramétrage du WIFI pour un accès depuis l’internet ou depuis votre réseau local 12

a)      Comment désactiver la carte Wifi intégrée du Raspberry P3 (optionnel) ?. 13

F.      Créer un partage pour Windows avec Samba. 13

2)          Installation, paramétrage des librairies Python. 16

A.      Python3.5 & librairies pour Python 3.5. 16

B.      RPIO.. 16

C.     PIGPIO.. 16

D.     FLASK.. 17

E.      INIPARSE.. 17

F.      CURSES.. 17

G.     SCREEN.. 18

3)          Autres réglages. 18

A.      Désactivation du Swap. 18

B.      TmpFS.. 18

C.     Purge des fichiers log du programme. 19

4)          Installation des programmes python. 19

A.      Copie des programmes. 19

B.      Génération des clés et certificats SSL. 19

C.     Scripts de lancement automatique. 19

5)          Changement du mot de passe du Raspberry PI 20

6)          Paramétrage de votre box Internet 20

7)          Premiers essais. 20

A.      Test de la configuration du Raspberry Pi 20

a)      Commande ./portail show.. 21

b)      Commande ./portail showwww.. 21

c)       Commande .portail stop. 22

d)      Commande ./portail start 22

e)      Commande ./portail restart 22

B.      Test de l’interface Web. 23

8)          Téléchargements. 24

9)          Liens. 24

 


Il ne tient qu’à vous et vos remarques pour améliorer cette documentation. Merci de me contacter pour toutes suggestions : email26000@yahoo.fr.

Frédéric ROBIN

En 2015 Erwan DUROUX, mon stagiaire, à participé à la conversion du programme Basic ATMEL vers la version Python pour Raspberry. Je tiens ici à l’en remercier pour son sa motivation et son implication dans le projet. Ne connaissant rien à l’électronique, à Python et à Flask, il a réussi à poser les bases solides de la version actuelle.

 

1)    Installation et paramétrage du Raspberry

A.    Quelques petits trucs et astuce pour vous aider avant de continuer

a)     Préliminaires

·         La réalisation fonctionne sur un Raspberry PI 3, je n’ai pas essayé avec d’autres modèles.

·         Sous Unix on fait partout la différence entre les majuscules et les minuscules (commandes, paramètres, login, mot de passe…). Ce n’est pas comme sous Windows.

·         Pour les Windowsiens, la ligne de commande c’est chiant… mais il faut y passer hélas. Pour ceux qui ont vu que dans raspi-config on pouvait lancer une interface graphique au démarrage et bien qu’ils l’oublient. Trop gourmand en mémoire pour notre réalisation et c’est très lent, à en faire regretter la ligne de commande.

·         Dans la fenêtre du terminal SSH, vous pouvez effectuer un Coller à l’endroit du curseur avec la combinaison de touches  Maj+Insert ou un Clic-droit. Ne collez qu’une seule commande à la fois, une par une, car si l’une d’elle demande une confirmation c’est les lettres des commandes suivantes qui seront prisent en compte. Cela fera un beau méli-mélo. Par contre sous l’éditeur nano copier et coller tout sans hésitation.

·         Toujours dans le terminal SSH, pour faire un Copier il suffit de sélectionner le texte et le fait de relâcher le bouton de souris colle le texte dans le presse-papier.

·         Pour l’utilisation du terminal SSH, je vous recommande la lecture du site de Marc Terrier http://marc.terrier.free.fr/docputty/

·         Pour faire court, je ne vous donnerai que peu d’explications sur les commandes Unix utilisées. Pour consolider votre savoir Unix, Google est votre meilleur ami.

 

b)     Eteindre proprement le Raspberry

sudo shutdown –h now

et pour le redémarrer

sudo reboot

 

B.    Préparation de la carte SD

En préambule, toutes les manipulations décrites ci-dessous sont faites depuis un environnement Windows (XP, 7, 8.1, 10 pour ma part).

Pour rappel, la carte micro-SD doit être du type rapide, Le Raspberry Pi va passer son temps à écrire dessus. Si celle-ci n’est pas assez rapide, les performances du Raspberry Pi baisseront fortement. Prenez donc une carte micro-SD de classe 10 minimum. Une taille de 8 Go est suffisante pour notre projet.

·         Téléchargez et installez Win32DiskImager-0.9.5-install.exe

·         Téléchargez et placez sur le bureau l’image disque Raspbian 2016-05-27-raspbian-jessie-lite.zip et décompressez-le sur le bureau. Ce n’est peut-être pas la dernière à la date où vous l’installerez mais une chose est sûr c’est celle qui fonctionne avec notre projet et qui correspond aux copies d’écrans faites dans ce document. Dans l’absolu la dernière version du site Raspbian devrait fonctionner. A vous de voir, moi je préfère la sécurité.

·         Insérez la carte micro-SD dans son adaptateur SD qui lui-même sera inséré dans le lecteur de carte SD de votre PC

·         Lancez le raccourci Win32DiskImager de votre bureau. Dans la fenêtre qui s’ouvre sélectionnez dans « Image file » le fichier 2016-05-27-raspbian-jessie-lite.img que vous venez de décompresser sur le bureau ; sélectionnez également sous « Device » le lecteur correspondant à votre carte micro-SD. Cliquez enfin sur le bouton « Write » et confirmez l’effacement de la carte micro-SD par « Yes ».

 

·         Attendre la fin de la progression… Cliquez enfin sur « Exit »

C.    Premiers lancements et paramétrages

a)     Branchement

·         Insérez maintenant la carte micro-SD dans votre Raspberry Pi (éteint bien sûr).

·         Reliez-le à un écran (VGA avec un adaptateur HDMI->VGA ICY BOX IB-AC502 pour ma part). Notez que si vous n’avez pas d’écran vous pouvez y accéder par SSH et la commande sudo raspi-config (cf .paragraphe Accédez à votre Raspberry par SSH ).  Dans ce cas pas besoin de clavier/souris aussi.

·         Enfin branchez l’adaptateur secteur et on allume le tout. C’est parti ! Des lignes de texte défilent à l’écran, au final vous aurez une demande de login

·         Pour le login tapez « pi »

·         Pour le password tapez « raspberry » ou plutôt « « rasqberry » pour les Français car votre clavier est configuré en anglais (qwerty) pour l’instant

 

Souvenez-vous bien de ce couple login / password pour la suite. Il pourra être changé plus tard mais pour l’instant laissez tel quel. A l’avenir pour toutes les commandes à taper nous supposerons que vous êtes logué en « pi ».

 

 

Nous allons maintenant faire quelques réglages de base, tapez (et confirmez si demandé) :

sudo apt-get update

sudo apt-get upgrade

sudo raspi-config

 

L’image disque installée fait 4 Go or notre carte micro-SD fait 8 Go, nous allons donc étendre la partition de 4Go sur la totalité de la carte micro-SD (8 Go dans notre cas).

·         Sélectionnez le choix « 1 Expand FileSystem » puis « Ok ». Voilà c’est fait.

b)     Système et clavier en Français.

·         Choisissez « 5 Internationalisation Options ».

·         Sélectionnez « I1 Change Local »… Patientez avant l’affichage de la liste de choix…

·         Avec les touches fléchées et la barre d’espace décochez le choix « en_GB.UTF8 UTF8 » et cochez « fr_FR.UTF8 UTF8 ».

·         Enfin avec la touche TAB sélectionnez le choix « Ok ».                     

·         A la question « Default local for the system environnement » sélectionnez « fr_FR.UTF8 UTF8 » puis avec la touche TAB sélectionnez le choix « Ok ». Patientez avant le retour au menu principal.

 

·         Choisissez à nouveau « 5 Internationalisation Options ».

·         Sélectionnez « I2 Change Timezone ».

·         Sélectionnez « Europe » puis « Paris ».

 

·         Choisissez à nouveau « 5 Internationalisation Options ».

·         Et enfin sélectionnez « I3 Change keyboard layout ».

·         Choisissez à nouveau « 5 Internationalisation Options ».

·         Et enfin sélectionnez « I4 Change Wifi Country ».

·         Avec les touches fléchées descendez sur le choix « FR France ».

·         Enfin avec la touche TAB sélectionnez le choix « Ok ».

 

·         De retour au menu général sélectionnez « Finish » puis « Yes » pour redémarrer le Raspberry avec les nouveaux paramètres (en tapant si besoin la commande « sudo reboot »).

 

 

c)     Premier login

Pour le login tapez « pi »

Pour le password tapez « raspberry ».

Nous allons continuer les réglages de bases, tapez

sudo apt-get update

 

Profitez-en également pour tapez les touche a ; Verr Num ; 1 du pavé numérique ; é ; pour vérifier que vous avez bien configuré le clavier.

d)     Afficher à nouveau le menu de configuration

Si toutefois vous avez besoin d’afficher le menu de configuration précédent souvenez-vous de cette commande :

sudo raspi-config

 

D.    Accédez à votre Raspberry par SSH

Pour la suite à venir et quand votre portail sera en fonction, il sera utile de paramétrer la carte à distance sans devoir se déplacer avec un pack clavier/souris/écran. Les jours de pluie, de grand froid ce n’est pas pratique et le soleil dans l’écran également. De même cela va être plus pratique pour vous de faire des copier/coller entre votre PC Windows et le Raspberry plutôt que tout retaper à la main sur ce dernier.

a)     Petit rappel pour les néophytes (initiation aux adresses IP)

Pour cela une solution : un terminal SSH. Mais avant un petit rappel sur le réseau pour les néophytes. Lorsqu’un appareil est connecté à un réseau (PC, Raspberry, imprimante,…) un élément du réseau lui délivre une « Adresse IP », en général chez un particulier et dans les petites entreprises c’est une Box ADSL qui le fait. On dit qu’elle est serveur DHCP (elle délivre aux autres équipements une adresse IP).

Bref lorsque branchez un câble Ethernet entre votre Raspberry et votre box ADSL il se passe quelque chose comme cela :

·         Raspberry : youhou y a quelqu’un pour me donner une adresse sur ce réseau ?

·         Box ADSL : hello je suis là c’est moi le serveur DHCP. Je te donne cette adresse pour 24 heures : 192.168.1.10. Passé ces 24h je t’en donnerai une nouvelle qui pourra être différente. Pour aller sur internet il te faudra passer par moi avec mon adresse IP à savoir 192.168.1.1. Mon adresse IP elle ne changera jamais. A bientôt.

·         Raspberry : Ok merci je prends.

Adresse IP ?

Une adresse IP permet d’identifier et de communiquer avec un appareil dans un réseau. Elle est constituée de 4 nombres séparés par des points. Ces nombres vont chacun de 0 à 254. Les trois premiers nombres représentent le sous réseau de votre installation réseau et le dernier l’adresse de votre équipement sur votre réseau.

Dans notre petit exemple ci-dessus notre Raspberry reçoit l’adresse 192.168.1.10 => 192.16.1 c’est le sous réseau, 10 c’est son adresse dans ce sous-réseau. L’ensemble forme l’adresse IP du Raspberry dans votre réseau.

Un équipement peut se connecter au réseau au travers de plusieurs interfaces (câble, wifi, usb,…). Pour notre réalisation nous utiliseront le tantôt le câble, tantôt le WIFI, tantôt les deux => un même équipement peut ainsi posséder plusieurs adresses en même temps sur le réseau et, toujours dans notre réalisation communiquer avec le Raspberry par son adresse IP « câble » ou son adresse IP WIFI reviendra au même. L’important étant de connaitre une de ces deux adresses.

A noter que votre box ADSL possède deux adresses IP :

·         Une pour votre réseau interne, on parle alors d’adresse IP LAN. Local Area Network.

·         Une autre pour le réseau internet, on parle alors d’adresse IP WAN. Wide Area Network.

 

Sous-réseau ?

Il est important de connaitre le sous-réseau de votre installation car il n’est pas le même chez tout le monde et nos paramétrages ultérieurs doivent s’y coller. Pour cela depuis votre PC ouvrez une fenêtre de commande (tapez « cmd » dans zone de recherche du menu démarrer). Tapez dedans :

ipconfig

Remontez avec l’ascenseur jusqu’aux lignes qui affichent les paramètres de la carte Ethernet (celle reliée avec le câble) ou Wifi suivant votre mode de connexion.

Carte Ethernet Ethernet :

 

   Suffixe DNS propre à la connexion. . . :

   Adresse IPv6 de liaison locale. . . . .: fe80::xxxx:xxxx:xxxx:1504%3

   Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.11

   Masque de sous-réseau. . . . . . . . . : 255.255.255.0

   Passerelle par défaut. . . . . . . . . : 192.168.1.1

 Ici on voit que le masque est sous réseau est 192.168.1 sur la ligne Adresse IPv4. Notez bien ce sous-réseau sur un papier. S’il est différent (par exemple 192.168.0 il faudra systématiquement changer les séquences 192.168.1 par 192.168.0 dans les paramétrages et codages données ultérieurement). C’est capital !!! Souvenez-vous en bien !!!

Au passage notez également sur un bout de papier l’adresse IP de votre box ADSL de la ligne Passerelle de défaut : ici 192.168.1.1. Là aussi si chez vous elle est différente (par exemple 192.168.0.254) il faudra systématiquement changer les séquences 192.168.1.1 par 192.168.0.254 dans les paramétrages et codages données ultérieurement. Ceux-ci seront surlignés

Notez dès maintenant :

Mon masque de sous réseau :                                                                                                                                                            

L’adresse IP de ma BOX (ou de mon fournisseur de DHCP) :                                                                                                   

 

Donc dans tout ce qui suit, je surlignerai en rouge ce qu’il faudra corriger pour  adapter le paramétrage à votre réseau. Par exemple :

iface wlan0 inet static

address 192.168.1.123

netmask 255.255.255.0

gateway 192.168.1.1

wpa-ssid "Votre SSID WIFI et laissez les guillemets"

 

IP fixe (ou statique) / IP dynamique ?

Nous venons de voir que dans le plus simple et plus pratique des cas, notre Raspberry reçoit de la box ADSL une adresse IP qui ne peut pas être connue d’avance et qui plus est peut changer dans le temps : on appelle cela une adresse IP dynamique.  C’est pratique mais c’est gênant pour faire certaines choses :

·         Dans le cas présent notre Raspberry est connecté au réseau mais impossible de dialoguer avec, à moins d’essayer toutes les adresses entre 0 et 254. Ce n’est pas jouable.

·         Notre réalisation permettra de piloter à distance par le web le portail. La box ADSL devra renvoyer les requêtes du web sur notre Raspberry et lorsque son adresse IP changera cela ne fonctionnera plus.

 Vous l’avez compris le dynamique c’est bien c’est pratique mais parfois il faut figer les choses quitte à se compliquer la vie. On passe alors en IP fixe et il faut les connaissances pour paramétrer tout cela correctement. Concrètement notre Raspberry ne va rien demander à personne mais prendra directement une adresse IP qui sera toujours disponible pour lui.

Pour la suite nous allons donc :

·         Conserver l’interface câble du Raspberry en IP dynamique. En cas de problèmes, avec le câble réseau on sera sûr que notre réalisation sera bien connectée au réseau pour corriger les paramétrages.

·         Trouver un moyen simple pour « renifler » notre carte Raspberry sur le réseau câblé.

·         Paramétrer la première interface WIFI en IP fixe en corrélation avec le sous-réseau de notre box ADSL. C’est cette interface qui permettra l’accès depuis le web (réseau WAN vous vous souvenez ?) et depuis le réseau de la maison (réseau LAN).

·         Paramétrer la deuxième interface WIFI en IP fixe mais aussi en serveur DHCP. En effet, il se peut que notre réalisation située près du portail extérieur soit hors de portée WIFI de la box ADSL. Dans ce cas il faut s’y connecter directement. Pour mon cas précis mes trois enfants possèdent un abonnement chez Free à 2€/mois. Pas question de leur payer un abonnement à 19€99 chacun pour qu’ils puissent ouvrir le portail avec leur Smartphone. Ils se connecteront au portail en WIFI directement. Vous allez me dire qu’ils peuvent aussi se connecter au WIFI de la box et vous avez raison. Je préfère seulement mettre un deuxième point d’accès extérieur pour augmenter la portée de cette télécommande « Smartphone ». Chez les uns ou les autres, entre l’épaisseur des murs, la distance entre la box et le portail le signal ne pourrait pas passer. On s’y connectera donc directement par la deuxième interface WIFI. Cette deuxième interface reste optionnelle bien sûr mais je la conseille.

b)     Comment trouvez l’adresse IP du Raspberry sur le réseau ?

NB : ceux qui ont connecté un écran/clavier à leur Raspberry peuvent taper la commande ifconfig et relever l’adresse IP dans la section « Eth0 » et passer au paragraphe suivant « Comment se connecter au Raspberry en SSH ? »   .

ifconfig

 

pi@raspberrypi ~ $ ifconfig

eth0      Link encap:Ethernet  HWaddr b8:27:eb:85:73:ed

          inet adr:192.168.1.36  Bcast:192.168.1.255  Masque:255.255.255.0

          adr inet6: 2a01:e35:8aa2:ff30:c9aa:6051:c75a:9553/64 Scope:Global

          adr inet6: fe80::12f2:ced1:916:701a/64 Scope:Lien

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1405 errors:0 dropped:1 overruns:0 frame:0

          TX packets:791 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:1000

          RX bytes:211140 (206.1 KiB)  TX bytes:211197 (206.2 KiB)

 

Pour ce ceux qui n’ont pas d’écran, on suppose que le Raspberry est allumé et relié au réseau LAN avec un câble Ethernet et qu’aucun autre Raspberry n’est branché sur le réseau (dès fois que vous l’utilisiez par ailleurs comme serveur multimédia par exemple).

·         Téléchargez sur votre bureau ipscan-win32-3.3.2.exe. Nb : il s’agit d’un « renifleur » réseau et certains antivirus le considèrent comme un logiciel malveillant car il permet d’inspecter un réseau. C’est exactement ce qu’on veut faire ! Donc passez outre votre antivirus, ce logiciel n’est pas vérolé.

·         IPScan a besoin de JAVA pour fonctionner. Téléchargez cet environnement depuis le site https://www.java.com/fr/download. Pensez à décocher les cases relatives aux logiciels malvenus proposés pendant la phase d’installation (style Ask, McAfee et autres).

·         Exécutez-le, au besoin fermez la première fenêtre d’introduction.

·         Cliquez le menu Tools puis Preferences puis l’onglet Display et enfin cochez la case Alive hosts… et enfin cliquez sur le bouton « OK ».

·         Cliquez du le bouton « Select Fetchers » à côté du bouton « Start ».

 

·         Faites passer « Mac Vendor » dans la partie de gauche avec le bouton « << » puis cliquez « OK ».

 

·         Cliquez sur la liste de choix « Netmask » et sélectionnez « /24 »

·         Cliquez sur le bouton « Start »… attendez la fin du scan… et cliquez sur « Close ».

·         La ligne dont la colonne « Mac Vendor » contient « Raspberr » indique l’adresse IP du Raspberry, à vous de le trouver. Dans notre cas c’est la 192.168.1.26 et c’est l’adresse IP du Raspberry. Si vous débranchez / rebrancher le câble elle devrait rester la même ces prochaines heures.

·         Relevez l’adresse IP du Raspberry.

 

c)     Comment se connecter au Raspberry en SSH ?

Maintenant nous connaissons l’adresse IP de notre Raspberry grâce à l’étape précédente. Pour notre exemple c’était 192.168.1.26 donc dans ce qui suit remplacez cette adresse IP par celle que vous avez noté.

·         Sur votre bureau Créez un dossier KiTTY 

·         Télécharger dans le dossier ci-dessus kitty_portable.exe et exécutez-le. Il s’agit d’un logiciel qui permet de faire du SSH.

·         Saisissez l’adresse IP du Raspberry et cliquez sur « Open ».

 

·         Pour le login tapez « pi », pour le password tapez « raspberry ».

login as: pi

pi@192.168.1.26's password:

Linux raspberrypi 3.12.35+ #730 PREEMPT Fri Dec 19 18:31:24 GMT 2014 armv6l

 

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

 

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

Last login: Fri Feb  6 15:22:53 2015 from 192.168.1.11

pi@raspberrypi ~ $ ^C

pi@raspberrypi ~ $

·         Ayé on est connecté !!!

A noté que ceux qui n’avaient pas d’écran dans le paragraphe « Premiers lancements et paramétrages page 3 » peuvent maintenant effectuer la première configuration en tapant :

sudo raspi-config

 

d)     Comment trouvez l’adresse IP du Raspberry sur le réseau (plus simple encore avec Bonjour)?

Tout ça c’est bien gentil mais c’est compliqué à chaque fois de chercher l’adresse IP du Raspberry avec un renifleur réseau. Vous avez raison et, maintenant qu’on est connecté, on va essayer de faire plus simple grâce à Apple et le service Bonjour.

Maintenant sur votre PC :

·         Téléchargez et installez BonjourPSSetup.exe.

·         Redémarrez votre PC

·         Ouvrez une fenêtre de commande avec « cmd » et tapez :

ping –v TOS raspberrypi.local

et miracle grâce à cette commande vous pouvez afficher simplement l’adresse IP de votre Raspberry (notée entre les crochets [192.168.1.26]).

C:\Windows\System32>ping raspberrypi.local

 

Envoi d'une requête 'ping' sur raspberrypi.local [192.168.1.26] avec 32 octets d

e données :

Réponse de 192.168.1.26 : octets=32 temps<1ms TTL=64

Réponse de 192.168.1.26 : octets=32 temps=1 ms TTL=64

Réponse de 192.168.1.26 : octets=32 temps=1 ms TTL=64

Réponse de 192.168.1.26 : octets=32 temps=1 ms TTL=64

 

Statistiques Ping pour 192.168.1.26:

    Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),

Durée approximative des boucles en millisecondes :

    Minimum = 0ms, Maximum = 1ms, Moyenne = 0ms

 

C:\Windows\System32>

 

Plus fort:

·         Lancez de nouveau kitty_portable.exe .

·         Au lieu de 192.168.1.26 saisissez « raspberrypi.local ».

·         Sous « Saved session », tapez «Mon Raspberry Pi ».

·         Cliquez sur « Save »

·         Cliquez sur « Data »

·         Dans « Auto-login username » saisissez « pi »

·         Dans « Auto-login username » saisissez « raspberry »

·         Cliquez sur « Session » puis « Save » puis « Open »

La connexion se fait automatiquement.

·         Fermez et relancez kitty_portable.exe.

·         Dans la liste double-cliquez sur « Mon Raspberry Pi » et la connexion se fait automatiquement.

 

Maintenant c’est très simple de se connecter en SSH au Raspberry. Dorénavant quand je vous demanderai de vous connecter en SSH vous comprendrez qu’il faudra lancer kitty_portable.exe et double-cliquer sur « «Mon Raspberry Pi ».

 

E.    Paramétrage du WIFI pour un accès depuis l’internet ou depuis votre réseau local

Nous allons mettre le Raspberry à l’adresse IP fixe 123 de notre sous réseau soit  192.168.1.123. Pourquoi 123 ? Parce qu’il y a peu de chance que cette adresse soit prise et que 123 c’est facile à retenir.

Nous allons modifier le fichier /etc/wpa_supplicant/wpa_supplicant.conf avec l’éditeur de texte nano. Tapez :

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Ajoutez à la fin les lignes ci-dessous (copier/coller). Pensez à corriger les lignes surlignées en rouge pour les adapter à votre réseau et à votre WIFI.

network={

    ssid="Votre SSID WIFI et laissez les guillemets"

    psk="Votre clé WIFI et laissez les guillemets"

}

Si vous avez besoin de vous connecter à un réseau privé qui ne diffuse pas son SSID ajoutez la ligne scan_ssid=1 à l’intérieur du bloc network= {}

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

 

Nous allons modifier le fichier /etc/dhcpcd.conf avec l’éditeur de texte nano. Tapez :

sudo nano /etc/dhcpcd.conf

Ajoutez au début  les lignes ci-dessous (copier/coller). Pensez à corriger les lignes surlignées en rouge pour les adapter à votre réseau et à votre WIFI. A noter que les serveurs DNS sont ceux de Google et d’OpenDNS (8.8.8.8…), ils sont universels mais vous pouvez ajouter ceux de votre FAI devant ceux-ci.

interface wlan0

static ip_address=192.168.1.123/24

static routers=192.168.1.1

static domain_name_servers=8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

Nous allons afin désactiver la mise en veille du wifi. Tapez :

sudo crontab -e

Ajoutez à la fin :

@reboot              sudo iwconfig wlan0 power off

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

 

Redémarrez le Rasberry :

sudo reboot

Je vous invite pour la prochaine nuit à laisser votre Raspberry allumé et juste connecté en WIFI pour que demain matin vous puissiez tester s’il répond bien à la commande « ping 192.161.1.123 ». Dans le cas contraire il faudra faire des recherches pour résoudre le problème car il vous sera difficile de le commander à distance de manière fiable.

 

a)     Comment désactiver la carte Wifi intégrée du Raspberry P3 (optionnel) ?

Pourquoi ? Lorsque j’ai installé la librairie « screen » (voir plus bas), mon terminal au bout d’un certain temps ne répondait plus si j’étais en Wifi. La faute à screen ou à la carte Wifi de mon Raspberry PI3 qui chauffe ? Je ne sais pas en tout cas je n’avais de problème avec le câble Ethernet. J’ai donc désactivé la carte Wifi intégrée du PI3 et mis à la place une bonne vieille carte Wifi USB Edimax préconisée pour les Pi B+ et PI 2 (et je n’ai pas eu besoin de refaire les paramétrages Wifi ci-dessus).

Si vous avez ce genre de problème il faudra faire la manipulation suivante (vivement conseillé) :

Tapez :

sudo nano /etc/modprobe.d/raspi-blacklist.conf

Et ajoutez les lignes suivantes :

blacklist brcmfmac

blacklist brcmutil

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

Et redémarrez le Raspberry

sudo reboot

Après le redémarrage, la commande ifconfig –a ne devrait pas afficher de ligne commençant par WLAN0

 

Pour le paramétrage de votre carte Wifi USB, je vous laisse chercher comment la paramétrer (si besoin bien sûr).

 

 

F.    Créer un partage pour Windows avec Samba

Pour le développement des programmes Python et l’échange de fichiers j’ai créé un partage ‘samba’ qui permet l’accès à un dossier de la carte SD depuis Windows. Et oui je suis Windowsien, on ne se refait pas.

Installation de Samba

Tapez :

sudo apt-get update

sudo apt-get install samba samba-common-bin

 

Après l’installation nous allons paramétrer Samba. Tapez :

sudo nano /etc/samba/smb.conf

              

Parcourez le fichier à la recherche des lignes suivantes et vérifiez que ces paramètres suivants définis et activés (enlevez le # devant la ligne si besoin) :

workgroup = WORKGROUP

wins support = yes

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

 

On va créer le dossier de notre réalisation et le partager. Tapez :

mkdir ~/portailpi

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old

sudo nano /etc/samba/smb.conf

                              

Ajouter à la fin du fichier les lignes suivantes :

[PortailPi]

 comment=Partage PortailPi

 path=/home/pi/portailpi

 browseable=Yes

 writeable=Yes

 only guest=no

 create mask=0777

 directory mask=0777

 public=no

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

Et enfin nous allons autoriser l’utilisateur ‘pi’ à se connecter au Rapsberry avec son mot de passe (qui par défaut je le rappelle est ‘raspberry’) :

sudo smbpasswd -a pi

et tapez deux fois (en aveugle) le mot de passe ‘raspberry’.

 

Redémarrez le Raspberry :

sudo reboot

 

 

Enfin testez l’accès au partage depuis Windows en tapant dans l’explorateur son adresse IP que vous avez noté plus haut : \\192.168.1.123\portailpi; Saisissez le nom d’utilisateur / mot de passe (pi / raspberry) et cochez la case pour les mémoriser.

 

 


 

2)    Installation, paramétrage des librairies Python

A.    Python3.5 & librairies pour Python 3.5

(J’ai préféré utiliser python 3.5 à la place du python 2.7 préinstallé et qui est vieux. Cela m’a bien compliqué les choses (erreurs de compilation des librairies  + recherches de solutions, abandon d’autres qui n’étaient plus supportées sous Python 3.5)).

 

Python 3.5.1 (prévoir une demi-heure environ…la phase « make » est longue)

sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev

sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev

sudo apt-get install libssl-dev openssl

cd ~

wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz

tar -zxvf Python-3.5.1.tgz

cd Python-3.5.1

./configure

make

sudo make install

python3.5 --version

Si tout s’est bien passé (« Python 3.5.1 » affiché) on fait du ménage :

cd ~

rm Python-3.5.1.tgz

sudo rm Python-3.5.1/* -Rf

rm Python-3.5.1 -Rf

 

Pip

sudo apt-get install python3-requests python3-pip

sudo pip3 install --upgrade pip

 

RPi pour Python3

sudo apt-get install python3-rpi.gpio

sudo pip3 install rpi.gpio

 

B.    RPIO

(Librairie pour gérer les GPIO et des interruptions)

Installation :

sudo apt-get install python-dev python3-dev python-setuptools python3-setuptools

sudo easy_install -U RPIO

sudo easy_install3 -U RPIO

 

C.    PIGPIO

(Librairie pour gérer les GPIO et faire du PWM hardware)

Installation                        

cd ~

wget abyz.co.uk/rpi/pigpio/pigpio.zip
unzip pigpio.zip
cd PIGPIO
make
sudo make install

cd ~

rm pigpio.zip

sudo rm PIGPIO/* -Rf

rm PIGPIO -Rf

 

Le démon de la librairie PIGPIO (pigpiod) nécessaire à notre programme doit être lancé automatiquement au démarrage du Raspberry. Tapez :

sudo crontab -e

(Si demandé, choisissez le choix « 2 (nano) »)

Ajoutez à la fin du fichier :

@reboot              /usr/local/bin/pigpiod

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

Redémarrez le Raspberry Pi

sudo reboot

 

D.    FLASK

(Librairie pour gérer la partie « site internet » pour commander le portail)

Installation

sudo pip install flask

sudo pip3 install flask

sudo pip install flask-bootstrap
sudo pip3 install flask-bootstrap

sudo pip install flask_login

sudo pip3 install flask_login

 

E.    INIPARSE

(Librairie pour gérer les fichiers .INI)

Installation                                          

cd ~

sudo apt-get install python-iniparse python3-six

wget http://ftp.us.debian.org/debian/pool/main/p/python-iniparse/python3-iniparse_0.4-2.2_all.deb

sudo dpkg -i python3-iniparse_0.4-2.2_all.deb

rm python3-iniparse_0.4-2.2_all.deb

 

F.    CURSES

(Librairie pour gérer du multifenêtrage dans un terminal et une gestion des touches clavier sans mise en pause du programme)

Installation

sudo apt-get install libncurses5-dev libncursesw5-dev

 

G.    SCREEN

(Librairie pour lancer des applications dans un terminal et laisser ce terminal fonctionner en tâche de fond, pouvoir fermer le terminal sans fermer les applications lancées, retrouver l’écran du terminal dans une autre session terminal. – Habituellement si on ferme une session de terminal on ferme également les programmes lancés dedans. Très pratique pour retrouver l’écran de gestion du portail lancé au démarrage)

Installation

sudo apt-get install screen

 

NB :

Pour afficher les screens en cours :

sudo screen -ls

Pour revenir vers un screen (ici le screen du portail) :

sudo screen –dr PORTAIL_SCR

 

Pour se détacher du screen courant sans l’arrêter et en avoir un nouveau :

Tapez la séquence de touches : Ctr l +a puis d

 

 

3)    Autres réglages

A.    Désactivation du Swap

Nous allons désactiver le Swap disque qui écrit régulière sur la carte SD et à la longue la vieillie prématurément.

                Tapez :

sudo dphys-swapfile swapoff

sudo dphys-swapfile uninstall

sudo update-rc.d dphys-swapfile remove

 

B.    TmpFS

Ici aussi pour préserver la durée de vie de la carte SD, nous allons mettre les dossiers temporaires et log en RAM.

Tapez :

sudo nano /etc/fstab

 

Ajoutez à la fin les lignes suivantes :

tmpfs    /tmp               tmpfs  defaults,noatime,nosuid    0 0

tmpfs    /var/tmp           tmpfs  defaults,noatime,nosuid    0 0

tmpfs    /var/log           tmpfs  defaults,noatime,nosuid,mode=0755    0 0

tmpfs    /var/lock          tmpfs  defaults,noatime,mode=0755 0 0

tmpfs    /var/spool/mqueue  tmpfs  defaults,noatime,nosuid,mode=0700,gid=12    0 0

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

 

C.    Purge des fichiers log du programme

Nous allons garder seulement les deux derniers mois des logs du programme. La purge se fait tous les jours à 1h.

Tapez :

sudo crontab -e

 

Ajoutez à la fin la ligne suivante :

00 01 * * *      sudo find /home/pi/portailpi/logs/* -mtime +60 -exec rm {} ;

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

 

4)    Installation des programmes python

A.    Copie des programmes

 

·         Téléchargez sur votre bureau les dernières sources de PortailPi : Sources-PortailPi-Dernieres.zip

·         Copiez le fichier zip dans le dossier partagé de la carte SD du Raspberri Pi par le réseau (adresse \\192.168.1.123\PortailPi)

·         Une fois la copie terminée, il faut dézipper le fichier copié. Dans le terminal SSH (KiTTY), tapez :

Tapez :

cd /home/pi/portailpi/

unzip -o Sources-PortailPi-Dernieres.zip

 

·         La décompression étant terminée, il faut rendre le fichier portail exécutable. Tapez :

sudo chmod +x /home/pi/portailpi/portail

 

B.    Génération des clés et certificats SSL

L’interface WEB  de commande est par défaut en HTTPS afin que les identifiants et mots de passe ne circulent pas en clair sur la toile.  
NB : les deuxièmes et troisièmes ligne sont longues à s’exécuter…
Patientez…

cd /home/pi/portailpi/

sudo apt-get install libffi-dev

sudo pip install pyopenssl

sudo pip3 install pyopenssl

openssl genrsa -out portailpi.key 4096

openssl req -new -key portailpi.key -out portailpi.crt

openssl x509 -req -days 7300 -in portailpi.crt -signkey portailpi.key -out portailpi.cert

 

 

C.    Scripts de lancement automatique

Nous allons afin lancer le script « portail » au démarrage du PI. Il lance le gestionnaire du portail et l’interface WEB. Tapez :

sudo crontab -e

Ajoutez à la fin :

@reboot              /home/pi/portailpi/portail start

Enregistrez et quittez (Ctrl+O puis Entrée puis Ctrl+X)

 

5)    Changement du mot de passe du Raspberry PI

Notre Raspberry PI étant connecté au WEB, il est prudent de redéfinir le mot de passe par défaut (raspberry) que tout le monde connait par un mot de passe personnel. Choisissez un mot de passe complexe (minuscules + majuscules + chiffres + ponctuation), par exemple Mon-Raspberry-2016

Tapez :

sudo raspi-config

·         Choisissez « 2 Change User Password».

·         Faites « Ok »…

·         Entrez le nouveau mot de passe (attention il ne s’affiche pas, vous tapez en aveugle, ne vous trompez pas), validez avec la touche Entrée

·         Entrez de nouveau le mot de passe validez avec la touche Entrée

·         Sélectionnez « Ok ».   

·         Quittez raspi-config avec la touche Echap

 

Vous pourrez également changer le mot de passe ‘Samba’ comme décrit dans le paragraphe « Créer un partage pour Windows avec Samba »

 

6)    Paramétrage de votre box Internet

Bien que cette réalisation électronique soit prévue pour être commandée par un smartphone au travers d’une interface HTTP(S), cette fonctionnalité n’est pas obligatoire. Les boutons, claviers et télécommandes classiques seront alors utilisés. Donc passez ce paragraphe si vous n’êtes pas intéressé par la commande du portail avec votre smartphone.

NB : Demandez à votre fournisseur d’accès internet si l’adresse IP de votre box est « fixe ». Dans le cas contraire, il faudra passer par un service de DNS Dynamique gratuit ou payant et surtout paramétrer (dans www.py) un fonctionnement de type HTTP et non HTTPS car sinon il faudra ajouter une exception dans le navigateur à chaque changement d’IP WAN (les certificats HTTPS générés au paragraphe « Génération des clés et certificats SSL » étant auto-signés (mais gratuits)).

Afin d’accéder à l’interface WEB de la gestion du portail depuis votre smartphone, vous devez rediriger dans votre box internet le port 8080 vers l’adresse IP de votre Raspberry (192.168.1.123). (cf. paragraphe Petit rappel pour les néophytes (initiation aux adresses IP)). Si le port 8080 est déjà utilisé vous pouvez en mettre un autre mais il faudra également le modifier dans www.py.

Notez également l’adresse IP WAN de votre box (par exemple en allant par exemple sur www.monip.org). C’est cette adresse qu’il faudra mémoriser dans votre smartphone (sous la forme https://IPWAN:8080 ou http://IPWAN:8080.

 

7)    Premiers essais

A.    Test de la configuration du Raspberry Pi

Voilà vous avez fini le paramétrage du Raspberry Pi. Pour les premiers essais vous n’êtes pas obligé de connecter la carte électronique (c’est même recommandé histoire de contrôler qu’on a bien réalisé les choses).

Après avoir allumé votre Raspberry, lancer dans un terminal SSH :

cd /home/pi/portailpi/

afin de vous placer dans le dossier de notre programme. Dans tout ce qui suit nous supposerons que nous sommes positionnés dans ce dossier.

Il y a quelques commandes et séquences clavier importantes à retenir pour notre réalisation :

a)     Commande ./portail show

./portail show

Affiche l’écran du gestionnaire du portail (le ‘screen’ du portail – souvenez-vous de la librairie ‘screen’ vue plus haut).
A noter que l’écran du ‘screen’  du portail doit avoir une taille minimum de 80 x 25 caractères. En dessous cela plante le programme. Donc attention au redimensionnement de la fenêtre du terminal !!!

+---[ Evènements ]-------------------------------------------------------------+

|16/11/24 11:32:51 Démarrage du moteur pour ouverture                          |

|16/11/24 11:32:47 Ouverture du portail                                        |

|16/11/24 11:32:37 Arrêt du moteur                                             |

|16/11/22 15:17:07 Démarrage OK, portail en fonction...                        |

|16/11/22 15:17:05 Lecture du fichier INI                                      |

|16/11/22 15:17:05 Démarrage du programme...                                   |

|16/11/22 15:17:05 Python version 3.5.1                                        |

|16/11/22 15:17:05 ------ Démarrage du programme ------                        |

|                                                                              |

|                                                                              |

+------------------------------------------------------------------------------+

+---[ Etat du portail ]----------------+---[ Charge du programme ]-------------+

|Entrouvert                            |Charge uP Min.: 0.0019 s0 s            |

|En cours d'ouverture ( 17 s)          |Charge uP Moy.: 0.0020 s               |

|16/11/24  11:33:51                    |Charge uP Max.: 0.0031 s               |

+--------------------------------------+---------------------------------------+

+---[ Barrière infrarouge ]------------+---[ Surcharge moteur ]----------------+

|Activée / Eteinte                     |Activée (seuil = 1.01 V)               |

|                                      |Echecs Min.:    0                      |

|                                      |Echecs Moy.:    0                      |

|                                      |Echecs Max.:    0                      |

+--------------------------------------+---------------------------------------+

Pour quitter l'écran tapez la séquence de touches   Ctrl+a d

Pour quitter un ‘screen’ et revenir sur l’écran principal de votre terminal SSH (KiTYY chez nous) souvenez-vous bien de cette séquence de touches : Ctrl+a d (Control a puis d) en minuscules.

Lorsque vous êtes dans le ‘screen’ du portail, certaines touches (en minuscules toujours) permettent de simuler les boutons de commande :

o : Ouverture

f : Fermeture

a : Arrêt

q : Quitter le programme (le portail ne fonctionne plus !!!)

·         Amusez-vous un instant avec ces touches pour voir ce qu’il se passe dans cet écran.

·         Reliez la pin 13 (GPIO17) à la pin 39 (GND), normalement la section [ Etat du portail ] indique maintenant ‘Ouvert’ à la place de ‘Entrouvert’. Déconnectez ensuite les pins 17 et 39.

·         Reliez la pin 15 (GPIO22) à la pin 39 (GND), normalement la section [ Etat du portail ] indique maintenant ‘Ferme à la place de ‘Entrouvert’. Déconnectez ensuite les pins 15 et 39.

Voilà pour les premiers essais, n’oubliez-pas de quitter le ‘screen’ portail (Ctrl a + d)

b)     Commande ./portail showwww

./portail showwww

Affiche le ‘screen’ du gestionnaire internet. Celui-ci communique les ordres venant d’internet au gestionnaire du portail. Il n’y a pas d’interactions humaines à faire dans ce ‘screen’. Des messages d’erreur peuvent apparaitre mais ils sont sans importance.

c)     Commande .portail stop

./portail stop

Arrête (tue) les ‘screens’ du gestionnaire du portail et du gestionnaire internet.

d)     Commande ./portail start

./portail start

Lance (démarre) les ‘screens’ du gestionnaire du portail et du gestionnaire internet.

e)     Commande ./portail restart

./portail restart

Arrête et redémarre les ‘screens’ du gestionnaire du portail et du gestionnaire internet.


 

B.    Test de l’interface Web

·         Affichez le ‘screen’ dans le terminal SSH. Tapez :

./portail show

 

·         Ouvrez sur votre PC un navigateur, par exemple Chrome, et dans la barre d’adresse tapez https://192.168.1.123 ou http://192.168.1.123 si vous avez modifié le programme pour qu’il ne soit pas en HTTPS.

·         Si vous êtes en https, un avertissement de sécurité (site non fiable, etc…) doit s’afficher. Confirmez et mémorisez l’exception de sécurité.
 

·         Ensuite vous devriez arriver sur la page d’identification -> Identifiez-vous (Identifiant = Fred, Mot de passe =123)


·         Enfin vous devriez arriver sur la page du gestionnaire internet. Votre portail est maintenant un ‘objet connecté’.


Amusez-vous quelques minutes avec les boutons de l’interface WEB, normalement les cadres [ Evènements ] et [ Etat du portail ] du terminal SSH doivent interagir avec vos ordres. Magique non ?

Il ne vous reste plus qu’à faire de même avec votre smartphone mais avec l’adresse IP WAN de votre box internet.

A noter que la page se rafraichit toutes les minutes en temps normal, et toutes les deux secondes lorsque le portail est actionné.

 

8)    Téléchargements

 

Cette documentation (format Word)

 

Quelques livres d’initiation au langage Python utilisé par le programme. Dont un Ecrit par Vincent Le Goff, un travail extraordinaire pour un non-voyant. Chapeau bas.

Livres Python

 

Dès fois que les liens se brisent chez Mega.nz voici un le lien de tous fichiers des dossiers :

Téléchargements

 

9)    Liens

 

La librairie PiGPIO pour gérer les GPIO, le PWM, etc..

Calcul de lissage du réseau RC pour la surcharge moteur

Une explication sur le PWM permettant de faire varier la vitesse du moteur. Attention dans notre programme c’est la librairie PiGPIO et non pas GPIO qui est utilisée. Elle permet des fréquences beaucoup plus élevées sans solliciter le processeur du Raspberry (PWM hardware).