À propos du projet
Il s'agit d'un projet de page Web de surveillance à distance pour les appareils de clôture électronique basés sur ESP32-S3 et SIM7670G 4G. La page est hébergée sur GitHub Pages et peut être utilisée depuis un téléphone mobile via n'importe quel réseau (4G/5G/WiFi).
Les fonctionnalités principales incluent : l'affichage de la position en temps réel de l'appareil sur une carte (mise à jour toutes les 2 minutes) ; l'affichage de l'état d'alerte d'entrée dans la zone via une bannière rouge et un voyant d'état ; la possibilité de dessiner des polygones de clôture sur la carte et de les envoyer à l'appareil en un clic ; la prise en charge de la saisie manuelle des coordonnées pour définir les clôtures ; la suppression des clôtures ; ainsi que l'affichage du nombre de satellites et de la distance par rapport à la clôture.
Sur le plan architectural, le navigateur mobile accède à la page GitHub Pages, lit le fichier position.json via fetch (mis à jour toutes les 2 minutes par GitHub Actions), puis récupère les données via le protocole TCP de Bemfa Cloud (bemfa.com:8344) avec cmd=3, pour finalement atteindre l'appareil ESP32-S3 via 4G (l'appareil rapporte ses coordonnées toutes les 30 secondes). Le chemin d'envoi des commandes de clôture est le suivant : page Web → Bemfa Cloud HTTP sendMessage → réception TCP par l'appareil → mise à jour de la clôture et enregistrement dans la NVS.
Le déploiement nécessite la configuration de BEMFA_UID (clé privée Bemfa Cloud) et BEMFA_TOPIC (nom du sujet geofence001) en tant que GitHub Actions Secret. De plus, les constantes BEMFA_UID / TOPIC situées en haut du fichier index.html doivent correspondre à la configuration réelle. Pour la maintenance, la synchronisation de la position est assurée par le fichier .github/workflows/sync-position.yml, qui récupère automatiquement les coordonnées de l'appareil toutes les 2 minutes pour les écrire dans position.json. Il est également possible de déclencher manuellement le workflow « Sync device position » depuis la page Actions.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.