Se rendre au contenu

La pastille NFC sur l'extincteur : le registre s'écrit devant l'appareil

Une puce à un dollar, le téléphone qu'on a déjà, et le passage qui devient une ligne de registre dans Odoo. Ce que les pastilles Symbifox font, et ce qu'elles refusent de faire.

TL;DR : une pastille NFC collée sur un extincteur, une porte ou un projecteur coûte moins d'un dollar. On approche le téléphone, et le geste part dans Odoo : le passage est consigné, l'équipement change de mains, la salle est prise, la grille d'inspection s'ouvre. Ce qui est gravé sur la puce est un code public, jamais un secret : l'identité vient d'ailleurs, et c'est ce qui sépare les trois façons de taper une pastille. Le geste se joue toujours avec les droits de la personne qui tape, jamais plus. Sans réseau, le tapotement est gardé avec son heure et part au retour du signal. Et quand la pastille demande une grille, le résultat n'est plus « quelqu'un est passé » mais « voici ce qu'il a vu », avec l'anomalie suivie jusqu'à sa correction et le registre qui sort en PDF.


Dans cet article

  • Une puce à un dollar, et le téléphone qu'on a déjà : la puce ne fait qu'ouvrir un lien, et c'est le serveur qui décide du geste, donc une pastille posée l'an dernier joue un geste écrit ce mois-ci.
  • Ce qu'une pastille porte, et ce qu'elle ne portera jamais : un code court, public, tiré au hasard, jamais un secret : l'identité vient du téléphone, de la session ou d'une puce signée.
  • Les gestes qui viennent avec : consigner un passage, prêter un équipement, prendre une salle, noter une présence, signaler un problème, et rien n'agit sur la simple ouverture du lien.
  • Du passage au relevé : la grille qui devient un registre : la grille transforme « quelqu'un est passé » en « voici ce qu'il a vu », et le relevé ne se réécrit pas : ce qui s'ajoute, c'est la correction.
  • Ce que le règlement demande : la NFPA 10 demande une inspection visuelle au moins tous les trente jours, et l'article 205 du RSST fixe les cinq renseignements du registre des cadenas.
  • Le sous-sol où il n'y a pas de réseau : le tapotement est gardé avec son heure et part au retour du réseau, dans une fenêtre de trois jours, et certains gestes refusent le différé.
  • Et le téléphone qui n'a pas de NFC : chaque pastille a un jumeau en code QR imprimé depuis Odoo, parce qu'une seule personne bloquée suffit à renvoyer tout le monde au carton.
  • Ce que ça ne résout pas : notre application de gravure est Android seulement, une pastille ordinaire se copie, et aucun logiciel ne détecte une grille remplie sans regarder.
  • Les autres façons de faire : les systèmes de ronde du commerce fonctionnent, mais la ronde reste dans leur système et le passage ne devient jamais une tâche assignée.
  • Notre position : on déploie quand il y a déjà un Odoo, sous licence BUSL-1.1 qui bascule en LGPL-3 à quatre ans, avec l'application au dépôt F-Droid.

Au dos de bien des extincteurs, il y a un petit carton. Une colonne de mois, une case par mois, des initiales au crayon. Quelqu'un passe, regarde le manomètre, paraphe. Ce carton est la seule preuve que la vérification mensuelle a eu lieu, et il vit sur l'appareil lui-même : s'il se décolle, se mouille ou part avec l'extincteur au rechargement, il n'y a plus rien.

La même histoire se répète partout. Le portable prêté qu'on retrouve trois mois plus tard sur le bureau de quelqu'un d'autre. La ronde de fermeture dont personne ne sait si elle a été faite hier. Le cadenas à cléage unique remis à un sous-traitant, noté sur un bout de papier à l'accueil. Ce ne sont pas des problèmes de logiciel : ce sont des gestes qui se font debout, dans un corridor, et qui n'arrivent jamais jusqu'au système parce qu'il faudrait pour ça retourner à un ordinateur.


Une puce à un dollar, et le téléphone qu'on a déjà

Une pastille NFC est un autocollant avec une puce dedans. On l'approche d'un téléphone, il la lit à quatre centimètres, et c'est tout ce qu'elle sait faire. Elle ne déclenche rien par elle-même : elle porte quelques dizaines d'octets, et le seul format que les deux plateformes mobiles lisent sans application est un lien. Le téléphone ouvre ce lien, et c'est le serveur qui agit.

Ça a l'air d'un détail technique, mais c'est ce qui rend la chose vivable. Ajouter un nouveau geste ne demande pas de mettre les téléphones à jour, ni de regraver les pastilles déjà posées : la décision est du côté du serveur. Une pastille posée l'an dernier joue un geste écrit ce mois-ci.

L'écran d'accueil de l'application Pastilles, sur un téléphone Android. Un grand bouton « Exécuter » invite à approcher une pastille pour que son geste se joue aussitôt, suivi des entrées Lire une pastille, Graver une puce, Mes pastilles, Mon journal et Comment ça marche. Une pastille qui pose une question au lieu d'agir. Une boîte de dialogue intitulée « Portable de prêt no 1 » demande « Que voulez-vous faire ? » et offre trois réponses : Je le prends, Je le rapporte, ou Annuler.
À gauche, l'écran reste prêt pour la pastille suivante, ce qui sert pour une ronde. À droite, le geste demande un choix : rien n'est écrit tant que personne n'a répondu.


Ce qu'une pastille porte, et ce qu'elle ne portera jamais

Un code court, public, tiré au hasard. Rien d'autre.

C'est une décision, pas une limite technique. Une puce se lit sans le consentement de personne, à travers une poche, et se recopie sur une puce vierge pour quelques sous. Tout ce qu'on grave dessus est donc une affiche, pas un secret. Un mot de passe, un jeton, une clé d'accès : rien de tout ça n'a sa place sur une pastille, et quiconque vous en vend une qui « contient » vos accès vous vend un problème.

L'identité vient d'ailleurs. C'est exactement ce qui distingue les trois façons de taper une pastille.

La porte D'où vient l'identité Pour qui
L'application Android Le jeton du téléphone, apparié une fois au compte de la personne L'équipe
Le navigateur La session déjà ouverte dans Odoo Toute personne qui a un compte, sur n'importe quel téléphone
La pastille signée Une puce NTAG 424 DNA qui signe chaque lecture, avec un compteur qui ne recule pas Une pastille remise à quelqu'un qui n'a pas de compte

Dans les trois cas, le geste s'exécute avec les droits de la personne qui tape. Une pastille qui pointe vers une fiche qu'elle n'a pas le droit de voir reste fermée, et le dit poliment. Une pastille n'est pas un passe-droit : c'est un raccourci vers ce à quoi on avait déjà accès.


Les gestes qui viennent avec

Ouvrir une fiche. Consigner un passage. Prendre ou rendre un équipement. Prendre une salle de réunion à sa porte, la confirmer, la libérer. Noter sa présence à une formation ou à une rencontre. Taper les points d'une tournée dans l'ordre. Signaler un problème, ce qui ouvre un billet déjà rempli : le client, l'endroit, la personne, l'heure.

Deux comportements méritent d'être nommés, parce qu'ils vont à l'encontre de ce qu'on attend d'un lien. D'abord, rien n'agit sur la simple ouverture du lien. Un aperçu de lien dans une messagerie, un antipourriel, un scanner de sécurité : tous ouvrent les adresses qu'ils voient, sans que personne n'ait touché à rien. Un geste qui modifie des données passe donc par une confirmation. Ensuite, une pastille peut poser une question au lieu d'agir : des boutons, parfois une phrase à écrire. Tout ce que le geste aurait touché avant de poser sa question est défait, et c'est le choix qui agit, dans un second envoi.


Du passage au relevé : la grille qui devient un registre

Un passage horodaté prouve que quelqu'un est venu. Il ne prouve pas ce qu'il a vu. C'est la différence entre une ronde de gardien et une inspection.

Une pastille peut donc demander une grille avant d'enregistrer : conforme ou non pour chaque élément, une valeur mesurée avec sa plage acceptable, un choix parmi quelques réponses, une note libre. L'extincteur est-il à sa place et accessible, la signalisation visible, le manomètre dans la zone normale, les sceaux intacts? Le relevé qui en sort porte l'élément vérifié, l'endroit, l'heure, le nom de qui a vérifié et le résultat ligne par ligne.

Ce relevé ne se réécrit pas. C'est peut-être la règle la plus importante de tout l'ensemble : un registre qu'on peut corriger après coup ne prouve plus rien. Ce qui s'ajoute à un relevé, c'est la correction : ce qui a été fait, par qui, à quelle date. L'anomalie, elle, crée une tâche pour la personne responsable de la grille et reste ouverte tant que la correction n'est pas consignée.


Ce que le règlement demande

Au Québec, le chapitre Bâtiment du Code de sécurité reprend le Code national de prévention des incendies et exige que les équipements de protection incendie soient inspectés et entretenus selon leur norme. Pour un extincteur portatif, cette norme est la NFPA 10, qui demande une inspection visuelle au moins tous les trente jours. La vérification mensuelle n'a pas besoin d'un spécialiste : c'est un coup d'œil que le propriétaire peut faire lui-même. Ce qui manque, en général, ce n'est pas la compétence, c'est la trace.

Même logique du côté du cadenassage. Le Règlement sur la santé et la sécurité du travail demande d'abord que le nom de la personne qui installe le cadenas soit indiqué sur le cadenas lui-même. L'employeur peut plutôt fournir des cadenas sans indication nominale, mais son article 205 exige alors un registre, et il en fixe le contenu minimal : l'identification de chaque cadenas à cléage unique, le nom et le numéro de téléphone de la personne à qui il est remis, ceux de son employeur s'il y a lieu, puis la date et l'heure de la remise et celles du retour. Une pastille sur la boîte de cadenas écrit ces cinq renseignements à la remise et au retour, pas le vendredi suivant de mémoire.

Des grilles de départ sont livrées avec le module : extincteurs, éclairage de sécurité, enseignes de sortie, portes coupe-feu, panneau d'alarme, trousse de premiers soins, cadenas, aire de jeu. Elles arrivent marquées « À valider » quand leur contenu vient d'un résumé de la norme plutôt que de la norme elle-même. On vous demande de les confirmer contre l'équipement réel avant de vous en servir, pour trois raisons.

  1. Une norme s'achète et se met à jour : ce qui est vrai cette année ne l'est pas forcément dans trois ans.
  2. Votre assureur ou votre service d'incendie peut exiger plus que le minimum réglementaire.
  3. Un registre rempli contre la mauvaise grille est pire qu'un registre vide, parce qu'il a l'air complet.


Le sous-sol où il n'y a pas de réseau

La salle mécanique, le stationnement souterrain, l'entrepôt en tôle : ce sont précisément les endroits où il y a des extincteurs à vérifier, et pas de signal. L'application garde alors le tapotement avec l'heure notée par le téléphone et l'envoie au retour du réseau. La grille d'une pastille déjà lue une fois reste disponible hors ligne, donc on remplit quand même.

Deux garde-fous vont avec. Le serveur n'accepte une heure différée que si elle date de moins de trois jours et n'est pas dans le futur. Et certains gestes refusent le différé, parce qu'ils n'ont de sens que sur place et tout de suite : prendre une salle de réunion hier soir ne veut rien dire.


Et le téléphone qui n'a pas de NFC

Il y en a encore, et il y a surtout les visiteurs, les sous-traitants, les gens dont le téléphone est dans une coque épaisse. Chaque pastille a donc un jumeau : une étiquette avec un code QR, imprimée depuis Odoo, qui mène exactement au même endroit. Le geste est le même, les droits sont les mêmes, la confirmation est la même. C'est le genre de détail qui décide si un déploiement tient ou pas, parce qu'il suffit d'une personne bloquée pour que tout le monde retourne au carton.


Ce que ça ne résout pas

Notre application de gravure est Android seulement. Un iPhone lit une pastille et joue son geste sans rien installer, et depuis iOS 13 il sait aussi graver une étiquette NDEF, mais avec une autre application que la nôtre. Chez nous, la gravure passe donc par un téléphone Android, ou par un programmateur du commerce. Dans une équipe, un seul appareil suffit à poser tout le parc.

Une pastille ordinaire se copie. Si ce qui compte est qu'une personne précise soit physiquement devant l'appareil, il faut une puce signée, qui coûte quelques dollars plutôt que quelques sous. Pour une ronde de fermeture, la copie n'est pas un enjeu réaliste. Pour un registre remis à un tiers, elle en est un.

Il faut aussi accepter qu'une pastille se décolle, se peinture par-dessus ou parte à la poubelle avec l'équipement. Le journal montre les pastilles qui n'ont jamais été tapées, ce qui donne une idée assez juste de celles qui ont disparu, mais rien ne remplace un tour de vérification une fois par année.

Enfin, ça ne fait pas le travail. Une grille bien remplie par quelqu'un qui n'a pas regardé l'extincteur est un faux document, et aucun logiciel ne détecte ça. Ce que le système change, c'est le coût de bien faire : quand consigner prend huit secondes debout devant l'appareil, il n'y a plus de raison de remettre à plus tard.


Les autres façons de faire

Les systèmes de ronde du commerce existent depuis longtemps : un lecteur durci, des points de contrôle, un logiciel qui sort des rapports. Ils fonctionnent bien et ils coûtent ce qu'ils coûtent, en matériel comme en abonnement. Leur vraie limite est ailleurs : la ronde vit dans leur système, les équipements dans le vôtre, les billets dans un troisième. Le passage ne devient jamais une tâche assignée à quelqu'un.

Le carton au dos de l'extincteur, lui, a un avantage réel qu'il faut reconnaître : il ne tombe jamais en panne. Ce qu'il ne fait pas, c'est prévenir qui que ce soit quand la case du mois est restée vide.


Notre position

On déploie les pastilles quand il y a déjà un Odoo, parce que l'intérêt n'est pas la pastille : c'est que le passage atterrisse à côté de l'équipement, du billet, de la feuille de temps et du dossier client. Une pastille branchée sur un système à part recrée exactement le silo qu'on essayait d'enlever.

Les modules sont publiés au dépôt public de Symbifox sous licence BUSL-1.1, qui bascule en LGPL-3 quatre ans après chaque version : le code est lisible aujourd'hui et libre ensuite. L'application Android se distribue par notre dépôt F-Droid, sans passer par une boutique. Le chapitre du guide sur les pastilles décrit chaque écran, et le catalogue des modules dit lesquels sont publics.

Un montage typique tient en une pose : on colle les pastilles, on part d'un gabarit pour créer la ronde et ses points d'un coup, on imprime les étiquettes, et on grave le parc avec un téléphone. La partie la plus longue n'est pas la technique, c'est de décider ce qu'on vérifie. Explorons ça ensemble.


Sources

  • Régie du bâtiment du Québec : le chapitre Bâtiment du Code de sécurité, qui reprend le Code national de prévention des incendies 2020.
  • Conseil national de recherches Canada : le Code national de prévention des incendies, édition 2020.
  • NFPA 10 : la norme des extincteurs portatifs, dont vient l'inspection au moins tous les trente jours.
  • CNESST : le guide sur le cadenassage et les autres méthodes de contrôle des énergies.
  • Règlement sur la santé et la sécurité du travail : l'article 205 et les cinq renseignements qu'il exige au registre des cadenas à cléage unique.
  • NFC Forum : les spécifications NDEF, le format que les deux plateformes mobiles lisent sans application.
  • NXP NTAG 424 DNA : la puce qui signe chaque lecture et porte un compteur qui ne recule pas.
  • Android : la documentation NFC, côté lecture et côté écriture.
  • Apple : lire une étiquette NFC avec un iPhone, sans application.
Deux Odoo qui se parlent : confier une tâche à un partenaire sans lui ouvrir le vôtre
La fédération relie votre Odoo à celui de votre partenaire : la tâche apparaît chez lui, sa réponse revient chez vous, et personne n'ouvre un compte de plus.