物联网支持
Python 的物联网接口类似于其底层的 C API 层。它由 3 个类组成:IoTCommunicator、IoTReplicator 和 IoTConnection,这些类在下表所链接的页面中有详细描述。
要在 SmartEDB 核心和 Python 封装中启用物联网支持,请在调用 exdb.init_runtime() 方法时使用参数 iot=True :
exdb.init_runtime(disk=is_disk, tmgr=tmgr, shm=False, iot=True, debug=is_debug)
然后打开数据库并指定一个 iot_agent_id 参数:
db = exdb.open_database(dbname=db_name, dictionary=dbdict, is_disk=is_disk,
db_segment_size=ROUTER_DATABASE_SIZE,
iot_agent_id=agent_id, iot_level=2)
物联网服务器应用程序通常会实例化一个 IoTCommunicator 和 IoTReplicator,然后调用 IoTCommunicator 的 listen() 方法来等待并管理来自设备的通信。要终止操作,请调用 IoTCommunicator 和 IoTReplicator 的 stop() 和 destroy() 方法。例如:
with db.connect() as con:
comm = exdb.IoTCommunicator()
repl = exdb.IoTReplicator(con=con, comm=comm)
print "Start listening on the port 15000"
comm.listen("15000")
...
repl.stop()
comm.stop()
repl.destroy()
comm.destroy()
物联网设备应用程序通常会实例化一个 IoTReplicator 并调用其 connect() 和 sync() 方法来与服务器数据库同步。要终止操作,IoTReplicator 会调用 stop() 和 destroy() 方法。例如:
with db.connect() as con:
repl = exdb.IoTReplicator(con)
repl.connect(conn_string, 2*1000)
...
repl.sync(exdb.IoT.SERVER_AGENT_ID, exdb.IoT.SYNC_PUSH |
exdb.IoT.SYNC_PULL | exdb.IoT.SYNC_WAIT)
...
repl.stop()
repl.destroy()
物联网支持类
- IoTCommunicator:管理物联网服务器与设备之间的通信
- IoTReplicator:管理复制过程,一边与 IoT 通信器接口,另一边与数据库接口
- IoTConnection:在物联网设备与服务器之间建立连接