Rozwój i skrypty

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.

Powiązane artykuły