Catégorie : Raspberry

Raspberry

Domotique – Développer une application web en temps réel

Domotique :

Développer une application web en temps réel

 

Introduction

Dans cet article on développe une application web en temps réel pour de la domotique. Le but est de relier un capteur de température au Raspberry et afficher la température en temps réel sur une page web. Pour cela on utilisera une capteur DS18B20 que l’on fera communiquer avec le Raspberry via le bus 1-wire. Pour la partie application web, on utilisera Node.js, et les librairies Socket.io et Gauge.js.

 

Plan

  1. Démonstration
  2. Pré-recquis
  3. Mise en place du capteur
    1. Connexion du capteur DS18B20
    2. Activation du bus 1-wire
  4. Développement du back-end
  5. Développement du front-end
  6. Déploiement
  7. Certification SSL (Optionnel)

 

1 – Démonstration

En suivant ce tutoriel vous devriez aboutir à cette application 🙂

 

2 – Pré-recquis

  • Raspberry Pi 2 ou 3 fonctionnel sous Raspbian (ou n’importe quel autre OS)
  • Un capteur de température DS18B20 (kit clé en main disponible ici)
  • Des câbles de connexion femmelle/femmelle pour les ports GPIO du Raspberry (disponible ici)

 

3 – Mise en place du capteur

 

          3.1 – Connexion du capteur DS18B20

 
Pour commencer, connectez votre capteur de température via les câbles femmelle/femmelle  à votre Raspberry en branchant l’alimention (fil rouge) sur le port 4 (5V PWR), la masse au port 6 (GND) et pour finir le signal sur le port 7 (GPIO4 GPIO_GCLK)

 

          3.2 – Activation du bus 1-wire

Maintenant que le capteur est branché, il faut activer le bus 1-wire du Raspberry. Pour ce faire, ouvrez une connexion ssh avec votre Raspberry et tapez les commandes suivantes :

sudo modprobe w1-gpio
sudo modprobe w1-therm

Puis ajouter au fichier /etc/modules les lignes suivante avec nano par exemple :

w1-therm
w1-gpio pullup=1

Ensuite ajouter la ligne suivante au fichier /boot/config.txt

dtoverlay=w1-gpio

Puis redémarrer le Raspberry

sudo reboot

Une fois vôtre Raspberry redémarré, placez vous dans le répertoire regroupant les capteurs et listez les identifiants des capteurs connectés

cd /sys/bus/w1/devices/
ls

Vous devriez avoir un répertoire nommé « 28-xxxxxxxxxx » qui correspond à votre capteur, déplacez vous dedans et affichez le contenue de du fichier w1_slave

cd 28-...
cat w1_slave

Vous devriez alors voir s’afficher la température captée, vous pouvez alors passer à la partie suivante 🙂

 

4 – Développement du back-end

Pour la partie back-end (côté serveur), nous allons développer une application Node.js avec plusieurs librairies comme Express.js et Socket.io

Commencez par installer Node.js

sudo apt-get update && sudo apt-get upgrade
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt install nodejs

 

5 – Développement du front-end

 

6 – Déploiement

 

7 – Certification SSL (optionnel)

 

Raspberry

Raspberry – Installation d’un serveur multimédia Plex

 

 

Plex est un serveur multimédia qui se divise en deux parties importantes à mes yeux. D’une, il va chercher automatiquement toutes les affiches, nom des acteurs et réalisateurs liés aux films, séries et albums contenus dans vos bibliothèques. De deux, il vous permet d’accéder à tout vos médias depuis n’importe où dans le monde.

Qui n’a jamais rêvé de commencer un film sur sa tablette, sur son smartphone ou même sur sa Xbox (oui un application très ergonomique Plex est disponible sur Xbox), puis de le finir à l’autre bout du monde à condition d’avoir internet? Et surtout gratuitement et avec un simple Raspberry?

Plex vous permet de faire tout ça, et bien plus! Découvrez par vous même ici 😁

 

 

Pré-requis 

  • Raspberry Pi 3 fonctionnel (ici)
  • Un disque dur externe préparé (ici)

 

Sommaire :

  1. Téléchargement et installation

 

 

Ce tutoriel s’adresse aux possesseurs de Raspberry Pi 3, et exclusivement à eux, car même s’il est possible d’installer un serveur Plex sur un Raspberry Pi 2, lorsque vous voudrais regarder un film en Full HD, le Raspberry ne pourra pas suivre…

 

 

         Téléchargement et installation

On commence comme d’habitude par mettre le Raspberry à jour

sudo apt-get update && sudo apt-get upgrade -y

Mais aussi le système

sudo apt-get update && sudo apt-get dist-upgrade -y

Installez le package de téléchargement HTTPS pour accéder aux sites HTTPS

sudo apt-get install apt-transport-https -y --force-yes

Puis téléchargez une clé qui authentifiera que vos téléchargements sont sans dangers

wget -O - https://dev2day.de/pms/dev2day-pms.gpg.key | apt-key add -

Grâce à cette clé vous allez ajouter le dépôt pour pouvoir installer Plex serveur

echo "deb https://dev2day.de/pms/ jessie main" | sudo tee /etc/apt/sources.list.d/pms.list

Enfin installez Plex

sudo apt-get install plexmediaserver-installer -y

Une fois installé, dans votre navigateur entrez ip_raspberry:32400/web pour vous accéder à l’interface web de Plex

Ça y est, vous n’avez plus qu’à créer un compte, transférer toutes vos séries, films et musique sur votre disque dur externe, puis de créer un bibliothèque pour chacune des catégories précédentes et appréciez à fond cette super expérience! 😎

 

 

Raspberry

Raspberry – Un cloud personnel et illimité avec OwnCloud

Vous avez sûrement un cloud de type Dropbox, GoogleDrive, OneDrive ou Asus WebStorage, etc… Seulement vous avez remarqué que bien que ces services d’hébergement de données soient gratuits, ils sont limités par la taille, à moins d’y laisser quelques euros par mois…😒  Mais pas avec Owncloud 😋

En effet, Owncloud est une application web vous permettant de transformer votre Raspberry en un cloud personnel, où la capacité de stockage ne sera limitée que par le disque dur externe que vous y aurez branché. Bien entendu, vous pourrez accéder à votre cloud depuis n’importe où dans le monde sur n’importe quelle plateforme.

De plus, vous pourrez créer plusieurs utilisateurs, et créer des dossier partagés entre utilisateurs, ou même partager des dossiers ou fichiers via une url avec n’importe qui!

Bref c’est comme Dropbox, sauf que c’est gratuit, et seul votre disque dur externe limitera la capacité de stockage 😊

 

 

Pré-requis 

  • Raspberry Pi fonctionnel MySQL (ici)
  • Une certification SSL validée par un tier (ici)
  • Un disque dur externe (1To c’est super)

 

Sommaire :

  1. Préparation du disque dur
  2. Préparation de la base de donnée Owncloud
  3. Installation et configuration d’Owncloud
  4. Création d’utilisateurs

 

 

         Préparation du disque dur

Pour commencer, vous allez préparer votre disque dur externe pour qu’il soit monté sur votre système à chaque démarrage de votre Raspberry. Pour cela, on va devoir formatter le disque dur, ce qui implique la perte de toute information contenue dessus, faites donc préalablement une sauvegarde de votre disque dur externe.

Maintenant que vous avez tout sauvegardé, on va commencer. Tapez la commande suivante pour afficher toutes les partitions montées sur votre Raspberry

sudo fdisk -l

Vous pouvez donc voir les deux partitions de votre carte SD (mmcblk0p1 | mmcblk0p2) ainsi que celle de votre disque dur externe (sda1) comme suit

Device        Boot        Start        End        Sectors        Size        Id        Type
/dev/mmcblk0p1            8192         131071     122880         60M         c        W95 FAT32 (LBA)
/dev/mmcblk0p2            131072       62333951   62202880       29,7G       83       Linux

Device        Start       End          Sectors        Size        Type
/dev/sda1     2048        1953521663   1953519616     931,5G      Linux filesystem

Maintenant que vous connaissez le nom de votre disque dure externe, vous allez formater votre disque dur, mais pour cela vous devez démonter votre partition si elle est déjà montée

sudo umount /dev/sda1

Une fois votre partition démontée, passez au formatage

sudo fdisk /dev/sda

Puis entrez la lettre d pour supprimer la partition existante, puis appuyez sur la touche n pour créer une nouvelle partition, puis p pour créer une partition primaire.

On vous demande le nombre de partitions à créer, par défaut 1, tapez donc Entrer, puis on vous demande le secteur de départ, tapez Entrer pour sélectionner le secteur par défaut, puis Entrer pour le secteur de fin par défaut.

Vous allez spécifier que cette partition sera une partition Linux, pour cela, tapez t puis 83 pour indiquer que c’est une partition Linux.

Enfin tapez sur w pour valider toutes les étapes précédentes.

Vous avez donc préparé la partition de votre disque dur externe, cependant, elle est vide, il faut donc la formater, au système de fichier ext4, entrez donc la ligne suivante

sudo mkfs.ext4 -b 4096 sda1

Maintenant que votre disque dur est formaté, vous allez créer le répertoire de montage de votre disque dur externe à la racine du système (tous les fichiers contenus sur votre disque dur externe se trouveront donc au chemin suivant /Data)

sudo mkdir /Data

Ensuite vous allez éditer le fichier fstab pour indiquer au système où monter la partition à chaque démarrage

sudo nano /etc/fstab

Puis ajoutez la ligne suivante à la fin de votre fichier (ctrl + x puis o ou y pour enregistrer et fermer le fichier)

/dev/sda1      /Data           ext4    defaults          0       2

Redémarrez pour vérifier le bon montage de votre partition. Vous en avez terminé avec la préparation du disque dur externe qui contiendra toutes les données hébergées sur votre cloud 😊

 

 

         Préparation de la base de donnée Owncloud

Owncloud, tout comme WordPress, nécessite une certaine base dont une base de donnée. Pour cela, on va créer une base de donnée dédiée à Owncloud. Durant cette étape, vous allez créer un utilisateur et lui affecter un mot de passe. Je vous conseil de nommer cet utilisateur Admin et de lui affecter un mot de passe dont vous aurez besoin pour gérer les utilisateurs de votre cloud.

Allez, connectez vous à MySQL

sudo mysql -uroot -pMOT_DE_PASSE_SUPERUTILISATEUR

Une fois connecté, créez la base de donnée owncloud

CREATE DATABASE owncloud;

Puis créez un utilisateur administrateur qui aura tous les privilèges sur cette base de donnée

GRANT ALL PRIVILEGES ON owncloud.* TO NOM_DE_L_UTILISATEUR@localhost IDENTIFIED BY 'MOT_DE_PASSE';

Bien mettre les ‘ autours du mot de passe. Puis tapez exit pour quitter la SGBD.

 

 

         Installation et configuration d’Owncloud

Pour commencer Owncloud va avoir besoin de quelques supplément que vous allez installer

sudo apt-get install php5-cli php5-gd php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd php5-fpm php5-curl memcached php5-memcache varnish php5-apcu -y

Puis vous allez configurer php pour autoriser le transfert de fichier de 2Go. Pour cela, éditez le fichier de configuration /etc/php5/fpm/php.ini

sudo nano /etc/php5/fpm/php.ini

Puis trouvez les lignes suivantes et remplacez les valeurs en gras suivantes (comme d’habitude ctrl + x puis o ou y pour quitter et sauvegarder)

upload_max_filesize = 2000M
post_max_size = 2000M

Relancez Apache2 pour prendre en compte les changements

sudo service apache2 restart

Voilà qui est bon pour la configuration de php. Maintenant passons au téléchargement et à l’installation d’ownCloud

sudo wget https://download.owncloud.org/community/owncloud-9.1.3.tar.bz2

Une fois téléchargé, décompressez l’archive

sudo tar xvf owncloud-9.1.3.tar.bz2

Placez le répertoire décompressé dans le dossier des sites web

sudo mv owncloud /var/www/

Puis supprimez ce qui ne sert plus

sudo rm owncloud-9.1.3.tar.bz2

Maintenant affectez l’utilisateur Apache comme propriétaire du répertoire Owncloud pour qui soit accessible depuis internet

sudo chown -R www-data:www-data owncloud

Vous allez maintenant indiquer à Apache que vous avez un site owncloud

sudo nano /etc/apache2/sites-available/owncloud.conf

Et collez-y les éléments suivants

Alias /owncloud "/var/www/owncloud/"

<Directory /var/www/owncloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/owncloud
 SetEnv HTTP_HOME /var/www/owncloud

</Directory>

Puis créez un lien symbolique

sudo ln -s /etc/apache2/sites-available/owncloud.conf /etc/apache2/sites-enabled/owncloud.conf

Ensuite on va configurer Apache comme il est recommandé par Owncloud

a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

Puis redémarrez Apache

sudo service apache2 restart

Finalement on va créer le dossier qui accueillera tous les fichiers hébergés par Owncloud

sudo mkdir /Data/cloud/data

Puis on lui affecte le propriétaire Apache

sudo chwon -R www-data:www-data /Data/cloud

 

Passons enfin à la configuration d’Owncloud!

Dans votre navigateur, entrez votre_nom_de_domaine/owncloud

Vous devriez arriver sur la page suivante

Remplissez les champs comme suit

Nom d’utilisateur : le nom d’utilisateur que vous avez choisi dans MySQL, pour moi Admin
Mot de passe : le mot de passe lié à l’utilisateur Admin
Répertoire des données : /Data/cloud/data
Utilisateur de la base de données : root
Mot de passe de la base de données : mot de passe superutilisateur
Nom de la base de données : owncloud

Puis cliquez sur Terminer l’installation pour terminer l’installation, ce qui peut prendre 30 secondes.

Ça y est votre cloud est opérationnel! 😎

 

 

         Création d’utilisateurs

Maintenant que vous êtes connecté à votre super Raspberry, allez à en haut à droite de la page et cliquez sur Admin > Utilisateurs pour accéder à la gestion des utilisateurs de votre cloud.

En haut, entrez alors le nom d’un utilisateur et un mot de passe puis cliquez sur Créer. Vous pouvez donc dès maintenant vous connecter avec cet identifiant.

Maintenant que ce tutoriel est terminé, je vous conseille tout de même de fouiller un peu cette nouvelle application pour découvrir toutes ses fonctionnalités 😉

 

 

Raspberry

Raspberry – Certification SSL avec Letsencrypt

 

 

Certaines applications web peuvent nécessiter une connexion sécurisée de type HTTPS. Pour se faire, vous devez avoir une certification SSL. Cette dernière peut être générée par vos propre soin avec OpenSSL, cependant, les navigateurs bloqueront sûrement l’accès à votre site car vous vous serez auto-certifié, ce qui n’a aucune valeur aux yeux des moteurs de recherche, des navigateurs, etc…

Pour qu’une certification soit acceptée il faut qu’elle soit faite par un tiers. Des entreprises spécialisée vendent des certifications, le problème c’est que ça a un coût, environ 100€/an ?

Heureusement, un projet open source du nom de Letsencrypt permet de certifier son domain et ses sous-domaines gratuitement! ?

Dans ce tutoriel, vous installerez Letsencrypt et créerez votre première certification SSL pour votre site.

 

 

Pré-requis 

  • Raspberry Pi fonctionnel avec Apache (ici et ici)

 

Sommaire :

  1. Téléchargement et installation
  2. Mise en place du premier certificat
  3. Renouvellement du certificat

 

 

         Téléchargement et installation

Vous allez commencer par récupérer le git de Letsencrypt sur GitHub

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

C’est à peu prêt tout pour l’installation, autant dire qu’il n’y a rien à faire ?

Pour mettre Letsencrypt à jour, placez vous dans le dossier /opt/letsencrypt et faites un pull pour récupérer la dernière version des fichiers

cd /opt/letsencrypt

sudo git pull

 

 

         Mise en place du premier certificat

Pour commencer, il faut arrêter le service Apache2

sudo service apache2 stop

Pour mettre en place votre premier certificat, vous devez avoir défini votre site web dans Apache, pour cela, vous allez créer le fichier site.conf

sudo nano /etc/apache2/sites-available/site.conf

Puis collez le contenu suivant en modifiant les lignes ServerAdmin et DocumentRoot comme suit, et ajoutez la ligne ServerName avec votre nom de domaine

<VirtualHost *:80>

        ServerAdmin VOTRE_ADRESSE_MAIL
        ServerName  VOTRE_NOM_DE_DOMAINE
        DocumentRoot /var/www/martin_abadie
        RewriteEngine on
        RewriteCond %{SERVER_NAME} = VOTRE_NOM_DE_DOMAINE
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

</VirtualHost>

Puis quittez en sauvegardant (ctrl + x puis Y ou O suivant la langue)

Vous allez maintenant relancer Apache2

sudo service apache2 start

Une fois la définition de votre site sur le port 80 (port HTTP) établie, on va mettre en place la certification SSL pour votre nom de domaine

sudo /opt/letsencrypt/letsencrypt-auto -d VOTRE_NOM_DE_DOMAINE

Puis vous aurez le choix entre la méthode Easy qui permet un accès à votre site web en http ainsi qu’en https, ou la méthode Secure qui redirige toutes les demandes d’accès à votre site en https.

Ça y est, votre site est certifié SSL, vous pouvez vérifier en entrant dans votre navigateur https://VOTRE_NOM_DE_DOMAINE

Mais sachez que le certificat SSL généré par Letsencrypt a une durée de vie de 3 mois. Pour chaque nouveau sous-domaine, renouvelez cette étape en créant un fichier de configuration différent.

 

 

         Renouvellement du certificat

Une fois le bail du certificat arrivé à échéance, vous recevrez un mail vous indiquant qu’il faut le renouveler, vous devrez alors exécuter la commande suivante

/opt/letsencrypt/letsencrypt-auto --apache --renew-by-default -d VOTRE_NOM_DE_DOMAINE

 

 

Raspberry

Raspberry – Installer WordPress

 

 

Pré-requis :

  • Raspberry Pi fonctionnel (ici)
  • Avoir installé Apache, Php et MySQL (ici)

Sommaire :

  1. Téléchargement et installation
  2. Configuration de la base de données
  3. Configuration de WordPress

 

 

         Téléchargement et installation

Pour commencer si vous avez un site web fonctionnel, sachez que pour installer WordPress il va falloir faire table rase de votre dossier /var/www/martin_abadie donc commencez par faire une sauvegarde

cd /var/www/martin_abadie
sudo tar -zcvf ~/sauvegarde_site.tar.gz *

Maintenant supprimez tout ce qui se trouve dans le dossier /var/www/martin_abadie

sudo rm -rf *

Téléchargez maintenant l’archive de WordPress qui contient tous les fichiers nécessaires pour faire fonctionner WordPress

sudo wget http://wordpress.org/latest.tar.gz

Décompressez l’archive

sudo tar xzf latest.tar.gz

Puis déplacez le contenu de l’archive décompressée dans le dossier courant (qui est normalement /var/www/martin_abadie)

sudo mv wordpress/* .

Enfin supprimez les éléments qui ne vous servent plus

sudo rm -rf wordpress latest.tar.gz

Pour finir avec l’installation vous devez changer le propriétaire des fichiers pour donner les droit à Apache

sudo chown -R www-data:www-data .

 

 

         Configuration de la base de données

WordPress nécessite une base de données pour gérer les utilisateurs, les articles etc… Normalement vous avez dû installer MySQL, si ce n’est pas fait d’abord suivez ce tutoriel avant de revenir à cette étape.

Ici vous allez donc configurer une nouvelle base de données, pour ce faire connectez vous à MySQL

mysql -uroot -pVOTRE_MOT_DE_PASSE_SUPERUTILISATEUR

Une fois connecté, créez la base de données nommée wordpress

CREATE DATABASE wordpress;

Puis quittez en tapant

exit

Voilà qui est en est terminé avec la configuration de la base de donnée ?

 

         Configuration de WordPress

Dans votre navigateur, entrez votre nom de domaine, vous devriez arriver sur cette page

 

Cliquez alors sur Let’s go!

Puis remplissez les champs comme dans l’image suivante, avec entre autre votre mot de passe superutilisateur de MySQL

 

Puis cliquez sur Submit

Puis choisissez votre langue parmi les langues proposées dans la liste

Enfin choisissez un titre pour la page d’accueil de votre site, un identifiant et un mot de passe avec lesquels vous allez vous connecter pour modifier votre site et ajouter des articles, etc…

Finalisez l’installation en cliquant sur Installer WordPress

Ça y est, vous avez terminé, vous n’avez plus qu’à installer un thème qui vous plaît et de le personnaliser et en faire un site de guedin ?