https://github.com/alpha74/airvd
REST APIs for CRUD operations created using Django and Django REST Framework, for IoT devices.
https://github.com/alpha74/airvd
django django-application django-project django-rest-framework iot iot-api json mvc rest-api restful-api sqlite
Last synced: about 2 months ago
JSON representation
REST APIs for CRUD operations created using Django and Django REST Framework, for IoT devices.
- Host: GitHub
- URL: https://github.com/alpha74/airvd
- Owner: alpha74
- Created: 2020-09-05T18:16:42.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-09-07T19:09:00.000Z (over 5 years ago)
- Last Synced: 2026-01-03T22:03:42.368Z (5 months ago)
- Topics: django, django-application, django-project, django-rest-framework, iot, iot-api, json, mvc, rest-api, restful-api, sqlite
- Language: Python
- Homepage:
- Size: 89.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Airvd
### Basic CRUD REST demo using Django REST Framework.
### Used:
- Python
- Django + SQLite
- Django REST Framework
-----
### Run:
- Create `virtualenv` using `requirements.txt`
- Run `python manage.py runserver` in commandline.
- By default, server runs on port `5000`.
-----
### Models/Classes:
#### Device
- An IoT device with properties:
- `uid` : unique id of device
- `name` : name of device
- A device measures humidity and temperature:
- `HumidityReading` : one-to-many
- `TemperatureReading` : one-to-many
#### HumidityReading
- `device` : owner device
- `humidity` : reading
- `timestamp` : timestamp when reading was stored in db
#### TemperatureReading
- `device` : owner device
- `temperature` : reading
- `timestamp` : timestamp when reading was stored in db
-----
### APIs
#### API to create a device
- Endpoint: `POST /api/devices/`
- Content-Type: `application/json`
- Request Payload
- `uid`
- `name`
#### API to delete a device
- Endpoint: `DELETE /api/devices/{device-uid}`
- `device-uid` : uid of device to be deleted
#### API to retrieve a device
- Endpoint: `GET /api/devices/{device-uid}`
- `device-uid` : uid of device
#### API to list all devices
- Endpoint: `GET /api/devices/`
- Response: `json`
#### API to return readings for a device in given period
- Endpoint: `GET /api/devices/{device-uid}/readings/{parameter}/?start_on=yyyy-mmddTHH:MM:SS&end_on=yyyy-mm-ddTHH:MM:SS`
- `device-uid` : uid of device
- `parameter` : **temperature** or **humidity**
- `start_on` and `end_on` : query parameters which are compulsary and should be used to filter the result to only include data between `start_on` and `end_on`.
- `yyyy-mm-ddTHH:MM:SS` : year-monthdateThour:minute:second
- Response: `json`
-----
#### To Improve
App can be improved on following:
- Payload cleaning.
- Date range matching using timezones.
#### Commit History Graph
[Commit History Graph](https://github.com/alpha74/airvd/blob/master/FORREADME/img/commit_history.png)