本文博客链接: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