Raspberry Pi 3

Je me suis offert il y a quelques temps mon premier Raspberry Pi, un nano PC de la taille d’une carte de crédit !

C’est lui juste en dessous un Raspberry Pi 3 modèle B que j’ai acheté en kit de démarrage complet Vilros sur Amazon à 65€ (le prix a monté un peu depuis) :

Il existe bien sur de nombreux nano PC mais celui-ci est de loin le plus connu pour s’ouvrir à de nombreux projets.

J’ai donc passé quelques heures à configurer mon nouveau jouet et aujourd’hui il est 100% fonctionnel, il me sert de :

  • Serveur multimédia grâce à Plex Media Server ainsi j’ai pu remplacer mon vieux disque dur réseau (NAS) qui peinait beaucoup à lire mes vidéos.
  • Pont (Bridge) pour reconnaître mes objets connectés Belkin Wemo dans l’application Maison (Apple Homekit et accessoires pour le moment compatibles Apple Homekit) ainsi par exemple je peux allumer/éteindre les lampes et les prises à la voix avec Siri ou créer des scénarios du genre quand mon téléphone quitte la zone GPS de ma maison, les équipements doivent s’éteindre ou quand je rentre les lampes du salon s’allument. Si vous ne voyez pas jetez un œil à ce super article de iPhon.fr)
  • Serveur de fichiers Samba pour libérer un peu d’espace mémoire sur mon PC.
  • Serveur web Apache pour faire quelques tests et sauvegardes de mes sites localement.
  • Caméra de surveillance IP en recyclant une webcam que j’ai branché à mon Raspberry Pi.

Le but de cet article est de vous donner les liens des sites qui m’ont permis de réaliser les configurations nécessaires, de les commenter un minimum et pourquoi pas d’échanger un peu dans les commentaires. Attention je ne pourrais être tenu responsable des problèmes ou pannes que vous pourrez rencontrer en réalisant ces tutoriels ! Je vous invite également à utiliser notre ami Google si les explications ne sont pas toujours très claires (bien que je tâcherais d’y remédier si vous me sollicitez dans les commentaires) ou si les commandes ne donnent pas les résultats attendus car selon les versions des programmes il peut y avoir quelques changements à faire (si c’est le cas merci d’avance de m’en informer dans les commentaires).

J’ai commandé un 2nd Raspberry 3 modèle B pour faire d’autres projets sans toucher à mon 1er qui est vite devenu indispensable 😀 J’ai donc renommé la catégorie « iOS / Android » de mon site en « Mobiles / RPi » pour y classer mes futurs tutos Raspberry (RPi) en continuant mes tutos iOS et Android.

C’est parti commençons avant toute chose par comprendre comment marche NOOBS l’utilitaire sur lequel démarre un Raspberry si vous avez acheté un kit contenant une carte mémoire mini SD avec Noobs ou si vous souhaitez l’installer sur une carte mini SD vierge. Pour cela je vous envoie vers l’excellent tutoriel de franboise314.fr.

Avant de commencer quelques astuces :

Clavier en Français AZERTY

Si vous utiliser l’OS Raspbian Light, une fois installé méfiez vous le système démarre en clavier anglais QWERTY donc quand vous vous loguez avec le compte par défaut login pi et mot de passe raspberry vous devrez taper le login pi et le mot de passe rqspberry. Au second redémarrage mon clavier était passé en français AZERTY sinon vous pouvez changer la configuration manuellement :

  • Tapez la commande sudo raspi-config
  • Sélectionnez Internationalisation Options
  • Ensuite Change Keyboard Layout
  • Conservez PC générique 105 touches (intl)
  • Ensuite Français
  • Puis Disposition par défaut pour le clavier
  • Puis Pas de touche « compose »
  • Enfin terminer la configuration avec le bouton Finish (utilisez la touche clavier Tabulation puis les flèches pour y accéder)

Configuration du Wifi

Soit vous l’avez fait précédemment via l’outil NOOBS soit vous suivez les étapes ci-dessous pour le configurer manuellement :

  • Tapez sudo nano /etc/wpa_supplicant/wpa_supplicant.conf (si le fichier est vide c’est que vous avez oublié quelque chose d’ailleurs si c’est le cas en bas de l’écran au centre vous devez lire [ Nouveau Fichier ]) :
  • Ajoutez les lignes ci-dessous en gras :

country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid= »LE_NOM_DE_VOTRE_RESEAU_WIFI »
psk= »Le_mot_de_passe_de_votre_reseau_wifi »
key_mgmt=WPA-PSK
}

  • Touches clavier Ctrl+O pour enregistrer, validez en appuyant sur Entrée puis Ctrl+X pour sortir
  • Tapez la commande sudo reboot pour redémarrer

Affecter une adresse IP Fixe

  • Tapez sudo nano /etc/dhcpcd.conf (si le fichier est vide c’est que vous avez oublié quelque chose d’ailleurs si c’est le cas en bas de l’écran au centre vous devez lire [ Nouveau Fichier ])
  • Ajouter les lignes ci-dessous (attention les 2 dernières adresses des 2 dernières lignes dépendent de votre routeur) :

# configuration ip static pour wlan0
interface wlan0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

  • Touches clavier Ctrl+O pour enregistrer, validez en appuyant sur Entrée puis Ctrl+X pour sortir
  • Tapez la commande sudo reboot pour redémarrer

Activer le serveur SSH et VNC pour vous connecter à distance

C’est bien mignon de brancher tous les câbles et un écran au Raspberry, mais une fois qu’il est configuré pour faire office de serveur par exemple on peut s’affranchir des claviers, souris, écrans pour ne laisser que la connexion électrique si vous optez pour le wifi en connexion réseau (je vous le déconseille en réseau filaire c’est quand même bien plus stable). La connexion à distance va vous permettre aussi d’utiliser le copier/coller vous évitant d’avoir tout à retaper (attention en SSH si vous cherchez le coller c’est juste un clic droit). Enfin la connexion à distance peut vous permettre aussi d’accéder à votre Raspberry depuis l’extérieur de votre réseau local. Pour se connecter à distance vous devez activer le SSH et le VNC (VNC ne nous sera d’aucune utilité si vous n’utilisez pas d’interface graphique comme par exemple sous Raspbian Light) :

  • Tapez la commande sudo raspi-config
  • Sélectionnez Advanced Options
  • Ensuite SSH
  • Acceptez en choisissant Oui puis Ok
  • Sélectionnez de nouveau Advanced Options
  • Ensuite VNC
  • Acceptez en choisissant Oui puis Ok
  • Enfin terminer la configuration avec le bouton Finish (utilisez la touche clavier Tabulation puis les flèches pour y accéder)

Pour vous connecter en SSH il vous faudra simplement le programme PuTTY qui ne nécessite pas d’installation et pour VNC je vous invite à suivre l’excellent tuto sur framboise314.fr.

Maintenant on peut passer aux projets ci-dessous :

Plex Media Server

  • D’abord les liens vers les tutoriels que j’ai utilisé : element14.com pour l’installation de Plex Media Server et vu qu’une bibliothèque multimédia aurait du mal à tenir sur la carte mémoire mini SD j’ai utilisé le tutoriel de framboise314.fr pour transférer le système (sans le boot ou secteur de démarrage car ce n’est pas encore possible de démarrer autrement que sur la carte SD) de la SD vers un disque dur externe USB 3 connecté au port du Raspberry. Ce tutoriel également de framboise314.fr sera nécessaire.
  • Ensuite voilà mes notes commentées pour le transfert du système vers un disque dur externe :
    • sudo fdisk -l pour lister les medias connectés (SD, Clés USB ou HDD externes)
    • Noter sous quel nom est monté le media (sda1 par exemple ou sdb1)
    • Si le disque est en GPT il faut le passer en MBR ou DOS pour cela il faut faire sudo parted /dev/sda puis rm 1 pour supprimer la partition 1 rm 2 pour la seconde partition (on peut utiliser la commande cfdisk voir point suivant pour lister les partitions existantes)… Ensuite il faut faire mktable et indiquer msdos puis sortir avec la commande quit
    • sudo cfdisk /dev/sda permet de lancer l’outil en ligne de commande permettant la configuration des partitions.
    • Supprimer si nécessaire les partitions présentes et créer une partition de type Linux Swap (numéro 82) de 1000 Mo, une partition de type Linux (numéro 83) ou Linux Filesystem et une partition Win95 FAT32 (numéro 0C) ou Microsoft basic data cette dernière sera lisible plus tard sous Windows). Relancer un fdisk -l pour vérifier et noter le nom de la partition Linux.
    • sudo mkfs.ext4 /dev/sda2 pour formater la partition Linux
    • sudo mkswap /dev/sda1 pour formater la partition de Swap rajouter si nécessaire -F pour forcer
    • sudo apt-get install dosfstools pour installer l’outil permettant de formater les partitions Microsoft
    • sudo mkfs.vfat -F 32 /dev/sda3 -n WDF32 pour formater la partition Microsoft
    • cat /boot/cmdline.txt permet de repérer ou est situé le Root File System pour cela on repère par exemple root=/dev/sda1 ou encore root=/dev/mmcblk0p7
    • sudo dd if=/dev/mmcblk0p7 of=/dev/sda2 bs=512 permet de copier toutes les données de mmcblk0p7 vers sda2 par bloc de 512 octets
    • sudo mount -t ext4 /dev/sda2 /home/pi pour monter la partition
    • df encore mais pour vérifier que la partition est montée
    • sudo nano /boot/cmdline.txt pour ouvrir le fichier système indiquant ou est situé le Root File System et on remplace le chemin root par son nouveau situé sur le nouveau media exemple root=/dev/sda2
    • sudo nano /etc/fstab pour ouvrir le fichier système présentant les points de montage automatiques et on duplique la ligne du point de montage actuel. On remplace dans cette nouvelle ligne le nom du point de montage actuel par le nouveau et dans la précédente ligne on ajoute au début le symbole # pour la désactiver. Enfin on indique defaults,ro au niveau de la ligne du point de montage de la carte SD pour qu’elle passe en lecture seule afin qu’elle ne soit pas usée par des écritures mémoire
    • sudo reboot pour redémarrer le raspberry et on observe éventuellement les erreurs qu’il peut y avoir
    • sudo resize2fs /dev/sda2 pour augmenter à la taille maximal la partition suivi d’un df pour contrôler la nouvelle taille
  • Enfin mes notes commentées pour l’installation de Plex Media Server :
    • sudo apt-get install apt-transport-https -y –force-yes pour installer le protocol https.
    • wget -O – https://dev2day.de/pms/dev2day-pms.gpg.key | sudo apt-key add – pour générer une clé d’authentification pour sécuriser les téléchargements.
    • echo « deb https://dev2day.de/pms/ jessie main » | sudo tee /etc/apt/sources.list.d/pms.list
    • sudo apt-get update pour mettre à jour les paquets à télécharger afin d’avoir le paquet d’installation de Plex Media Server
    • sudo apt-get install -t jessie plexmediaserver -y pour installer Plex Media Server
    • sudo reboot pour redémarrer avant de configurer Plex
    • Depuis un navigateur taper l’URL : AdresseIP:32400/web et suivre les instructions
    • sudo chmod 777 -R /var/lib/plexmediaserver/Library pour donner tous les droits sur la bibliothèque de Plex Media Server
    • Je vous invite à suivre le tutoriel dans la partie Serveur de fichiers Samba pour gérer le partage de la bibliothèque Plex

Homebridge

  • D’abord les liens vers les tutoriels que j’ai utilisé : Github.com pour la configuration officielle et Timleland.com
  • Ensuite voilà mes notes commentées :
    • sudo apt-get update pour vérifier si vous avez des mises à jour à télécharger
    • sudo apt-get upgrade pour installer les mises à jour téléchargées
    • g++ -v doit vous renvoyer plusieurs lignes dont la dernière indiquant la version pour moi : gcc version 4.9.2 (Raspbian 4.9.2-10)
    • Installation de Node.js avec les commandes suivantes :
      • curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
      • sudo apt-get install -y nodejs
      • node -v doit vous donner la version de Node qui a été installé pour moi : v6.9.4
    • sudo apt-get install libavahi-compat-libdnssd-dev pour installer Avahi et les autres dépendances
    • Installation de Homebridge et des dépendances :
      • sudo npm install -g –unsafe-perm homebridge hap-nodejs node-gyp
      • cd /usr/lib/node_modules/homebridge/
      • sudo npm install –unsafe-perm bignum
      • cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns
      • sudo node-gyp BUILDTYPE=Release rebuild
    • homebridge pour démarrer le programme et vous devez voir apparaître quelques lignes avec plus bas une étiquette blanche et un code à l’intérieur (notez le bien ainsi que le numéro de port à la fin de la dernière ligne)
    • Ouvrez l’application Maison sur votre iPhone ou autre iDevice, ajoutez un accessoire avec le + en haut à droite. Dans les accessoires détectés vous devez avoir un accessoire portant le nom Homebridge. Sélectionnez le, un message vous informe que cet accessoire n’est pas certifié bla bla bla appuyez sur Poursuivre l’ajout, puis appuyez sur Saisir le code manuellement et saisissez le code précédemment relevé dans l’étiquette blanche.
    • Il faut maintenant installer le plugin correspondant à votre objet connecté. Allez sur le site npmjs.com et remplacez dans le champ de recherche plugin par la marque ou le nom de l’objet connecté par exemple pour moi homebridge-wemo. Vous pouvez en trouver plusieurs à vous de tester et de trouver ceux qui marcheront !
    • Je continue avec ma prise connectée et ce plugin pour wemo en installant sur mon Raspberry avec la commande sudo npm install -g homebridge-platform-wemo
    • Je dois maintenant créer un fichier config.json avec les informations décrites dans la partie Configuration de la fiche du plugin mais également à partir du fichier d’exemple fourni sur github.com
    • Le champ d’exemple « username »: « CC:22:3D:E3:CE:30 » correspond à l’adresse MAC de votre Raspberry pour la trouver utilisez la commande ifconfig et repérez ce qui se trouve après HWaddr de l’interface réseau que vous utilisez qui pour rappel est wlan0 pour le wifi et eth0 pour le réseau filaire. Attention votre adresse MAC devra être inscrite en majuscules !
    • Le champ d’exemple « port »: 51826 correspond au numéro de port qui s’est affiché sous l’étiquette blanche avec le code.
    • Le champ d’exemple « pin »: « 031-45-154 » correspond au code de l’étiquette blanche.
    • Concernant les champs des accessoires suivez les instructions de configuration du plugin
    • Une fois que vous avez bien modifié le fichier d’exemple je vous conseille de valider sa syntaxe en le collant sur JSONLint.com des fois qu’une virgule ou une fermeture de parenthèse soit manquante ! Rigolez pas ça m’est arrivé 😀
    • Maintenant revenez au Raspberry et tapez sudo nano /home/pi/.homebridge/config.json puis faites un clic droit dans la fenêtre pour coller votre configuration (bien sur avant vous avez copié le code vu que vous étiez sur JSONLint :D)
    • Une fois le fichier de configuration enregistré relancé le programme en tapant homebridge.
    • Revenez dans l’application Maison sur votre iPhone ou autre iDevice et vous devez maintenant voir apparaître votre objet connecté dans les accessoires du pont Homebridge 😉
    • Il reste maintenant à configurer le Raspberry pour qu’à chaque démarrage il démarre comme un grand le programme Homebridge :
      • sudo nano /etc/default/homebridge puis copiez à l’intérieur de ce nouveau fichier le code de ce lien
      • sudo nano /etc/systemd/system/homebridge.service puis copiez à l’intérieur de ce nouveau fichier le code de ce lien (tout comme le tutoriel de Timleland.com j’ai supprimé local/ de la ligne « ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPT » car mon fichier homebridge est situé sous /usr/bin/homebridge
      • sudo useradd –system homebridge pour ajouter un utilisateur homebridge
      • sudo mkdir /var/homebridge pour la création d’un répertoire homebridge sous /var/
      • sudo cp ~/.homebridge/config.json /var/homebridge/ pour copier la configuration de homebridge que vous avez paramétré précédemment
      • sudo cp -r ~/.homebridge/persist /var/homebridge
      • sudo chmod -R 0777 /var/homebridge
      • sudo systemctl daemon-reload
      • sudo systemctl enable homebridge
      • sudo systemctl start homebridge
      • systemctl status homebridge pour vérifier l’état du service qui doit vous renvoyer quelques lignes avec en vert : active (running)
      • sudo reboot pour redémarrer afin de vérifier

Serveur de fichiers Samba

Le lien vers le tutoriel que j’ai utilisé Pihomeserver.fr est suffisant je n’ai rien à ajouter et c’est déjà en français.

Serveur Web Apache

Le lien vers le tutoriel que j’ai utilisé Raspian-France.fr est suffisant je n’ai rien à ajouter et c’est déjà en français.

Caméra de surveillance IP avec Motion

  • D’abord les liens vers les tutoriels que j’ai utilisé : Raspian-France.fr et knowledge.parcours-performance.com
  • Concernant la webcam que j’utilise c’est une webcam USB Logitech QuickCam® Pro for Notebooks
  • Ensuite voilà mes notes commentées :
    • sudo apt-get update pour vérifier si vous avez des mises à jour à télécharger
    • sudo apt-get upgrade pour installer les mises à jour téléchargées
    • lsusb vous permet de vérifier le branchement de la webcam j’ai par exemple : Bus 001 Device 009: ID 046d:0991 Logitech, Inc. QuickCam Pro for Notebooks
    • sudo apt-get install motion pour installer le package motion
    • mkdir /home/pi/motion pour créer un répertoire motion sous /home/pi/
    • chmod 755 /home/pi/motion pour donner les droits sur le répertoire motion créé avant
    • sudo nano /etc/motion/motion.conf pour éditer le fichier de configuration motion.conf
    • Mes modifications ligne par ligne :
      • # Image width (pixels). Valid range: Camera dependent, default: 352
        • width 1280
      • # Image height (pixels). Valid range: Camera dependent, default: 288
        • height 720
      • # Specifies the number of pre-captured (buffered) pictures from before motion
        # was detected that will be output at motion detection.
        # Recommended range: 0 to 5 (default: 0)
        # Do not use large values! Large values will cause Motion to skip video frames and
        # cause unsmooth movies. To smooth movies use larger values of post_capture instead.

        • pre_capture 2
      • # Number of frames to capture after motion is no longer detected (default: 0)
        • post_capture 2
      • # mpeg1 – gives you files with extension .mpg
        # mpeg4 or msmpeg4 – gives you files with extension .avi
        # msmpeg4 is recommended for use with Windows Media Player because
        # it requires no installation of codec on the Windows client.
        # swf – gives you a flash film with extension .swf
        # flv – gives you a flash video with extension .flv
        # ffv1 – FF video codec 1 for Lossless Encoding ( experimental )
        # mov – QuickTime ( testing )
        # ogg – Ogg/Theora ( testing )

        • ffmpeg_video_codec msmpeg4
      • # Restrict stream connections to localhost only (default: on)
        • stream_localhost off
    • sudo nano /etc/default/motion pour éditer le daemon (=service) Motion
    • Remplacez no par yes : start_motion_daemon=yes
    • Démarrez motion en tapant simplement motion
    • sudo reboot pour redémarrer
    • service statusall pour voir tous les daemons (=services) actifs (un + signifie actif et inactif)
    • service motion status –l pour voir uniquement l’état du daemon (=service) motion
    • sudo service motion stop permet d’arrêter le service motion
    • sudo service motion start permet de démarrer le service motion
    • sudo service motion restart permet de redémarrer le service motion
    • Démarrez votre navigateur web à l’adresse http://adresse_de_votre_raspberry:8081

Caméra de surveillance IP avec MotionEye

1ère partie installation de HAP-NodeJS :

2nde partie installation et configuration de MotionEye :