The Python IoT Support Classes

The IoT interface for Python resembles its underlying C API layer. It consists of 3 classes: IoTCommunicator, IoTReplicator and IoTConnection which are described in detail in the pages linked to the table below.

For an overview see page ARF Applications

To enable IoT support in the eXtremeDB core and Python wrapper, use parameter iot=True for the exdb.init_runtime() method:

 
    exdb.init_runtime(disk=is_disk, tmgr=tmgr, shm=False, iot=True, debug=is_debug)
     

Then open the database specifying an iot_agent_id parameter:

 
    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)
                     

An IoT server application typically instantiates an IoTCommunicator and IoTReplicator, then calls the IoTCommunicator method listen() to wait for and manage communications from the device(s). To terminate operations, call the stop() and destroy()methods of both IoTCommunicator and IoTReplicator . For example:

     
    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()
         

IoT device applications typically instantiate an IoTReplicator and call its connect() and sync() methods to synchronize with the server database. To terminate operations the IoTReplicator calls methods stop() and destroy(). For example:

 
    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()
         

IoT support classes:

IoTCommunicator

Manage the communications between IoT server and devices

IoTReplicator Manages the replication process, interfacing with the IoTCommunicator on one side and with the database on the other
IoTConnection Create a connection between an IoT device and server