Rozwój wtyczki

MeshCore rozwój wtyczki

Twórz niestandardowe moduły i rozszerzaj funkcjonalność MeshCore za pomocą własnych wtyczek

Na czym polega tworzenie wtyczek MeshCore?

MeshCore ma modułową architekturę wtyczek, która pozwala programistom rozszerzać funkcjonalność sieci mesh bez zmiany podstawowego oprogramowania sprzętowego. Za pomocą wtyczek możesz dodawać niestandardowe funkcje, takie jak integracja czujników, rejestrowanie danych, adresowanie zewnętrznych API i nie tylko.

Wtyczka API zapewnia zaczepy w cyklu życia oprogramowania sprzętowego, które pozwalają reagować na zdarzenia, takie jak odbieranie wiadomości, wykrywanie węzłów, aktualizacje telemetrii i decyzje dotyczące routingu. To sprawia, że ​​MeshCore jest niezwykle elastyczny w określonych przypadkach użycia.

Niezależnie od tego, czy chcesz podłączyć stację pogodową, zbudować automatyczny system powiadamiania ratunkowego, czy stworzyć własne wizualizacje - jest to możliwe dzięki wtyczkom MeshCore. W tym przewodniku dowiesz się, jak rozpocząć tworzenie wtyczek.

Przegląd architektury wtyczek

Wtyczki MeshCore oparte są na architekturze sterowanej zdarzeniami z jasno zdefiniowanymi interfejsami

Manifest wtyczki

Każda wtyczka zaczyna się od pliku manifestu, który definiuje metadane i możliwości:

plugin.json z nazwą, wersją, autorem i zależnościami

Osoby obsługujące zdarzenia

Wtyczki rejestrują procedury obsługi określonych zdarzeń w siatce:

onMessageReceived(), onNodeDetected(), onRouteUpdated()

Zarządzanie państwem

Wtyczki mogą przechowywać trwały stan w oprogramowaniu:

plugin.setState(), plugin.getState(), automatyczna trwałość

API integracja

Dostęp do podstawowej funkcjonalności MeshCore poprzez wtyczkę API:

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

Tworzenie wtyczki krok po kroku

Od skonfigurowania środowiska programistycznego po wdrożenie pierwszej wtyczki

1

Krok 1: Skonfiguruj środowisko programistyczne

Sklonuj repozytorium MeshCore i skonfiguruj narzędzia do kompilacji:

git clone https://github.com/MeshCore/MeshCore-firmware.git
cd MeshCore-firmware
git aktualizacja podmodułu --init --recursive
pip zainstaluj platformio
pio run
2

Krok 2: Utwórz szkielet wtyczki

Utwórz nowy folder wtyczki z podstawowymi plikami:

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

Krok 3: Skonfiguruj manifest wtyczki

Zdefiniuj metadane wtyczki w pliku plugin.json:

{\n "nazwa": "Moja wtyczka",\n "wersja": "1.0.0",\n "autor": "Twoje imię",\n "opis": "Wtyczka niestandardowa",\n "zależności": ["rdzeń", "radio"],\n "możliwości": ["przesyłanie wiadomości", "telemetria"]\n}
4

Krok 4: Zaimplementuj logikę wtyczki

Napisz kod wtyczki w C++ i zaimplementuj potrzebne procedury obsługi zdarzeń. Zarejestruj wywołania zwrotne dla zdarzeń, takich jak odbieranie wiadomości, odkrywanie węzłów lub aktualizacje telemetrii.

5

Krok 5: Kompiluj i testuj

Skompiluj oprogramowanie sprzętowe za pomocą wtyczki i flashuj na urządzeniu testowym. Dokładnie przetestuj swoją funkcjonalność i usuń wszelkie problemy z monitorem szeregowym.

Przykład: wtyczka czujnika temperatury

Prosta wtyczka odczytująca czujnik DHT22 i przesyłająca temperaturę poprzez siatkę

#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("Zainicjowano moją wtyczkę");\n}\n\nvoid MyPlugin::loop() {\n static unsigned long lastRead = 0;\n if (millis() - lastRead > 60000) { // Co minutę\n float temp = dht.readTemperature();\n pływająca wilgotność = dht.readHumidity();\n \n if (!isnan(temp) && !isnan(wilgotność)) {\n String ładunek = "T:" + String(temp, 1) + "°C H:" + String(wilgotność, 1) + "%";\n MeshCore.sendMessage(ładunek, BROADCAST_ADDR);\n Log.info("Wysłane: " + ładunek);\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}

Jak to działa?

Ta wtyczka co minutę odczytuje temperaturę i wilgotność z czujnika DHT22 i transmituje je za pośrednictwem sieci mesh. Odpowiada również na komunikaty „TEMP_REQUEST”, natychmiast zwracając żądającemu odczyt temperatury.

Popularne typy wtyczek

🌡️

Integracja czujników

Podłącz zewnętrzne czujniki (temperatura, GPS, ciśnienie powietrza) i przesyłaj dane poprzez mesh

📊

Rejestrowanie danych

Rejestruj zdarzenia siatki na karcie SD lub zewnętrznej bazie danych w celu analizy

🔔

Systemy powiadamiania

Wysyłaj automatyczne alerty na podstawie zdarzeń w sieci lub wartości czujników

🗺️

Mapowanie wtyczek

Wizualizuj topologię sieci, pozycje węzłów i siłę sygnału

🔌

Mosty protokołowe

Połącz MeshCore z innymi sieciami (WiFi, LoRaWAN, MQTT)

🤖

Automatyzacja

Twórz boty, które automatycznie odpowiadają na wiadomości lub zdarzenia

Najlepsze praktyki dotyczące tworzenia wtyczek

Postępuj zgodnie z tymi wskazówkami, aby zbudować stabilne i wydajne wtyczki

  • Wtyczki powinny być małe i skupione — wtyczka powinna dobrze wykonywać jedną czynność, a nie wszystko na raz

  • Przestrzegaj limitów zasobów - ESP32 ma ograniczoną pamięć i procesor, zoptymalizuj swój kod

  • Użyj wzorców asynchronicznych - Nigdy nie blokuj głównej pętli, używaj wywołań zwrotnych i timerów

  • Zaimplementuj obsługę błędów — Wychwytuj wyjątki i wyraźnie rejestruj błędy

  • Udokumentuj swój interfejs API - Napisz jasne komentarze i plik README dla użytkowników

  • Przetestuj dokładnie — przetestuj na prawdziwym sprzęcie i w różnych warunkach sieciowych

Często zadawane pytania

W jakim języku programowania mam pisać wtyczki MeshCore?

Wtyczki MeshCore są napisane w C/C++, ponieważ oprogramowanie sprzętowe działa na wbudowanym sprzęcie (ESP32, nRF52). Możesz także użyć Pythona do zewnętrznych wtyczek, które komunikują się z oprogramowaniem sprzętowym poprzez port szeregowy lub MQTT.

Czy mogę używać istniejących bibliotek Arduino w mojej wtyczce?

Tak, większość bibliotek Arduino jest kompatybilna z MeshCore, ponieważ jest zbudowany na frameworku Arduino. Trzeba tylko uważać na konflikty bibliotek i zużycie pamięci.

Jak debugować wtyczkę podczas programowania?

Użyj monitora szeregowego w PlatformIO w celu uzyskania wyników debugowania. Do rejestrowania strukturalnego można używać funkcji Log.info(), Log.debug() i Log.error(). Możesz także ustawić punkty przerwania za pomocą debugera sprzętowego (takiego jak J-Link).

Czy wtyczki mogą regulować konfigurację radia?

Tak, przy odpowiednich uprawnieniach wtyczki mogą zmieniać parametry radia, takie jak moc nadawania, współczynnik rozprzestrzeniania i przepustowość. Należy to zrobić ostrożnie, aby zachować stabilność sieci.

Jak udostępnić moją wtyczkę innym użytkownikom?

Możesz udostępnić swoją wtyczkę jako folder z kodem + plugin.json za pośrednictwem GitHub. Użytkownicy mogą następnie dodać wtyczkę do swojej kompilacji oprogramowania sprzętowego i samodzielnie ją skompilować. Być może w przyszłości pojawi się rynek wtyczek.

Czy mogę zarabiać pieniądze dzięki wtyczkom?

MeshCore jest oprogramowaniem typu open source, ale jeśli chcesz, możesz tworzyć wtyczki komercyjne. Wielu programistów wybiera model open source + darowizny lub sprzedaje wsparcie i niestandardowy rozwój.

Zacznij od opracowania wtyczki MeshCore

Dzięki wtyczce API możesz dostosować MeshCore do swojego konkretnego przypadku użycia bez zmiany podstawowego oprogramowania sprzętowego

Uruchom swoją pierwszą wtyczkę już dziś i podziel się swoimi dziełami ze społecznością!

Powiązane artykuły