Remote Sensors API protocol library
This library translates raw bytearrays into the Remote Sensors API models.
This implementation uses the XBee Python library. And translates the incoming device messages into a Remote Sensors Request and Response.
This library uses similar syntax than Sanic or Flask.
Usage
import remote_sensors
from digi.xbee.devices import XBeeDevice
import my_settings as settings
@remote_sensors.bind_to_device()
@remote_sensors.request()
def access_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')
def handle_registration(request: remote_sensors.Request, *args, **kwargs):
"""Handles the registration request."""
response = remote_sensors.Response(status='ACK',
transaction=request.transaction)
# do something about it :D
payload = {
'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 device
return response
@remote_sensors.bind_to_device()
@remote_sensors.request(method='END_REGISTRATION', pass_message=True)
def handle_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 :D
payload = {
'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')
return response
device = XBeeDevice(settings.SERIAL_PORT, settings.BAUD_RATE)
def main():
device.open()
remote_sensors.app.init(device)
while True:
time.sleep(1)
if __name__ == '__main__':
try:
main()
finally:
if device.is_open():
device.close()
Contact
Arnulfo Solis Ramirez
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
remote_sensors-0.1.1.tar.gz
(10.2 kB
view details)
File details
Details for the file remote_sensors-0.1.1.tar.gz.
File metadata
- Download URL: remote_sensors-0.1.1.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c14527128a52b58820a5b59419a1a39721177920bca11bf609db42970389fe1
|
|
| MD5 |
4a176d27ef824837c8acb03b84ebaa8c
|
|
| BLAKE2b-256 |
2a4986a77550836d56bab788331624b6a4bf96603c7a1ec34849ea6c8c260c8f
|