TZ-IOT发布Python SDK:tziota

TZ-IOT发布Python SDK:tziota

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.

简介:

在《物联网平台TZ-IOT发布透传云内测服务:V1.0》中已经上线TZ-IOT的内测服务,本文发布Python SDK。

用途:

不用租用公共服务器,任意选择一台可联网的PC或者树莓派这样的嵌入式设备,即可当作服务器。与同样基于TZ-IOT运行的节点通信。

安装:

pip install tziota

如果已经安装,需要更新最新版本:

pip install tziota --upgrade

初始化:

先根据《物联网平台TZ-IOT发布透传云内测服务:V1.0》中说明,申请节点的IA地址。

假设申请了地址:2140:0000:0000:0101(简写2140::101),密码是"456"。

则初始化代码:

def main():
    # 初始化参数
    param = tziota.Param()
    # 本地UDP绑定的IP和端口
    param.local_ip = "10.58.4.52"
    param.local_port = 14131
    # 本节点IA地址和密码
    param.local_ia = 0x2140000000000101
    param.pwd = "456"
    # 服务器IP和端口
    param.server_ip = "115.28.86.171"
    param.server_port = 14129
    # 服务器IA地址
    param.server_ia = 0x2140000000000002
    tziota.init(param)
    
    # 注册接收回调函数
    tziota.register_callback_rx(deal_rx)

接收接口:

在回调函数中:

def deal_rx(ia, data):
    print('IA:0x%016x' % ia)
    for x in data:
        print('%02x' % x, end=' ')
    print()

ia:对方的IA地址

data:对方发送的数据

发送接口:

frame = bytearray()
for i in range(5):
    frame.append(i + 10)
tziota.send(0x2140000000000100, frame)

send接口有两个参数:

第一个是目的IA地址,第二个是发送的数据。

是否在线的接口:

tziota.is_online():

在线指本节点是否连接服务器成功。

完整测试代码:

2140::100发送字节数据:0x01020304给2140::101

import threading
import time

import tziota


def main():
    param = tziota.Param()
    param.local_ip = "10.58.4.52"
    param.local_port = 14130
    param.local_ia = 0x2140000000000100
    param.pwd = "123"
    param.server_ip = "115.28.86.171"
    param.server_port = 14129
    param.server_ia = 0x2140000000000002
    tziota.init(param)
    tziota.register_callback_rx(deal_rx)

    threading.Thread(target=cycle_task).start()


def deal_rx(ia, data):
    print('IA:0x%016x' % ia)
    for x in data:
        print('%02x' % x, end=' ')
    print()


def cycle_task():
    while True:
        if tziota.is_online():
            frame = bytearray()
            for i in range(5):
                frame.append(i)
            tziota.send(0x2140000000000101, frame)
        else:
            print('当前掉线')

        time.sleep(1)


if __name__ == '__main__':
    main()

2140::101发送字节数据:0x0a0b0c0d0e给2140::100

import threading
import time

import tziota


def main():
    # 初始化参数
    param = tziota.Param()
    # 本地UDP绑定的IP和端口
    param.local_ip = "10.58.4.52"
    param.local_port = 14131
    # 本节点IA地址和密码
    param.local_ia = 0x2140000000000101
    param.pwd = "456"
    # 服务器IP和端口
    param.server_ip = "115.28.86.171"
    param.server_port = 14129
    # 服务器IA地址
    param.server_ia = 0x2140000000000002
    tziota.init(param)

    # 注册接收回调函数
    tziota.register_callback_rx(deal_rx)

    threading.Thread(target=cycle_task).start()


def deal_rx(ia, data):
    print('IA:0x%016x' % ia)
    for x in data:
        print('%02x' % x, end=' ')
    print()


def cycle_task():
    while True:
        if tziota.is_online():
            frame = bytearray()
            for i in range(5):
                frame.append(i + 10)
            tziota.send(0x2140000000000100, frame)
        else:
            print('当前掉线')

        time.sleep(1)


if __name__ == '__main__':
    main()

运行结果:

2140::100接收数据:

IA:0x2140000000000101
0a 0b 0c 0d 0e 
IA:0x2140000000000101
0a 0b 0c 0d 0e 
IA:0x2140000000000101
0a 0b 0c 0d 0e 
IA:0x2140000000000101
0a 0b 0c 0d 0e 

2140::101接收数据:

IA:0x2140000000000100
00 01 02 03 04 
IA:0x2140000000000100
00 01 02 03 04 
IA:0x2140000000000100
00 01 02 03 04 
IA:0x2140000000000100
00 01 02 03 04 

猜你喜欢

转载自blog.csdn.net/jdh99/article/details/90674083
SDK