SlideShare une entreprise Scribd logo
Smart Home
Controller le Raspberry Pi à partir d’une page web
L’idée
• L'idée est de contrôler un Smart Home, un robot (ou n'importe quoi),
en utilisant des commandes de bas niveau écrites avec des scripts
Shell commandés directement à partir d'une page HTML. En
n'utilisant pas de langages de niveau supérieur, par exemple, Python
rend le sorties très réactif et rapide à agir.
Raspberry Pi ??
• Le Raspberry Pi est un nano-ordinateur monocarte à processeur
ARM conçu par le créateur de jeux vidéo David Braben, dans le cadre
de sa fondation Raspberry Pi.
• Cet ordinateur, qui a la taille d'une carte de crédit, est destiné à
encourager l'apprentissage de la programmation informatique; il
permet l'exécution de plusieurs variantes du système
d'exploitation libre GNU/Linux et des logiciels compatibles. Il est
fourni nu (carte mère seule, sans boîtier, alimentation, clavier, souris
ni écran) dans l'objectif de diminuer les coûts et de permettre
l'utilisation de matériel de récupération.
Principales applications:
• PC / tablette / ordinateur portable à faible coût
• Applications IoT
• Centre média
• Robotique
• Domotique industrielle
• Serveur / serveur en nuage
• Serveur d'impression
• Surveillance de sécurité
• Caméra Web
• Jeux
• Point d'accès sans fil
• Sensibilité / surveillance environnementale (p. Ex. Station météo)
• Dans ce projet on va controller 2 servos moteurs et une LED.
• Ces sorties qu’on va controller se dévisent en 2 parties:
Ceux qui fonctionnent avec un signal Digital (0 ou 1 equivalent à 0 ou
5v)
Et ceux qui fonctionnent avec un signal pwm (depend du rapport
cyclique)
Etape 1: La nomenclature
• 1 Raspberry Pi model 3
• 2 Servo Moteurs (2x)
• 1 Alimentation pour le Raspberry Pi
• 1 LED et une resistance de 330 ohms
• 1 Plaque à essai
• 1 Webcam
Etape 2: La verification et l’installation des
bibliothèques
• Comme on dit au debut, on va utiliser des commandes de bas niveau
écrites avec des scripts Shell commandés directement à partir d'une
page HTML c.à.d on va t-etre capable de controller le Rpi à partir des
commandes exécutées dans le terminal.
• On commence par vérifier la bibliotheque qui nous permet de sortir
ou entrer un signal digital et dans notre cas il suffit de sortir un signal
digital pour controller la LED.
• gpio –v
Etape 2: La verification et l’installation des
bibliothèques
• Ensuite on va installer la bibliotheque qui va nous permettre de
controller les servos moteurs, on va utiliser la bibliotheque
ServoBlaster.
• Il s'agit d'un logiciel pour le RaspberryPi, qui fournit une interface
pour conduire plusieurs servos via les broches GPIO. Vous contrôlez
les positions d'asservissement en envoyant des commandes au
conducteur indiquant quelle largeur d'impulsion une sortie
d'asservissement particulière devrait utiliser. Le conducteur maintient
cette largeur d'impulsion jusqu'à ce que vous envoyiez une nouvelle
commande demandant une autre largeur.
Etape 2: La verification et l’installation des
bibliothèques
• sudo git clone https://github.com/richardghirst/PiBits
• cd PiBits/ServoBlaster/user
• sudo make servod
• sudo make install
• sudo chmod 755 servod
Etape 3: Preparer les modes des GPIO’s
(entrée ou sorties)
• Dans notre cas on a que des sorties:
• Pour les sorties digital:
• gpio -g mode 10 out
• Cette commande est utilisée pour configurer le GPIO 10 comme
output.
• Pour les sorties PWM:
• sudo ./servod --p1pins=5,7
• Cette commande est utilisée pour configurer le GPIO 5 et 7 comme
output PWM.
Etape 4: Tester les sorties
• Une fois que la broche a son mode défini, on peut assigner un état
logique à la sortie:
• Digital:
• gpio -g write 10 1
• gpio -g write 10 0
• PWM:
• echo P1-5=40% >/dev/servoblaster
• echo P1-7=60% >/dev/servoblaster
Etape 5: Installation du serveur Web
LIGHTTPD
• Nous allons installer LIGHTTPD qui est un WebServer très "léger" et
rapide (peut être utilisé à la place d'Apache par exemple). Comme
décrit sur sa page wiki lighttpd, «Lighttpd est un serveur Web
sécurisé, rapide, compatible et très flexible, optimisé pour les
environnements performants. Il présente une empreinte de mémoire
très faible par rapport à d'autres serveurs Web et prend en charge la
charge de l'ordinateur.
Etape 5: Installation du serveur Web
LIGHTTPD
• sudo apt-get -y install lighttpd
• sudo lighttpd-enable-mod cgi
• sudo lighttpd-enable-mod fastcgi
Etape 5: Installation d'un serveur de webcam
Raspberry Pi
• Wget https://github.com/ccrisan/motioneye/wiki/precompiled/ffmpeg_3.1.1-
1_armhf.deb
• sudo dpkg -i ffmpeg_3.1.1-1_armhf.deb
• sudo apt-get install curl libssl-dev libcurl4-openssl-dev libjpeg-dev libx264-142
libavcodec56 libavformat56 libmysqlclient18 libswscale3 libpq5
• Avec ces paquets installés, nous pouvons maintenant saisir la dernière version
du logiciel de mouvement et l'installer.
• wget https://github.com/Motion-Project/motion/releases/download/release-
4.0.1/pi_jessie_motion_4.0.1-1_armhf.deb
• sudo dpkg -i pi_jessie_motion_4.0.1-1_armhf.deb
Etape 5: Installation d'un serveur de webcam
Raspberry Pi
• Maintenant, vous devriez pouvoir vérifier le flux de Webcam à
l'adresse IP de notre Pi, par exemple, dans votre navigateur, passez à
l'adresse suivante: 192.168.1.121:8081
Etape 6: La création du page web et des
scripts
• Chaque fichier de script est essentiellement du texte brut. Lorsqu'un
fichier texte est tenté d'être exécuté, les shells les analyseront pour
des indices quant à savoir s'ils sont des scripts ou non, et comment
gérer tout correctement. Pour cette raison, il existe quelques lignes
directrices que vous devez connaître.
• Chaque script devrait commencer par "#! / Bin / bash" (The Hash-
Bang Hack}
• Chaque nouvelle ligne est une nouvelle commande
• Les lignes de commentaires commencent par un #
Etape 6: La création du page web et des
scripts
• Lorsqu'un shell analyse un fichier texte, le moyen le plus direct
d'identifier le fichier en tant que script est en faisant votre première
ligne: #! / Bin / bash (The Hash-Bang Hack). Si vous utilisez un autre
shell, suivez son chemin ici. Les lignes de commentaires commencent
par hashes (#), mais en ajoutant le bang (!) Et le chemin de shell après
qu'il s'agit d'une sorte de hack qui contournera cette règle de
commentaire et forcera le script à exécuter avec le shell auquel cette
ligne pointe.
Etape 6: La création du page web et des
scripts
• Par exemple, pour créer un script shell pour allumer la LED, nous
devons créer le fichier ci-dessous
• Sudo nano turnOn.cgi
• #! / Bin / bash
• gpio -g write 10 1
Une fois le script créé, nous devons lui donner l'autorisation d'être exécuté:
sudo chmod 755 forward.cgi
Etape 6: La création du page web et des
scripts
• Notez qu’on utilise .cgi comme extension de fichier. CGI signifie
"Common Gateway Interface". C'est un moyen standard pour les
serveurs Web d'interagir avec les programmes exécutables installés
sur un serveur qui génère dynamiquement des pages Web. Ces
programmes sont connus sous le nom de scripts CGI ou simplement
CGI; Ils sont généralement écrits dans un langage de script, mais
peuvent être écrits dans n'importe quel langage de programmation.
Etape 6: La création du page web et des
scripts
• En cours, la même idée doit être appliquée aux autres possibilités
,dans notre cas:
• allumer la LED
• fermer la LED
• tourner le servo1 à tel degré
• tourner le servo1 à on autre degré
• tourner le servo2 à tel degré
• tourner le servo2 à un autre degré
Etape 6: La création du page web et des
scripts
• Allumer la LED
• sudo nano turnOn.cgi
• #!/bin/bash
• gpio -g write 10 1
• Etteindre la LED
• sudo nano turnOff.cgi
• #!/bin/bash
• gpio -g write 10 0
Etape 6: La création du page web et des
scripts
• Tourner le servo1 à tel degré
• sudo nano openDoor.cgi
• #!/bin/bash
• echo P1-5=30% >/dev/servoblaster
• Tourner le servo1 à on autre degré
• sudo nano closeDoor.cgi
• #!/bin/bash
• echo P1-5=77% >/dev/servoblaster
• Tourner le servo2 à tel degré
• sudo nano openWindow.cgi
• #!/bin/bash
• echo P1-7=30% >/dev/servoblaster
• Tourner le servo2 à on autre degré
• sudo nano openWindow.cgi
• #!/bin/bash
• echo P1-7=77% >/dev/servoblaster
Etape 6: La création du page web et des
scripts
• C'est une bonne pratique que nous ayons un répertoire spécifique
pour les programmes utilisés et appeler le "bin". Ainsi, pour
sauvegarder les scripts que nous utiliserons dans le projet, nous
devons créer un répertoire comme cgi-bin contenant tous les scripts
exécutables (ou fichiers binaires). Par exemple, / var / www / cgi-bin.
• Une fois que les scripts sont créés, vous devez leur donner
l'autorisation d'être exécuté,
• Chmod 755 *.cgi
Etape 7: Création de la page HTML pour le
contrôle
• <button style="height: 50px; width: 100px" onclick="lighton>LIGHT
ON</button>
Etape 7: Création de la page HTML pour le
contrôle
• À ce stade, le serveur Web est en cours d'exécution et si une page
index.html est située à / var / www, nous pouvons l'accéder à partir de
n'importe quel navigateur, en tapant l'adresse IP Rpi.
• Dans le html de notre page on va ecrire des fonctions en javascripts
Lorsque le bouton est pressé, en raison de la commande "onclick = lighton
()", la fonction "lighton () s'appelle:
• Et une fois que la fonction lighton () est appelée, le script lighton.cgi est
exécuté et "voilá", la LED s'allume.
function lighton()
{
xmlhttp.open("GET","cgi-bin/lighton.cgi",true);
xmlhttp.send();
}
Etape 7: Création de la page HTML pour le
contrôle
• La même procédure doit être utilisée pour tous les boutons.
• Une fois le code est complet on savaugarde et on quitte.
Conclusion
• Le schéma ci-dessus montre l'idée de base du projet. Le RPi est
configuré comme serveur Web et recevra des commandes à partir
d'une page HTML. Ces commandes modifient l'état des GPIO, ce qui
permet aux moteurs de commande RPi (degré de rotation) et allumer
/ éteindre les LED.
• Ce que nous avons fait ici, c'est contrôler les RPI GPIO sur Internet.
Nous pouvons contrôler n'importe quoi à partir de là!
Merci pour votre attention

Contenu connexe

Tendances

[2015] Laravel yet another framework
[2015] Laravel  yet another framework[2015] Laravel  yet another framework
[2015] Laravel yet another framework
LAHAXE Arnaud
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
Rachid NID SAID
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
CocoaHeads France
 
Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3 Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3
Roland Benedetti
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
TheFamily
 
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015
Wisembly
 
Synchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codeSynchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-code
gplanchat
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
Ippon
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
Hugo Hamon
 
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
kevinroulleau
 
Mise à jour d’un système Linux embarqué « Over The Air »
Mise à jour d’un système Linux embarqué « Over The Air »Mise à jour d’un système Linux embarqué « Over The Air »
Mise à jour d’un système Linux embarqué « Over The Air »
Pierre-jean Texier
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
Xavier Gorse
 
Apache for développeurs PHP
Apache for développeurs PHPApache for développeurs PHP
Apache for développeurs PHP
julien pauli
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Christophe Furmaniak
 
Avez-vous compris ce que sont les Features toggles ?
Avez-vous compris ce que sont les Features toggles ?Avez-vous compris ce que sont les Features toggles ?
Avez-vous compris ce que sont les Features toggles ?
Eric Le Merdy
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
gplanchat
 
Réalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHPRéalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHP
Alexandre Morgaut
 
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
Christophe Furmaniak
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitGeoffrey Bachelet
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
Nicolas Herbaut
 

Tendances (20)

[2015] Laravel yet another framework
[2015] Laravel  yet another framework[2015] Laravel  yet another framework
[2015] Laravel yet another framework
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
 
Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3 Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
 
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015
 
Synchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codeSynchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-code
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
 
Mise à jour d’un système Linux embarqué « Over The Air »
Mise à jour d’un système Linux embarqué « Over The Air »Mise à jour d’un système Linux embarqué « Over The Air »
Mise à jour d’un système Linux embarqué « Over The Air »
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Apache for développeurs PHP
Apache for développeurs PHPApache for développeurs PHP
Apache for développeurs PHP
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
 
Avez-vous compris ce que sont les Features toggles ?
Avez-vous compris ce que sont les Features toggles ?Avez-vous compris ce que sont les Features toggles ?
Avez-vous compris ce que sont les Features toggles ?
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
Réalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHPRéalisation d’applications Desktop Windows/Mac Os avec PHP
Réalisation d’applications Desktop Windows/Mac Os avec PHP
 
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
 

Similaire à Presentation

Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
VISEO
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010
Guillaume Sautereau
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
Jonathan Bonzy
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1
easyopenerp
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
adiouf2
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
Dimitri LEMBOKOLO
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
Noël
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Nicolas Silberman
 
Reseau entreprise
Reseau entrepriseReseau entreprise
Reseau entreprise
SAIDRAISS2
 
Compte rendu chaberge
Compte rendu chabergeCompte rendu chaberge
Compte rendu chabergeshiruh
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
ssuser192642
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
LeTesteur
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1
fayway
 
Jenkins
JenkinsJenkins
Installation open erp
Installation open erpInstallation open erp
Installation open erp
Addi Ait-Mlouk
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoft
LeTesteur
 
Configuration des services web sous centOS 5
Configuration des services web sous centOS 5Configuration des services web sous centOS 5
Configuration des services web sous centOS 5
Sarah
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 

Similaire à Presentation (20)

Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010
 
Mysql
MysqlMysql
Mysql
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
 
Reseau entreprise
Reseau entrepriseReseau entreprise
Reseau entreprise
 
Compte rendu chaberge
Compte rendu chabergeCompte rendu chaberge
Compte rendu chaberge
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1
 
Jenkins
JenkinsJenkins
Jenkins
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoft
 
Configuration des services web sous centOS 5
Configuration des services web sous centOS 5Configuration des services web sous centOS 5
Configuration des services web sous centOS 5
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 

Presentation

  • 1. Smart Home Controller le Raspberry Pi à partir d’une page web
  • 2. L’idée • L'idée est de contrôler un Smart Home, un robot (ou n'importe quoi), en utilisant des commandes de bas niveau écrites avec des scripts Shell commandés directement à partir d'une page HTML. En n'utilisant pas de langages de niveau supérieur, par exemple, Python rend le sorties très réactif et rapide à agir.
  • 3. Raspberry Pi ?? • Le Raspberry Pi est un nano-ordinateur monocarte à processeur ARM conçu par le créateur de jeux vidéo David Braben, dans le cadre de sa fondation Raspberry Pi. • Cet ordinateur, qui a la taille d'une carte de crédit, est destiné à encourager l'apprentissage de la programmation informatique; il permet l'exécution de plusieurs variantes du système d'exploitation libre GNU/Linux et des logiciels compatibles. Il est fourni nu (carte mère seule, sans boîtier, alimentation, clavier, souris ni écran) dans l'objectif de diminuer les coûts et de permettre l'utilisation de matériel de récupération.
  • 4. Principales applications: • PC / tablette / ordinateur portable à faible coût • Applications IoT • Centre média • Robotique • Domotique industrielle • Serveur / serveur en nuage • Serveur d'impression • Surveillance de sécurité • Caméra Web • Jeux • Point d'accès sans fil • Sensibilité / surveillance environnementale (p. Ex. Station météo)
  • 5.
  • 6.
  • 7. • Dans ce projet on va controller 2 servos moteurs et une LED. • Ces sorties qu’on va controller se dévisent en 2 parties: Ceux qui fonctionnent avec un signal Digital (0 ou 1 equivalent à 0 ou 5v) Et ceux qui fonctionnent avec un signal pwm (depend du rapport cyclique)
  • 8. Etape 1: La nomenclature • 1 Raspberry Pi model 3 • 2 Servo Moteurs (2x) • 1 Alimentation pour le Raspberry Pi • 1 LED et une resistance de 330 ohms • 1 Plaque à essai • 1 Webcam
  • 9. Etape 2: La verification et l’installation des bibliothèques • Comme on dit au debut, on va utiliser des commandes de bas niveau écrites avec des scripts Shell commandés directement à partir d'une page HTML c.à.d on va t-etre capable de controller le Rpi à partir des commandes exécutées dans le terminal. • On commence par vérifier la bibliotheque qui nous permet de sortir ou entrer un signal digital et dans notre cas il suffit de sortir un signal digital pour controller la LED. • gpio –v
  • 10. Etape 2: La verification et l’installation des bibliothèques • Ensuite on va installer la bibliotheque qui va nous permettre de controller les servos moteurs, on va utiliser la bibliotheque ServoBlaster. • Il s'agit d'un logiciel pour le RaspberryPi, qui fournit une interface pour conduire plusieurs servos via les broches GPIO. Vous contrôlez les positions d'asservissement en envoyant des commandes au conducteur indiquant quelle largeur d'impulsion une sortie d'asservissement particulière devrait utiliser. Le conducteur maintient cette largeur d'impulsion jusqu'à ce que vous envoyiez une nouvelle commande demandant une autre largeur.
  • 11. Etape 2: La verification et l’installation des bibliothèques • sudo git clone https://github.com/richardghirst/PiBits • cd PiBits/ServoBlaster/user • sudo make servod • sudo make install • sudo chmod 755 servod
  • 12. Etape 3: Preparer les modes des GPIO’s (entrée ou sorties) • Dans notre cas on a que des sorties: • Pour les sorties digital: • gpio -g mode 10 out • Cette commande est utilisée pour configurer le GPIO 10 comme output. • Pour les sorties PWM: • sudo ./servod --p1pins=5,7 • Cette commande est utilisée pour configurer le GPIO 5 et 7 comme output PWM.
  • 13. Etape 4: Tester les sorties • Une fois que la broche a son mode défini, on peut assigner un état logique à la sortie: • Digital: • gpio -g write 10 1 • gpio -g write 10 0 • PWM: • echo P1-5=40% >/dev/servoblaster • echo P1-7=60% >/dev/servoblaster
  • 14. Etape 5: Installation du serveur Web LIGHTTPD • Nous allons installer LIGHTTPD qui est un WebServer très "léger" et rapide (peut être utilisé à la place d'Apache par exemple). Comme décrit sur sa page wiki lighttpd, «Lighttpd est un serveur Web sécurisé, rapide, compatible et très flexible, optimisé pour les environnements performants. Il présente une empreinte de mémoire très faible par rapport à d'autres serveurs Web et prend en charge la charge de l'ordinateur.
  • 15. Etape 5: Installation du serveur Web LIGHTTPD • sudo apt-get -y install lighttpd • sudo lighttpd-enable-mod cgi • sudo lighttpd-enable-mod fastcgi
  • 16. Etape 5: Installation d'un serveur de webcam Raspberry Pi • Wget https://github.com/ccrisan/motioneye/wiki/precompiled/ffmpeg_3.1.1- 1_armhf.deb • sudo dpkg -i ffmpeg_3.1.1-1_armhf.deb • sudo apt-get install curl libssl-dev libcurl4-openssl-dev libjpeg-dev libx264-142 libavcodec56 libavformat56 libmysqlclient18 libswscale3 libpq5 • Avec ces paquets installés, nous pouvons maintenant saisir la dernière version du logiciel de mouvement et l'installer. • wget https://github.com/Motion-Project/motion/releases/download/release- 4.0.1/pi_jessie_motion_4.0.1-1_armhf.deb • sudo dpkg -i pi_jessie_motion_4.0.1-1_armhf.deb
  • 17. Etape 5: Installation d'un serveur de webcam Raspberry Pi • Maintenant, vous devriez pouvoir vérifier le flux de Webcam à l'adresse IP de notre Pi, par exemple, dans votre navigateur, passez à l'adresse suivante: 192.168.1.121:8081
  • 18. Etape 6: La création du page web et des scripts • Chaque fichier de script est essentiellement du texte brut. Lorsqu'un fichier texte est tenté d'être exécuté, les shells les analyseront pour des indices quant à savoir s'ils sont des scripts ou non, et comment gérer tout correctement. Pour cette raison, il existe quelques lignes directrices que vous devez connaître. • Chaque script devrait commencer par "#! / Bin / bash" (The Hash- Bang Hack} • Chaque nouvelle ligne est une nouvelle commande • Les lignes de commentaires commencent par un #
  • 19. Etape 6: La création du page web et des scripts • Lorsqu'un shell analyse un fichier texte, le moyen le plus direct d'identifier le fichier en tant que script est en faisant votre première ligne: #! / Bin / bash (The Hash-Bang Hack). Si vous utilisez un autre shell, suivez son chemin ici. Les lignes de commentaires commencent par hashes (#), mais en ajoutant le bang (!) Et le chemin de shell après qu'il s'agit d'une sorte de hack qui contournera cette règle de commentaire et forcera le script à exécuter avec le shell auquel cette ligne pointe.
  • 20. Etape 6: La création du page web et des scripts • Par exemple, pour créer un script shell pour allumer la LED, nous devons créer le fichier ci-dessous • Sudo nano turnOn.cgi • #! / Bin / bash • gpio -g write 10 1 Une fois le script créé, nous devons lui donner l'autorisation d'être exécuté: sudo chmod 755 forward.cgi
  • 21. Etape 6: La création du page web et des scripts • Notez qu’on utilise .cgi comme extension de fichier. CGI signifie "Common Gateway Interface". C'est un moyen standard pour les serveurs Web d'interagir avec les programmes exécutables installés sur un serveur qui génère dynamiquement des pages Web. Ces programmes sont connus sous le nom de scripts CGI ou simplement CGI; Ils sont généralement écrits dans un langage de script, mais peuvent être écrits dans n'importe quel langage de programmation.
  • 22. Etape 6: La création du page web et des scripts • En cours, la même idée doit être appliquée aux autres possibilités ,dans notre cas: • allumer la LED • fermer la LED • tourner le servo1 à tel degré • tourner le servo1 à on autre degré • tourner le servo2 à tel degré • tourner le servo2 à un autre degré
  • 23. Etape 6: La création du page web et des scripts • Allumer la LED • sudo nano turnOn.cgi • #!/bin/bash • gpio -g write 10 1 • Etteindre la LED • sudo nano turnOff.cgi • #!/bin/bash • gpio -g write 10 0
  • 24. Etape 6: La création du page web et des scripts • Tourner le servo1 à tel degré • sudo nano openDoor.cgi • #!/bin/bash • echo P1-5=30% >/dev/servoblaster • Tourner le servo1 à on autre degré • sudo nano closeDoor.cgi • #!/bin/bash • echo P1-5=77% >/dev/servoblaster • Tourner le servo2 à tel degré • sudo nano openWindow.cgi • #!/bin/bash • echo P1-7=30% >/dev/servoblaster • Tourner le servo2 à on autre degré • sudo nano openWindow.cgi • #!/bin/bash • echo P1-7=77% >/dev/servoblaster
  • 25. Etape 6: La création du page web et des scripts • C'est une bonne pratique que nous ayons un répertoire spécifique pour les programmes utilisés et appeler le "bin". Ainsi, pour sauvegarder les scripts que nous utiliserons dans le projet, nous devons créer un répertoire comme cgi-bin contenant tous les scripts exécutables (ou fichiers binaires). Par exemple, / var / www / cgi-bin. • Une fois que les scripts sont créés, vous devez leur donner l'autorisation d'être exécuté, • Chmod 755 *.cgi
  • 26. Etape 7: Création de la page HTML pour le contrôle • <button style="height: 50px; width: 100px" onclick="lighton>LIGHT ON</button>
  • 27. Etape 7: Création de la page HTML pour le contrôle • À ce stade, le serveur Web est en cours d'exécution et si une page index.html est située à / var / www, nous pouvons l'accéder à partir de n'importe quel navigateur, en tapant l'adresse IP Rpi. • Dans le html de notre page on va ecrire des fonctions en javascripts Lorsque le bouton est pressé, en raison de la commande "onclick = lighton ()", la fonction "lighton () s'appelle: • Et une fois que la fonction lighton () est appelée, le script lighton.cgi est exécuté et "voilá", la LED s'allume. function lighton() { xmlhttp.open("GET","cgi-bin/lighton.cgi",true); xmlhttp.send(); }
  • 28. Etape 7: Création de la page HTML pour le contrôle • La même procédure doit être utilisée pour tous les boutons. • Une fois le code est complet on savaugarde et on quitte.
  • 29.
  • 30. Conclusion • Le schéma ci-dessus montre l'idée de base du projet. Le RPi est configuré comme serveur Web et recevra des commandes à partir d'une page HTML. Ces commandes modifient l'état des GPIO, ce qui permet aux moteurs de commande RPi (degré de rotation) et allumer / éteindre les LED. • Ce que nous avons fait ici, c'est contrôler les RPI GPIO sur Internet. Nous pouvons contrôler n'importe quoi à partir de là!
  • 31. Merci pour votre attention