远程传感器api框架
remote-sensors的Python项目详细描述
远程传感器API协议库
这个库将原始bytearray转换为远程传感器api模型。
此实现使用XBee Python library。 并将传入的设备消息转换为远程传感器请求和响应。
这个库使用的语法与sanic或flask相似。
用法
importremote_sensorsfromdigi.xbee.devicesimportXBeeDeviceimportmy_settingsassettings@remote_sensors.bind_to_device()@remote_sensors.request()defaccess_log(request:remote_sensors.Request,*args,**kwargs):"""Simple Access Logger method."""logger.info(f'Request: {request.method} - {request.uri}')@remote_sensors.bind_to_device()@remote_sensors.request(method='REGISTRATION')defhandle_registration(request:remote_sensors.Request,*args,**kwargs):"""Handles the registration request."""response=remote_sensors.Response(status='ACK',transaction=request.transaction)# do something about it :Dpayload={'request':request.as_dict(),'response':response.as_dict(),'completed':False,}logger.debug(f'Replying with {response.status} to {sensor_message.addresses}')# send the response to the devicereturnresponse@remote_sensors.bind_to_device()@remote_sensors.request(method='END_REGISTRATION',pass_message=True)defhandle_registration_end(request:remote_sensors.Request,sensor_message:remote_sensors.SensorRequest,*args,**kwargs):"""Handles the end of registration."""response=remote_sensors.Response(status='ACK',transaction=request.transaction)# do something about it :Dpayload={'device':sensor_message.as_dict(),'request':request.as_dict(),'response':response.as_dict(),'completed':True,}logger.debug(f'Device ({sensor_message.addresses}) has finished registration')returnresponsedevice=XBeeDevice(settings.SERIAL_PORT,settings.BAUD_RATE)defmain():device.open()remote_sensors.app.init(device)whileTrue:time.sleep(1)if__name__=='__main__':try:main()finally:ifdevice.is_open():device.close()
联系人
阿努福·索利斯·拉米雷斯