2 points par GN⁺ 2023-11-14 | 1 commentaires | Partager sur WhatsApp
  • Après la disparition du contrat avec Bluefox, qui fournissait des données d’affluence pour la cafétéria, un appareil a été conçu pour mesurer directement les tendances d’occupation du campus à partir du nombre d’appareils visibles dans les paquets de publicité BLE
  • Lors des tests sur ordinateur portable, le nombre d’appareils BLE suivait rapidement l’affluence réelle dans de petits espaces, et dans une grande cafétéria il correspondait aussi bien aux variations de tendance pendant les flux de déplacement avant et après les cours
  • Le Raspberry Pi Zero W s’est révélé difficile à utiliser comme appareil de déploiement à cause du Bluetooth sous Linux, de DBus, de la cross-compilation et de la configuration Wi‑Fi sans écran, ce qui a conduit à un changement de cap vers un ESP32 plus simple
  • Les cartes ESP32-WROOM bon marché devenaient instables à cause de problèmes de mémoire autour de 250 à 400 appareils, mais les Seeed Studio XIAO ESP32C3/S3 ont fonctionné de façon stable sur la durée et ont tenu jusqu’à environ 1000 appareils détectés
  • La configuration finale consiste à faire scanner les appareils BLE par un ESP32, à envoyer les comptages vers Cloudflare Functions et D1, puis à visualiser et prévoir avec Grafana et NeuralProphet, même si l’étalonnage de la précision et la validation de la confidentialité restent à faire

La disparition des données d’affluence de la cafétéria

  • En première année d’université, l’exploitant de la cafétéria était Sodexo, qui avait un contrat avec Bluefox pour utiliser des capteurs d’occupation affichant le nombre de personnes à l’intérieur
  • D’après les documents obtenus via une demande FOIA, les appareils Bluefox fonctionnaient en comptant les adresses MAC de smartphones présentes dans les paquets de publicité Bluetooth
  • En reliant les appels API à Grafana, il était possible d’obtenir un graphique en temps réel de l’affluence de la cafétéria, utile pour éviter les heures de pointe
  • Plus tard, l’exploitant est passé à Aramark, qui n’a pas reconduit un contrat de comptage d’occupation comme celui de Bluefox, et les données existantes ont disparu

Utiliser les balises BLE comme indicateur de substitution du nombre de personnes

  • Le cœur du projet consistait à vérifier dans quelle mesure le nombre de balises Bluetooth pouvait servir de proxy pour le nombre réel de personnes et leur temps de présence
    • Certaines personnes portent plusieurs appareils, comme des écouteurs ou une montre connectée
    • D’autres n’ont pas d’appareil sur elles ou peuvent avoir désactivé le Bluetooth de leur téléphone
  • Pour estimer le temps de présence, il fallait déterminer si le churn des adresses MAC uniques pouvait être exploité, et quel effet aurait la randomisation des adresses MAC chez différents fabricants comme Android et Apple
  • Pour envoyer les données vers un serveur central, le Wi‑Fi était le choix le plus naturel, mais il n’y avait pas toujours un réseau facilement exploitable à tous les emplacements
  • LoRa pouvait aussi être envisagé selon la distribution des balises, mais la portée réelle dépend fortement du gain de l’antenne et de son emplacement d’installation
  • Pour le stockage, il fallait aussi réfléchir à l’usage ou non d’une base de données de séries temporelles, et à la possibilité d’exclure des événements particuliers comme le week-end du homecoming ou la semaine des examens finaux dans les prévisions de tendance à long terme

Validation initiale sur ordinateur portable

  • La première expérience reposait sur un code simple qui scannait avec l’adaptateur Bluetooth d’un ordinateur portable pendant x secondes, répétait l’opération toutes les y secondes, puis enregistrait le tout dans une base SQLite
  • Des données ont été collectées en patientant avec l’ordinateur portable dans différents lieux, comme la cafétéria, Chick-Fil-A et Starbucks
  • Dans le Starbucks, qui était un petit espace unique, le nombre d’appareils était assez précis et reflétait rapidement au moins la tendance d’occupation
    • Quand des gens entraient, le graphique montait rapidement
  • Dans un grand espace comme la cafétéria, il était impossible de compter directement toutes les personnes et la portée de l’adaptateur Bluetooth n’était pas certaine, mais la hausse des balises détectées correspondait bien aux flux de personnes allant manger après la fin des cours

Pourquoi l’approche Raspberry Pi Zero W a échoué

  • Le premier appareil envisagé pour un déploiement de longue durée était le Raspberry Pi Zero W, car il était petit, peu coûteux et disposait du Wi‑Fi et du Bluetooth
  • Le code a été réécrit en Rust pour gérer des situations comme les redémarrages, l’absence de réseau ou la perte de l’adaptateur
  • La gestion du Bluetooth Linux dans un environnement sans écran s’est révélée bien plus complexe que prévu
    • Les bindings DBus nécessitaient une configuration liée à la cross-compilation
    • Même Cross n’a pas suffi à résoudre le problème
    • Après divers flags de compilation, la perte de travail sur un Makefile et la configuration d’un bridge QEMU, le binaire a fini par s’exécuter sur le Pi
  • La connexion Wi‑Fi, l’installation des bibliothèques nécessaires au démarrage, l’enregistrement de l’exécutable comme service et le déploiement automatique des mises à jour ont été mis en place, mais en pratique, après le boot, rien ne fonctionnait correctement
  • Cette approche revenait à embarquer tout un noyau Linux et de nombreux composants mobiles alors que les seuls besoins étaient un Wi‑Fi et un Bluetooth fiables

Passage à l’ESP32

  • Sur le papier, l’ESP32 cochait toutes les cases : Wi‑Fi, Bluetooth, faible consommation, prix bas et format compact
  • Une ESP32-WROOM-32 quelconque avec écran OLED a été achetée sur Amazon
    • L’idée était d’afficher les données en temps réel à l’écran
  • L’écosystème Rust pour ESP32 ayant été jugé encore insuffisant, le code de collecte de données a été réécrit en C++
  • L’OLED a été piloté avec la configuration SSD1306Wire display(0x3c, 5, 4);
  • Une demande de liste blanche d’adresses MAC a été faite à l’équipe IT du campus, et Cloudflare Functions avec la base D1 ont été utilisés comme backend de collecte

Les problèmes de mémoire révélés par le premier déploiement

  • Un appareil de collecte a été installé dans la bibliothèque du campus, et l’arrivée des données a été confirmée depuis l’ordinateur portable
  • Ensuite, des résultats étranges ont donné l’impression que tout le monde avait quitté la bibliothèque, et la cause s’est révélée être les faibles spécifications de la carte ESP32 achetée au hasard
  • L’appareil plantait autour de 250 appareils
    • Au départ, l’hypothèse était que le résultat était stocké sur 1 octet, ce qui bloquait vers 255
    • Mais la vérification avec Serial.print a montré des plantages aléatoires vers 249, 265 et d’autres valeurs proches, ce qui excluait un simple overflow entier
  • Pendant le scan, les résultats complets étaient conservés dans une structure de données jusqu’à la fin, avec l’intensité du signal, les services annoncés, les identifiants constructeur et d’autres informations, ce qui saturait la petite RAM
  • Or la seule valeur réellement nécessaire était le nombre d’appareils uniques : conserver l’ensemble des résultats de scan était excessif

Un hash set maison et ses limites

  • Comme solution, une petite structure de type hash set a été écrite directement en C++
  • À chaque callback, l’adresse MAC était insérée dans ce hash set, puis la structure de résultats intégrée était vidée pour libérer de la mémoire
  • Cette méthode avait l’inconvénient de priver la structure interne des données de déduplication, si bien qu’un callback était déclenché pour chaque paquet de publicité BLE
    • addToSet effectuait bien une vérification de doublon dans le hash set
    • Mais les callbacks en double se produisaient des centaines de fois, et l’allocation/libération répétée de la structure de résultats créait du churn sur le heap
  • Malgré tout, cela a été jugé préférable à une limite bloquante autour de 250 personnes : vérifier fréquemment une hash map contenant moins de 1000 éléments restait acceptable

Choisir une carte ESP32 plus stable

  • Pendant les vacances d’automne, un test longue durée de 5 jours a été tenté, mais un nouveau plantage est survenu autour de 400 appareils
  • Le problème apparaissait après environ 3 heures d’utilisation, et même des redémarrages périodiques entraînaient ensuite un comportement où chaque scan renvoyait immédiatement 0 appareil
  • Plusieurs cartes ont été testées
    • Seeed Studio XIAO ESP32S3/C3
    • WaveShare ESP32S3 Zero
    • ESP32-WROOM sans marque avec OLED
    • Orange Pi Zero W
    • Raspberry Pi Zero W
  • Les seules cartes restées stables sur la durée étaient les XIAO ESP32C3/S3, toutes deux à un niveau jugé satisfaisant
  • Le choix final s’est porté sur le XIAO ESP32C3
    • Son architecture RISC-V a été appréciée
    • Il était moins cher
  • En passant à une carte mieux fabriquée, la quantité de SRAM a augmenté, et même en conservant la structure de résultats par défaut au lieu de la hash map maison, les plantages ont diminué
  • Jusqu’à environ 1000 appareils détectés, aucun signe de ralentissement n’a été observé, et le churn du heap et des callbacks a peut-être aussi diminué

Les schémas de déplacement observés depuis la fenêtre du dortoir

  • Une fois un appareil stable trouvé, il a été déplacé sur le rebord de la fenêtre de la chambre du dortoir afin de faciliter les itérations de déploiement
  • Sur une journée de données, des pics apparaissaient aux heures de changement de cours
  • Même si l’appareil se trouvait dans le dortoir, il ne mesurait pas principalement les seuls résidents
    • Si c’était le cas, on s’attendrait à un maximum tôt le matin, puis à une baisse au fil de la journée
    • En étant orienté vers l’extérieur, il détectait surtout les étudiants se déplaçant vers deux bâtiments universitaires proches
  • Le pic vers 7h50 coïncidait avec l’approche du début des cours de 8h à Ewell Hall et Washington Hall
  • Les pics de 8h50, 9h50 et 10h50 correspondaient respectivement aux déplacements vers les cours de 9h, 10h et 11h
  • L’appareil semblait bien adapté au suivi de tendance des déplacements étudiants, avec une portée d’antenne semblant aller jusqu’à Washington Hall, à environ 160 ft, et jusqu’à Ewell, à environ 100 ft
  • Le fait d’être situé au 3e étage semble aussi avoir aidé la portée de détection

Prévision et questions de validation encore ouvertes

  • Les données collectées présentaient de nombreuses tendances horaires, quotidiennes et hebdomadaires, ce qui les rendait bien adaptées à la prévision de séries temporelles avec des outils comme NeuralProphet
  • Après ajout de la fonctionnalité de prévision, les tendances journalières étaient désormais bien prédites
  • Les tendances de long terme à l’échelle de la semaine, du mois ou de la saison devraient converger une fois suffisamment de données accumulées
  • De nombreuses questions restent toutefois ouvertes
    • Dans quelle mesure le nombre de balises BLE représente-t-il réellement la population présente
    • Est-il possible de définir un coefficient de correction, par exemple x balises pour environ 0.7x personne, afin de tenir compte des gens portant plusieurs appareils
    • Dans le bâtiment d’informatique, le ratio balises/personnes sera-t-il plus élevé à cause du grand nombre d’appareils, ou plus faible parce que beaucoup désactivent le Bluetooth
    • Le ratio sera-t-il plus faible dans les bâtiments du personnel, où les gens portent peut-être moins d’appareils que les étudiants
    • Dans une cafétéria, ce ratio sera-t-il plus faible que dans une salle de cours, car on y utilise moins souvent simultanément un ordinateur portable, un iPad, etc.
  • Des pistes d’amélioration de la précision restent aussi à explorer
    • Définir une valeur RSSI minimale pour exclure les signaux faibles
    • Filtrer pour ne compter que les identifiants constructeur Apple et Android les plus courants
    • Le fait que les Apple Watch, AirPods et MacBook continuent malgré tout d’augmenter le comptage
    • La nécessité éventuelle d’ajouter du bruit dans la méthode actuelle, qui suit uniquement le nombre brut de balises sans suivre les adresses MAC réelles
    • Le caractère réaliste ou non d’identifier un utilisateur unique à partir du seul nombre d’appareils
    • Le choix de la durée de scan : trop courte, elle risque de manquer des centaines d’appareils ; trop longue, elle risque de compter des appareils déjà partis
    • Une durée de scan dynamique qui s’arrête lorsqu’aucun changement n’est observé pendant un certain temps

Formes possibles de déploiement

  • Il est prévu de valider les données dans des lieux où la population réelle peut être obtenue facilement
    • Une salle de sport avec journal d’accès
    • Une cafétéria ou un Starbucks avec un nombre limité d’entrées
  • Des discussions sont en cours avec des professeurs à propos de cas d’usage pour des comités universitaires ou de possibles recherches académiques
  • Une commercialisation auprès de magasins physiques pour mesurer les tendances d’occupation est aussi envisagée
  • La configuration d’une unité de déploiement est relativement bien packagée
    • Configuration du Wi‑Fi dans les paramètres
    • En présence d’un portail, mise en liste blanche de l’adresse MAC par le réseau
    • Connexion au démarrage pour les réseaux Wi‑Fi ouverts ou protégés par mot de passe
    • Modification du machine ID et du site ID dans les paramètres
    • Branchement de l’appareil sur une prise située au centre ou à un endroit pratique
    • Configuration d’un tableau de bord Grafana dans le backend pour lire chaque appareil
    • Configuration d’un tableau de bord Grafana séparé pour lire les tendances prédites

1 commentaires

 
GN⁺ 2023-11-14
Avis de Hacker News
  • J’ai créé une véritable entreprise avec cette technologie (occuspace.io) et j’ai traité la plupart des questions soulevées
    Le nombre de balises BLE est très fortement corrélé au nombre de personnes présentes, mais comme le coefficient de corrélation varie beaucoup selon qu’il s’agit d’un restaurant, d’une salle de cours ou d’un étage de bibliothèque, il vaut mieux utiliser aussi des caractéristiques plus complexes
    Estimer la durée de présence à partir du temps pendant lequel une balise BLE est visible ne me semble pas précis, car selon les fabricants, les MAC Bluetooth sont randomisées toutes les 8 à 20 minutes
    Exclure les RSSI faibles pour ne compter que les appareils proches est une bonne idée, mais le seuil varie selon le type d’espace et l’emplacement d’installation du capteur

    • Je me demande à quelle fréquence on a vraiment besoin d’un comptage exact
      Si le besoin initial était « éviter l’affluence au restaurant », connaître approximativement si c’est plutôt bas ou élevé peut suffire
      Dans le cadre d’une entreprise, je me demande aussi si les clients attendent une grande précision, et si c’est le cas pour tous ou seulement pour certains
      Même si les adresses MAC sont randomisées, il doit peut-être y avoir un moyen d’identifier le type d’appareil pour ne compter que les téléphones et exclure les écouteurs, etc.
    • Je me demande si ce type de suivi d’occupation fonctionne aussi précisément en extérieur
      J’imagine que c’est plus difficile parce que le signal se propage plus loin, et je travaille sur une startup qui a besoin de suivre l’occupation de courts de tennis
      On pourrait peut-être installer des appareils Bluetooth aux coins de l’espace extérieur et utiliser la puissance de leur signal comme seuil
    • Meraki fournit aussi ce genre d’informations dans le cadre de ses fonctions de gestion réseau dans le cloud
      En suivant le Wi‑Fi, les MAC Wi‑Fi et les informations vidéo, puis en les reliant entre eux, on pourrait peut-être faire davantage de choses
      Ça peut être utile de les garder en tête comme concurrent potentiel
    • Le fait que le coefficient de corrélation varie d’un espace à l’autre semble être un point difficile pour en faire un produit
      Dans un bâtiment universitaire STEM, il peut y avoir plus de 3 appareils Bluetooth par personne, alors qu’ailleurs il peut y en avoir moins d’un
    • Est-ce que la détection de chutes chez les personnes âgées serait aussi possible ?
  • Excellent article
    Après avoir testé Seeed Studio XIAO ESP32S3/C3, WaveShare ESP32S3 Zero, Unbranded ESP32-WROOM with OLED, Orange Pi Zero W et Raspberry Pi Zero W, il disait que seuls les XIAO ESP32C3/S3 avaient fonctionné de manière stable sur la durée, actuellement environ un mois ; je soupçonne un problème d’alimentation
    La famille ESP32 peut être sensible aux variations de tension lors de l’émission, donc je recommande vivement d’ajouter un gros condensateur sur le rail d’alimentation
    Les RPi comme les ESP peuvent être capricieux selon l’adaptateur secteur, le câble et la longueur du câble, et les cartes SD des RPi sont susceptibles de tomber en panne en cas de coupure brutale de l’alimentation
    Malgré tout, ils devraient tous tenir plus d’un mois, et mes Pi et ESP ont fonctionné pendant des mois
    Je serais curieux de voir les résultats avec un condensateur plus gros ajouté aux autres ESP32 ou Pi

    • Ce n’était probablement pas un problème de stabilité de la plateforme ESP32 elle-même, mais plutôt un problème lié à ma façon de l’utiliser
      Les ESP32 sont très largement utilisés, donc la cause était sans doute le fait que le premier ESP32 d’un fabricant inconnu que j’avais acheté n’ait pas tenu longtemps
      Quand je suis passé à un produit d’un vrai fabricant, le problème a été résolu et l’ESP32 fonctionne bien
      Le Raspberry Pi, lui, n’a quasiment jamais bien fonctionné, parce que je rendais trop complexe une tâche qui consistait simplement à faire du scan Bluetooth et des appels HTTP, et que j’essayais de gérer beaucoup trop de choses
      Comme je l’alimentais directement en 5 V 1 A depuis la prise via USB‑C, je ne pense pas que ce soit un problème d’alimentation, mais le Xiao ESP32-S3 avait aussi des soucis intermittents et, de mémoire, le cœur XTensa consomme plus que l’ESP32-C3 basé sur RISC‑V, donc ça vaut la peine de vérifier
    • Dans ma Home Automation, plusieurs ESP32 assurent des tâches d’infrastructure essentielles et tournent sans problème depuis environ un an
      Je les mets parfois à jour avec ESPHome, sans souci particulier
      Certains font plusieurs tâches à la fois ; par exemple, l’un est le proxy Bluetooth de mon bureau à domicile tout en pilotant aussi un ruban LED installé le long d’un panneau mural Skadis
      J’utilise des produits de marques quelconques achetés sur Amazon auprès d’une société appelée « AZDelivery », sans traitement particulier
      Ils sont dans des boîtiers imprimés en 3D et généralement branchés à des adaptateurs d’au moins 5 V/1 A avec des câbles courts, souvent de moins de 30 cm
    • Sur RPi, j’aime beaucoup utiliser Alpine pour réduire les écritures sur la carte SD
      Ça n’enregistre sur le disque que quand on exécute lbu commit -d, et par défaut ça démarre sur une sorte de tempfs
  • Comme c’est un projet mené par un étudiant à l’université et qu’il implique dans une certaine mesure le suivi de personnes, c’est une bonne occasion de demander à un professeur quelles procédures de recherche impliquant des êtres humains seraient nécessaires si c’est de la recherche
    Il peut être plus simple de demander à un professeur qu’à l’IRB de l’université
    L’IRB pourrait refuser la discussion en disant que ce n’est pas de son ressort, ou se montrer méfiant parce qu’on ne lui en a pas parlé plus tôt
    Les politiques de confidentialité et de sécurité de l’IT du campus peuvent aussi s’appliquer
    Les sites web, applications et objets IoT ordinaires portent certes bien plus atteinte aux gens, mais les universités ont parfois pour objectif de faire mieux que le monde extérieur

    • C’est précisément ce point que je suis en train de discuter avec un professeur
      Je ne l’ai pas mis dans le texte parce que ça pourrait ne pas aboutir
    • Je me demande quelles règles s’appliquent à des choses comme les balises de suivi
      Les balises diffusent, et il est très probable qu’elles soient collectées sans consentement dans presque tous les endroits où nous allons
      Comme ma maison est à une intersection, beaucoup d’appareils Bluetooth passent souvent à proximité, et j’ai déjà envisagé d’installer un traceur BLE juste pour le plaisir, afin de voir ce que je pouvais collecter et ce que les données permettraient d’apprendre
      Par exemple, je suis convaincu qu’il existe une corrélation entre la dégradation de la qualité de l’air dans ma maison et l’arrivée d’appareils Bluetooth dans le quartier
    • Malheureusement, les gens mentent souvent aux IRB
  • La phrase « dans ce genre de nerd snipe, il est crucialement important de ne pas perdre l’élan » m’a fait rire
    Mon cerveau de nerd m’a lui aussi convaincu plusieurs fois de dépenser de l’argent avec exactement cette logique

    • C’est drôle, mais c’est aussi vrai
      Il y a clairement des périodes où j’ai davantage envie de travailler sur des projets, et en particulier en hiver je fais plus de projets électroniques et je joue aussi davantage
      Ma « saison » de jeu a d’ailleurs repris la semaine dernière
      Le fait de passer radicalement de « qu’est-ce que j’ai envie de faire aujourd’hui ? » à « qu’est-ce que j’ai envie de faire cette saison, et pour quoi ai-je du temps ? » tient beaucoup à l’âge et au fait d’avoir des enfants, mais les intervalles où j’ai à la fois l’envie et le temps de faire ce genre de projet sont tellement espacés que si je perds l’élan, je risque de n’y revenir qu’un an plus tard, voire jamais
      J’ai un projet électronique commencé il y a au moins 10 ans, dans lequel j’ai dépensé pas mal d’argent, et comme je m’obstine encore à dire que je le terminerai un jour, il est devenu tristement célèbre dans ma famille
  • Mon réveil est composé d’un ESP32, d’une assez grande matrice de LED, d’un buzzer et d’un capteur PIR
    Il n’affiche pas l’heure : il prévient avec le buzzer et des clignotements, éclaire progressivement la pièce, ou, la nuit, baisse lentement l’intensité après un certain délai une fois toutes les lumières éteintes
    Un avantage supplémentaire que j’ai découvert plus tard, c’est que même lorsque le point d’accès n’est pas entre moi et l’ESP, je réfléchis suffisamment les ondes RF pour que, rien qu’avec les logs RSSI, on puisse savoir non seulement combien de temps je passe au lit, mais aussi à quels moments je change de position pendant la nuit
    https://imgur.com/a/VixOlu5
    Contrairement à l’avertissement, il n’y a rien de suggestif
    Le vert au milieu correspond au RSSI, le jaune en bas au capteur PIR, et la partie du haut mélange les données du Mi Band 3 avec des annotations sur les périodes passées au lit
    C’est aussi vrai que j’ai longtemps lu les infos avant de m’endormir et avant de me lever

    • Je serais curieux de savoir à quoi ressemblait la stack de collecte et de visualisation des données
    • J’aimerais aussi voir une photo de la configuration du réveil mentionné plus haut
  • Je me demande comment on met au propre comme un produit un projet ESP32
    Je ne parle pas de production de masse, mais du fait de vouloir en faire un appareil autonome plutôt qu’une carte avec plein de fils qui dépassent
    Beaucoup de pages ne montrent que des cartes nues, mais dans la vraie vie il faut les conditionner dans un boîtier
    Pour quelqu’un comme moi, plutôt côté logiciel, il est probable que je préfère payer un peu plus pour une forme propre et bien finie plutôt que de bricoler moi-même toutes sortes de choses

    • Si tu es doué en menuiserie, tu peux utiliser du bois
      Si tu as une imprimante 3D, tu peux faire une impression 3D
      Si tu travailles plutôt l’acrylique, tu découpes la forme au laser et tu perces quelques trous pour en faire une boîte
      Si tu n’as rien et que tu veux juste une boîte minimale, tu peux utiliser des boîtes Altoids Tin, environ 25 dollars les 12 ; elles contiennent des bonbons à la menthe inutiles, tu les jettes et tu mets ton projet dedans
      Si tu veux quelque chose d’un peu mieux qu’une boîte Altoids, achète un Hammond Enclosure
      (https://www.hammfg.com/electronics/small-case)
      Moi, je l’enroulerais peut-être dans du ruban isolant, puis dans une sorte de ruban adhésif toilé, avant de le colorier au marqueur permanent
    • Il existe beaucoup d’entreprises qui fabriquent des boîtiers pour l’électronique, y compris des modèles étanches
      En général, il y a quelques brides prépercées pour pouvoir visser la carte, et tu perces toi-même les ouvertures externes pour les entrées/sorties selon tes besoins
      Voici quelques fabricants ; si tu achètes déjà une carte de développement ou d’autres composants, tu peux aussi souvent en trouver chez Adafruit ou DigiKey pour économiser les frais de port
      https://www.hammfg.com/
      https://www.budind.com/
      http://takachi-enclosure.com/
      https://www.adafruit.com/product/903
    • Il y a beaucoup d’options
      La plupart des projets que tu vois ne sont pas industrialisés
      Ce sont des projets ponctuels de hackers ; c’est bien si d’autres les trouvent utiles, mais ce n’est pas le but, donc ils n’ont pas besoin de packaging, et parfois ils sont simplement fourrés dans une boîte
      Si tu veux quelque chose de plus présentable, il faut confier la conception du boîtier à quelqu’un
      Ce quelqu’un peut être toi-même
      L’ESP32 est conçu pour être facilement intégré dans tes propres produits ; le flux devient donc : concevoir le circuit imprimé et le boîtier pour qu’ils s’adaptent l’un à l’autre, acheter des puces ESP32 en volume et les assembler sur la carte
      Les cartes qu’on achète pour le prototypage ne sont officiellement que des cartes de référence, et ne sont pas censées être utilisées pour l’expédition finale, même s’il est courant en pratique d’expédier la carte telle quelle
      Parce qu’elle est petite, bon marché, et que quelqu’un a déjà fait le difficile travail de conception de la carte
    • Il suffit de faire concevoir le boîtier par un « designer produit »
      Si le produit est suffisamment standard, on peut même sauter cette étape
      Ensuite, on contacte des fabricants locaux et des fabricants sur des marchés plus grands, on reçoit des échantillons et on vérifie qu’ils fonctionnent correctement
      Si ça convient, on commande de petits volumes pour commencer
      Il vaut mieux concevoir une procédure d’assurance qualité, ou trouver un spécialiste pour aider, afin d’éviter que le fabricant n’envoie 20 % de produits défectueux
      On le met en magasin physique, ou on crée un site web et on le vend sur des portails comme Amazon
      On parle aux clients, on écoute les retours, puis on améliore chaque étape petit à petit
      Ça peut sembler écrasant, mais en travaillant dans une petite startup de smart home, j’ai appris qu’à Shenzhen il existe tout un secteur prêt à aider les fondateurs à concrétiser le produit de leurs rêves, et qu’on peut engager des personnes pour aider à chaque étape
      D’après notre expérience, les services côté chinois étaient bien meilleurs, moins chers et plus rapides que les propositions européennes
    • Je fixe la carte au couvercle d’un récipient à emporter avec des entretoises en nylon
      Le reste du récipient à emporter sert de boîtier
      Je perce des trous dans le récipient pour faire entrer et sortir les fils
      Quand je veux faire un peu plus chic, j’utilise un récipient Tupperware
  • Je n’ai pas entièrement suivi le problème consistant à garder les données en mémoire, et il semble maintenant résolu, mais pour estimer le nombre d’identifiants de balises uniques, un algorithme d’estimation de cardinalité devrait permettre de le faire en espace constant
    https://en.wikipedia.org/wiki/Count-distinct_problem

    • Bonne remarque
      J’avais prévu de l’emporter récemment à un match de foot pour faire un test de charge avec la plus grande foule facilement accessible
      Si ça peut scanner quelques milliers d’éléments sans problème, je considérerai que c’est assez robuste
      Cela dit, ce serait vraiment intéressant d’étudier les structures de données d’estimation à taille fixe, et je vais clairement regarder ça
      L’un des aspects que je préfère dans ce projet, c’est qu’il permet d’explorer des concepts d’informatique plus profonds et intéressants sans la pression de devoir choisir la solution la plus simple
      Je ne développe pas une solution à livrer ASAP, je gratte juste là où ça me démange
  • Le passage disant que « gérer le Bluetooth Linux en mode headless est extrêmement pénible. Les bindings DBus nécessitaient de la magie de cross-compilation, et Cross n’a pas pu régler ça » correspondait aussi à mon expérience
    Comme je travaillais sur autre chose, j’ai finalement décidé de mettre les deux appareils sur le même réseau Wi‑Fi et de scanner pi.local
    Cela dit, j’aimerais savoir comment fonctionnent les autres crates qui, lorsqu’une bibliothèque manque, ne refusent pas le build mais plantent à l’exécution

  • Il aurait fallu préciser clairement que c’était pour le BLE
    Au début, je pensais que c’était basé sur le rythme cardiaque, la chaleur, les entrées/sorties, ou quelque chose de plus physique
    De plus, la sensibilité de réception de l’ESP32 est d’environ -94 dBm, ce qui est assez mauvais ; la plupart des appareils vont jusqu’à -100, -102, voire -104 dBm
    Cette différence est assez importante

  • ESPresence est un projet intéressant et fonctionne aussi sur ESP32-C3
    Il est davantage conçu pour déterminer dans quelle pièce on se trouve

    1. https://espresense.com/