comment transformer un Raspberry Pi en récepteur AirPlay!

Modifié le par

Hits: 1114

Un tutoriel qui vous guide dans la configuration d’un récepteur Raspberry Pi AirPlay. Il vous montre ensuite comment utiliser un Raspberry Pi en tant que serveur Web.

Le Raspberry Pi est un ordinateur Linux complet qui a la taille d’une carte de crédit et qui se vend entre 25 et 35 dollars. Il a un processeur ARM 700Mhz et 512 Mo de RAM. En raison de ses capacités et de son bas prix, il est devenu extrêmement populaire sur le marché des amateurs. Certaines personnes ont fait des choses ingénieuses avec les leurs.

Si vous êtes comme moi, vous avez eu l’idée d’obtenir un AirPort Express dans le passé, mais le prix de 100 $ vous paraissait un peu élevé, car tout ce que vous vouliez faire, c’était lire du son avec AirPlay. Semble familier?

Peut-être avez-vous également un nouveau Raspberry Pi et ne savez pas quoi en faire. Eh bien, devinez quoi – vous pouvez transformer ce bébé en un haut-parleur AirPlay. En effet, au lieu de dépenser 100 USD sur un AirPort Express, vous pouvez assembler un récepteur AirPlay DIY à environ 45 USD à l’aide du Raspberry Pi. C’est ce que vous allez faire dans ce tutoriel. À la fin, vous aurez votre propre récepteur Raspberry Pi AirPlay!

Après cela, vous allez approfondir l’utilité du Raspberry Pi pour les développeurs iOS. La plupart des applications complexes nécessitent une sorte de service Web backend et un Raspberry Pi est un serveur idéal pour le développement ou peut-être même une petite application. Vous allez installer le serveur Web Apache, la base de données MySQL et PHP, puis les utiliser pour créer un service Web auquel vous pouvez accéder à partir d’une application de discussion iOS.

Mise en route: ce dont vous aurez besoin

Voici les composants matériels dont vous aurez besoin pour ce projet (endroits où acheter les équipements énumérés à côté de chaque composant):

  1. Raspberry Pi. 
  2. Carte SD.  4 Go suffisent pour ce projet. Il s’agit du stockage pour le projet et servira de disque dur pour le Raspberry Pi.
  3. Câble / prise Ethernet. Le Raspberry Pi n’a pas de WiFi intégré, nous allons donc utiliser la connexion filaire
  4. OS X ou Linux sur lequel vous avez des droits sudo. Vous aurez besoin d’un ordinateur pour charger le système d’exploitation sur la carte SD et SSH dans le Raspberry Pi.
  5. Lecteur de carte mémoire. Celui intégré à votre ordinateur fonctionnera correctement s’il en a un. Vous en avez besoin pour charger le système d’exploitation sur la carte mémoire.
  6. iPhone ou iPad. Vous allez utiliser cela pour diffuser de l’audio à partir de et exécuter l’application de démonstration
  7. Câble micro-USB. Pour alimenter le Raspberry Pi.
  8. Ensemble de haut-parleurs avec un mini câble audio. (Il s’agit uniquement d’un connecteur audio analogique normal) Pour que vous puissiez entendre le son AirPlayed

Vous allez télécharger et exécuter Shairport, un projet émulant le protocole propriétaire Apple AirPort avec un logiciel afin que Raspberry Pi apparaisse comme un récepteur AirPort sur votre réseau. Apple ne publie pas le protocole AirPlay publiquement, mais quelqu’un le modifie et a créé un fichier exécutable qui apparaîtra comme un récepteur AirPlay. 

Une brève introduction au Raspberry Pi

Le Raspberry Pi est un petit appareil. Bien que n’étant pas le premier du genre, il a explosé en popularité parce qu’il combine un matériel informatique très performant et complet dans un facteur de forme minuscule à un prix incroyable (25-35 USD). Il est doté d’un processeur ARM de 700 MHz avec 512 Mo de RAM et de tous les connecteurs standard d’un ordinateur, tels qu’un port de sortie audio analogique, 2 ports USB, une connexion Ethernet filaire et une sortie vidéo analogique RCA et numérique HDMI pour la connexion d’un ordinateur. moniteur. En plus de cela, il a une banque de broches GPIO (General Purpose Input / Output) pour la connexion au matériel. Ceux-ci peuvent être utilisés pour tout, du simple contrôle d’une DEL à un moteur, en passant par la lecture d’un nombre quelconque de types de capteurs.

Il y a aussi un lecteur de carte SD à bord. Il n’y a pas de mémoire intégrée sur le Raspberry Pi, donc tous les fichiers sont conservés sur une carte SD. Pensez-y exactement comme le disque dur de votre ordinateur.

Le dernier composant intéressant à bord est le port micro-USB. Ceci n’est pas utilisé pour les données ou la connexion à votre ordinateur, mais plutôt pour l’alimentation du Raspberry Pi. Le Raspberry Pi consomme très peu d’énergie et les 5 V fournis par l’USB suffisent à le mettre sous tension, à condition que vous n’utilisiez aucun périphérique supplémentaire branché sur le Pi qui consomme beaucoup d’énergie.

Voici un guide de démarrage rapide pour vous aider à démarrer si vous avez besoin d’aide pour le brancher et l’activer.

Chargement du système d’exploitation

Chaque ordinateur a besoin d’un système d’exploitation (OS). Votre Mac fonctionne sous Mac OS X et votre iPhone, iPad, etc. sous iOS. Le système d’exploitation gère toutes les interfaces avec le matériel afin que les «applications» puissent simplement faire ce qu’elles doivent faire.

Un Raspberry Pi peut exécuter de nombreux systèmes d’exploitation différents, mais celui que vous allez utiliser ici est Raspbian. Raspbian est une version de la distribution Linux Debian dédiée à l’exécution sur un Raspberry Pi. C’est donc parfait pour ce tutoriel!

Pour que votre Raspberry Pi soit opérationnel avec Raspbian, vous devez d’abord le télécharger et l’installer. Ceci est fait en téléchargeant quelque chose appelé une “image”. Une image est simplement un instantané d’une copie préinstallée de Raspbian, prête à être copiée sur votre carte mémoire pour être exécutée sur votre Raspberry Pi.

Télécharger l’image

Allez sur http://www.raspberrypi.org/downloads et regardez la section Images brutes en bas . Sous la sous-section Raspbian , téléchargez l’image au format ZIP direct ou à l’aide du torrent. Le torrent est téléchargé en utilisant le protocole bit torrent. Si vous ne savez pas ce que c’est, téléchargez simplement l’image directement.

Le fichier zip contient une image disque (un fichier .img) de l’ensemble du système d’exploitation installé. Téléchargez et extrayez l’image du zip où vous y avez accès. Ensuite, vous allez simplement copier les données dans l’image disque de la carte SD (dans la section suivante).

Le nom d’utilisateur et le mot de passe root (administrateur) par défaut sont les suivants:

  • Nom d’utilisateur: pi
  • Mot de passe: raspberry

Notez-les, car ils entreront en jeu plus tard.

Chargement de l’image sur la carte

Pour copier l’image sur la carte, vous devrez utiliser le terminal ou la ligne de commande. Bien que toute la saisie soit un peu intimidante au début, d’une certaine manière, c’est une interface plus puissante qu’une interface graphique standard pour certaines tâches. N’ayez pas peur, le plus difficile est simplement de mémoriser les commandes, mais bon, c’est pour ça que ce tutoriel est là!

Ouvrez une fenêtre de terminal. Vous pouvez le faire rapidement en appuyant sur Commande + Espace et en tapant terminal dans Spotlight. Exécutez la commande suivante sans insérer la carte mémoire :

df -h

Comme vous pouvez le constater, la dfcommande indique l’espace disponible sur chaque disque. Notez que la commande affiche également l’adresse de chaque disque (par exemple /dev/disk0s2).

Capture d'écran 2013-07-08 à 22:23:56

Vous allez utiliser dfpour découvrir l’adresse de votre carte mémoire. Insérez maintenant la carte mémoire dans le lecteur de carte mémoire de votre Mac ou dans un lecteur distinct connecté à votre Mac. Exécutez à df –hnouveau la commande et vous devriez voir quelque chose comme ceci:

Capture d'écran 2013-07-08 à 22:24:13

Vous devriez voir un nouveau disque, quelque chose comme / dev / disk1s1 , qui correspond à la taille de votre carte mémoire. La description du nouveau disque correspond à l’adresse de la carte. Démontez le disque de la carte mémoire avec cette commande:

sudo diskutil unmount / dev / disk1s1

Ensuite, vous devez obtenir l’adresse de l’appareil. C’est l’adresse de votre «lecteur» de carte mémoire. Pour ce faire, prenez l’adresse que vous utilisiez auparavant, dans mon cas / dev / disk1s1 , supprimez la partie s1 à la fin et ajoutez r devant le disque afin que / dev / disk1s1 devienne / dev / rdisk1 . Les deux adresses sont différentes en ce que / dev / disk1s1 est l’adresse où la première partition du système de fichiers est montée. / dev / rdisk1 est l’adresse du lecteur de carte mémoire (n’a rien à voir avec la carte insérée à ce moment-là).

Vous pouvez maintenant écrire le fichier image que vous avez téléchargé ci-dessus sur la carte mémoire. Exécutez la commande suivante:

sudo jj bs = 5 m si = ~ / Téléchargements / wheezy-raspbian.img de = / dev / YOURDISKNAME

C’est là que toute la magie se produit. Vous utilisez la ddcommande pour copier un flux d’entrée octet par octet. Vous ne pouvez pas utiliser une copie standard par glisser-déplacer pour déplacer les fichiers, car le formatage spécial des partitions de démarrage système est différent et le Raspberry Pi ne saurait pas qu’il s’agissait d’une partition de démarrage si vous les faites simplement glisser. Examinons chaque composant de cette commande:

  • bsspécifie la taille de bloc utilisée par l’ ddoutil. Spécifier une taille de bloc plus grande permet de copier l’image plus rapidement.
  • ifspécifie le fichier d’entrée. Vous pointez sur le fichier image que vous avez téléchargé précédemment.
  • ofspécifie le fichier de sortie. Vous définissez ceci sur le nom de disque que vous avez défini précédemment, / dev / rdisk1 .

Appuyez sur Entrée pour exécuter la commande. Cela prendra quelques minutes à compléter – utilisez ce temps pour commencer à créer cette playlist rock que vous diffuserez bientôt en streaming!

Lorsque la commande est terminée, vous verrez quelque chose comme ceci:

Capture d'écran 2013-07-08 à 22h02

Retirez maintenant la carte mémoire de votre ordinateur et insérez-la dans le Raspberry Pi.

IMG_1963

Branchez le câble Ethernet, puis le câble micro-USB pour l’alimentation. Connectez l’autre extrémité du câble Ethernet à votre routeur et le câble micro-USB à un ordinateur ou à un adaptateur d’alimentation (comme celui fourni avec un iPhone ou un iPad).

IMG_1965

IMG_1964

Maintenant, comment avez-vous accès au Raspberry Pi? Dans ce tutoriel, vous allez configurer l’ordinateur Raspberry Pi sans moniteur, clavier ou souris. Au lieu de cela, vous allez vous y connecter à distance depuis votre Mac.

Changement dans Raspberry Pi

SSH signifie Secure SHell et constitue un moyen d’ouvrir une session de terminal sur un ordinateur distant, en vous permettant d’exécuter une commande exactement comme si vous étiez physiquement sur cet ordinateur. Ceci est pratique lorsque vous devez modifier un ordinateur auquel vous n’avez pas accès physiquement ou, comme dans votre cas, sans clavier ni moniteur.

Vous allez être dans le Raspberry Pi pour plusieurs raisons:

  • Le fait de brancher une souris, un clavier et un moniteur peut entraîner une perte de puissance importante pouvant entraîner des pannes matérielles et / ou un comportement erratique.
  • SSH est une compétence importante et utile à apprendre.

Avant de pouvoir utiliser SSH dans votre Raspberry Pi, vous devez connaître son adresse IP. Cela peut être délicat, car par défaut, il utilisera DHCP pour obtenir automatiquement une adresse IP. Donc vous ne savez pas ce que c’est. Il existe plusieurs façons d’obtenir l’adresse IP, mais je vous recommande de télécharger une application pour iPhone appelée Fing, qui effectuera une analyse du réseau.

Téléchargez Fing et assurez-vous que votre iPhone / iPad et le Raspberry Pi sont sur le même réseau. Exécutez l’application et vous devriez voir une liste de tous les appareils sur le réseau:

IMG_1968

Bien que je ne le recommande pas, si vous souhaitez essayer de connecter un moniteur, un clavier et une souris au Raspberry Pi, vous pouvez utiliser ifconfigune commande Linux pour répertorier les informations relatives à vos connexions réseau. Si vous décidez d’utiliser Route, connectez un moniteur et un clavier, puis allumez-le. Une fois vos composants connectés et mis sous tension, vous devez accéder directement à une connexion où vous devez entrer votre nom d’utilisateur et votre mot de passe.

IMG_4203

 

IMG_4204

Une fois connecté, vous devriez être laissé sur une ligne de commande du terminal et être capable de taper ifconfig :

Capture d'écran 2013-09-29 à 22h50

Il est un peu inutile de SSH si vous avez eu du mal à connecter un clavier, une souris et un moniteur, mais cela reste une bonne compétence à apprendre.

Une fois que vous avez obtenu l’adresse IP de l’une de ces façons, vous pouvez SSH dans le Raspberry Pi. Supposons que votre adresse IP est 192.168.1.10. Dans la fenêtre Terminal, tapez:

ssh pi @ 192.168 .1 .10        // pensez à remplacer par VOTRE adresse IP


Capture d'écran 2013-07-08 à 22h50

Tapez oui et appuyez sur Entrée. Terminal va maintenant vous demander un mot de passe, qui est par défaut framboise . Entrez ce mot de passe et vous devriez être connecté à distance au Raspberry Pi et être prêt à partir.

Capture d'écran 2013-07-08 à 22h50

Remarque: Si vous n’arrivez pas à trouver votre Raspberry Pi sur le réseau, c’est peut-être parce qu’il ne démarre pas correctement. Cela peut arriver si vous n’alimentez pas suffisamment le périphérique. Vous pouvez vérifier cela en branchant un moniteur via HDMI. S’il redémarre continuellement, le problème est probablement lié à l’alimentation.

Développer le système de fichiers

Maintenant, vous devez développer le système de fichiers pour occuper toute la taille de la carte SD. Vous voyez, l’image que vous avez chargée sur la carte SD était de taille minimale, de sorte que son téléchargement et son adaptation à toutes les tailles de carte SD seraient rapides. Comme nous avons copié le contenu de l’image disque sur la carte SD, la taille de la partition correspond à la taille exacte de l’image disque, même si la taille de votre carte SD peut être plus grande. Mais cela vous laisse peu d’espace pour travailler.

Votre carte ressemble probablement à ceci maintenant

Votre carte ressemble probablement à ceci maintenant.

Pour configurer les composants du récepteur AirPlay et tous les composants du serveur, vous allez avoir besoin de plus d’espace. Heureusement, il ne pourrait pas être plus simple de redimensionner la partition pour tirer parti de la carte entière. Retournez SSH dans votre Raspberry Pi si vous n’y êtes pas déjà et lancez la commande suivante:

sudo raspi-config

Lorsque le configmenu apparaît, sélectionnez expand_rootfs .

Menu de configuration Raspberry Pi

Le menu de configuration Raspberry Pi.

Vous verrez alors ce qui suit, vous indiquant que la partition racine a été redimensionnée:

03

Lorsqu’il vous demande si vous souhaitez redémarrer maintenant, sélectionnez Oui .

04

Vous devrez attendre une minute ou deux, puis SSH de retour. Vous devriez maintenant disposer de suffisamment d’espace pour les composants du serveur.

Le nouvel espace sur ma carte de 32 Go

Le nouvel espace sur ma carte de 32 Go

Mise en place du projet

Maintenant que vous êtes connecté au Raspberry Pi, vous devez procéder à une configuration de base. Ceux-ci inclus

  • Mettre à jour le système actuel
  • Mettez à jour les paramètres audio afin que le son sorte par le port vert mini-prise au lieu du port HDMI
  • Installer certaines bibliothèques nécessaires pour le projet Shairport
  • Installer le projet Shairport
  • Démonisez le projet Shairport pour qu’il démarre au démarrage

Faisons craquer!

Mise à jour des paquets

Tout d’abord, vous devez mettre à jour les sources et les packages actuels. C’est un peu comme si vous exécutiez Windows Update ou Software Update sous OS X. Avec Raspbian, l’outil apt-get gère tous les packages logiciels pour vous.

Exécutez les deux commandes suivantes, une à la fois:

sudo apt-get update
sudo apt-get upgrade

La première commande, update , met à jour la liste des packages et les versions. La deuxième commande, upgrade , compare ces nouvelles informations à tous les packages que vous avez actuellement installés et les met à niveau si une mise à niveau est disponible.

Vous remarquerez probablement quelques paquets en cours de mise à jour. Asseyez-vous juste!

Changer le port audio par défaut

Par défaut, l’audio sort du port HDMI du Raspberry Pi. Vous voulez changer cela en prise mini-audio car pratiquement tout ce qui se connecte à l’audio peut se connecter à une prise mini-audio et si vous le laissez en HDMI, vous devrez probablement le brancher à un téléviseur tout le temps. Exécutez la commande suivante:

sudo amixer cset numid = 3  1

Vous devriez voir ces résultats:

Copie d'écran 2013-07-08 à 23h04 copie

La amixercommande vous permet d’afficher et de définir les options des cartes son. Ici, vous réglez le troisième élément de la carte son sur 1, ce qui active la sortie analogique du Raspberry Pi. Cela pourrait sembler magique, et bien, c’est vraiment. Vous avez juste besoin de connaître cette commande. Mais heureusement, j’ai découvert cela pour vous – c’est pourquoi vous êtes ici!

Installer les prérequis

Le projet Shairport que vous allez utiliser présente un certain nombre de conditions préalables. Entrez la commande suivante pour télécharger et installer ces composants prérequis en utilisant le même mécanisme que vous avez utilisé pour mettre à jour le système précédemment:

sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl

C’est une commande assez longue, mais en réalité c’est assez simple. Regardons chaque partie individuelle:

  • sudo – Exécute la commande suivante en mode administrateur
  • apt-get – C’est le programme de gestion de paquets
  • install – Indique au programme de gestion de paquets d’installer les bibliothèques suivantes
  • git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl– Ce sont les bibliothèques que nous installons. Vous pouvez voir qu’il y en a quelques-uns ici comme git, des bibliothèques de sécurité / chiffrement et des bibliothèques pour le langage de programmation Perl.

Vous verrez ce qui suit:

Capture d'écran 2013-07-08 à 23h04

C’est vous dire ce qui va être installé. Cela inclura les bibliothèques que vous avez spécifiquement demandé d’installer, ainsi que tous les prérequis.

Installation de Perl Net-SDP

Depuis iOS 6, AirPlay utilise le protocole SDP. Le projet Perl Net-SDP facilitera la communication à l’aide de ce protocole. Donc, vous allez maintenant l’installer.

Exécutez les commandes suivantes (toujours dans votre session SSH Raspberry Pi!):

git clone https: //github.com/njh/perl-net-sdp.git perl-net-sdp

Ceci clone le référentiel GitHub de Perl Net-SDP afin qu’il en soit maintenant une copie sur votre Raspberry Pi. Vous obtiendrez le résultat suivant:

Capture d'écran 2013-07-08 à 23h10

Maintenant, entrez les commandes suivantes, une ligne à la fois:

cd perl-net-sdp
perl Build.PL
sudo ./Build
sudo ./Build test
sudo ./Build install
cd ..

Ces commandes permettent de compiler et d’installer les composants de Perl Net-SDP aux emplacements appropriés.

Capture d'écran 2013-07-08 à 11.11.13

Configuration de votre récepteur Raspberry Pi AirPlay

Vous avez atteint la viande et les pommes de terre du projet, l’objectif de toute cette installation que vous venez d’accomplir. Une fois que vous avez téléchargé et exécuté Shairport, il ne vous reste que quelques étapes simples à suivre avant d’entendre de la musique!

Installer et exécuter Shairport

Exécutez ces commandes pour cloner le référentiel Shairport, puis construisez le logiciel:

clone de git https: //github.com/hendrikw82/shairport.git
cd shairport
faire

Capture d'écran 2013-07-08 à 11h.11

Puis lancez une dernière commande pour lancer le script Shairport:

./shairport.pl -a RayPi

La -acommande spécifie le nom du récepteur AirPlay. Dans ce cas, vous appelez RayPi .

En direct de votre Raspberry Pi…

Maintenant, si vous ouvrez une application audio ou musicale sur votre appareil iOS ou iTunes sur votre Mac, vous devriez voir RayPi dans la liste des appareils AirPlay!

IMG_0002

Lorsque vous avez terminé, appuyez sur Ctrl + C pour arrêter le processus. Vous pouvez remplacer RayPi dans la commande précédente par tout ce que vous souhaitez appeler votre récepteur AirPlay.

Dans l’état actuel des choses, chaque fois que vous souhaitez utiliser Shairport, vous devez démarrer Raspberry Pi, SSH et lancer le programme Shairport. Cela me semble horrible. Que peux-tu y faire?

* Voix Deep Daemon * DONNER DE L’AFFICHE * Arrêter la voix Deep Daemon *

*la toux*

Démonisation de Shairport

Cela semble mauvais, n’est-ce pas? En fait, c’est tout le contraire: la démonisation vous simplifiera la vie.

Alors c’est quoi? Les démons sont des tâches sur les systèmes Unix et Linux qui s’exécutent en arrière-plan et commencent généralement au démarrage du système. C’est la solution parfaite à votre problème. Vous pouvez créer une démonisation du fichier exécutable que vous venez d’exécuter pour qu’il s’exécute en arrière-plan et qu’il soit démarré dès le démarrage. De cette façon, vous n’avez jamais à vous soucier de démarrer vous-même.

SSH dans le Raspberry Pi (si vous n’êtes pas encore) et entrez les commandes suivantes pour copier et configurer les fichiers nécessaires:

cd shairport
sudo faire installer
sudo cp shairport.init.sample /etc/init.d/shairport

Ceci copie un exemple de fichier init dans le répertoire daemon, qui a été créé par la commande ‘make install’.

Maintenant, entrez ces commandes, une ligne à la fois:

cd /etc/init.d
sudo chmod a + x shairport
sudo update-rc.d paramètres par défaut de shairport

Ici, vous déplacez vers le répertoire du démon, modifiez les autorisations, puis «installez» le fichier Shairport init avec les options par défaut.

Maintenant, entrez les commandes suivantes, une ligne à la fois:

sudo vi shairport
DAEMON_ARGS = "-w $ PIDFILE -a RayPi"

Vous pouvez utiliser nano ou tout autre éditeur de texte ici si vous êtes plus à l’aise avec cela, mais vous allez aller dans le fichier de configuration de Shairport et ajouter la -a RayPipartie à l’ DAEMON_ARGSoption. Tout comme lorsque vous déclenchez le script manuellement, vous le modifiez pour définir le nom par défaut du récepteur AirPlay.

Capture d'écran 2013-09-29 à 6.21.46 heures

Si vous utilisez l’ viéditeur de texte, appuyez sur échap, puis tapez :wqet appuyez sur Entrée pour enregistrer les modifications. Maintenant, chaque fois que vous démarrez le Raspberry Pi, il lancera l’exécutable de Shairport.

Configurer un serveur Web

Maintenant que vous disposez vous-même d’un récepteur AirPlay fonctionnel, voyons ce que Raspberry Pi peut faire pour un développeur iOS en l’utilisant pour configurer des services Web permettant de lire et d’écrire des messages de discussion entre Raspberry Pi et une application iOS. . La plupart des applications mobiles ont besoin d’une sorte de base de données principale et de services Web pour stocker les données des utilisateurs. Le Raspberry Pi est un excellent moyen d’héberger ces services pour un petit projet ou pendant le développement d’un projet.

Pour résumer ce que vous allez faire:

  • Installation d’Apache – le serveur Web utilisé pour desservir les services Web
  • Installation de MySQL – la base de données utilisée pour stocker les données
  • Installer PHP – le langage de script
  • Créer une base de données et une table MySQL – vous allez créer les structures pour stocker les données
  • Copier un ensemble de services Web – vous allez copier un ensemble de services que je fournis pour lire et écrire des données dans la base de données MySQL
  • Tester ces services
  • Accéder aux services à partir d’une application démo iOS

Appeler dans l’Apache

apache318x260

Apache est le nom du logiciel que vous allez utiliser pour servir des pages et créer des services Web. Ce logiciel de serveur Web gère les demandes entrantes et renvoie les données, qu’il s’agisse d’un simple fichier HTML ou de données binaires. Plus tard, vous installerez PHP et Apache saura accepter les requêtes PHP entrantes et renvoyer les données traitées par le module PHP.

Exécutez la commande suivante pour télécharger et installer Apache:

sudo apt-get install apache2

Lorsque vous y êtes invité, entrez Y pour continuer.

08

Apache étant maintenant installé et en cours d’exécution, vous pouvez examiner la page par défaut que le serveur va charger. Exécutez les commandes suivantes:

cd / var / www
vi index.html

Vous verrez que la page par défaut est juste un simple fichier HTML.

11

Appuyez sur échappement et tapez :q!pour fermer et sortir. Sur votre ordinateur, vous devriez pouvoir accéder à http: // votre-adresse-ip (la mienne est http://10.0.1.18) et voir une page Web maintenant.

dix

Installer MySQL

MySQL est le standard de facto en matière de bases de données. Une base de données est un moyen de stocker des données et de les récupérer de manière structurée. Vous allez en utiliser un pour stocker les messages de discussion. Exécutez la commande suivante pour télécharger et installer MySQL:

sudo apt-get installe mysql-server

Lorsque vous y êtes invité, entrez Y pour continuer.

13

Cette installation est un peu différente. À mi-chemin, il vous sera demandé un mot de passe root.

14

Le système vous demande le mot de passe du compte racine MySQL, qui est différent de celui du compte racine du Raspberry Pi lui-même. Entrez ce que vous voulez ici, mais prenez-en note. Après avoir choisi le mot de passe root, l’installation devrait se terminer.

Installer PHP

PHP est le langage de script que vous allez utiliser pour écrire le service Web. Entrez la commande suivante pour télécharger et installer PHP:

sudo apt-get install php5

Lorsque vous y êtes invité, entrez Y pour continuer:

Capture d'écran 2013-09-03 à 11.11.57 PM

Maintenant que PHP est installé, vous avez également besoin d’une bibliothèque pour accéder à MySQL à partir de code PHP. Cette commande devrait faire l’affaire:

sudo apt-get install php5-mysql

Configuration de la base de données

Avec tout installé, il vous reste à configurer la base de données et une table dans la base de données pour stocker les informations. Ceci est la base de données et la table qui contiendra les informations du message. Chaque ligne de la table sera un message de discussion envoyé au service avec le nom de l’utilisateur, le message et un identifiant de ligne unique. Exécutez la commande suivante pour démarrer MySQL et connectez-vous en tant que root:

mysql --user = root --pass = YOUR-MYSQL-ROOT-PASSWORD

N’oubliez pas de saisir le mot de passe que vous avez défini lors de l’installation de MySQL.

Connecté à MySql

Connecté à MySQL.

Pour créer une base de données, entrez cette commande:

CREATE DATABASE `rw`;

Notez que les guillemets sont des guillemets arrières (à gauche de la touche 1) et n’oubliez pas le point-virgule à la fin.

Création de la base de données

Vous devez maintenant indiquer à MySQL que vous souhaitez cibler cette base de données avec les commandes à exécuter. Entrez cette commande:

USE `rw`;

MySQL vous informera que la base de données a été modifiée.

 

Maintenant que vous avez créé une base de données et l’avez définie comme base de données active, vous devez créer une table pour stocker les informations. Il s’agira d’une application de discussion en ligne. Vous souhaitez donc que la table contienne des colonnes pour le nom de la personne qui a envoyé le message et le message lui-même. Vous aurez également besoin d’une colonne appelée id  qui est simplement un entier qui s’incrémente chaque fois qu’une nouvelle ligne est créée / insérée. Cela garantit que vous avez quelque chose d’unique pour identifier chaque ligne.

Copiez et collez l’ createinstruction suivante pour créer la table:

CREATE TABLE chat ( id MEDIUMINT NOT NULL AUTO_INCREMENT, nom CHAR ( 30 ) NOT NULL , message CHAR ( 255 ) NOT NULL , PRIMARY KEY ( id ));

 

Ce n’était pas si mal, non? Examinons exactement ce qui se passe dans la déclaration ci-dessus:

CREATE TABLE chat

Cela signifie simplement «créez une table nommée chat dans la base de données actuelle (« rw »dans votre cas)».

id MEDIUMINT NON NULL AUTO_INCREMENT

Cela crée une colonne nommée idqui est un MEDIUMINTtype. Cette colonne ne peut pas être nulle et augmentera automatiquement, ce qui signifie qu’elle sera incrémentée chaque fois qu’un nouvel enregistrement est ajouté.

nom CHAR ( 30 ) NON NUL

Cela crée la namecolonne. Il peut avoir 30 caractères et ne peut pas non plus être nul.

message CHAR ( 255 ) NOT NULL

Cela crée la colonne de message. Il peut avoir 255 caractères et ne peut pas non plus être nul.

CLÉ PRIMAIRE ( id )

Cela indique à la table que la idcolonne est une colonne clé, ce qui signifie qu’il s’agit d’une colonne importante pour la recherche et qu’elle sera donc indexée pour une récupération plus rapide.

Votre base de données est tout configuré!

Faisons un test. Insérer une ligne dans la table avec cette commande:

INSERT INTO chat (nom, message) VALEURS ( "nom" , "message" );

Puis affichez la table entière avec cette commande:

SELECT * du chat;

Essayez plusieurs fois pour vous en faire une idée. Notez que vous n’avez pas besoin de définir spécifiquement la colonne ‘id’ car elle est automatiquement définie sur le numéro suivant chaque fois que vous ajoutez une ligne.

Exécution du script de service Web

Ceci étant un tutoriel sur le Raspberry Pi, je vous fournirai le script de service Web – il vous suffit de le télécharger au bon endroit. Exécutez les commandes suivantes, une à la fois:

cd /var/www
sudo mkdir api
cd api

Cela change votre répertoire de travail en répertoire du serveur Web, crée un nouveau dossier appelé api puis se déplace dans ce dossier.

Maintenant, lancez ces commandes, une à la fois:

sudo curl https: //koenig-media.raywenderlich.com/uploads/2013/10/index.txt> ~ / index.php 
sudo mv ~ / index.php.

curltélécharge des données depuis une adresse distante. La >fin de l’URL indique à la commande de rediriger la sortie dans un fichier. Vous déplacez ensuite le fichier de votre répertoire personnel vers le répertoire actuel, le répertoire du serveur Web.

Examinons quelques parties de ce script. Exécutez ce qui suit:

sudo vi index.php

Vous verrez le script PHP pour l’insertion et la lecture des données de la base de données.

Changer votre mot de passe

Il y a une chose que vous devez changer à la ligne 98:

// Constructor - open DB connection

function __construct() {

    $this-> = new mysqli('localhost', 'root', 'SQL-ROOT-PASSWORD','rw');

    $this->db->autocommit(FALSE);

}

Le script PHP doit savoir comment ouvrir la connexion à la base de données, il doit donc avoir le mot de passe root de votre base de données MySQL. Remplacez SQL-ROOT-PASSWORD par le mot de passe MySql que vous avez entré précédemment.

Test du script

Maintenant que le script est installé, il est temps de le tester. Tout comme vous curl utilisiez auparavant pour télécharger des fichiers, vous pouvez l’utiliser pour accéder à vos services Web et les tester. Tout comme vous avez pu insérer et lire directement dans la base de données MySQL, vous pouvez accéder à l’insertion et lire des services Web avec curl pour les tester.

Ouvrez une nouvelle fenêtre de terminal et exécutez la commande suivante à partir de votre ordinateur local:

curl 10.0 .1 .18 / api /

Ceci utilise la commande curl pour frapper le service Web en lecture. Ceci est identique à la SELECT déclaration que vous avez exécutée précédemment. Vous devriez voir un tableau JSON des 10 derniers messages (jusqu’à 10).

Maintenant, essayez le inserttest:

curl -F nom = "Adam" -F message = "test insert"  10.0 .1 .18 / api /

Notez que vous définissez les variables avec l’ -F indicateur. Vous ne verrez aucune réponse de cette commande car ce service Web ne renvoie aucune donnée, mais si vous exécutez la commande précédente pour obtenir les 10 derniers messages, vous devriez y voir votre nouveau message.

Effectuez ces deux tests plusieurs fois. Vous devriez pouvoir insérer de nouveaux messages et les voir lorsque vous appelez la liste de tous les messages.

Utilisation des services Web avec une application iOS

J’ai créé une petite application iPhone que vous pouvez télécharger ici et qui utilise les services Web. La seule chose à faire est de changer l’adresse IP de votre Raspberry Pi. Vous devrez le faire dans le fichier d’en-tête précompilé:

Capture d'écran 2013-09-16 à 2.14.55 AM

Ceci est une application iPhone assez simple. Ouvrez CHTRemoteCalls.m . Ici, vous verrez les appels d’API distants et leur formation. Il y en a un pour recevoir des messages et un pour poster un message. Chacun utilise un NSURLConnection pour frapper le serveur. Dans votre cas, cela frappe votre Raspberry Pi!

Construisez et exécutez le projet. Vous verrez quelque chose comme ça:

Capture d'écran 2013-11-06 à 23h57

Vous pouvez utiliser l’interface très basique pour envoyer un message, puis attendre qu’il revienne. Les messages sont actualisés toutes les 10 secondes. Vous devrez peut-être attendre le prochain rafraîchissement pour voir votre message.

Chaque fois que vous envoyez un message, il frappe votre Raspberry Pi et insère une ligne dans la base de données. Neat hein! Chaque fois que les messages sont mis à jour, la base de données est en cours de lecture et les 10 derniers messages sont renvoyés.

Ceci est une application de test très simple, mais j’espère qu’elle vous a montré ce que vous pourriez utiliser pour utiliser votre propre Raspberry Pi. Vous voudrez peut-être l’utiliser pour héberger un site Web pendant que vous effectuez des travaux de développement sur une application. Pourquoi prendre la peine de s’efforcer de configurer un serveur Web quelque part dans le nuage, alors que vous pouvez utiliser le minuscule appareil installé devant vous!

Où aller en partant d’ici?

Vous avez configuré un Raspberry Pi avec le logiciel nécessaire pour exécuter un petit service Web et écouter de la bonne musique en même temps. Voici certaines choses que vous voudrez peut-être essayer maintenant:

  • Sécuriser votre Raspberry Pi. Ce tutoriel n’a pas été écrit avec beaucoup de sécurité à l’esprit. Changer les mots de passe, ne pas utiliser les comptes root et empêcher l’injection SQL sont toutes les choses que vous devez faire pour rendre le système plus sécurisé.
  • Créez vos propres services. Regardez l’exemple de ce projet et essayez de créer le vôtre.
  • Créez votre propre application iOS pour utiliser les services. Créez une application iOS nécessitant une base de données principale, puis utilisez Raspberry Pi pour créer la base de données et le service Web. Peut-être un système de commande en ligne / application de menu, une application de tenue de score, ou un registre en ligne.

Un grand merci à Jordan Burgess, qui a écrit le billet de blog qui a servi de base à ce tutoriel

https://www.milbako.com/?NIMDAeglIFTOLan7591=1

Vous aimerez aussi...

Traduire