Date: Tue, 10 Feb 2026 16:31:06 +0000 From: Oleksii Samorukov <samm@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: c802989b601a - main - comms/meshcore-cli: new port, CLI to manage MeshCore devices Message-ID: <698b5d4a.1d270.6d6a0644@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by samm: URL: https://cgit.FreeBSD.org/ports/commit/?id=c802989b601ae197406105231c963ef884d8fe0e commit c802989b601ae197406105231c963ef884d8fe0e Author: Oleksii Samorukov <samm@FreeBSD.org> AuthorDate: 2026-02-10 16:30:28 +0000 Commit: Oleksii Samorukov <samm@FreeBSD.org> CommitDate: 2026-02-10 16:30:28 +0000 comms/meshcore-cli: new port, CLI to manage MeshCore devices --- comms/Makefile | 1 + comms/meshcore-cli/Makefile | 24 ++++++ comms/meshcore-cli/distinfo | 3 + .../files/patch-src_meshcore__cli_meshcore__cli.py | 94 ++++++++++++++++++++++ comms/meshcore-cli/pkg-descr | 3 + 5 files changed, 125 insertions(+) diff --git a/comms/Makefile b/comms/Makefile index 6a5b41fbee23..e812e40d8ca6 100644 --- a/comms/Makefile +++ b/comms/Makefile @@ -96,6 +96,7 @@ SUBDIR += locator SUBDIR += lrzsz SUBDIR += lysdr + SUBDIR += meshcore-cli SUBDIR += mbelib SUBDIR += mgetty+sendfax SUBDIR += minicom diff --git a/comms/meshcore-cli/Makefile b/comms/meshcore-cli/Makefile new file mode 100644 index 000000000000..30c588b013f7 --- /dev/null +++ b/comms/meshcore-cli/Makefile @@ -0,0 +1,24 @@ +PORTNAME= meshcore_cli +PORTVERSION= 1.4.0 +CATEGORIES= comms python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= samm@FreeBSD.org +COMMENT= CLI interface to MeschCore companion app over TCP or Serial +WWW= https://github.com/meshcore-dev/meshcore-cli + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR} +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}meshcore>0:comms/py-meshcore@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}prompt-toolkit>0:devel/py-prompt-toolkit@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pycryptodome>0:security/py-pycryptodome@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} + +USES= python:3.10+ +USE_PYTHON= autoplist concurrent pep517 +NO_ARCH= yes + +.include <bsd.port.mk> diff --git a/comms/meshcore-cli/distinfo b/comms/meshcore-cli/distinfo new file mode 100644 index 000000000000..3735881d081e --- /dev/null +++ b/comms/meshcore-cli/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1770719737 +SHA256 (meshcore_cli-1.4.0.tar.gz) = 93c6d7a75c91bfd2d16c4a1248df9c2d663b1a7463f66251133ce38ea4264fc6 +SIZE (meshcore_cli-1.4.0.tar.gz) = 44928 diff --git a/comms/meshcore-cli/files/patch-src_meshcore__cli_meshcore__cli.py b/comms/meshcore-cli/files/patch-src_meshcore__cli_meshcore__cli.py new file mode 100644 index 000000000000..1e4a332117b6 --- /dev/null +++ b/comms/meshcore-cli/files/patch-src_meshcore__cli_meshcore__cli.py @@ -0,0 +1,94 @@ +--- src/meshcore_cli/meshcore_cli.py.orig 2020-02-02 00:00:00 UTC ++++ src/meshcore_cli/meshcore_cli.py +@@ -9,8 +9,6 @@ import time, datetime + import getopt, json, shlex, re + import logging + import requests +-from bleak import BleakScanner, BleakClient +-from bleak.exc import BleakError, BleakDBusError + import serial.tools.list_ports + from pathlib import Path + import traceback +@@ -27,6 +25,13 @@ from prompt_toolkit.document import Document + from Crypto.Cipher import AES + from Crypto.Hash import HMAC, SHA256 + ++try: ++ from bleak import BleakScanner, BleakClient ++ from bleak.exc import BleakError, BleakDBusError ++ BLEAK_AVAILABLE = True ++except ImportError: ++ BLEAK_AVAILABLE = False ++ + import re + + from meshcore import MeshCore, EventType, logger +@@ -4307,16 +4312,17 @@ async def main(argv): + case "-q": # quiet (turns logger to ERROR only) + quiet = True + case "-l" : +- print("BLE devices:") +- try : +- devices = await BleakScanner.discover(timeout=timeout) +- if len(devices) == 0: +- print(" No ble device found") +- for d in devices : +- if not d.name is None and d.name.startswith("MeshCore-"): +- print(f" {d.address} {d.name}") +- except (BleakError, BleakDBusError): +- print(" No BLE HW") ++ if BLEAK_AVAILABLE: ++ print("BLE devices:") ++ try : ++ devices = await BleakScanner.discover(timeout=timeout) ++ if len(devices) == 0: ++ print(" No ble device found") ++ for d in devices : ++ if not d.name is None and d.name.startswith("MeshCore-"): ++ print(f" {d.address} {d.name}") ++ except (BleakError, BleakDBusError): ++ print(" No BLE HW") + print("\nSerial ports:") + ports = serial.tools.list_ports.comports() + for port, desc, hwid in sorted(ports): +@@ -4325,13 +4331,14 @@ async def main(argv): + case "-S" : + choices = [] + +- try : +- devices = await BleakScanner.discover(timeout=timeout) +- for d in devices: +- if not d.name is None and d.name.startswith("MeshCore-"): +- choices.append(({"type":"ble","device":d}, f"{d.address:<22} {d.name}")) +- except (BleakError, BleakDBusError): +- logger.info("No BLE Device") ++ if BLEAK_AVAILABLE: ++ try : ++ devices = await BleakScanner.discover(timeout=timeout) ++ for d in devices: ++ if not d.name is None and d.name.startswith("MeshCore-"): ++ choices.append(({"type":"ble","device":d}, f"{d.address:<22} {d.name}")) ++ except (BleakError, BleakDBusError): ++ logger.info("No BLE Device") + + ports = serial.tools.list_ports.comports() + for port, desc, hwid in sorted(ports): +@@ -4388,7 +4395,7 @@ async def main(argv): + mc = await MeshCore.create_tcp(host=hostname, port=port, debug=debug, only_error=json_output) + elif not serial_port is None : # connect via serial port + mc = await MeshCore.create_serial(port=serial_port, baudrate=baudrate, debug=debug, only_error=json_output) +- else : #connect via ble ++ elif BLEAK_AVAILABLE : #connect via ble + client = None + if device or address and len(address.split(":")) == 6 : + pass +@@ -4471,6 +4478,9 @@ async def main(argv): + f.write(device.address) + elif not address is None: + f.write(address) ++ ++ if mc is None: ++ return + + handle_message.mc = mc # connect meshcore to handle_message + handle_advert.mc = mc diff --git a/comms/meshcore-cli/pkg-descr b/comms/meshcore-cli/pkg-descr new file mode 100644 index 000000000000..e518ff9bb894 --- /dev/null +++ b/comms/meshcore-cli/pkg-descr @@ -0,0 +1,3 @@ +meshcore-cli is a tool that connects to companion radio node (meshcore client) +over BLE, TCP or Serial and lets you interact with it from a terminal using a +command line interface.home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?698b5d4a.1d270.6d6a0644>
