Plugin-Entwicklung

MeshCore Plugin-Entwicklung

Erstellen Sie Custom Modules und erweitern Sie die MeshCore-Funktionalität mit eigenen Plugins

Was ist MeshCore Plugin-Entwicklung?

MeshCore hat eine modulare Plugin-Architektur, mit der Entwickler die Funktionalität des Mesh-Netzwerks erweitern können, ohne die Core-Firmware zu ändern. Mit Plugins können Sie Custom Features hinzufügen wie Sensoren integrieren, Daten loggen, externe APIs ansprechen und mehr.

Die Plugin-API bietet Hooks in den Firmware-Lifecycle, mit denen Sie auf Events reagieren können wie Nachrichten empfangen, Nodes erkennen, Telemetrie-Updates und Routing-Entscheidungen. Dies macht MeshCore extrem flexibel für spezifische Anwendungsfälle.

Ob Sie eine Wetterstation anbinden, ein automatisches Notmeldesystem bauen oder Custom Visualisierungen erstellen möchten – mit MeshCore Plugins ist es möglich. Diese Anleitung zeigt, wie Sie mit der Plugin-Entwicklung beginnen.

Plugin-Architektur Übersicht

MeshCore Plugins basieren auf einer ereignisgesteuerten Architektur mit klar definierten Schnittstellen

Plugin Manifest

Jedes Plugin beginnt mit einer Manifest-Datei, die Metadaten und Capabilities definiert:

plugin.json mit Name, Version, Autor und Dependencies

Event Handlers

Plugins registrieren Handler für spezifische Events im Mesh:

onMessageReceived(), onNodeDetected(), onRouteUpdated()

State Management

Plugins können persistenten State in der Firmware speichern:

plugin.setState(), plugin.getState(), automatische Persistenz

API-Integration

Zugriff auf MeshCore Core-Funktionalität über Plugin-API:

sendMessage(), getNodes(), getRoutes(), getTelemetry()

Plugin-Entwicklung Schritt für Schritt

Von der Einrichtung der Entwicklungsumgebung bis zum Deployment Ihres ersten Plugins

1

Schritt 1: Entwicklungsumgebung einrichten

Klonen Sie das MeshCore Repository und richten Sie die Build-Tools ein:

git clone https://github.com/meshcore/meshcore-firmware.git
cd meshcore-firmware
git submodule update --init --recursive
pip install platformio
pio run
2

Schritt 2: Plugin-Skeleton erstellen

Erstellen Sie einen neuen Plugin-Ordner mit den Basisdateien:

mkdir -p src/plugins/myPlugin
touch src/plugins/myPlugin/plugin.json
touch src/plugins/myPlugin/myPlugin.h
touch src/plugins/myPlugin/myPlugin.cpp
3

Schritt 3: Plugin Manifest konfigurieren

Definieren Sie Ihre Plugin-Metadaten in plugin.json:

{\n "name": "MyPlugin",\n "version": "1.0.0",\n "author": "Ihr Name",\n "description": "Custom Plugin",\n "dependencies": ["core", "radio"],\n "capabilities": ["messaging", "telemetry"]\n}
4

Schritt 4: Plugin-Logik implementieren

Schreiben Sie Ihren Plugin-Code in C++ und implementieren Sie die benötigten Event Handler. Registrieren Sie Callbacks für Events wie Nachrichten empfangen, Nodes erkennen oder Telemetrie-Updates.

5

Schritt 5: Build und Test

Kompilieren Sie die Firmware mit Ihrem Plugin und flashen Sie auf ein Testgerät. Testen Sie Ihre Funktionalität gründlich und debuggen Sie eventuelle Probleme mit dem Serial Monitor.

Beispiel: Temperatursensor-Plugin

Ein einfaches Plugin, das einen DHT22-Sensor ausliest und die Temperatur über Mesh sendet

#include "myPlugin.h"\n#include <DHT.h>\n\n#define DHT_PIN 4\n#define DHT_TYPE DHT22\nDHT dht(DHT_PIN, DHT_TYPE);\n\nvoid MyPlugin::init() {\n dht.begin();\n Log.info("MyPlugin initialized");\n}\n\nvoid MyPlugin::loop() {\n static unsigned long lastRead = 0;\n if (millis() - lastRead > 60000) { // Jede Minute\n float temp = dht.readTemperature();\n float humidity = dht.readHumidity();\n \n if (!isnan(temp) && !isnan(humidity)) {\n String payload = "T:" + String(temp, 1) + "°C H:" + String(humidity, 1) + "%";\n meshcore.sendMessage(payload, BROADCAST_ADDR);\n Log.info("Sent: " + payload);\n }\n lastRead = millis();\n }\n}\n\nvoid MyPlugin::onMessageReceived(MeshMessage* msg) {\n if (msg->payload.startsWith("TEMP_REQUEST")) {\n float temp = dht.readTemperature();\n meshcore.sendMessage("T:" + String(temp, 1) + "°C", msg->sender);\n }\n}

Wie funktioniert das?

Dieses Plugin liest jede Minute Temperatur und Luftfeuchtigkeit von einem DHT22-Sensor und sendet diese über das Mesh-Netzwerk. Es reagiert auch auf „TEMP_REQUEST"-Nachrichten, indem es direkt eine Temperaturmessung an den Anfrager zurücksendet.

Beliebte Plugin-Typen

🌡️

Sensor-Integration

Koppeln Sie externe Sensoren (Temperatur, GPS, Luftdruck) und senden Sie Daten über Mesh

📊

Daten-Logging

Protokollieren Sie Mesh-Events auf SD-Karte oder externe Datenbank zur Analyse

🔔

Benachrichtigungssysteme

Senden Sie automatische Alerts basierend auf Mesh-Events oder Sensorwerten

🗺️

Mapping-Plugins

Visualisieren Sie Netzwerktopologie, Node-Positionen und Signalstärke

🔌

Protokoll-Bridges

Verbinden Sie MeshCore mit anderen Netzwerken (WiFi, LoRaWAN, MQTT)

🤖

Automatisierung

Bauen Sie Bots, die automatisch auf Nachrichten oder Events reagieren

Best Practices für Plugin-Entwicklung

Befolgen Sie diese Richtlinien, um stabile und performante Plugins zu erstellen

  • Halten Sie Plugins klein und fokussiert - Ein Plugin sollte eine Sache gut machen, nicht alles auf einmal

  • Respektieren Sie Ressourcenlimits - ESP32 hat begrenzten Speicher und CPU, optimieren Sie Ihren Code

  • Verwenden Sie Async-Patterns - Blockieren Sie niemals die Main Loop, verwenden Sie Callbacks und Timer

  • Implementieren Sie Error Handling - Fangen Sie Exceptions ab und protokollieren Sie Fehler klar

  • Dokumentieren Sie Ihre API - Schreiben Sie klare Kommentare und eine README für Nutzer

  • Testen Sie gründlich - Testen Sie auf echter Hardware und unter verschiedenen Netzwerkbedingungen

Häufig gestellte Fragen

In welcher Programmiersprache schreibe ich MeshCore Plugins?

MeshCore Plugins werden in C/C++ geschrieben, da die Firmware auf Embedded Hardware läuft (ESP32, nRF52). Sie können auch Python für externe Plugins verwenden, die über Serial oder MQTT mit der Firmware kommunizieren.

Kann ich bestehende Arduino-Libraries in meinem Plugin verwenden?

Ja, die meisten Arduino-Libraries sind mit MeshCore kompatibel, da es auf dem Arduino-Framework aufbaut. Achten Sie nur auf Library-Konflikte und Speicherverbrauch.

Wie debugge ich mein Plugin während der Entwicklung?

Verwenden Sie den Serial Monitor in PlatformIO für Debug-Ausgaben. Sie können Log.info(), Log.debug() und Log.error() für strukturiertes Logging nutzen. Mit einem Hardware-Debugger (wie J-Link) können Sie auch Breakpoints setzen.

Können Plugins die Radio-Konfiguration ändern?

Ja, mit den richtigen Berechtigungen können Plugins Radio-Parameter wie Sendeleistung, Spreading Factor und Bandwidth ändern. Dies muss jedoch vorsichtig geschehen, um die Netzwerkstabilität zu erhalten.

Wie verteile ich mein Plugin an andere Nutzer?

Sie können Ihr Plugin als Ordner mit Code + plugin.json über GitHub teilen. Nutzer können dann Ihr Plugin zu ihrem Firmware-Build hinzufügen und selbst kompilieren. In Zukunft kommt möglicherweise ein Plugin-Marketplace.

Kann ich mit Plugins Geld verdienen?

MeshCore ist Open Source, aber Sie können kommerzielle Plugins erstellen, wenn Sie möchten. Viele Entwickler wählen ein Open Source + Spenden-Modell oder verkaufen Support und Custom Development.

Starten Sie mit MeshCore Plugin-Entwicklung

Mit der Plugin-API können Sie MeshCore für Ihren spezifischen Anwendungsfall anpassen, ohne die Core-Firmware zu ändern

Beginnen Sie heute mit Ihrem ersten Plugin und teilen Sie Ihre Kreationen mit der Community!