Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP, Mercure et IoT : Quand PHP devient plus qu...

PHP, Mercure et IoT : Quand PHP devient plus que full stack.

Avatar for Yohan Giarelli

Yohan Giarelli

May 20, 2026

Other Decks in Programming

Transcript

  1. Développeur expert @ Les-Tilleuls.coop ➔ PHP • yohang/CalendR • yohang/Finite

    • coopTilleuls/sorter ➔ Symfony ➔ JS, React, Go ➔ Sailing fan Yohan Giarelli /@rouKs /yohang /yohangiarelli
  2. Projet client de casiers en libre-service, avec les contraintes suivantes

    : Le besoin  Énergie limitée Pas de raccordement électrique  Données limitées Connectivité 4G IoT uniquement  Pas d’IHM embarquée Réduction des coûts / énergie  Prototypable Tester, valider, itérer
  3. Plusieurs solutions sont possibles pour répondre à ce besoin :

    Le besoin Serrure “connectée” à ouverture NFC  Pros • Alimenté par la clé (Téléphone ou clé physique) • Pas de connexion Internet • Pas de coût “Au point de présence”  Cons • Coût “à la porte” important • Lourdeur au développement (SDK NFC propriétaire) • Pas de feedback
  4. Plusieurs solutions sont possibles pour répondre à ce besoin :

    Le besoin Carte électronique et microcontrôleur  Pros • Basse consommation • Latences très faibles • Pas cher à produire  Cons • Coûts de développement importants • Compétences requises • Mises à jour complexes
  5. Plusieurs solutions sont possibles pour répondre à ce besoin :

    Le besoin Nano-Ordinateur et actionneurs “simples”  Pros • Prototype en quelques jours • Pas de contraintes fonctionnelles • Pas de vendor-lock in • Faible coût “à la porte” • Télémétrie / Remontée d’infos  Cons • Besoin d’énergie (batteries + PV) • Connexion Internet directe • Coût “Au point de présence” supérieur  LGTM
  6. 02 03 04 05 01 Le besoin Pourquoi PHP ?

    Les détails L’architecture Aller plus loin ?
  7. Nano-Ordinateur / Raspberry Pi ? ➔ Gâche électrique pilotée par

    un relais ➔ Utilisation d’un Relay Hat pour Raspberry Pi ➔ Contrôle des relais via les GPIOs ◆ General Purpose Input/Output Pourquoi PHP ?
  8. PHP sur Raspberry Pi ? ➔ Besoin d'interagir avec les

    GPIOs ◆ libgpiod -> C/C++ ◆ gpiozero -> Python ◆ node-libgpiod -> NodeJS Pourquoi PHP ? ➔ Rien (à jour) en PHP ◆ Mais assez simple à contourner avec FFI.
  9. Asynchrone en PHP ➔ Attendre la consigne de l’application ➔

    PHP n’est historiquement pas bon pour ça mais : ◆ stream_select() ◆ curl_multi_select() ◆ Fibers ◆ ReactPHP, Revolt, etc. ➔ Aujourd’hui géré par nos abstractions habituelles (symfony/http-client) Pourquoi PHP ?
  10. Avantages de PHP ? ➔ C’est notre langage, on le

    connaît ! ➔ Simplification de la stack ➔ Équipe plus simple à staffer ➔ Écosystème intéressant (on va y venir !) Pourquoi PHP ? ➔ En C++ ça serait un très mauvais sujet pour une conférence PHP !
  11. 03 01 Pourquoi PHP ? L’architecture 02 04 05 Le

    besoin Les détails Aller plus loin ?
  12. Côté “Casiers” ➔ PHP CLI sur un Raspberry avec Pi

    OS ➔ symfony/console ➔ FFI et libgpiod pour ouvrir les portes ➔ Comment commander l’ouverture ? L’architecture
  13. Communication avec le casier ➔ API REST ? ⨯ Pas

    possible, aucune garantie d’avoir une route vers le raspberry ➔ AMQP ? ⨯ Routage complexe (Topic Exchange) ➔ MQTT ? ⨯ Parfait pour l’IoT, mais sécurité complexe ➔ Mercure ✓ Simple de mise en œuvre, sécurité adaptée L’architecture
  14. 03 01 Les détails 02 04 05 Pourquoi PHP ?

    Le besoin Aller plus loin ? L’architecture
  15. 03 01 Aller plus loin ? 02 04 05 Pourquoi

    PHP ? Le besoin L’architecture Les détails
  16. Merci de votre attention ! ➔ Des questions ? ➔

    https://github.com/yohang/unlockey github.com/yohang @rouKs