Utiliser l API Python MeshCore
Construisez des scripts et applications autour de MeshCore: automatisation, monitoring, integration (USB/serial, BLE, TCP selon support). En France, reseau en structuration: utile pour tester un noyau local.
Qu est-ce que l API Python MeshCore ?
La librairie meshcore (Python) donne un acces programmatique a des noeuds MeshCore (surtout companion). Vous pouvez envoyer des messages, lire des infos, recuperer contacts, et construire des integrations.
La connexion passe typiquement par USB/serial, BLE ou TCP/IP (selon firmware). La plupart des usages sont async (base sur evenements) pour gerer des evenements sans bloquer.
Contexte France: le reseau MeshCore est en construction. L API est surtout utile pour instrumenter un noyau local (2-5 noeuds) et mesurer portee/fiabilite avant d etendre avec un repeater.
Installer la librairie meshcore
Installez via pip (Python 3.10+ conseille):
# Installer la librairie pip install meshcore # (Optionnel) installer la CLI via pipx pipx install meshcore-cli # Verifier python -c "import meshcore; print(\"meshcore OK\")"
Sous Linux, vous aurez peut-etre besoin des droits pour le port serie: ajoutez-vous au groupe dialout puis reconnectez-vous. Pour BLE, un pairing peut etre requis (ex: bluetoothctl).
Exemple minimal
Exemple (indicatif) de connexion en USB/serial et envoi d un message. Adaptez selon la version de l API.
import asyncio
async def main():
# Exemple: se connecter a un port serie
# (API exacte selon version)
mesh = await MeshCore.create_serial("/dev/ttyUSB0")
info = await mesh.commands.send_device_query()
print(info)
contacts = await mesh.commands.get_contacts()
if contacts.payload:
await mesh.commands.send_msg(contacts.payload[0], "Test depuis Python")
await mesh.disconnect()
asyncio.run(main())
Ce script illustre l idee: connecter, lire info, recuperer contacts, envoyer un message, puis fermer. Les details (classes/noms) peuvent changer: verifiez la doc officielle GitHub de la librairie.
Usages pratiques
Bots
Repondre automatiquement a des messages (ex: info, meteo, statut repeater).
Monitoring
Collecter telemetrie et etat de noeuds, puis afficher dans un dashboard.
Alertes
Declencher une alerte si batterie basse, noeud offline, perte de liaison, etc.
Home automation
Bridge vers Home Assistant/Node-RED (souvent via MQTT ou webhook).
Gateway scripts
Faire le pont entre MeshCore et d autres services (base, API, MQTT).
Tests
Mesurer portee, latence, perte packets, et documenter des essais reproductibles.
Exemples de code
1. Recevoir des messages via events
S abonner aux events pour recevoir en temps reel:
import asyncio
async def on_message(event):
payload = getattr(event, "payload", {})
text = payload.get("text", "")
sender = payload.get("sender", "?")
print(f"[{sender}] {text}")
async def main():
mesh = await MeshCore.create_serial("/dev/ttyUSB0")
mesh.subscribe(EventType.CONTACT_MSG_RECV, on_message)
await mesh.start_auto_message_fetching()
try:
while True:
await asyncio.sleep(1)
finally:
await mesh.disconnect()
asyncio.run(main())
2. Connexions possibles
Selon version, l API propose plusieurs methodes:
from meshcore import MeshCore
# USB/serial
mesh = await MeshCore.create_serial("/dev/ttyUSB0", 115200)
# BLE (adresse MAC, selon OS)
mesh = await MeshCore.create_ble("12:34:56:78:90:AB")
# TCP/IP (si node expose un serveur)
mesh = await MeshCore.create_tcp("192.168.1.50", 4000)
3. Gerer les contacts
Lister et trouver un contact par nom:
import asyncio
async def main():
mesh = await MeshCore.create_serial("/dev/ttyUSB0")
result = await mesh.commands.get_contacts()
contacts = result.payload or []
print(f"Contacts: {len(contacts)}")
for c in contacts:
print(f"- {c.name} ({c.pubkey_prefix})")
target = mesh.get_contact_by_name("MonNode")
if target:
await mesh.commands.send_msg(target, "Hello")
await mesh.disconnect()
asyncio.run(main())
Pourquoi passer par Python
Python moderne
Async/await, structure event-driven, integration facile avec vos outils.
Plusieurs liens
USB, BLE, TCP: utile pour un labo de test ou une gateway fixe.
Events
Reception temps reel, filtrage, reactions automatiques (bots/tests).
Open source
La reference la plus fiable reste le code et les examples dans le repo GitHub.
Integrations
Logs, dashboards, alerting: Python est pratique pour coller tout ensemble.
Automatisation
Scripts repetables: utile pour tester, comparer des presets, documenter.
FAQ
Quelle version de Python ?
En general, Python 3.10+ est une bonne base. Verifiez la doc du package pour la contrainte exacte.
Connexion Bluetooth: comment faire ?
Selon OS, vous devez pairer l appareil. Ensuite, utilisez la methode BLE de la librairie avec l adresse appropriee.
Pourquoi tout est async ?
Pour eviter de bloquer pendant les IO (serial/BLE/TCP) et traiter des events en parallele. C est utile pour monitoring et bots.
Comment gerer les erreurs ?
Les commandes renvoient souvent un objet resultat/event. Testez le type et inspectez la payload pour diagnostiquer.
Puis-je piloter plusieurs noeuds ?
Oui: creez plusieurs instances connectees a des noeuds differents, puis orchestrez via asyncio.
Ou est la doc ?
Consultez le repo GitHub de la librairie meshcore (README + examples). C est la source la plus a jour.
Demarrer en Python
Pour la France (reseau en structuration), utilisez Python pour mesurer et automatiser des tests utiles sur un petit noyau local.