MeshCore Python API gebruiken
Bouw custom applicaties en scripts met de meshtastic-python library voor automation, monitoring en integraties
Wat is de MeshCore Python API?
De meshtastic-python library geeft je programmatische toegang tot MeshCore nodes. Je kunt berichten versturen, telemetrie lezen, configuratie wijzigen, en custom applicaties bouwen. Perfect voor automation, monitoring, en IoT integraties.
De Python API communiceert met je node via USB serial of Bluetooth. Je kunt verbinden met lokale nodes of remote nodes via MQTT. De library is open source en actief onderhouden door de community.
In deze gids leer je hoe je de Python API installeert, basis operaties uitvoert, en praktische scripts bouwt. Of je nu een beginner bent of ervaren developer, de API maakt het makkelijk om MeshCore te integreren in je projecten.
Installatie van meshtastic-python
Installeer de library via pip (Python 3.8+ vereist):
# Installeer meshtastic library pip install meshtastic # Of met alle optionele dependencies pip install "meshtastic[all]" # Verifieer installatie meshtastic --version
Op Linux heb je mogelijk extra rechten nodig voor serial port toegang. Voeg jezelf toe aan de dialout groep: sudo usermod -a -G dialout $USER (en log opnieuw in).
Basis gebruik
Simpel voorbeeld om te connecten met een node en een bericht te sturen:
import meshtastic
import meshtastic.serial_interface
# Connect via USB serial
interface = meshtastic.serial_interface.SerialInterface()
# Verstuur een text bericht naar alle nodes
interface.sendText("Hallo MeshCore netwerk!")
# Lees node info
nodeInfo = interface.getMyNodeInfo()
print(f"Node ID: {nodeInfo['user']['id']}")
print(f"Lange naam: {nodeInfo['user']['longName']}")
# Sluit connectie
interface.close()
Dit script verbindt met je node via USB, verstuurt een bericht, en haalt node informatie op. De SerialInterface detecteert automatisch de juiste serial port.
Praktische toepassingen
Chatbots
Bouw een bot die automatisch reageert op berichten. Bijvoorbeeld een weather bot, info bot, of admin bot voor netwerk management.
Monitoring dashboards
Verzamel telemetrie van alle nodes en visualiseer in Grafana, InfluxDB, of custom dashboard. Real-time netwerk health monitoring.
Alert systemen
Stuur notificaties naar email, Telegram, Discord als bepaalde events gebeuren. Bijvoorbeeld: lage batterij, node offline, sensor alarm.
Home automation
Integreer MeshCore met Home Assistant, Node-RED, of Domoticz. Trigger automations op basis van mesh berichten.
Gateway scripts
Bridge tussen MeshCore en andere systemen: MQTT broker, REST API, database. Centraliseer data van meerdere nodes.
Testing & debugging
Automatische tests voor netwerk bereik, latency, packet loss. Debug tools voor troubleshooting.
Code voorbeelden
1. Ontvang alle berichten
Listen naar alle inkomende berichten en print ze naar console:
import meshtastic
import meshtastic.serial_interface
def onReceive(packet, interface):
"""Callback voor inkomende berichten"""
if packet['decoded']['portnum'] == 'TEXT_MESSAGE_APP':
msg = packet['decoded']['text']
sender = packet['fromId']
print(f"[{sender}]: {msg}")
# Connect en subscribe
interface = meshtastic.serial_interface.SerialInterface()
interface.sendText("Bot is online!")
# Loop blijft draaien
print("Listening voor berichten... (Ctrl+C om te stoppen)")
while True:
pass # Callbacks worden automatisch aangeroepen
2. Verstuur GPS positie
Stuur een custom GPS positie naar het netwerk (handig voor testing):
import meshtastic
import meshtastic.serial_interface
interface = meshtastic.serial_interface.SerialInterface()
# Verstuur GPS positie (Amsterdam)
latitude = 52.3676
longitude = 4.9041
altitude = 5
interface.sendPosition(
latitude=latitude,
longitude=longitude,
altitude=altitude
)
print(f"Positie verzonden: {latitude}, {longitude}")
interface.close()
3. Lees telemetrie van alle nodes
Haal telemetrie data op van alle bekende nodes in het netwerk:
import meshtastic
import meshtastic.serial_interface
interface = meshtastic.serial_interface.SerialInterface()
# Get alle nodes
nodes = interface.nodes
print("=== Node Telemetry ===")
for nodeId, node in nodes.items():
user = node.get('user', {})
position = node.get('position', {})
telemetry = node.get('deviceMetrics', {})
print(f"\n{user.get('longName', 'Unknown')}")
print(f" ID: {user.get('id', '?')}")
print(f" Battery: {telemetry.get('batteryLevel', '?')}\%")
print(f" Voltage: {telemetry.get('voltage', '?'):.2f}V")
if position:
print(f" Position: {position.get('latitude')}, {position.get('longitude')}")
interface.close()
Voordelen van de Python API
Python is makkelijk
Python is één van de meest toegankelijke programmeertalen. Veel voorbeelden en tutorials beschikbaar. Ideaal voor beginners én experts.
Plug & play
Installeer via pip en begin direct. Automatische port detectie, geen complexe setup. Werkt op Windows, Mac, Linux, Raspberry Pi.
Goede documentatie
Uitgebreide docs op python.meshtastic.org. Veel code voorbeelden en community support op Discord/Telegram.
Actieve ontwikkeling
Library wordt actief onderhouden. Nieuwe features worden snel toegevoegd. Open source op GitHub.
Integratie mogelijkheden
Makkelijk te integreren met MQTT, REST APIs, databases, Home Assistant, en andere Python libraries.
Real-time callbacks
Event-driven architecture met callbacks. Reageer direct op berichten, telemetrie updates, of node status wijzigingen.
Veelgestelde vragen
Welke Python versie heb ik nodig?
Python 3.8 of hoger is vereist. Controleer met python --version of python3 --version. Download Python van python.org als je het nog niet hebt.
Kan ik connecten via Bluetooth in plaats van USB?
Ja! Gebruik meshtastic.ble_interface.BLEInterface() in plaats van SerialInterface. Bluetooth support vereist extra dependencies: pip install "meshtastic[ble]". Let op: BLE is trager dan USB.
Hoe kan ik berichten sturen naar specifieke nodes?
Gebruik interface.sendText("bericht", destinationId="!abcd1234"). De destination ID is de node ID (bijv. !a1b2c3d4). Zonder destinationId wordt het broadcast naar alle nodes.
Kan ik configuratie wijzigen via de API?
Ja! Je kunt alle node settings aanpassen: interface.localNode.setOwner("Nieuwe Naam"), channel settings, LoRa parameters, etc. Zie de API documentatie voor alle opties.
Werkt de API met remote nodes via MQTT?
Ja, je kunt connecten met een MQTT broker: interface = meshtastic.mqtt_interface.MQTTInterface(...). Dit geeft toegang tot het netwerk zonder lokale node. Zie de MQTT integratie pagina.
Waar vind ik meer code voorbeelden?
Check de GitHub repo: github.com/meshtastic/python. De examples/ folder heeft veel praktische scripts. Ook de officiële docs op python.meshtastic.org hebben tutorials.
Start met Python development
Klaar om custom MeshCore applicaties te bouwen? Installeer de Python API en begin met experimenteren.