MeshCore Korzystanie z Pythona API
Twórz niestandardowe aplikacje i skrypty za pomocą oficjalnej biblioteki Pythona MeshCore do automatyzacji, monitorowania i integracji
Co to jest MeshCore Python API?
Biblioteka Pythona meshcore zapewnia programowy dostęp do towarzyszących węzłów radiowych MeshCore. Możesz wysyłać wiadomości, zarządzać kontaktami, odczytywać dane telemetryczne i tworzyć niestandardowe aplikacje. Idealny do automatyzacji, monitorowania i integracji IoT.
Python API komunikuje się z Twoim węzłem poprzez serial (USB), Bluetooth Low Energy (BLE) lub TCP/IP. Biblioteka jest w pełni oparta na asynchronii i wykorzystuje architekturę sterowaną zdarzeniami. Otwarte oprogramowanie i aktywnie utrzymywane.
W tym przewodniku dowiesz się, jak zainstalować bibliotekę MeshCore, wykonać podstawowe operacje i zbudować praktyczne skrypty. API ułatwia integrację MeshCore z projektami w języku Python. Zapoznaj się też z MeshCore CLI do konfiguracji sieci przez terminal.
Instalacja MeshCore
Zainstaluj bibliotekę poprzez pip (wymagany Python 3.10+):
# Zainstaluj bibliotekę MeshCore
instalacja pip MeshCore
# Lub przez pipx (zalecane dla narzędzi CLI)
instalacja pipx MeshCore-CLI
# Sprawdź instalację
python -c „importuj MeshCore; print('MeshCore zainstalowany!')”
W systemie Linux możesz potrzebować dodatkowych uprawnień dostępu do portu szeregowego. Dodaj się do grupy dialout: sudo usermod -a -G dialout $USER (i zaloguj się ponownie). W przypadku BLE należy najpierw sparować urządzenie przez bluetoothctl.
Podstawowe zastosowanie
Biblioteka MeshCore jest oparta na asynchronii. Oto prosty przykład połączenia i wysłania wiadomości:
importuj asyncio
z MeshCore import MeshCore, Typ zdarzenia
async def main():
# Połącz się przez port szeregowy USB
MeshCore = czekaj MeshCore.create_serial("/dev/ttyUSB0")
# Uzyskaj informacje o urządzeniu
wynik = czekaj MeshCore.commands.send_device_query()
jeśli wynik.typ != Typ zdarzenia.BŁĄD:
print(f"Połączono z: {result.payload}")
# Pobierz kontakty
kontakty = czekaj MeshCore.commands.get_contacts()
print(f"Liczba kontaktów: {len(contacts.payload)}")
# Wyślij wiadomość do pierwszego kontaktu
jeśli kontakty.ładunek:
kontakt = kontakty.ładunek[0]
czekaj MeshCore.commands.send_msg(contact, „Witam w Pythonie!”)
# Zamknij połączenie
czekaj MeshCore.disconnect()
asyncio.run(main())
Ten skrypt łączy się przez USB, pobiera informacje o urządzeniu i kontakty oraz wysyła wiadomość. Wszystkie polecenia są asynchroniczne i zwracają obiekt Event z typem i ładunkiem.
Praktyczne zastosowania
Chatboty
Zbuduj bota, który automatycznie odpowiada na wiadomości. Na przykład bot pogodowy, bot informacyjny lub bot administracyjny do zarządzania siecią.
Pulpity monitorujące
Zbieraj dane telemetryczne ze wszystkich węzłów i wizualizuj je w Grafanie, InfluxDB lub niestandardowym panelu kontrolnym. Monitorowanie stanu sieci w czasie rzeczywistym.
Systemy ostrzegawcze
Wysyłaj powiadomienia na e-mail, Telegram, Discord, gdy wystąpią określone zdarzenia. Na przykład: niski poziom naładowania baterii, węzeł offline, alarm czujnika.
Automatyka domowa
Zintegruj MeshCore z Home Assistant, Node-RED lub Domoticz. Uruchamiaj automatyzacje w oparciu o komunikaty mesh.
Skrypty bramy
Most pomiędzy MeshCore a innymi systemami: broker MQTT, REST API, baza danych. Scentralizuj dane z wielu węzłów.
Testowanie i debugowanie
Automatyczne testy zasięgu sieci, opóźnień i utraty pakietów. Narzędzia do debugowania umożliwiające rozwiązywanie problemów.
Przykłady kodu
1. Otrzymuj wiadomości oparte na zdarzeniach
Subskrybuj wydarzenia, aby otrzymywać wiadomości w czasie rzeczywistym:
importuj asyncio
z MeshCore import MeshCore, Typ zdarzenia
async def handle_message(zdarzenie):
"""Oddzwonienie w przypadku wiadomości przychodzących"""
msg = wydarzenie.payload.get("tekst", "")
nadawca = event.payload.get("pubkey_prefix", "unknown")
print(f"[{sender}]: {msg}")
async def main():
MeshCore = czekaj MeshCore.create_serial("/dev/ttyUSB0")
# Subskrybuj wiadomości
MeshCore.subscribe(Typ zdarzenia.CONTACT_MSG_RECV, komunikat_uchwytu)
# Rozpocznij automatyczne pobieranie wiadomości
czekaj MeshCore.start_auto_message_fetching()
print("Słuchanie wiadomości... (Ctrl+C, aby zatrzymać)")
spróbuj:
podczas gdy prawda:
czekaj na asyncio.sleep(1)
z wyjątkiem przerwania klawiatury:
czekaj MeshCore.disconnect()
asyncio.run(main())
2. Połącz się różnymi metodami
Biblioteka obsługuje połączenia szeregowe, BLE i TCP:
z MeshCore import MeshCore
# Przez USB Serial
MeshCore = czekaj MeshCore.create_serial("/dev/ttyUSB0", 115200)
# Przez Bluetooth Niska energia
MeshCore = czekaj MeshCore.create_ble("12:34:56:78:90:AB")
# Z parowaniem PIN
MeshCore = czekaj MeshCore.create_ble("12:34:56:78:90:AB", pin="123456")
# Przez TCP/IP (jeśli na węźle działa serwer TCP)
MeshCore = czekaj MeshCore.create_tcp("192.168.1.100", 4000)
3. Zarządzaj kontaktami
Pobierz kontakty i wyszukaj według nazwy lub klucza:
importuj asyncio
z MeshCore import MeshCore, Typ zdarzenia
async def main():
MeshCore = czekaj MeshCore.create_serial("/dev/ttyUSB0")
# Pobierz wszystkie kontakty
wynik = czekaj MeshCore.commands.get_contacts()
if wynik.typ == Typ zdarzenia.BŁĄD:
print(f"Błąd: {result.payload}")
wrócić
kontakty = wynik.ładunek
print(f"=== {len(contacts)} Kontakty ===")
do kontaktu w kontaktach:
print(f" - {contact.name} ({contact.pubkey_prefix})")
# Wyszukaj kontakt według nazwy
kontakt = MeshCore.get_contact_by_name("MójNode")
jeśli kontakt:
czekaj MeshCore.commands.send_msg(kontakt, „Witam!”)
czekaj MeshCore.disconnect()
asyncio.run(main())
Zalety biblioteki MeshCore
Współczesny Python
W pełni asynchroniczne/oczekiwanie oparte na Pythonie 3.10+. Czysty projekt API ze wskazówkami dotyczącymi typów i dobrą obsługą IDE.
Wiele połączeń
Połącz się przez port szeregowy, BLE lub TCP. Automatyczne ponowne łączenie z wykładniczym cofaniem w przypadku utraty połączenia.
Napędzane wydarzeniami
Subskrybuj określone wydarzenia za pomocą filtrów. Odpowiadaj w czasie rzeczywistym na wiadomości, reklamy, potwierdzenia i nie tylko.
Aktywny rozwój
Biblioteka jest aktywnie utrzymywana przez społeczność MeshCore. Otwarte oprogramowanie w GitHubie.
Opcje integracji
Łatwa integracja z innymi asynchronicznymi bibliotekami Pythona, bazami danych i frameworkami internetowymi.
Niezawodny
Polecenia zwracają obiekty zdarzeń z jasną obsługą błędów. Automatyczne pobieranie wiadomości dla niezawodnego odbioru.
Często zadawane pytania
Której wersji Pythona potrzebuję?
Wymagany jest Python 3.10 lub nowszy. Sprawdź za pomocą python --version lub python3 --version. Pobierz Pythona z python.org, jeśli masz starszą wersję.
Jak połączyć się przez Bluetooth?
Najpierw sparuj urządzenie przez bluetoothctl w systemie Linux. Następnie użyj MeshCore.create_ble("MAC:ADDRESS"). W przypadku urządzeń z PIN-em użyj parametru pin.
Dlaczego wszystkie metody są asynchroniczne?
Biblioteka MeshCore używa asyncio do komunikacji nieblokującej. Dzięki temu możliwe jest wykonywanie wielu operacji jednocześnie i sprawne oczekiwanie na odpowiedzi bez blokowania.
Jak sobie radzić z błędami?
Wszystkie polecenia zwracają obiekt Event. Sprawdź result.type == EventType.ERROR, aby wykryć błędy. Następnie plik result.payload zawiera komunikat o błędzie.
Czy mogę kontrolować wiele węzłów jednocześnie?
Tak! Utwórz wiele instancji MeshCore, każdą połączoną z innym węzłem. Dzięki async możesz używać ich równolegle.
Gdzie mogę znaleźć więcej dokumentacji?
Sprawdź repozytorium GitHub: github.com/MeshCore-dev/meshcore_py. Plik README zawiera obszerne przykłady. Kod źródłowy MeshCore-CLI jest również dobrym odniesieniem.
Zacznij od programowania w Pythonie
Gotowy do tworzenia niestandardowych aplikacji MeshCore? Zainstaluj bibliotekę MeshCore i rozpocznij eksperymenty.