Vous n’avez pas le droit de modifier cette page, pour la raison suivante :
Texte libre:
De {} Aller à : [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#mw-head navigation], [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#p-search rechercher] == Sommaire == * [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Notes_d.27introduction 1 Notes d'introduction] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Objectif_de_cette_page 1.1 Objectif de cette page] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Sp.C3.A9cificit.C3.A9s_techniques 1.2 Spécificités techniques] * [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Configurer_le_Raspberry_Pi 2 Configurer le Raspberry Pi] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Pr.C3.A9parer_la_carte_SD 2.1 Préparer la carte SD] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Flasher_la_carte_en_utilisant_l.27outil_Etcher_avec_Linux.2C_Mac_OS_ou_Windows 2.1.1 Flasher la carte en utilisant l'outil Etcher avec Linux, Mac OS ou Windows] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Flasher_la_carte_en_utilisant_l.27outil_dd_avec_Linux_ou_Mac_OS 2.1.2 Flasher la carte en utilisant l'outil dd avec Linux ou Mac OS] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Configurer_le_Raspberry_Pi_pour_une_connexion_distante 2.2 Configurer le Raspberry Pi pour une connexion distante] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Avec_un_.C3.A9cran_hdmi.2C_un_r.C3.A9seau_wifi_et_un_clavier 2.2.1 Avec un écran hdmi, un réseau wifi et un clavier] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#.28Linux_ou_Mac_OS.29_Sans_.C3.A9cran.2C_sans_clavier.2C_avec_un_r.C3.A9seau_wifi_et_un_ordinateur 2.2.2 (Linux ou Mac OS) Sans écran, sans clavier, avec un réseau wifi et un ordinateur] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#.28Windows.29_Sans_.C3.A9cran.2C_sans_clavier.2C_avec_un_cable_ethernet.2C_un_r.C3.A9seau_wifi_et_un_ordinateur 2.2.3 (Windows) Sans écran, sans clavier, avec un cable ethernet, un réseau wifi et un ordinateur] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Mettre_.C3.A0_jour_les_logiciels 2.3 Mettre à jour les logiciels] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Changer_le_mot_de_passe_de_l.27utilisateur_.5Bfacultatif.5D 2.4 Changer le mot de passe de l'utilisateur [facultatif]] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Installer_et_configurer_Samba_.5Bfacultatif.5D 2.5 Installer et configurer Samba [facultatif]] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Installer_et_configurer_un_bureau_.C3.A0_distance_.5Bfacultatif.5D 2.6 Installer et configurer un bureau à distance [facultatif]] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Installer_le_serveur_du_bureau_.C3.A0_distance_sur_le_raspberry 2.6.1 Installer le serveur du bureau à distance sur le raspberry] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#.28Linux.29_Se_connecter_via_l.27ordinateur_client 2.6.2 (Linux) Se connecter via l'ordinateur client] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#.28Mac_OS.29_Se_connecter_via_l.27ordinateur_client 2.6.3 (Mac OS) Se connecter via l'ordinateur client] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#.28Windows.29_Se_connecter_via_l.27ordinateur_client 2.6.4 (Windows) Se connecter via l'ordinateur client] * [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Lire_une_vid.C3.A9o 3 Lire une vidéo] * [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Cr.C3.A9er_des_scripts_bash_et_automatiser_leur_ex.C3.A9cution 4 Créer des scripts bash et automatiser leur exécution] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Cr.C3.A9er_un_script_de_base_qui_s.27ex.C3.A9cutera_.C3.A0_chaque_d.C3.A9marrage_du_raspberry 4.1 Créer un script de base qui s'exécutera à chaque démarrage du raspberry] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Ins.C3.A9rer_du_texte_dans_un_fichier 4.1.1 Insérer du texte dans un fichier] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Cr.C3.A9er_un_fichier_contenant_la_commande_d.27insertion_du_texte 4.1.2 Créer un fichier contenant la commande d'insertion du texte] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Ex.C3.A9cuter_le_script_cr.C3.A9.C3.A9_.C3.A0_chaque_d.C3.A9marrage_du_raspberry 4.1.3 Exécuter le script créé à chaque démarrage du raspberry] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Cr.C3.A9er_un_script_d.27envoi_d.27email_qui_s.27ex.C3.A9cutera_.C3.A0_chaque_connexion_au_wifi 4.2 Créer un script d'envoi d'email qui s'exécutera à chaque connexion au wifi] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Installer_et_configurer_les_outils_n.C3.A9cessaires 4.2.1 Installer et configurer les outils nécessaires] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Envoyer_un_mail_via_une_ligne_de_commande 4.2.2 Envoyer un mail via une ligne de commande] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Cr.C3.A9er_un_fichier_contenant_la_commande_d.27envoi_d.27un_email 4.2.3 Créer un fichier contenant la commande d'envoi d'un email] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Ex.C3.A9cuter_le_script_cr.C3.A9.C3.A9_.C3.A0_chaque_connexion_au_r.C3.A9seau_wifi 4.2.4 Exécuter le script créé à chaque connexion au réseau wifi] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Planifier_l.27ex.C3.A9cution_d.27un_script_avec_crontab 4.3 Planifier l'exécution d'un script avec crontab] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Convertir_un_script_en_d.C3.A9mon_avec_systemd 4.4 Convertir un script en démon avec systemd] * [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Convertir_son_raspberry_en_point_d.27acc.C3.A8s_wifi 5 Convertir son raspberry en point d'accès wifi] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Installer_et_configurer_hostapd_et_dnsmasq 5.1 Installer et configurer hostapd et dnsmasq] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Partager_la_connexion_Internet_entre_deux_interfaces_r.C3.A9seau 5.2 Partager la connexion Internet entre deux interfaces réseau] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Installer_et_configurer_nginx 5.3 Installer et configurer nginx] * [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Exemples_de_scripts_python 6 Exemples de scripts python] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Variables_et_input 6.1 Variables et input] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Import_d.27un_fichier_texte_et_boucle_sur_liste 6.2 Import d'un fichier texte et boucle sur liste] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Capture_d.27images_avec_la_raspicam 6.3 Capture d'images avec la raspicam] * [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Le_Raspberry_et_les_ports_GPIO 7 Le Raspberry et les ports GPIO] ** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Contr.C3.B4ler_une_prise_Chacon_DIO 7.1 Contrôler une prise Chacon DIO] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Voir_le_sch.C3.A9ma_des_ports_GPIO 7.1.1 Voir le schéma des ports GPIO] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Brancher_un_.C3.A9metteur_RF433MHZ_au_Raspberry 7.1.2 Brancher un émetteur RF433MHZ au Raspberry] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Compiler_le_programme_C.2B.2B_de_contr.C3.B4le_de_la_prise 7.1.3 Compiler le programme C++ de contrôle de la prise] *** [http://curlybraces.be/wiki/index.php/Ressources::RaspberryPi#Configurer_une_prise_Chacon_avec_le_programme_compil.C3.A9 7.1.4 Configurer une prise Chacon avec le programme compilé] = Notes d'introduction = === Objectif de cette page === Cette page a pour objectif de rassembler différentes "recettes" techniques propres à l'utilisation d'un Raspberry Pi. Elle constitue un support pour les cours et formations relatifs aux Raspberry Pi donnés notamment à l'ERG (Ecole de Recherche Graphique, Bruxelles) et à iMAL (Center for digital cultures and technology). Si beaucoup de ces recettes peuvent convenir à d'autres appareils et d'autres systèmes d'exploitation, cette page se focalise sur des manipulations précises liées à une version précise d'un appareil précis (qui utilise un système d'exploitation précis), en l'occurence l'appareil et le système d'exploitation énoncés ci-dessous. === Spécificités techniques === Les recettes présentes sur cette page sont liées au Raspberry Pi 3B ou 3B+, avec le système d'exploitation Raspbian Stretch. = Configurer le Raspberry Pi = == Préparer la carte SD == * Télécharger la dernière version de Raspbian ici: [https://www.raspberrypi.org/downloads/raspbian/ [1]] === Flasher la carte en utilisant l'outil Etcher avec Linux, Mac OS ou Windows === * Télécharger Etcher ici: [https://etcher.io/ [2]] * Lancer Etcher * Insérer la carte SD dans l'ordinateur (ou dans un lecteur de carte externe) * Sélectionner l'image disque de Raspbian téléchargée * Sélectionner le disque à flasher * Cliquer sur "Flash" === Flasher la carte en utilisant l'outil dd avec Linux ou Mac OS === * Décompresser le fichier zip contenant l'image de Raspbian à flasher sur la carte. Le fichier résultant doit avoir l'extension .img. * Ouvrir le terminal de l'ordinateur * Identifier les lecteurs de disques connectés à l'ordinateur <pre class="de1">lsblk</pre> * Insérer la carte sd et lancer à nouveau la commande lsblk. Un élément supplémentaire devrait apparaitre, il s'agit de la carte sd, dont la référence est affichée (exemple: /dev/mmcblk0) * Insérer la commande suivante en prenant soin de remplacer l'adresse de l'image de Raspbian (après if=) et l'adresse de la carte sd (après of=). <pre class="de1">dd bs=4M if=2018-04-18-raspbian-stretch.img of=/dev/mmcblk0 status=progress conv=fsync</pre> == Configurer le Raspberry Pi pour une connexion distante == Le but ici est de pouvoir accéder au raspberry via un terminal sur un ordinateur connecté au même réseau wifi, en indiquant simplement le nom du raspberry sans préciser son adresse ip. Pour que la reconnaissance du nom fonctionne, il faut que le paquet avahi-daemon soit installé sur le raspberry (c'est le cas par défaut pour les versions les plus récentes de raspbian). Et que "bonjour" (windows) ou avahi-daemon (linux) soit installé sur l'ordinateur. === Avec un écran hdmi, un réseau wifi et un clavier === * Brancher l'écran, brancher le clavier, connecter la prise d'alimentation au raspberry. * Ouvrir le terminal * Naviguer jusqu'au dossier "wpa_supplicant" du raspberry <pre class="de1">cd /etc/wpa_supplicant</pre> * Lister le contenu du dossier à l'aide de la commande <pre class="de1">ls</pre> Le fichier wpa_supplicant.conf devrait apparaitre. * Modifier ce fichier en tapant <pre class="de1">sudo nano wpa_supplicant.conf</pre> * Dans l'éditeur qui vient de s'ouvrir, ajouter à la fin: <pre>network={ ssid="réseau wifi" psk="mot de passe wifi" }</pre> * Sauvegarder et quitter (Ctrl + x) * Naviguer jusqu'au dossier "etc" de la partition root de la carte SD <pre class="de1">cd /media/utilisateur/root/etc/</pre> * Modifier le fichier "hosts" en tapant <pre class="de1">sudo nano hosts</pre> * Modifier le nom du raspberry à la fin du fichier, donc remplacer <pre>127.0.1.1 raspberrypi</pre> par <pre>127.0.1.1 lenomdevotreraspberry</pre> * Sauvegarder et quitter (Ctrl + x) * Modifier le fichier "hostname" en tapant <pre class="de1">sudo nano hostname</pre> * Modifier le nom du raspberry à la fin du fichier, donc remplacer <pre>raspberrypi</pre> par <pre>lenomdevotreraspberry</pre> * Sauvegarder et quitter (Ctrl + x) * Redémarrer le raspberry avec la commande <pre class="de1">sudo reboot</pre> === (Linux ou Mac OS) Sans écran, sans clavier, avec un réseau wifi et un ordinateur === * Insérer la carte SD du raspberry dans l'ordinateur * Avec le terminal, naviguer à la racine de la partition "boot" de la carte SD <pre class="de1">cd /media/utilisateur/boot/</pre> * Ajouter un fichier nommé "ssh" à cet endroit en root <pre class="de1">sudo touch ssh</pre> * Naviguer ensuite jusqu'au dossier "wpa_supplicant" de la partition "rootfs" de la carte SD <pre class="de1">cd /media/utilisateur/rootfs/etc/wpa_supplicant</pre> * Lister le contenu du dossier à l'aide de la commande <pre class="de1">ls</pre> Le fichier wpa_supplicant.conf devrait apparaitre. * Modifier ce fichier en tapant <pre class="de1">sudo nano wpa_supplicant.conf</pre> * Dans l'éditeur qui vient de s'ouvrir, ajouter à la fin: <pre>network={ ssid="réseau wifi" psk="mot de passe wifi" }</pre> * Sauvegarder et quitter (Ctrl + x) * Naviguer jusqu'au dossier "etc" de la partition rootfs de la carte SD <pre class="de1">cd /media/utilisateur/root/etc/</pre> * Modifier le fichier "hosts" en tapant <pre class="de1">sudo nano hosts</pre> * Modifier le nom du raspberry à la fin du fichier, donc remplacer <pre>127.0.1.1 raspberrypi</pre> par <pre>127.0.1.1 lenomdevotreraspberry</pre> * Sauvegarder et quitter (Ctrl + x) * Modifier le fichier "hostname" en tapant <pre class="de1">sudo nano hostname</pre> * Modifier le nom du raspberry à la fin du fichier, donc remplacer <pre>raspberrypi</pre> par <pre>lenomdevotreraspberry</pre> * Sauvegarder et quitter (Ctrl + x) * Ejecter la carte SD de l'ordinateur, insérer la carte dans le raspberry et connecter la prise d'alimentation au raspberry. Le raspberry devrait se connecter automatiquement au réseau wifi au prochain démarrage * Pour pouvoir y accéder via l'ordinateur taper dans le terminal "ssh pi@lenomdevotreraspberry.local" * Le mot de passe pour se connecter est par défaut "raspberrypi" === (Windows) Sans écran, sans clavier, avec un cable ethernet, un réseau wifi et un ordinateur === * Sur l'ordinateur portable, installer "Bonjour for windows" (à télécharger à l'adresse https://support.apple.com/kb/DL999) * Sur l'ordinateur portable, installer le client SSH "Putty" (à télécharger à l'adresse https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe) * Raccorder le cable ethernet à l'ordinateur portable et au raspberry. * Connecter la prise d'alimentation au raspberry. * Ouvrir putty et entrer "raspberrypi.local" dans le champ "hostname". * Cliquer sur "Open". Un terminal devrait s'ouvrir. * Taper "pi" après la mention "login as" * Taper "raspberrypi" comme mot de passe * Naviguer jusqu'au dossier "wpa_supplicant" du raspberry <pre class="de1">cd /etc/wpa_supplicant</pre> * Lister le contenu du dossier à l'aide de la commande <pre class="de1">ls</pre> Le fichier wpa_supplicant.conf devrait apparaitre. * Modifier ce fichier en tapant <pre class="de1">sudo nano wpa_supplicant.conf</pre> * Dans l'éditeur qui vient de s'ouvrir, ajouter à la fin: <pre>network={ ssid="réseau wifi" psk="mot de passe wifi" }</pre> * Sauvegarder et quitter (Ctrl + x) * Naviguer jusqu'au dossier "etc" <pre class="de1">cd /etc/</pre> * Modifier le fichier "hosts" en tapant <pre class="de1">sudo nano hosts</pre> * Modifier le nom du raspberry à la fin du fichier, donc remplacer <pre>127.0.1.1 raspberrypi</pre> par <pre>127.0.1.1 lenomdevotreraspberry</pre> * Sauvegarder et quitter (Ctrl + x) * Modifier le fichier "hostname" en tapant <pre class="de1">sudo nano hostname</pre> * Modifier le nom du raspberry à la fin du fichier, donc remplacer <pre>raspberrypi</pre> par <pre>lenomdevotreraspberry</pre> * Sauvegarder et quitter (Ctrl + x) * Redémarrer le raspberry avec la commande <pre class="de1">sudo reboot</pre> * Fermer putty, débrancher le cable ethernet. * Lorsque le raspberry a redémarré, ouvrir à nouveau putty et entrer "lenomdevotreraspberry.local" dans le champ "hostname". * Cliquer sur "open", le terminal devrait s'ouvrir à nouveau. == Mettre à jour les logiciels == * Dans le terminal, taper <pre class="de1">sudo apt-get update</pre> La commande met à jour la base de données locale des logiciels disponibles en téléchargeant les bases de données de paquets dont les adresses se trouvent dans le fichier <code>/etc/apt/sources.list</code> * Taper ensuite <pre class="de1">sudo apt-get upgrade</pre> pour mettre à jour tous les logiciels installés sur le raspberry. * Taper enfin <pre class="de1">sudo apt-get dist-upgrade</pre> pour mettre à jour la version de Raspbian si nécessaire. == Changer le mot de passe de l'utilisateur [facultatif] == L'utilisateur par défaut se nomme "pi". Pour changer son mot de passe, taper dans le terminal la commande <pre class="de1">passwd</pre> et suivre les instructions. == Installer et configurer Samba [facultatif] == Samba va permettre de partager les dossiers du raspberry sur le réseau pour pouvoir y accéder via le navigateur de fichiers de votre ordinateur. * Dans le terminal, taper <pre class="de1">sudo apt-get install samba samba-common-bin</pre> * Ouvrir le fichier de configuration de samba en tapant <pre class="de1">sudo nano /etc/samba/smb.conf</pre> * Modifier la ligne <pre>wins support = no</pre> en <pre>wins support = yes</pre> * Ajouter les lignes suivantes à la fin du fichier <pre>[pihome] comment=home pi path=/home/pi browseable=Yes writeable=Yes only guest=no create mask=0775 directory mask=0775 public=no</pre> * Sauver le fichier et quitter (ctrl+x) * Ajouter l'utilisateur pi comme utilisateur samba <pre class="de1">sudo smbpasswd -a pi</pre> == Installer et configurer un bureau à distance [facultatif] == === Installer le serveur du bureau à distance sur le raspberry === * Installer "tightvncserver": <pre class="de1">sudo apt-get install tightvncserver</pre> * Lancer "tightvncserver" <pre class="de1">tightvncserver</pre> Entrer un mot de passe demandé. Le bureau distant a normalement été créé à l'adresse :1, :0 étant l'adresse du bureau par défaut sur le raspberry. * Pour éteindre le bureau par défaut, taper <pre class="de1">service lightdm stop</pre> * Pour éteindre un bureau créé aevec tightvncserver, taper <pre class="de1">vncserver -kill :1</pre> où :1 est l'adresse du bureau que vous désirez arrêter. === (Linux) Se connecter via l'ordinateur client === * Chercher l'application (ou installer via <code>apt-get</code> si nécessaire) "remote desktop viewer" (Vinagre pour Gnome, krdc pour KDE) * Ouvrir l'application et dans le champs "host" taper l'adresse du raspberry suivie de l'adresse de l'écran (exemple: <code>lenomdevotreraspberry.local:1</code>). Spécifier "VNC" comme protocole de connexion et cliquer sur "connect". === (Mac OS) Se connecter via l'ordinateur client === * Dans le menu du Finder, cliquer sur "Aller " puis "Se connecter au serveur", puis entrer l'adresse du raspberry précédée de "vnc://", par exemple: <code>vnc://lenomdevotreraspberry.local:1</code> === (Windows) Se connecter via l'ordinateur client === * Télécharger "tightvnc" à l'adresse http://www.tightvnc.com/download.php et l'installer. * Ouvrir l'application et dans le champs "host" taper l'adresse du raspberry suivie de l'adresse de l'écran (exemple: <code>lenomdevotreraspberry.local:1</code>). Cliquer sur "connect". = Lire une vidéo = Le lecteur vidéo par défaut installé sur Raspbian se nomme omxplayer. Il peut être exécuté à distance, sans nécessairement de session de bureau active sur le raspberry. Pour lire une vidéo, taper dans le terminal: <pre class="de1">omxplayer --loop --no-osd lefichier.mp4</pre> = Créer des scripts bash et automatiser leur exécution = == Créer un script de base qui s'exécutera à chaque démarrage du raspberry == Le script bash que nous allons réaliser envoie du texte dans un fichier à chaque exécution. === Insérer du texte dans un fichier === * Créer un fichier "messages" qui contiendra le texte <pre class="de1">touch messages</pre> * Tester l'envoi de texte dans le fichier <pre class="de1">echo "test" >> messages</pre> * Afficher le contenu du fichier <pre class="de1">cat messages</pre> === Créer un fichier contenant la commande d'insertion du texte === * Créer un nouveau fichier <pre class="de1">nano hello.sh</pre> * Y insérer l'entête qui indique le programme qui doit l'interpréter et la commande <pre class="de1">#!/bin/bash echo "hello" >> /home/pi/messages exit 0</pre> * Sauver et quitter le fichier (ctrl + x) * Rendre le fichier exécutable <pre class="de1">chmod +x hello.sh</pre> * Tester son exécution <pre class="de1">./hello.sh</pre> === Exécuter le script créé à chaque démarrage du raspberry === * Il s'agit de modifier le fichier "/etc/rc.local" pour y ajouter l'adresse du script juste avant la ligne "exit 0" <pre class="de1">sudo nano /etc/rc.local</pre> * La fin du fichier doit ressembler à ceci: <pre class="de1">/home/pi/hello.sh & exit 0</pre> == Créer un script d'envoi d'email qui s'exécutera à chaque connexion au wifi == Le script bash que nous allons réaliser envoie un email à chaque exécution. === Installer et configurer les outils nécessaires === * Installer les paquets nécessaires <pre class="de1">sudo apt-get install mailutils mpack ssmtp</pre> * Configurer ssmtp avec les informations de connexion à un serveur smtp <pre class="de1">sudo nano /etc/ssmtp/ssmtp.conf</pre> Exemple de configuration pour envoyer les mails à partir d'une adresse gmail <pre>root=utilisateur@gmail.com mailhub=smtp.gmail.com:587 hostname=lionel AuthUser=utilisateur@gmail.com AuthPass=motdepasse FromLineOverride=YES UseTLS=YES UseSTARTTLS=YES</pre> * Pour les adresses gmail, il est possible de devoir effectuer des étapes supplémentaires; voir ici: https://support.google.com/mail/answer/78754?hl=en === Envoyer un mail via une ligne de commande === <pre class="de1">echo "Contenu du mail" | mail -s "Titre du mail" destinataire@gmail.com</pre> === Créer un fichier contenant la commande d'envoi d'un email === * Créer un nouveau fichier <pre class="de1">nano email.sh</pre> * Y insérer la commande l'entête qui indique le programme qui doit l'interpréter et la commande d'envoi d'email <pre class="de1">#!/bin/bash echo "Contenu du mail" | mail -s "Titre du mail" destinataire@gmail.com exit 0</pre> * Sauver et quitter le fichier (ctrl + x) * Rendre le fichier exécutable <pre class="de1">chmod +x email.sh</pre> * Tester son exécution <pre class="de1">./email.sh</pre> === Exécuter le script créé à chaque connexion au réseau wifi === Puisque notre script a besoin de la connexion pour fonctionner, il faut qu'il s'exécute au moment où cette connexion est disponnible et non directement au démarrage du raspberry. * Copier le script dans le répertoire "/etc/network/if-up.d" <pre class="de1">sudo mv email.sh /etc/network/if-up.d/email</pre> * Modifier le script pour qu'il n'envoie pas de mail si une autre interface réseau que le wifi se connecte et pour qu'il attende quelques secondes après l'activation du wifi (pour l'obtention d'une adresse ip) avant d'envoyer un email. <pre class="de1">#!/bin/bash if [ "$IFACE" != "wlan0" ];then exit 0 fi sleep 10 echo "Contenu du mail" | mail -s "Titre du mail" destinataire@gmail.com exit 0</pre> == Planifier l'exécution d'un script avec crontab == Crontab permet l'exécution planifiée d'un script, c'est à dire programmer l'exécution d'un script pour qu'elle ait lieu toutes les x minutes/x heures/x jours du mois/x mois/x jours de la semaine. * Pour éditer le crontab de l'utilisateur courant (pi), il faut taper la commande: <pre class="de1">crontab -e</pre> * Chaque ligne de ce fichier correspond à une commande planifiée. Par exemple, pour exécuter toutes les 5 minutes notre script /home/pi/hello.sh, il faut ajouter la ligne <pre>5 * * * * /home/pi/hello.sh</pre> à la fin du fichier. Les règles pour écrire la planification sont indiquées au début du fichier crontab. * Sauver et quitter (ctrl+x) == Convertir un script en démon avec systemd == * Créer un script (ici un script python) qui tournera en boucle <pre class="de1">nano /home/pi/daemon.py</pre> par exemple: <pre class="de1">#!/usr/bin/python # -*- coding: utf-8 -*- from time import sleep try: while True: with open("test.txt", "a") as myfile: myfile.write("patatras ") time.sleep(5) except KeyboardInterrupt: print "goodbye!"</pre> * Créer un nouveau fichier de configuration de systemd <pre class="de1">sudo nano /lib/systemd/system/daemon.service</pre> <pre>[Unit] Description=Test script After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python /home/pi/daemon.py [Install] WantedBy=multi-user.target</pre> * Changer les droits d'accès de ce fichier <pre class="de1">sudo chmod 644 /lib/systemd/system/daemon.service</pre> * Mettre à jour systemd avec ce nouveau fichier <pre class="de1">sudo systemctl daemon-reload sudo systemctl enable daemon.service</pre> * Redémarrer le raspberry <pre class="de1">sudo reboot now</pre> = Convertir son raspberry en point d'accès wifi = Le but est ici de transformer le raspberry pi en un point d'accès wifi accessible sur n'importe quel matériel (smartphone, tablette ou ordinateur), de partager la connexion Internet branchée sur le Raspberry et d'afficher son propre contenu dans le navigateur web de l'appareil connecté. Pour cela, il faut dédier l'interface wifi du Raspberry à la diffusion du réseau. Si l'on veut partager une connexion Internet aux appareils connectés à ce réseau, il faut utiliser une autre interface; soit une clé wifi supplémentaire, soit le port ethernet du Raspberry. == Installer et configurer hostapd et dnsmasq == * Installer "hostapd et dnsmasq", le premier servira à configurer le point d'accès wifi et le second servira à distribuer des adresses ip (via dhcp): <pre class="de1">sudo apt-get install dnsmasq hostapd</pre> * Éteindre les deux services installés (pour modifier leur configuration) <pre class="de1">sudo systemctl stop dnsmasq sudo systemctl stop hostapd</pre> * Configurer l'interface wlan0 pour lui attribuer une ip fixe et l'empêcher de se connecter à un réseau wifi via wpa_supplicant <pre class="de1">sudo nano /etc/dhcpcd.conf</pre> * Ajouter dans le fichier: <pre>interface wlan0 static ip_address=10.10.0.1/24 nohook wpa_supplicant</pre> Où l'adresse ip 10.10.0.1 correspond à l'adresse ip de l'interface qui agira comme serveur dhcp * Sauvegarder le fichier de configuration par défaut de dnsmasq <pre class="de1">sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig</pre> * Créer un nouveau fichier de configuration de dnsmask <pre class="de1">sudo nano /etc/dnsmasq.conf</pre> * Y insérer les lignes suivantes: <pre>interface=wlan0 dhcp-range=10.10.0.2,10.10.0.20,255.255.255.0,24h</pre> Où l'on spécifie que l'interface wifi embarquée sur le Raspberry pourra distribuer des adresses ip à ses clients dans l'intervale entre 10.10.0.2 et 10.10.0.20 * Créer un fichier de configuration, "/etc/hostapd/hostapd.conf" pour le point d'accès wifi <pre class="de1">sudo nano /etc/hostapd/hostapd.conf</pre> et y insérer le contenu suivant (en adaptant le nom du point d'accès et le mot de passe): <pre>interface=wlan0 driver=nl80211 ssid=leNomDuPointDAcces hw_mode=g channel=7 wmm_enabled=0 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=LeMotDePasse wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP </pre> * Indiquer à hostapd le fichier de configuration créé. Ouvrir le fichier "/etc/default/hostapd" <pre class="de1">sudo nano /etc/default/hostapd</pre> Modifier la ligne <code>#DAEMON_CONF=""</code> par <code>DAEMON_CONF="/etc/hostapd/hostapd.conf"</code>. * Démarrer hostapd et dnsmasq <pre class="de1">sudo service hostapd start sudo service dnsmasq start</pre> == Partager la connexion Internet entre deux interfaces réseau == Pour que les appareils clients puissent accéder à Internet via le point d'accès créé, il faut qu'une interface réseau soit connectée à Internet et partage sa connexion avec l'interface wlan0 (qui sert au point d'accès wifi). Pour cela, on utilise un système de traductions d'adresses; le NAT (Network Address Translation). Concrètement, lorsque le client enverra une requête vers le raspberry sur l'interface wlan0, cette dernière transmettra cette requête sur wlan1 qui l'enverra à l'adresse désignée sur Internet en utilisant sa propre adresse IP. L'appareil à cette adresse enverra sa réponse sur wlan1 qui la retransmettra sur wlan0. * Modifier le fichier /etc/systcl.conf pour permettre le port forwarding entre les interfaces <pre class="de1">sudo nano /etc/sysctl.conf</pre> Dans ce fichier, enlever le # devant la ligne <pre>net.ipv4.ip_forward=1</pre> * Puis exécuter la commande suivante <pre class="de1">sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"</pre> == Installer et configurer nginx == * Pour installer nginx, taper <pre class="de1">sudo apt-get install nginx</pre> * Pour modifier la page html par défaut de nginx, créer un fichier index.html à la racine du serveur <pre class="de1">nano /var/www/html/index.html</pre> * Sauver et quitter (ctrl+x) = Exemples de scripts python = == Variables et input == <pre class="de1">#!/usr/bin/python # -*- coding: utf-8 -*- name = raw_input("merci de m'indiquer votre prénom ") print "bonjour %s" % name nb = int(raw_input("merci de m'indiquer un chiffre ")) if nb > 5: print "%d c'est quand même beaucoup %s" % (nb, name) else: print "%d c'est pas grand chose %s" % (nb, name)</pre> == Import d'un fichier texte et boucle sur liste == <pre class="de1">#!/usr/bin/python # -*- coding: utf-8 -*- with open("data.txt", "r") as myfile: data = myfile.read().replace("\n", "") for i, letter in enumerate(data): print i, letter</pre> == Capture d'images avec la raspicam == <pre class="de1">#!/usr/bin/python # -*- coding: utf-8 -*- import picamera from time import sleep camera = picamera.PiCamera() i = 0 try: while True: camera.capture("image%s.jpg"%i) i+=1 sleep(5) except KeyboardInterrupt: print "goodbye!"</pre> = Le Raspberry et les ports GPIO = == Contrôler une prise Chacon DIO == === Voir le schéma des ports GPIO === L'utilitaire gpio permet de voir le schéma des ports sur la raspberry PI, ce qui permet d'identifier les numéros des ports à utiliser, chaque pin ayant un identifiant physique, un numéro de port gpio s'il s'agit d'un port gpio et un numéro "wiring pi". Qui permet de s'y adresser lorsqu'on utilise cette bibliothèque. <pre class="de1">gpio readall</pre> Le résultat de la commande permet de voir que le pin physique 11 correspond au port GPIO17 et au port Wiring PI 0. === Brancher un émetteur RF433MHZ au Raspberry === [[Fichier:Rf433-raspberry.jpg|Rf433-raspberry.jpeg|link=http://curlybraces.be/wiki/Fichier:Rf433-raspberry.jpeg|thumb|none]] Pour notre exemple, nous utilisons donc la pin physique 11, GPIO17, Wiring PI 0. === Compiler le programme C++ de contrôle de la prise === Nous allons utiliser le programme développé par Idleman [http://blog.idleman.fr/raspberry-pi-10-commander-le-raspberry-pi-par-radio/ voir le post du blog], et précisément une version allégée, téléchargeable ici: [http://curlybraces.be/ressources/chacon_send.zip [3]] que nous allons compiler: <pre class="de1">g++ -o chacon_send chacon_send.cpp -lwiringPi</pre> On obtient le fichier exécutable "chacon_send" qui va nous permettre d'allumer et d'éteindre une prise chacon. === Configurer une prise Chacon avec le programme compilé === Les messages envoyés aux prises doivent tous comporter un code unique, mot de passe qui permet de prendre le contrôle de la prise, un identifiant allant de 1 à 3 qui permet de choisir une prise à contrôler si plusieurs prises sont accessibles par le signal, et un message "on" ou "off". Pour définir le mot de passe et l'identifiant de la prise, il faut envoyer à la prise une commande "on" et une commande "off" directement après le branchement contenant ces informations. <pre class="de1">sudo ./chacon_send 0 12325261 1 on sudo ./chacon_send 0 12325261 1 off</pre> Où 0 est le numéro du port Wiring PI, 1234561 le code de la prise que l'on définit et 1 l'identifiant de la prise. Récupérée de « http://curlybraces.be/wiki/index.php?title=Ressources::RaspberryPi&oldid=2304 » __NOTOC__
Enregistrer Prévisualiser Voir les modifications Annuler