Developpement de plugins MeshCore
Ajouter des modules custom et etendre MeshCore sans toucher au coeur plus que necessaire
Qu est-ce qu un plugin MeshCore ?
MeshCore vise une approche modulaire. Une architecture de plugins permet d ajouter des fonctions (capteurs, logs, bridges) sans forker lourdement le coeur.
La plugin API expose des hooks sur des evenements (message recu, node detectee, telemetrie, decisions de routage) pour construire des comportements specifiques.
Contexte France: reseau en construction. Si vous testez un plugin, faites-le d abord sur un noyau local (2-5 noeuds) pour mesurer l impact radio et la stabilite.
Vue d ensemble de l architecture
Les plugins suivent souvent une logique event-driven avec quelques fichiers clefs
Manifest plugin
Un fichier manifest declare le nom, version, et capacites:
Handlers d events
Enregistrement de callbacks pour des evenements:
State
Stockage d etat (si supporte) pour conserver des infos entre reboots:
Acces aux APIs
Utiliser les fonctions du coeur via API:
Etapes (niveau dev)
De l environnement de build au test sur hardware
Etape 1: environnement
Cloner le repo et installer les tools (ex: PlatformIO):
cd meshcore-firmware
git submodule update --init --recursive
pip install platformio
pio run
Etape 2: skeleton
Creer un dossier plugin avec les fichiers de base:
touch src/plugins/myPlugin/plugin.json
touch src/plugins/myPlugin/myPlugin.h
touch src/plugins/myPlugin/myPlugin.cpp
Etape 3: manifest
Declarer metadata et capacites:
Etape 4: logique
Implementer votre code C++ et vos handlers (messages, telemetrie, timers).
Etape 5: build + test
Compiler, flasher sur un device de test, verifier logs via serial monitor.
Exemple: plugin capteur temperature
Exemple simplifie: lire un capteur et diffuser une valeur (attention airtime).
Comment ca marche ?
Le plugin lit le capteur toutes les 60 s et envoie une courte valeur. Il repond aussi a une requete "TEMP_REQUEST". En vrai reseau, pensez sobriete: intervalle plus long, canal prive, et eviter de spammer.
Idees de plugins
Capteurs
Integrer temperature/pression/IAQ et envoyer en telemetrie
Data logging
Logger des events sur SD ou vers une gateway
Alertes
Alerter sur seuils (batterie, capteurs) ou messages critiques
Mapping
Visualiser topologie, liens, positions, signaux
Bridges
Connecter MeshCore a d autres reseaux (WiFi, MQTT, etc.)
Automatisation
Bots et comportements auto
Bonnes pratiques
Pour rester stable et sobre (important en LoRa)
-
β
Plugin focalise - une fonctionnalite claire, pas une usine a gaz
-
β
Respect des ressources - memoire/CPU limites, surtout sur ESP32
-
β
Eviter de bloquer - pas de delays longs dans la loop
-
β
Logs propres - erreurs explicites pour depannage
-
β
Doc - README et exemples pour utilisateurs
-
β
Test terrain - tester en vrai radio, pas seulement au bureau
FAQ
Dans quel langage ecrire un plugin ?
Sur firmware embarque: surtout C/C++. Pour des integrations externes (gateway), Python est souvent plus simple via serial/MQTT.
Puis-je utiliser des librairies Arduino ?
Souvent oui, selon le framework et les conflits. Attention au poids memoire.
Comment debugger ?
Serial monitor et logs (info/debug/error). Pour du plus avance: debugger hardware selon plateforme.
Un plugin peut modifier la radio ?
Selon permissions/support, oui. Faites-le prudemment: une mauvaise config peut degrader le reseau.
Comment distribuer un plugin ?
Souvent via un repo (code + manifest) et une procedure de build. Certains projets evoluent vers des approches plus simples, mais cela depend du firmware.
Peut-on faire du commercial ?
MeshCore est open source; verifiez les licences. Beaucoup choisissent open source + donations, ou facturent du support.
Demarrer en dev plugins
Avec une approche sobre, les plugins permettent d adapter MeshCore a des besoins locaux sans casser le coeur.
Faites un premier plugin simple, testez en petit noyau, puis partagez vos retours.