کلاینت REST پایتون
کلاینت REST پایتون
کلاینت API REST پایتون در ThingsConnect به شما کمک میکند تا با استفاده از اسکریپت پایتون خود با API REST در ThingsConnect تعامل داشته باشید. با استفاده از کلاینت REST پایتون، میتوانید به صورت برنامهریزیشده داراییها، دستگاهها، مشتریان، کاربران و سایر موجودیتها و روابط آنها را در ThingsConnect ایجاد کنید.
کد منبع کلاینت REST API پایتون را میتوانید از اینجا پیدا کنید.
برای نصب کلاینت REST پایتون در ThingsConnect، از دستور زیر استفاده کنید:
pip3 install tb-rest-client
مثالهایی از کلاینت REST پایتون
استفاده پایه
میتوانید اسکریپت نمونه را از اینجا مشاهده کنید.
مثال زیر نحوه استفاده پایه از کلاینت REST را نشان میدهد. این شامل مراحل زیر است:
انجام ورود (Login)، ایجاد نمونههای جدیدی از دارایی (Asset) و دستگاه (Device)، و ایجاد روابط بین آنها.
import logging
# Importing models and REST client class from Community Edition version
from tb_rest_client.rest_client_ce import *
# Importing the API exception
from tb_rest_client.rest import ApiException
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(module)s - %(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# ThingsBoard REST API URL
url = "http://localhost:8080"
# Default Tenant Administrator credentials
username = "tenant@thingsboard.org"
password = "tenant"
def main():
# Creating the REST client object with context manager to get auto token refresh
with RestClientCE(base_url=url) as rest_client:
try:
# Auth with credentials
rest_client.login(username=username, password=password)
# Creating an Asset
default_asset_profile_id = rest_client.get_default_asset_profile_info().id
asset = Asset(name="Building 1", asset_profile_id=default_asset_profile_id)
asset = rest_client.save_asset(asset)
logging.info("Asset was created:\n%r\n", asset)
# Creating a Device
# Also, you can use default Device Profile:
# default_device_profile_id = rest_client.get_default_device_profile_info().id
device_profile = DeviceProfile(name="Thermometer",
profile_data=DeviceProfileData(configuration={"type": "DEFAULT"},
transport_configuration={"type": "DEFAULT"}))
device_profile = rest_client.save_device_profile(device_profile)
device = Device(name="Thermometer 1", device_profile_id=device_profile.id)
device = rest_client.save_device(device)
logging.info(" Device was created:\n%r\n", device)
# Creating relations from device to asset
relation = EntityRelation(_from=asset.id, to=device.id, type="Contains")
rest_client.save_relation(relation)
logging.info(" Relation was created:\n%r\n", relation)
except ApiException as e:
logging.exception(e)
if __name__ == '__main__':
main()
مدیریت دستگاه
نمونه کد زیر مفاهیم پایهای API مدیریت دستگاه را نمایش میدهد، از جمله: افزودن دستگاه، دریافت اطلاعات دستگاه، حذف دستگاه، دریافت و ذخیره ویژگیهای دستگاه.
import logging
# Importing models and REST client class from Community Edition version
from tb_rest_client.rest_client_ce import *
# Importing the API exception
from tb_rest_client.rest import ApiException
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(module)s - %(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# ThingsBoard REST API URL
url = "http://localhost:8080"
# Default Tenant Administrator credentials
username = "tenant@thingsboard.org"
password = "tenant"
def main():
# Creating the REST client object with context manager to get auto token refresh
with RestClientCE(base_url=url) as rest_client:
try:
rest_client.login(username=username, password=password)
# creating a Device
default_device_profile_id = rest_client.get_default_device_profile_info().id
device = Device(name="Thermometer 1",
device_profile_id=default_device_profile_id)
device = rest_client.save_device(device)
logging.info(" Device was created:\n%r\n", device)
# find device by device id
found_device = rest_client.get_device_by_id(DeviceId(device.id, 'DEVICE'))
# save device shared attributes
rest_client.save_device_attributes(DeviceId(device.id, 'DEVICE'), 'SERVER_SCOPE',
{'targetTemperature': 22.4})
# Get device shared attributes
res = rest_client.get_attributes_by_scope(EntityId(device.id, 'DEVICE'), 'SERVER_SCOPE',
'targetTemperature')
logging.info("Found device attributes: \n%r", res)
# delete the device
rest_client.delete_device(DeviceId(device.id, 'DEVICE'))
except ApiException as e:
logging.exception(e)
if __name__ == '__main__':
main()
دریافت دستگاههای tenant
نمونه کد زیر نحوه دریافت دستگاههای مستاجر از طریق لینک صفحه را نشان میدهد.
import logging
# Importing models and REST client class from Community Edition version
from tb_rest_client.rest_client_ce import *
# Importing the API exception
from tb_rest_client.rest import ApiException
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(module)s - %(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# ThingsBoard REST API URL
url = "http://localhost:8080"
# Default Tenant Administrator credentials
username = "tenant@thingsboard.org"
password = "tenant"
def main():
# Creating the REST client object with context manager to get auto token refresh
with RestClientCE(base_url=url) as rest_client:
try:
rest_client.login(username=username, password=password)
res = rest_client.get_tenant_device_infos(page_size=10, page=0)
logging.info("Device info:\n%r", res)
except ApiException as e:
logging.exception(e)
if __name__ == '__main__':
main()
دریافت داشبوردهای tenant
نمونه کد زیر نحوه دریافت داشبوردهای مستاجر از طریق لینک صفحه را نشان میدهد.
import logging
# Importing models and REST client class from Community Edition version
from tb_rest_client.rest_client_ce import *
# Importing the API exception
from tb_rest_client.rest import ApiException
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(module)s - %(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# ThingsBoard REST API URL
url = "http://localhost:8080"
# Default Tenant Administrator credentials
username = "tenant@thingsboard.org"
password = "tenant"
def main():
# Creating the REST client object with context manager to get auto token refresh
with RestClientCE(base_url=url) as rest_client:
try:
rest_client.login(username=username, password=password)
user = rest_client.get_user()
devices = rest_client.get_customer_device_infos(customer_id=CustomerId(user.id.id, 'CUSTOMER'), page_size=10,
page=0)
logging.info("Devices: \n%r", devices)
except ApiException as e:
logging.exception(e)
if __name__ == '__main__':
main()
شمارش موجودیتها با استفاده از API پرسوجوی دادههای موجودیت
نمونه کد زیر نحوه استفاده از API پرسوجوی دادههای موجودیت را برای شمارش تعداد کل دستگاهها نشان میدهد.
import logging
# Importing models and REST client class from Community Edition version
from tb_rest_client.rest_client_ce import *
# Importing the API exception
from tb_rest_client.rest import ApiException
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(module)s - %(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# ThingsBoard REST API URL
url = "http://localhost:8080"
# Default Tenant Administrator credentials
username = "tenant@thingsboard.org"
password = "tenant"
# Creating the REST client object with context manager to get auto token refresh
with RestClientCE(base_url=url) as rest_client:
try:
rest_client.login(username=username, password=password)
# Create entity filter to get all devices
entity_filter = EntityFilter()
# Create entity count query with provided filter
devices_query = EntityCountQuery(entity_filter)
# Execute entity count query and get total devices count
devices_count = rest_client.count_entities_by_query(devices_query)
logging.info("Total devices: \n%r", devices_count)
except ApiException as e:
logging.exception(e)
پیکربندی ویژگی کنترل نسخه از کنسول
این ویژگی در ThingsConnect نسخه 3.4 به بالا در دسترس است. ما اسکریپتی را بر اساس کتابخانه tb-rest-client طراحی کردهایم تا مثالی از نحوه استفاده از قابلیت پیکربندی ThingsConnect از طریق کد شما را ارائه دهیم.
کد منبع آخرین نسخه اسکریپت در اینجا در دسترس است. در این مثال، ما ویژگی کنترل نسخه را در ThingsConnect پیکربندی میکنیم.
برای پیکربندی سیستم کنترل نسخه (VCS)، 2 روش ممکن وجود دارد:
- استفاده از توکن دسترسی/گذرواژه حساب VCS خود.
- استفاده از کلید خصوصی.
پیکربندی سیستم کنترل نسخه با استفاده از توکن دسترسی یا گذرواژه
برای پیکربندی این ویژگی، به آرگومانهای خط فرمان و دادههای زیر نیاز داریم:
آرگومان خط فرمان |
توضیحات |
---|---|
-H |
ThingsConnect host (Default: localhost) |
-p |
ThingsConnect port (Default: 80) |
-U |
ThingsConnect user (email for login) |
-P |
ThingsConnect user password |
-r |
Repository uri, link to your repository |
-b |
Default branch (Default: main) |
-gu |
VCS username (This parameter named GITHUB_USERNAME, but it can work with any VCS) |
-gp |
VCS access token / password (This parameter named GITHUB_PASSWORD, but it can work with any VCS) |
همواره میتوانید با اجرای اسکریپت بدون آرگومان یا با استفاده از آرگومان -h، لیست کامل آرگومانها را دریافت کنید.
برای پیکربندی ویژگی کنترل نسخه، باید پکیج پایتون tb-rest-client را نصب کرده و اسکریپت را دانلود کنید:
wget https://github.com/thingsboard/thingsboard-python-rest-client/blob/master/examples/configure_vcs_access.py
اکنون میتوانیم اسکریپت را اجرا کرده و ویژگی کنترل نسخه را پیکربندی کنیم (فراموش نکنید مقادیر خود را وارد کنید).
python3 configure_vcs_access.py -H YOUR_THINGSBOARD_HOST -p YOUR_THINGSBOARD_PORT -U YOUR_THINGSBOARD_USER_EMAIL -P YOUR_THINGSBOARD_USER_PASSWORD -r YOUR_REPOSITORY_URL -b DEFAULT_BRANCH -gu YOUR_VCS_USERNAME -gp YOUR_VCS_ACCESSTOKEN_OR_PASSWORD
پیکربندی سیستم کنترل نسخه با استفاده از کلید خصوصی
برای پیکربندی این ویژگی، به آرگومانهای خط فرمان و دادههای زیر نیاز داریم:
آرگومان خط فرمان |
توضیحات |
---|---|
-H |
ThingsConnect host (Default: localhost) |
-p |
ThingsConnect port (Default: 80) |
-U |
ThingsConnect user (email for login) |
-P |
ThingsConnect user password |
-r |
Repository uri, link to your repository |
-b |
Default branch (Default: main) |
-gu |
VCS username (This parameter named GITHUB_USERNAME, but it can work with any VCS) |
-pk |
Path to private key |
-pkp |
Password for private key (If it was set) |
همواره میتوانید با اجرای اسکریپت بدون آرگومان یا با استفاده از آرگومان -h، لیست کامل آرگومانها را دریافت کنید.
برای پیکربندی ویژگی کنترل نسخه، باید پکیج پایتون tb-rest-client را نصب کرده و اسکریپت موردنظر را دانلود کنید:
wget https://raw.githubusercontent.com/thingsboard/thingsboard-python-rest-client/master/examples/configure_vcs_access.py
اکنون میتوانیم اسکریپت را اجرا کرده و ویژگی کنترل نسخه را پیکربندی کنیم (فراموش نکنید مقادیر خود را وارد کنید).
python3 configure_vcs_access.py -H YOUR_THINGSBOARD_HOST -p YOUR_THINGSBOARD_PORT -U YOUR_THINGSBOARD_USER_EMAIL -P YOUR_THINGSBOARD_USER_PASSWORD -r YOUR_REPOSITORY_URL -b DEFAULT_BRACH -gu YOUR_VCS_USERNAME -pk PATH_TO_YOUR_PRIVATE_KEY -pkp YOUR_PRIVATE_KEY_PASSWORD
ذخیره تمامی موجودیتها در سیستم کنترل نسخه
میتوانید از اسکریپت زیر که بر اساس tb-rest-client طراحی شده است، برای ذخیره وضعیت فعلی موجودیتهای خود در مخزن سیستم کنترل نسخه استفاده کنید.
آخرین نسخه کد منبع را میتوانید از اینجا پیدا کنید.
برای ذخیره موجودیتها از طریق خط فرمان، از آرگومانها و دادههای زیر استفاده خواهیم کرد:
آرگومان خط فرمان |
توضیحات |
---|---|
-H |
ThingsConnect host (Default: localhost) |
-p |
ThingsConnect port (Default: 80) |
-U |
ThingsConnect user (email for login) |
-P |
ThingsConnect user password |
-b |
Default branch (Default: main) |
-N |
Version name (If not provided will be generated 5 random letters and numbers and used as a name) |
–save_attributes |
Optional, do we need to save attributes for target entities (Default: True) |
–save_credentials |
Optional, do we need to save credentials for target entities (Default: True) |
–save_relations |
Optional, do we need to save relations for target entities (Default: True) |
–sync_strategy |
Optional, Sync strategy for entities can be OVERWRITE and MERGE (Default: MERGE) |
شما همیشه میتوانید فهرست کامل آرگومانها را با اجرای اسکریپت بدون آرگومان یا با آرگومان -h دریافت کنید.
بیایید اسکریپت را دانلود کنیم:
wget https://raw.githubusercontent.com/thingsboard/thingsboard-python-rest-client/master/examples/load_all_entities_to_vcs_ce.py
اکنون میتوانیم اسکریپت خود را اجرا کرده و موجودیتهایمان را در مخزن سیستم کنترل نسخه ذخیره کنیم. برای نمایش حداقل تنظیمات مورد نیاز، به شاخه پیشفرض با تنظیمات پیشفرض منتشر خواهیم کرد:
python3 load_all_entities_to_vcs_ce.py -H YOUR_THINGSBOARD_HOST -p YOUR_THINGSBOARD_PORT -U YOUR_THINGSBOARD_USER_EMAIL -P YOUR_THINGSBOARD_USER_PASSWORD
در پیام خروجی، اطلاعاتی درباره تعداد موجودیتهایی که ذخیره شدهاند دریافت خواهید کرد.
بارگذاری تمام موجودیتها از سیستم کنترل نسخه
میتوانید از اسکریپت زیر، که بر اساس tb-rest-client است، برای ذخیره وضعیت فعلی موجودیتهای خود در مخزن سیستم کنترل نسخه استفاده کنید.
آخرین کد منبع را میتوانید از اینجا پیدا کنید.
برای بارگذاری موجودیتها از طریق خط فرمان، از آرگومانها و دادههای زیر استفاده خواهیم کرد:
آرگومان خط فرمان |
توضیحات |
---|---|
-H |
ThingsConnect host (Default: localhost) |
-p |
ThingsConnect port (Default: 80) |
-U |
ThingsConnect user (email for login) |
-P |
ThingsConnect user password |
-b |
Default branch (Default: main) |
-N |
Version name (You can provide a part of the version name and script will propose you all find versions that include provided name) |
–load_attributes |
Optional, do we need to load attributes for target entities (Default: True) |
–load_credentials |
Optional, do we need to load credentials for target entities (Default: True) |
–load_relations |
Optional, do we need to load relations for target entities (Default: True) |
–sync_strategy |
Optional, Sync strategy for existing entities can be OVERWRITE and MERGE (Default: MERGE) |
شما همیشه میتوانید فهرست کامل آرگومانها را با اجرای اسکریپت بدون آرگومان یا با استفاده از آرگومان -h دریافت کنید.
بیایید اسکریپت را دانلود کنیم:
wget https://raw.githubusercontent.com/thingsboard/thingsboard-python-rest-client/master/examples/load_all_entities_from_vcs_ce.py
اکنون میتوانیم اسکریپت خود را اجرا کرده و نسخه و وضعیت موجودیتها را از مخزن سیستم کنترل نسخه بازیابی کنیم:
python3 load_all_entities_from_vcs_ce.py -H YOUR_THINGSBOARD_HOST -p YOUR_THINGSBOARD_PORT -U YOUR_THINGSBOARD_USER_EMAIL -P YOUR_THINGSBOARD_USER_PASSWORD -N YOUR_VERSION_NAME
در خروجی، اطلاعاتی درباره تعداد موجودیتهایی که بارگذاری شدهاند دریافت خواهید کرد.
مثال مربوط به نسخه حرفهای Python REST Client را میتوانید از اینجا پیدا کنید.