Development & Scripting

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.