Remote Sensors API framework
Project description
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
Project details
Release history Release notifications | RSS feed
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 |