Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions network_adapter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
# SPDX-FileCopyrightText: Copyright (c) 2026 ThingsBoard Inc.
#
# SPDX-License-Identifier: Unlicense

import sys


class NetworkAdapter:
def get_socket_pool(self):
pass

def get_ssl_context(self):
pass


class CircuitPythonNetworkAdapter(NetworkAdapter):
def __init__(self):
import socketpool
import wifi

self._pool = socketpool.SocketPool(wifi.radio)

def get_socket_pool(self):
return self._pool

def get_ssl_context(self):
return None


class CPythonNetworkAdapter(NetworkAdapter):
def __init__(self):
import adafruit_connection_manager
from adafruit_connection_manager import CPythonNetwork

radio = CPythonNetwork()
self._pool = adafruit_connection_manager.get_radio_socketpool(radio)
self._ssl_context = adafruit_connection_manager.get_radio_ssl_context(radio)

def get_socket_pool(self):
return self._pool

def get_ssl_context(self):
return self._ssl_context


class NetworkAdapterFactory:
@staticmethod
def create():
if sys.implementation.name == "circuitpython":
print("Using CircuitPython network adapter")
return CircuitPythonNetworkAdapter()
print("Using CPython network adapter")
return CPythonNetworkAdapter()
1 change: 1 addition & 0 deletions ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ ignore = [
"PLR0913", # too-many-arguments
"PLR0917", # too-many-positional-arguments
"PLC0415", # top-level-import
"PLR6301", # no-self-use
"UP031",
"UP032",
"PLR0912",
Expand Down
30 changes: 17 additions & 13 deletions tb_device_mqtt.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@
import gc
from json import dumps, loads

import socketpool
import wifi
from network_adapter import NetworkAdapterFactory

__version__ = "0.0.1"
__repo__ = "https://github.com/samson0v/CircuitPython_thingsboard-client-sdk.git"
Expand All @@ -45,6 +44,7 @@ def __init__(
access_token=None,
quality_of_service=None,
client_id=None,
network_adapter=None,
):
from adafruit_minimqtt.adafruit_minimqtt import MQTT

Expand All @@ -70,17 +70,21 @@ def __init__(
if not client_id:
client_id = "sdk-client"
self._client_id = client_id
self._pool = socketpool.SocketPool(wifi.radio)

self._client = MQTT(
broker=self._host,
port=self._port,
client_id=self._client_id,
username=self._access_token,
password="pswd",
keep_alive=120,
socket_pool=self._pool,
)
self._adapter = network_adapter or NetworkAdapterFactory.create()
mqtt_kwargs = {
"broker": self._host,
"port": self._port,
"client_id": self._client_id,
"username": self._access_token,
"password": "pswd",
"keep_alive": 120,
"socket_pool": self._adapter.get_socket_pool(),
}
ssl_context = self._adapter.get_ssl_context()
if ssl_context is not None:
mqtt_kwargs["ssl_context"] = ssl_context

self._client = MQTT(**mqtt_kwargs)

def connect(self):
try:
Expand Down
Loading