From c98126aa0e83a1dbaca42795f8cc4d2ea776d842 Mon Sep 17 00:00:00 2001 From: samson0v Date: Wed, 25 Feb 2026 10:39:59 +0200 Subject: [PATCH 1/2] Updated examples for Python Client SDK --- _includes/docs/reference/python-client-sdk.md | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/_includes/docs/reference/python-client-sdk.md b/_includes/docs/reference/python-client-sdk.md index 67c39288ed..da43f5cd39 100644 --- a/_includes/docs/reference/python-client-sdk.md +++ b/_includes/docs/reference/python-client-sdk.md @@ -68,25 +68,26 @@ client.disconnect() **TBDeviceMqttClient** provides access to Device MQTT APIs of ThingsBoard platform. It allows publishing telemetry and attributes updates, subscribing to attribute changes, sending and receiving RPC commands, etc. -### Subscribtion to attributes +### Subscription to attributes If you need to receive shared attributes updates, you can use the code like the following: ```python -from time import sleep +import time from tb_device_mqtt import TBDeviceMqttClient -def callback(result): +def on_attributes_change(result, *args): print(result) + client = TBDeviceMqttClient("127.0.0.1", username="A1_TEST_TOKEN") client.connect() -client.subscribe_to_attribute("uploadFrequency", callback) -client.subscribe_to_all_attributes(callback) -while True: - sleep(1) +client.subscribe_to_attribute("uploadFrequency", on_attributes_change) +client.subscribe_to_all_attributes(on_attributes_change) +while True: + time.sleep(1) ``` {:.copy-code} @@ -149,27 +150,30 @@ The following example connects to the ThingsBoard local instance and waits for R When RPC request is received, the client will send the response to ThingsBoard with data from machine with client for device with the name **Test Device A1**. ```python -from psutil import cpu_percent, virtual_memory -from time import sleep +import time + from tb_device_mqtt import TBDeviceMqttClient +try: + import psutil +except ImportError: + print("Please install psutil using 'pip install psutil' command") + exit(1) # dependently of request method we send different data back -def on_server_side_rpc_request(client, request_id, request_body): +def on_server_side_rpc_request(request_id, request_body): print(request_id, request_body) if request_body["method"] == "getCPULoad": - client.send_rpc_reply(request_id, {"CPU percent": cpu_percent()}) + client.send_rpc_reply(request_id, {"CPU percent": psutil.cpu_percent()}) elif request_body["method"] == "getMemoryUsage": - client.send_rpc_reply(request_id, {"Memory": virtual_memory().percent}) + client.send_rpc_reply(request_id, {"Memory": psutil.virtual_memory().percent}) client = TBDeviceMqttClient("127.0.0.1", username="A1_TEST_TOKEN") client.set_server_side_rpc_request_handler(on_server_side_rpc_request) client.connect() - while True: - sleep(1) - + time.sleep(1) ``` {:.copy-code} @@ -232,12 +236,18 @@ The following example will connect to the ThingsBoard local instance and wait fo When RPC request will be received, client will send response to ThingsBoard with data for device with name **Test Device A1**. ```python -from time import sleep -from psutil import cpu_percent, virtual_memory +import time + from tb_gateway_mqtt import TBGatewayMqttClient +try: + import psutil +except ImportError: + print("Please install psutil using 'pip install psutil' command") + exit(1) + -def rpc_request_response(client, request_id, request_body): +def rpc_request_response(request_id, request_body): # request body contains id, method and other parameters print(request_body) method = request_body["data"]["method"] @@ -245,22 +255,21 @@ def rpc_request_response(client, request_id, request_body): req_id = request_body["data"]["id"] # dependently of request method we send different data back if method == 'getCPULoad': - gateway.gw_send_rpc_reply(device, req_id, {"CPU load": cpu_percent()}) + gateway.gw_send_rpc_reply(device, req_id, {"CPU load": psutil.cpu_percent()}) elif method == 'getMemoryLoad': - gateway.gw_send_rpc_reply(device, req_id, {"Memory": virtual_memory().percent}) + gateway.gw_send_rpc_reply(device, req_id, {"Memory": psutil.virtual_memory().percent}) else: print('Unknown method: ' + method) + gateway = TBGatewayMqttClient("127.0.0.1", username="TEST_GATEWAY_TOKEN") gateway.connect() # now rpc_request_response will process rpc requests from servers gateway.gw_set_server_side_rpc_request_handler(rpc_request_response) # without device connection it is impossible to get any messages gateway.gw_connect_device("Test Device A1") - while True: - sleep(1) - + time.sleep(1) ``` {:.copy-code} From 87ef58b0bb06cce30247f4f3cb1b90f2194e8f87 Mon Sep 17 00:00:00 2001 From: samson0v Date: Wed, 25 Feb 2026 11:50:38 +0200 Subject: [PATCH 2/2] Updated SDKs links --- _data/paas-eu/api.yml | 6 ++-- _data/paas/api.yml | 6 ++-- _data/pages_info.yml | 30 +++++++++++++++++++ _data/pe/api.yml | 4 +-- _includes/docs/api.md | 4 +-- .../eu/reference/circuitpython-client-sdk.md | 12 ++++++++ .../eu/reference/micropython-client-sdk.md | 12 ++++++++ .../reference/circuitpython-client-sdk.md | 12 ++++++++ docs/paas/reference/micropython-client-sdk.md | 12 ++++++++ docs/pe/reference/circuitpython-client-sdk.md | 12 ++++++++ docs/pe/reference/micropython-client-sdk.md | 12 ++++++++ 11 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 docs/paas/eu/reference/circuitpython-client-sdk.md create mode 100644 docs/paas/eu/reference/micropython-client-sdk.md create mode 100644 docs/paas/reference/circuitpython-client-sdk.md create mode 100644 docs/paas/reference/micropython-client-sdk.md create mode 100644 docs/pe/reference/circuitpython-client-sdk.md create mode 100644 docs/pe/reference/micropython-client-sdk.md diff --git a/_data/paas-eu/api.yml b/_data/paas-eu/api.yml index 34758a2c68..74eed4f4cd 100644 --- a/_data/paas-eu/api.yml +++ b/_data/paas-eu/api.yml @@ -41,8 +41,8 @@ toc: new: true section: - title: Python Client SDK - path: /docs/reference/python-client-sdk + path: /docs/paas/eu/reference/python-client-sdk/ - title: MicroPython Client SDK - path: /docs/reference/micropython-client-sdk/ + path: /docs/paas/eu/reference/micropython-client-sdk/ - title: CircuitPython Client SDK - path: /docs/reference/circuitpython-client-sdk/ + path: /docs/paas/eu/reference/circuitpython-client-sdk/ diff --git a/_data/paas/api.yml b/_data/paas/api.yml index 6c7cfd5196..010341785f 100644 --- a/_data/paas/api.yml +++ b/_data/paas/api.yml @@ -41,8 +41,8 @@ toc: new: true section: - title: Python Client SDK - path: /docs/reference/python-client-sdk + path: /docs/paas/reference/python-client-sdk/ - title: MicroPython Client SDK - path: /docs/reference/micropython-client-sdk/ + path: /docs/paas/reference/micropython-client-sdk/ - title: CircuitPython Client SDK - path: /docs/reference/circuitpython-client-sdk/ + path: /docs/paas/reference/circuitpython-client-sdk/ diff --git a/_data/pages_info.yml b/_data/pages_info.yml index 93a34f1ee4..63cd872a68 100644 --- a/_data/pages_info.yml +++ b/_data/pages_info.yml @@ -1852,6 +1852,9 @@ "/docs/paas/eu/mobile-center/mobile-center/": url: "/docs/paas/eu/mobile-center/mobile-center/" redirect_from: [] +"/docs/paas/eu/reference/circuitpython-client-sdk/": + url: "/docs/paas/eu/reference/circuitpython-client-sdk/" + redirect_from: [] "/docs/paas/eu/reference/coap-api/": url: "/docs/paas/eu/reference/coap-api/" redirect_from: @@ -1872,6 +1875,9 @@ "/docs/paas/eu/reference/mcp-server/": url: "/docs/paas/eu/reference/mcp-server/" redirect_from: [] +"/docs/paas/eu/reference/micropython-client-sdk/": + url: "/docs/paas/eu/reference/micropython-client-sdk/" + redirect_from: [] "/docs/paas/eu/reference/mqtt-api/": url: "/docs/paas/eu/reference/mqtt-api/" redirect_from: @@ -1898,6 +1904,9 @@ url: "/docs/paas/eu/reference/snmp-api/" redirect_from: - "/docs/paas/eu/reference/snmp-api" +"/docs/paas/eu/samples/abeeway/tracker/": + url: "/docs/paas/eu/samples/abeeway/tracker/" + redirect_from: [] "/docs/paas/eu/samples/analytics/ai-models/": url: "/docs/paas/eu/samples/analytics/ai-models/" redirect_from: [] @@ -2417,6 +2426,9 @@ "/docs/paas/mobile-center/mobile-center/": url: "/docs/paas/mobile-center/mobile-center/" redirect_from: [] +"/docs/paas/reference/circuitpython-client-sdk/": + url: "/docs/paas/reference/circuitpython-client-sdk/" + redirect_from: [] "/docs/paas/reference/coap-api/": url: "/docs/paas/reference/coap-api/" redirect_from: @@ -2437,6 +2449,9 @@ "/docs/paas/reference/mcp-server/": url: "/docs/paas/reference/mcp-server/" redirect_from: [] +"/docs/paas/reference/micropython-client-sdk/": + url: "/docs/paas/reference/micropython-client-sdk/" + redirect_from: [] "/docs/paas/reference/mqtt-api/": url: "/docs/paas/reference/mqtt-api/" redirect_from: @@ -2463,6 +2478,9 @@ url: "/docs/paas/reference/snmp-api/" redirect_from: - "/docs/paas/reference/snmp-api" +"/docs/paas/samples/abeeway/tracker/": + url: "/docs/paas/samples/abeeway/tracker/" + redirect_from: [] "/docs/paas/samples/analytics/ai-models/": url: "/docs/paas/samples/analytics/ai-models/" redirect_from: [] @@ -3883,6 +3901,9 @@ url: "/docs/pe/mqtt-broker/white-labeling/" redirect_from: - "/docs/mqtt-broker/white-labeling/" +"/docs/pe/reference/circuitpython-client-sdk/": + url: "/docs/pe/reference/circuitpython-client-sdk/" + redirect_from: [] "/docs/pe/reference/coap-api/": url: "/docs/pe/reference/coap-api/" redirect_from: @@ -3906,6 +3927,9 @@ "/docs/pe/reference/mcp-server/": url: "/docs/pe/reference/mcp-server/" redirect_from: [] +"/docs/pe/reference/micropython-client-sdk/": + url: "/docs/pe/reference/micropython-client-sdk/" + redirect_from: [] "/docs/pe/reference/monolithic/": url: "/docs/pe/reference/monolithic/" redirect_from: [] @@ -4002,6 +4026,9 @@ "/docs/pe/releases/roadmap/": url: "/docs/pe/releases/roadmap/" redirect_from: [] +"/docs/pe/samples/abeeway/tracker/": + url: "/docs/pe/samples/abeeway/tracker/" + redirect_from: [] "/docs/pe/samples/analytics/ai-models/": url: "/docs/pe/samples/analytics/ai-models/" redirect_from: [] @@ -4674,6 +4701,9 @@ url: "/docs/reference/architecture/" redirect_from: - "/docs/user-guide/rule-engine-2-0/architecture/" +"/docs/reference/circuitpython-client-sdk/": + url: "/docs/reference/circuitpython-client-sdk/" + redirect_from: [] "/docs/reference/coap-api/": url: "/docs/reference/coap-api/" redirect_from: diff --git a/_data/pe/api.yml b/_data/pe/api.yml index 95f9584763..c63a49346d 100644 --- a/_data/pe/api.yml +++ b/_data/pe/api.yml @@ -42,7 +42,7 @@ toc: - title: Python Client SDK path: /docs/pe/reference/python-client-sdk/ - title: MicroPython Client SDK - path: /docs/reference/micropython-client-sdk/ + path: /docs/pe/reference/micropython-client-sdk/ - title: CircuitPython Client SDK - path: /docs/reference/circuitpython-client-sdk/ + path: /docs/pe/reference/circuitpython-client-sdk/ diff --git a/_includes/docs/api.md b/_includes/docs/api.md index 8d4809b4ec..6e6d2c0dee 100644 --- a/_includes/docs/api.md +++ b/_includes/docs/api.md @@ -30,7 +30,7 @@ Server-side API is available as REST API: Software development kits: * [**Python Client SDK**](/docs/{{docsPrefix}}reference/python-client-sdk) - Software development kit for client-side integration of your Python projects. -* [**MicroPython Client SDK**](/docs/reference/micropython-client-sdk) - Software development kit for client-side integration of your MicroPython projects. -* [**CircuitPython Client SDK**](/docs/reference/circuitpython-client-sdk) - Software development kit for client-side integration of your CircuitPython projects. +* [**MicroPython Client SDK**](/docs/{{docsPrefix}}reference/micropython-client-sdk) - Software development kit for client-side integration of your MicroPython projects. +* [**CircuitPython Client SDK**](/docs/{{docsPrefix}}reference/circuitpython-client-sdk) - Software development kit for client-side integration of your CircuitPython projects. {% endif %} \ No newline at end of file diff --git a/docs/paas/eu/reference/circuitpython-client-sdk.md b/docs/paas/eu/reference/circuitpython-client-sdk.md new file mode 100644 index 0000000000..8016343672 --- /dev/null +++ b/docs/paas/eu/reference/circuitpython-client-sdk.md @@ -0,0 +1,12 @@ +--- +layout: docwithnav-paas-eu +assignees: +- samson0v +title: MicroPython Client SDK +description: Software development kit for client-side integration of your MicroPython projects + +--- + +{% assign docsPrefix = "paas/eu/" %} +{% include get-hosts-name.html docsTag="paas-eu" %} +{% include docs/reference/micropython-client-sdk.md %} diff --git a/docs/paas/eu/reference/micropython-client-sdk.md b/docs/paas/eu/reference/micropython-client-sdk.md new file mode 100644 index 0000000000..0ca5acf469 --- /dev/null +++ b/docs/paas/eu/reference/micropython-client-sdk.md @@ -0,0 +1,12 @@ +--- +layout: docwithnav-paas-eu +assignees: +- samson0v +title: CircuitPython Client SDK +description: Software development kit for client-side integration of your CircuitPython projects + +--- + +{% assign docsPrefix = "paas/eu/" %} +{% include get-hosts-name.html docsTag="paas-eu" %} +{% include docs/reference/circuitpython-client-sdk.md %} diff --git a/docs/paas/reference/circuitpython-client-sdk.md b/docs/paas/reference/circuitpython-client-sdk.md new file mode 100644 index 0000000000..e3e7a65162 --- /dev/null +++ b/docs/paas/reference/circuitpython-client-sdk.md @@ -0,0 +1,12 @@ +--- +layout: docwithnav-paas +assignees: +- samson0v +title: CircuitPython Client SDK +description: Software development kit for client-side integration of your CircuitPython projects + +--- + +{% assign docsPrefix = "paas/" %} +{% include get-hosts-name.html docsPrefix=docsPrefix %} +{% include docs/reference/circuitpython-client-sdk.md %} diff --git a/docs/paas/reference/micropython-client-sdk.md b/docs/paas/reference/micropython-client-sdk.md new file mode 100644 index 0000000000..8654c26da6 --- /dev/null +++ b/docs/paas/reference/micropython-client-sdk.md @@ -0,0 +1,12 @@ +--- +layout: docwithnav-paas +assignees: +- samson0v +title: MicroPython Client SDK +description: Software development kit for client-side integration of your MicroPython projects + +--- + +{% assign docsPrefix = "paas/" %} +{% include get-hosts-name.html docsPrefix=docsPrefix %} +{% include docs/reference/micropython-client-sdk.md %} diff --git a/docs/pe/reference/circuitpython-client-sdk.md b/docs/pe/reference/circuitpython-client-sdk.md new file mode 100644 index 0000000000..2894d34b35 --- /dev/null +++ b/docs/pe/reference/circuitpython-client-sdk.md @@ -0,0 +1,12 @@ +--- +layout: docwithnav-pe +assignees: +- samson0v +title: CircuitPython Client SDK +description: Software development kit for client-side integration of your CircuitPython projects + +--- + +{% assign docsPrefix = "pe/" %} +{% include get-hosts-name.html docsPrefix=docsPrefix %} +{% include docs/reference/circuitpython-client-sdk.md %} diff --git a/docs/pe/reference/micropython-client-sdk.md b/docs/pe/reference/micropython-client-sdk.md new file mode 100644 index 0000000000..7c39e798be --- /dev/null +++ b/docs/pe/reference/micropython-client-sdk.md @@ -0,0 +1,12 @@ +--- +layout: docwithnav-pe +assignees: +- samson0v +title: MicroPython Client SDK +description: Software development kit for client-side integration of your MicroPython projects + +--- + +{% assign docsPrefix = "pe/" %} +{% include get-hosts-name.html docsPrefix=docsPrefix %} +{% include docs/reference/micropython-client-sdk.md %}