کلاینت 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 روش ممکن وجود دارد:

  1. استفاده از توکن دسترسی/گذرواژه حساب VCS خود.
  2. استفاده از کلید خصوصی.

پیکربندی سیستم کنترل نسخه با استفاده از توکن دسترسی یا گذرواژه

برای پیکربندی این ویژگی، به آرگومان‌های خط فرمان و داده‌های زیر نیاز داریم:

آرگومان خط فرمان

توضیحات

-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 را می‌توانید از اینجا پیدا کنید.

عناوین هر بخش