1. Livres et vidéos
  2. Python, Raspberry Pi et Flask - Capturez des données télémétriques et réalisez des tableaux de bord web

Python, Raspberry Pi et Flask Capturez des données télémétriques et réalisez des tableaux de bord web

  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne
  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7

Présentation

Ce livre s'adresse à toute personne qui souhaite découvrir comment capturer des données télémétriques d'une maison (température, humidité, pression atmosphérique, luminosité) et les présenter dans une interface web sous forme de tableaux de bord. L'auteur s'appuie pour cela sur les possibilités offertes par le langage Python, le nano-ordinateur Raspberry Pi et le framework Flask. Bien qu'appliqué au Raspberry Pi, le contenu du livre est suffisamment universel pour être exploité sur d'autres plateformes telles que des ordinateurs.

Pour tirer le meilleur profit de la lecture de ce livre, des notions de programmation orientée objet et  quelques rudiments sur le langage Python et en électronique sont nécessaires. Une première expérience avec le Raspberry Pi et est également souhaitée.

Les points technologiques du livre sont isolés et vulgarisés avant d'être intégrés dans un projet global qui sert de fil conducteur à la prise en main et l'exploitation des différentes technologies étudiées. L'auteur commence par présenter la collecte de données à l'aide de composants basés sur un microcontrôleur ESP8266 programmé avec MicroPython. Il détaille ensuite la centralisation de ces données à l'aide d'un broker MQTT fonctionnant sur un Raspberry Pi. Dans la suite du livre, le lecteur découvre comment une base de données SQLite 3 permet d'offrir un stockage persistant des données et comment elle peut être exploitée par une application Flask pour produire des tableaux de bord sur mesure.

À l'issue de ce livre, le lecteur disposera de bases solides pour créer sereinement une grande variété de solutions, plus ou moins sophistiquées, en fonction de ses besoins.

Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.

Table des matières

  • Présentation
    • 1. Avant-propos
    • 2. Motivations
    • 3. Présentation du projet
    • 4. Objectifs de l'ouvrage
    • 5. Prérequis
    • 6. Matériel utilisé
      • 6.1 Raspberry Pi
      • 6.2 Feather ESP8266 Huzzah
      • 6.3 Module relais
      • 6.4 DHT11 - Humidité
      • 6.5 AM2315 - Température et humidité
      • 6.6 DS18B20 - Température
      • 6.7 BME280 et BMP280 - Pression, humidité, température
      • 6.8 TSL2561 - Luminosité
      • 6.9 ADS1115 - Lecture analogique
      • 6.10 TMP36 - Température
      • 6.11 Photorésistance - luminosité
      • 6.12 PIR - Détection de mouvement
      • 6.13 Contact magnétique
      • 6.14 Senseur à effet Hall numérique
    • 7. Code source
      • 7.1 Téléchargement
      • 7.2 GitHub
    • 8. Configuration
      • 8.1 Installation du Raspberry Pi
      • 8.2 Utilitaires : des outils pour travailler
        • 8.2.1 Connexion SSH
        • 8.2.2 Éditeur de texte Nano
        • 8.2.3 Transfert de fichiers via SSH (sftp)
        • 8.2.4 Système de fichiers SSH
        • 8.2.5 Bureau à distance
    • 9. Type de données collectées
  • Le broker MQTT
    • 1. Présentation et concepts
      • 1.1 Le broker MQTT, élément central du réseau MQTT
      • 1.2 Les éléments de MQTT
      • 1.3 Le broker MQTT
      • 1.4 Les topics
      • 1.5 Les publishers
      • 1.6 Les subscribers
      • 1.7 Le ClientId
    • 2. Les topics en détail
      • 2.1 Contenu du message
        • 2.1.1 Le message selon MQTT
        • 2.1.2 En marge du standard
      • 2.2 Création de topic et bonnes pratiques
      • 2.3 Les topics système
    • 3. Souscription et expression de filtrage
      • 3.1 Expression de filtrage sans joker
      • 3.2 Le joker de niveau
      • 3.3 Le joker multiniveau
    • 4. Les qualités de service MQTT
      • 4.1 Les niveaux de qualités
        • 4.1.1 QoS 0 : une fois max
        • 4.1.2 QoS 1 : au moins une fois
        • 4.1.3 QoS 2 : exactement une fois
      • 4.2 Rétrogradation de QoS
      • 4.3 Quel QoS utiliser et quand ?
    • 5. La rétention de messages
    • 6. Les clients persistants
    • 7. Quel broker MQTT ?
    • 8. Installation de Mosquitto
      • 8.1 Mise à jour
      • 8.2 Installation
    • 9. Test avec Mosquitto.org
      • 9.1 La souscription
      • 9.2 La publication
      • 9.3 Tester le broker MQTT du Raspberry Pi
    • 10. Topics du projet
    • 11. QoS du projet
    • 12. Sécurité
    • 13. Configurer le login du broker MQTT
      • 13.1 Modifier la configuration
      • 13.2 Tester la configuration
    • 14. MQTT en Python
      • 14.1 test-mqtt-client-sub.py
      • 14.2 test-mqtt-client-pub.py
      • 14.3 Documentation complémentaire
    • 15. MQTT en MicroPython
  • ESP8266 sous MicroPython
    • 1. Présentation de l'ESP8266
      • 1.1 Les possibilités offertes par l'ESP8266
      • 1.2 Les plateformes ESP8266 populaires
      • 1.3 Programmer un ESP8266
      • 1.4 Feather Huzzah ESP8266 en détail
      • 1.5 Brochage du Feather Huzzah ESP8266
        • 1.5.1 Alimentation
        • 1.5.2 Port série
        • 1.5.3 Broches d'entrée/sortie
        • 1.5.4 Entrée analogique
        • 1.5.5 Les autres broches
    • 2. Charger le firmware MicroPython
      • 2.1 Identifier le firmware MicroPython
      • 2.2 Préparatifs
      • 2.3 Reflasher l'ESP8266
    • 3. Prise de contrôle
      • 3.1 Communiquer avec MicroPython
      • 3.2 Communiquer avec un ESP8266 sous MicroPython
      • 3.3 REPL : l'invite de commandes MicroPython
      • 3.4 RShell
      • 3.5 Ampy
    • 4. WebREPL
      • 4.1 Le démon WebREPL
        • 4.1.1 Activer WebREPL sur l'ESP8266
        • 4.1.2 Le mot de passe WebREPL
      • 4.2 Client WebREPL
    • 5. Nom d'hôte et adresse MAC
    • 6. Le mode point d'accès (AP)
    • 7. Le mode station (STA)
      • 7.1 Mode STA et scan réseau
      • 7.2 Réseau Wi-Fi visible ou masqué
      • 7.3 Connexion en mode STA
      • 7.4 WebREPL en mode STA
      • 7.5 Désactivation du point d'accès
      • 7.6 Rechercher l'adresse IP d'un ESP8266
    • 8. Séquence de démarrage MicroPython
      • 8.1 Fichier boot.py
      • 8.2 Fichier main.py
      • 8.3 Un fichier boot.py pour ESP8266
        • 8.3.1 Script trop optimiste et conséquences
        • 8.3.2 RunApp - Activation de l'application
        • 8.3.3 Un script de boot avancé
    • 9. Programmer
      • 9.1 Création d'une bibliothèque
      • 9.2 Les bibliothèques MicroPython
        • 9.2.1 Bibliothèques standards et microbibliothèques
        • 9.2.2 Bibliothèques spécifiques à MicroPython
        • 9.2.3 Bibliothèque spécifique à l'ESP8266
        • 9.2.4 Autres bibliothèques MicroPython
        • 9.2.5 Mécanisme de chargement d'une bibliothèque
      • 9.3 Charger et exécuter un script à la volée
      • 9.4 RunApp : exécution conditionnelle de main.py
      • 9.5 Entrées/sorties sur ESP8266
        • 9.5.1 Entrée numérique
        • 9.5.2 Entrée numérique (pull-up interne)
        • 9.5.3 Entrée numérique et déparasitage logiciel
        • 9.5.4 Sortie numérique
        • 9.5.5 Entrée analogique
        • 9.5.6 Ajout d'entrée/sortie avec MCP23017
        • 9.5.7 Lecture analogique avec l'ADS1115
      • 9.6 Senseur et interface sur ESP8266
        • 9.6.1 Senseur PIR - senseur de proximité
        • 9.6.2 Contact magnétique
        • 9.6.3 DHT11 - humidité
        • 9.6.4 Senseur à effet Hall
        • 9.6.5 TSL2561 - luminosité
        • 9.6.6 BME280 - température, humidité et pression barométrique
        • 9.6.7 Module relais
    • 10. MQTT sous ESP8266
      • 10.1 Publication MQTT sous MicroPython
      • 10.2 Souscription MQTT sous MicroPython
    • 11. Asyncio sur ESP8266
      • 11.1 Asyncio en quelques mots
      • 11.2 Asyncio par l'exemple
      • 11.3 Fonction run_every pour Asyncio
      • 11.4 Plus d'informations sur Asyncio
  • Les objets ESP8266
    • 1. Informations pratiques
      • 1.1 Prérequis et configurations
      • 1.2 LED de statut
      • 1.3 Les topics MQTT
      • 1.4 Télécharger et préparer le code des objets IoT
    • 2. Fonctionnement général d’un objet IoT
      • 2.1 Principales sections
      • 2.2 Paramètres d’un objet IoT
      • 2.3 RunApp et la LED d'activité
      • 2.4 La fonction led_error()
      • 2.5 Les tâches et fonctions asynchrones des objets IoT
    • 3. Objet 1 : Météo cabane de jardin
      • 3.1 Schéma de raccordement
      • 3.2 Téléverser les scripts
      • 3.3 Fonctionnement du script
      • 3.4 Tester l'objet
    • 4. Objet 2 : Surveillance salon
      • 4.1 Téléverser les scripts
      • 4.2 Fonctionnement du script
      • 4.3 La fonction capture_1h()
      • 4.4 Senseur PIR - variables et utilisation
      • 4.5 Senseur PIR - la fonction pir_activated
      • 4.6 Senseur PIR - la fonction pir_alert
      • 4.7 Senseur PIR - la fonction pir_update
      • 4.8 Problèmes de concurrence
      • 4.9 Tester l'objet
    • 5. Objet 3 : Surveillance de la véranda
      • 5.1 Téléverser les scripts
      • 5.2 Fonctionnement du script
      • 5.3 La fonction capture_1h()
      • 5.4 La fonction check_contact()
      • 5.5 La fonction check_ldr()
      • 5.6 Tester l'objet
    • 6. Objet 4 : Chaufferie
      • 6.1 Téléverser les scripts
      • 6.2 Fonctionnement du script
      • 6.3 La fonction capture_1h()
      • 6.4 La fonction capture_10m()
      • 6.5 La fonction check_mqtt_sub()
      • 6.6 La fonction sub_cb()
      • 6.7 La fonction chaud_exec_cmd()
      • 6.8 Tester l'objet
    • 7. Dépannage d’un objet IoT
  • Persistance des données
    • 1. Introduction
      • 1.1 Pourquoi utiliser une base de données ?
      • 1.2 Quel moteur de base de données ?
      • 1.3 Principe de fonctionnement de push-to-db
    • 2. SQLite 3
      • 2.1 Présentation
      • 2.2 Classe de stockage, type de données et affinité
        • 2.2.1 Classe de stockage
        • 2.2.2 Stockage des date et heure
        • 2.2.3 Affinité de type pour les colonnes
        • 2.2.4 Résolution de l'affinité de type
      • 2.3 Affinité, expressions, comparaison et tri
        • 2.3.1 Affinité des expressions
        • 2.3.2 Comparaison, tri et groupage
      • 2.4 Clé primaire et auto-incrément
        • 2.4.1 Définir une clé primaire
        • 2.4.2 Table rowid et clé primaire
      • 2.5 SQLite3 et accès concurrents
      • 2.6 Installation
        • 2.6.1 Installer SQLite 3
        • 2.6.2 Installer le support Python
      • 2.7 Premiers pas avec SQLite3
        • 2.7.1 Documentation SQL pour SQLite
        • 2.7.2 Commandes de l'interpréteur SQLite
      • 2.8 SQLite et Python
        • 2.8.1 Opération de lecture SQLite
        • 2.8.2 Opération d'insertion SQLite
        • 2.8.3 Row Factory de SQLite
    • 3. Approches techniques de push-to-db
      • 3.1 Approche base de données de push-to-db
        • 3.1.1 topicmsg - dernier message reçu
        • 3.1.2 ts_xxx - historique de messages
      • 3.2 Approche logicielle de push-to-db
        • 3.2.1 Diagramme des classes (partie 1)
        • 3.2.2 Fichier de configuration de push-to-db
        • 3.2.3 Diagramme des classes (partie 2)
    • 4. Configuration de push-to-db
      • 4.1 Les répertoires de stockage de push-to-db
      • 4.2 Création des tables de push-to-db
      • 4.3 push-to-db.ini
      • 4.4 Le script d'installation de push-to-db
    • 5. Logger Python
      • 5.1 Logger et fichier de configuration
      • 5.2 Configuration du logger
      • 5.3 Utilisation du logger
    • 6. Exécution du script push-to-db
    • 7. Service systemd pour push-to-db
      • 7.1 Quand démarrer le service ?
      • 7.2 Créer le fichier Unit
      • 7.3 Configurer, démarrer, contrôler
      • 7.4 Documentation sur systemd
    • 8. Améliorations
  • Développement web en Python
    • 1. Présentation de Flask
      • 1.1 Pourquoi Flask ?
      • 1.2 La flexibilité de Flask
      • 1.3 Les nombreuses extensions Flask
      • 1.4 Flask plus en détails
        • 1.4.1 Werkzeug
        • 1.4.2 WSGI
        • 1.4.3 Application Flask
        • 1.4.4 Jinja
        • 1.4.5 Base de données
      • 1.5 Documentations
    • 2. Anatomie d'un projet Flask
    • 3. Installation et prise en main
      • 3.1 L'utilitaire flask
      • 3.2 Prise en main avancée
      • 3.3 Déboguer avec Flask
      • 3.4 Application Flask en production
    • 4. Les fondamentaux de Flask
      • 4.1 Routes et paramètres
      • 4.2 Retourner une erreur
      • 4.3 Utilisation de template
      • 4.4 Création d'URL
      • 4.5 Redirection
      • 4.6 Requêtes GET et POST
      • 4.7 Contexte applicatif
        • 4.7.1 L'objet g
        • 4.7.2 Connexion à la base de données
      • 4.8 Les cookies
      • 4.9 Les sessions
      • 4.10 Journalisation
      • 4.11 Mini-projet Fruits
        • 4.11.1 Sources du mini-projet
        • 4.11.2 La connexion SQLite 3
        • 4.11.3 Organisation du mini-projet
        • 4.11.4 Détails du mini-projet
      • 4.12 Ressources et documentations
    • 5. Templates Jinja
      • 5.1 Exécution d'un template
      • 5.2 Tester un template
        • 5.2.1 Créer une application Flask
        • 5.2.2 Test avec serveur web Flask et string Python
        • 5.2.3 Test en console et string Python
        • 5.2.4 Utiliser le projet Jinja Live Parser
      • 5.3 Évaluation des balises
        • 5.3.1 {{ ... }} : évaluation d'expression
        • 5.3.2 {% ... %} : instructions de contrôle de flux
        • 5.3.3 {# ... #} : insertion de commentaire
        • 5.3.4 # ... : ligne d'instruction
      • 5.4 Variables et expressions
        • 5.4.1 Variables spéciales
        • 5.4.2 Séquence d'échappement
        • 5.4.3 Assignation
      • 5.5 Branchement
      • 5.6 Itération
      • 5.7 Les macros
      • 5.8 Contrôle des espaces
      • 5.9 Filtres Jinja
      • 5.10 Inclusion de template
      • 5.11 Importer des macros
      • 5.12 Héritage de template
        • 5.12.1 Les éléments de l'héritage
        • 5.12.2 Heritage-app : l'héritage Jinja par la pratique
        • 5.12.3 Template de base et block
      • 5.13 Template enfant
        • 5.13.1 Super bloc
        • 5.13.2 Ressources
      • 5.14 Message Flash
  • Le tableau de bord
    • 1. Présentation
      • 1.1 Préambule
      • 1.2 Dépôt du projet Dashboard
      • 1.3 Éléments principaux
      • 1.4 Fonctionnalités du projet Dashboard
    • 2. Structure HTML
      • 2.1 Disposition de la page
      • 2.2 Les blocs d'informations
      • 2.3 La liste
    • 3. Template Jinja
      • 3.1 Le template de base
      • 3.2 Utilisation du template de base
    • 4. Configuration
      • 4.1 Base de données dashboard.db
        • 4.1.1 Schéma de la base de données
        • 4.1.2 Répertoire de stockage
        • 4.1.3 Création des tables de Dashboard
        • 4.1.4 Copie de la base de données
      • 4.2 Fichier de configuration de Dashboard
    • 5. Détails de l'application Flask
      • 5.1 Répertoires et fichiers
      • 5.2 Les routes de Dashboard
      • 5.3 Accès aux données
        • 5.3.1 La fonction get_db( db_key ) multi bases de données
        • 5.3.2 Les classes DBHelper de Dashboard
        • 5.3.3 Exemple : liste des topics disponibles pour Dashboard
        • 5.3.4 Exemple : extraction de l'historique dans Dashboard
        • 5.3.5 Affichage d'un tableau de bord
      • 5.4 Les filtres Jinja personnalisés
      • 5.5 Affichage du tableau de bord
      • 5.6 Les macros Jinja
        • 5.6.1 La macro make_block
        • 5.6.2 La macro block_icon
        • 5.6.3 La macro block_big_text
        • 5.6.4 La macro select_color (édition d'un bloc)
    • 6. Bloc switch (marche/arrêt)
      • 6.1 Développements complémentaires
        • 6.1.1 MQTT sources
        • 6.1.2 Bloc et paramètres additionnels
      • 6.2 Ajout du bloc SWITCH
        • 6.2.1 Block_config du switch
        • 6.2.2 Ajouter le nouveau type de bloc
      • 6.3 Le switch et MQTT
        • 6.3.1 Client MQTT JavaScript
        • 6.3.2 MQTT en Javascript et WebSocket
        • 6.3.3 Activer le support WebSocket sur Mosquitto
        • 6.3.4 Tester le client MQTT JavaScript
        • 6.3.5 Mille milliards de mille sabords !
        • 6.3.6 La route MqttProxyPublish
        • 6.3.7 Événement on_switch_change
      • 6.4 Tester le bloc switch
    • 7. Améliorations
  • Conclusion
    • 1. Introduction
    • 2. Remerciements
    • 3. Retour sur client MQTT JavaScript
  • Annexes
    • 1. Installation rapide
      • 1.1 Prérequis
      • 1.2 Début de l'installation
      • 1.3 Récupération des sources
      • 1.4 Poursuivre l'installation
      • Index

Auteur

Dominique MEURISSEEn savoir plus

Ingénieur de formation et ancien architecte logiciel, Dominique MEURISSE se passionne pour la programmation des nano-ordinateurs (Raspberry Pi, Odroid, OlinuXino) et des microcontrôleurs (Arduino, Feather, ESP, Pyboard, etc.). Ardent défenseur de Python, MicroPython ou Open-Hardware (Adafruit Industries), sa passion le pousse à participer activement à la rédaction du wiki, du blog et des fiches produits documentées du site de vente en ligne de sa société Microcontrôleur Hobby (MC Hobby SPRL). Fort de cet enthousiasme, il poursuit le partage de son savoir avec l'écriture de ses livres dédiés au langage Python sur microcontrôleur.

Revue de presse

developpez.com (par gorgonite)30/01/2019

Cet ouvrage s'articule autour d'un mini-projet domotique allant de la lecture des senseurs alimentant un bus de messages pour, finalement, fournir une application web pour la gestion de son installation. Bien qu'abordant de nombreuses notions, tout est facile d'accès et vraiment bien illustré. Juste un niveau initié en Python et en Javascript est nécessaire pour appréhender correctement toutes les notions présentées. Par ailleurs, de nombreux exemples de code sont également fournis par l'auteur.

Une fois un apprentissage sommaire effectué, tout lecteur pourra envisager de réaliser soi-même ce qui, il y a quelques années, aurait été un vrai projet pour un professionnel aguerri. Pour cela, l'auteur a sélectionné un ensemble de composants matériels (ESP8266, BMP280, etc.) et de bibliothèques utilisables via Python (ou parfois MicroPython pour être exact), telles que le framework Flask. Même les principes de fonctionnement d'un broker type MQTT y sont résumés.

On trouvera sûrement des ressources plus détaillées sur chaque brique prise individuellement. Mais à ma connaissance, cet ouvrage est probablement le livre francophone le plus complet à ce jour pour réaliser un projet ne nécessitant pas de fines subtilités dans les composants présentés ; chaque partie méritant à elle seule l'acquisition comme didacticiel pour un débutant.

Caractéristiques

  • Niveau Initié à Confirmé
  • Nombre de pages 631 pages
  • Parution novembre 2018
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-01631-8
    • EAN : 9782409016318
    • Ref. ENI : LFPYRASPFL
  • Niveau Initié à Confirmé
  • Parution novembre 2018
    • HTML
    • ISBN : 978-2-409-01632-5
    • EAN : 9782409016325
    • Ref. ENI : LNLFPYRASPFL

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (2,21 Mo)