MeshCore Python API gebruiken
Bouw eigen tools met de officiële MeshCore Python library voor automatisatie, monitoring en koppelingen.
Wat kan je met de MeshCore Python API?
Met de meshcore library stuur je nodes programmatisch aan: berichten versturen, contacten uitlezen, events verwerken en telemetrie ophalen. Handig voor eigen dashboards, bots en integraties.
De API ondersteunt USB serial, BLE en TCP. Alles is async opgezet, zodat je meerdere taken tegelijk kan afhandelen zonder blokkering.
In deze gids krijg je een praktische basis om snel scripts te bouwen die bruikbaar zijn in een Belgische MeshCore-opstelling.
Installatie van meshcore
Gebruik Python 3.10+ en installeer via pip:
# Library installeren
pip install meshcore
# CLI tool via pipx
pipx install meshcore-cli
# Snelle controle
python -c "import meshcore; print('meshcore OK')"
Op Linux heb je vaak serial rechten nodig (dialout). Voor BLE-koppelingen controleer je eerst de bluetooth pairing.
Basisgebruik
Eenvoudig voorbeeld: verbinden, info opvragen en bericht sturen.
import asyncio
from meshcore import MeshCore, EventType
async def main():
meshcore = await MeshCore.create_serial("/dev/ttyUSB0")
result = await meshcore.commands.send_device_query()
if result.type != EventType.ERROR:
print(f"Verbonden met: {result.payload}")
contacts = await meshcore.commands.get_contacts()
print(f"Aantal contacten: {len(contacts.payload)}")
if contacts.payload:
contact = contacts.payload[0]
await meshcore.commands.send_msg(contact, "Test vanuit Python")
await meshcore.disconnect()
asyncio.run(main())
Alle commando's geven een Event terug. Controleer altijd het event type voor foutafhandeling.
Waarvoor wordt dit gebruikt?
Automatische berichtbots
Reageer automatisch op inkomende berichten of commando's.
Netwerkmonitoring
Verzamel telemetrie en stuur die door naar dashboards of logging.
Alarm- en notificatieflows
Koppel events aan Telegram, mail of interne waarschuwingen.
Domotica-integratie
Gebruik MeshCore-events als triggers in Home Assistant of Node-RED.
Gateway scripts
Brug tussen MeshCore en externe systemen zoals MQTT of REST APIs.
Test & troubleshooting
Automatiseer bereiktests, latencychecks en functionele regressietests.
Codevoorbeelden
1. Event-gebaseerd berichten ontvangen
Luister op nieuwe berichten en verwerk in real-time:
import asyncio
from meshcore import MeshCore, EventType
async def handle_message(event):
msg = event.payload.get("text", "")
sender = event.payload.get("pubkey_prefix", "onbekend")
print(f"[{sender}] {msg}")
async def main():
meshcore = await MeshCore.create_serial("/dev/ttyUSB0")
meshcore.subscribe(EventType.CONTACT_MSG_RECV, handle_message)
await meshcore.start_auto_message_fetching()
try:
while True:
await asyncio.sleep(1)
except KeyboardInterrupt:
await meshcore.disconnect()
asyncio.run(main())
2. Verbinden via meerdere transporten
Serial, BLE of TCP naargelang je setup:
from meshcore import MeshCore
# USB serial
meshcore = await MeshCore.create_serial("/dev/ttyUSB0", 115200)
# BLE
meshcore = await MeshCore.create_ble("12:34:56:78:90:AB")
meshcore = await MeshCore.create_ble("12:34:56:78:90:AB", pin="123456")
# TCP
meshcore = await MeshCore.create_tcp("192.168.1.100", 4000)
3. Contacten ophalen en gebruiken
Lees de contactenlijst en stuur gericht berichten:
import asyncio
from meshcore import MeshCore, EventType
async def main():
meshcore = await MeshCore.create_serial("/dev/ttyUSB0")
result = await meshcore.commands.get_contacts()
if result.type == EventType.ERROR:
print(f"Error: {result.payload}")
return
contacts = result.payload
print(f"Contacten: {len(contacts)}")
contact = meshcore.get_contact_by_name("MijnNode")
if contact:
await meshcore.commands.send_msg(contact, "Hallo vanaf script")
await meshcore.disconnect()
asyncio.run(main())
Sterke punten van de library
Async-first architectuur
Efficiënt werken met meerdere nodes en events tegelijk.
Meerdere verbindingstypes
USB, BLE en TCP in dezelfde API-structuur.
Event-driven model
Reageer direct op nieuwe berichten en statuswijzigingen.
Actieve community
Open source en bruikbaar in praktijkprojecten.
Makkelijke integratie
Koppelbaar aan bestaande Python stacks en services.
Duidelijke foutafhandeling
Event objecten maken diagnose en retries voorspelbaar.
Veelgestelde vragen
Welke Python-versie is nodig?
Gebruik Python 3.10 of nieuwer voor volledige compatibiliteit.
Hoe start ik met BLE?
Pair je toestel eerst correct en gebruik daarna create_ble() met het juiste adres.
Waarom async?
Omdat communicatie event-driven is en je zo niet blokkeert tijdens I/O.
Hoe detecteer ik errors?
Controleer result.type == EventType.ERROR en log de payload.
Kan ik meerdere nodes parallel aansturen?
Ja. Gebruik meerdere MeshCore-instances binnen dezelfde event loop.
Waar vind ik extra voorbeelden?
Bekijk de officiële repository en CLI broncode voor actuele patronen.
Start met je eerste script
Gebruik de voorbeelden als basis en bouw stap voor stap je eigen integratie.