$30 off During Our Annual Pro Sale. View Details »

Monitorer nos locaux avec de l'IoT, du PHP et InfluxDB

Monitorer nos locaux avec de l'IoT, du PHP et InfluxDB

Lors d’un hackday interne à JoliCode, nous avons mis en place un système de monitoring pour connaître en temps réel l’état de nos locaux.

Quelqu’un a-t-il oublié d’éteindre les lumières ? Les portes sont-elles toutes fermées correctement ?

Nous verrons notamment les capteurs que nous avons mis en place, comment nous collectons les données et comment nous les mettons en forme sur un dashboard maison.

Loïck Piera

June 27, 2019
Tweet

More Decks by Loïck Piera

Other Decks in How-to & DIY

Transcript

  1. Monitorer les locaux
    de JoliCode
    #IoT #PHP #InfluxDB
    Loïck Piera - Juin 2019 - Pas Sage En Seine

    View Slide

  2. Loïck Piera
    Développeur web
    pyrech
    pyrech
    2

    View Slide

  3. Pourquoi ?
    Le dernier qui part a-t-il oublié de fermer
    une porte ou d'éteindre les lumières ?
    3

    View Slide

  4. Pourquoi ?
    Le dernier qui part a-t-il oublié de fermer
    une porte ou d'éteindre les lumières ?
    Journée de Solidarité à JoliCode
    => JoliDay (hackday interne)
    4

    View Slide

  5. Le projet en 2018 (à la base)
    3 personnes, 1 journée
    3 portes et 2 plateaux de lumière
    Une liste de courses achetées à l'avance
    5

    View Slide

  6. L'objectif initial
    6
    Capteurs
    Particle Photon
    Cloud Particle Notre serveur
    InfluxDB
    Slack
    /lights
    /doors
    Application
    PHP / Symfony

    View Slide

  7. Le hardware

    View Slide

  8. Les portes
    3 contacts de porte magnétique (type alarme)
    < 10 € pièce
    8

    View Slide

  9. Schéma électronique
    9
    * Une résistance de pull-down est
    incluse dans le Particle

    View Slide

  10. 10

    View Slide

  11. Les lumières
    2 photorésistances + résistances
    < 3 € pièce
    11

    View Slide

  12. Schéma électronique
    12

    View Slide

  13. 13

    View Slide

  14. Le microcontrôleur
    Particle Photon
    Arduino-like avec
    - wifi intégré
    - API Rest automatique
    - IDE dans le cloud
    Environ 20€
    14

    View Slide

  15. Le microcontrôleur
    - ~15 entrées/sorties (dont 5 analogiques)
    - compatible avec les libs Arduino
    15

    View Slide

  16. On plug tout ça...

    View Slide

  17. 50 m de câbles à passer dans le faux plafond
    17

    View Slide

  18. L'importance des étiquettes
    18

    View Slide

  19. On plug tout ça
    - Boîtier de dérivation
    - Câbles de raccordement
    - Étiquettes
    19

    View Slide

  20. Le code du Particle

    View Slide

  21. Les pins à utiliser
    21

    View Slide

  22. Les pins à utiliser
    22

    View Slide

  23. Lecture des capteurs
    23

    View Slide

  24. Envoi du payload
    24

    View Slide

  25. Le cloud Particle.io

    View Slide

  26. Événements
    26

    View Slide

  27. 27
    Intégration Particle
    - Webhook personnalisable
    - Historique et logs

    View Slide

  28. Notre serveur

    View Slide

  29. Docker en prod
    Parce que pourquoi pas.
    29

    View Slide

  30. Docker en prod
    - 1 jour, il faut aller vite
    - docker-starter (pipenv + Fabric + Docker + Alpine)
    - ansible-starter pour provisionner / déployer
    - Même stack en dev / prod
    30

    View Slide

  31. Collecte des données
    - Symfony 4
    - Contrôleur qui reçoit le webhook de Particle
    31

    View Slide

  32. La base de données
    InfluxDB
    "InfluxDB is an open-source time series database"
    - Wikipedia
    32

    View Slide

  33. La base de données
    - Haute performance
    - Langage de requête similaire au SQL
    - Client PHP officiel
    33

    View Slide

  34. Insertion des données
    34

    View Slide

  35. 35
    Configuration client PHP

    View Slide

  36. Grafana
    "The leading open source software for time
    series analytics"
    - Grafana.com
    Installé dans la stack Docker
    36

    View Slide

  37. 37

    View Slide

  38. 38

    View Slide

  39. Utilisation
    depuis Slack

    View Slide

  40. Interaction depuis Slack
    Slash command qui POST vers le serveur
    et affiche la réponse renvoyée
    40

    View Slide

  41. Traitement de la Slash command
    41

    View Slide

  42. Récupération des stats
    42

    View Slide

  43. Résultat final

    View Slide

  44. 44

    View Slide

  45. Et après ?

    View Slide

  46. Autant faire un dashboard, non ?
    46
    Serveur web + BDD + Symfony

    View Slide

  47. 47

    View Slide

  48. 48
    Surveiller le frigo - quand on se motive un soir
    - Alerter quand le frigo ou le congel reste ouvert
    - Capteurs de porte, Particle Photon, buzzer :
    on a déjà tout !
    - Statistiques sur les ouvertures ?

    View Slide

  49. 49

    View Slide

  50. 50
    Monitorer les plantes - JoliDay 2019
    - Nouveau microcontrôleur : ESP32
    - Arduino-like, wifi intégré, pas de cloud
    mais moins cher : ~3€
    - Température, humidité de l'air, lumière,
    humidité de la terre

    View Slide

  51. 51

    View Slide

  52. 52

    View Slide

  53. Le futur
    Monitorer plein d'autres choses* ?
    (café, niveau sonore, température)
    *Le but n'est évidemment pas de tracker les gens
    #liberté #RGPD #toussa
    53

    View Slide

  54. Fun fact
    Non, la lumière côté "Grande salle" n'est pas
    éteinte depuis si longtemps, c'est juste la dalle
    qui ne fonctionne plus…
    54

    View Slide

  55. Merci pour votre attention.
    Des questions ?
    55
    pyrech pyrech

    View Slide