App for Django to provide a CRUD REST interface for GCP's IoT Core
Project description
Provides a CRDL (Create, Retrieve, Destroy, List) interface to GCP IoT Core
Free software: MIT license
Documentation: https://dj_gcp_iotdevice.readthedocs.io.
Getting Started
If you are not familiar with GCP IoT Core then please first read the following:
GCP IoT Core getting started link: https://cloud.google.com/iot/docs/how-tos/getting-started
First create an IoT device registry and then make sure that the service account assigned to your service (VM, Cloud Run, App Engine) has enough GCP permissions to create/read/delete/list from GCP IoT Core.
Installation
Install dj_gcp_iotdevice from pip
$ pip install dj_gcp_iotdevice
Add to your top level apps.py
from dj_gcp_iotdevice.apps import GCPIoTDeviceConfig class MyProjectDeviceConfig(GCPIoTDeviceConfig): registry = 'my-iot-registry' location = 'us-central1' project = 'my-project-id'
Add the new app config to your installed apps
INSTALLED_APPS = [ ... 'apps.MyProjectDeviceConfig', ]
Add the provided urls to your list of urls
urlpatterns = [ ... path('', include('dj_gcp_iotdevice.urls')), ]
API
The following endpoints will be accessible
POST /devices/ GET /devices/{id} DELETE /devices/{id} GET /devices/
To create a new device you will need to generate a private/public keypair using the following commands
openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
Take the contents of the rsa_public.pem and use that for the public_key in the API. Make sure to use \n characters for the line feeds.
The following snippet is the openapi spec for the new devices api
/devices/: get: operationId: devices_list summary: Used to list all the devices in the registry. description: |- :raises PermissionDenied: Likely bad coordinates to registry or not enough permissions to list devices from registry. parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/Device' tags: - devices post: operationId: devices_create summary: Used to add a new IoT device to the registry. description: |- :raises ParseError: Bad data provided. Likely a bad public key. :raises NotAcceptable: Could not add device. Probably device Id already exists. :raises PermissionDenied: Likely wrong GCP coordinates or insufficient permissions on GCP to add devices to the registry. parameters: - name: data in: body required: true schema: $ref: '#/definitions/Device' responses: '201': description: '' schema: $ref: '#/definitions/Device' tags: - devices parameters: [] /devices/{id}/: get: operationId: devices_read summary: Used to get one device from the registry. description: |- :raises PermissionDenied: Likely bad coordinates to registry or not enough permissions to read devices from registry. :raises NotFound: Device does not exist. parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Device' tags: - devices delete: operationId: devices_delete summary: Used to remove a device from the registry. description: |- :raises PermissionDenied: Likely bad coordinates to registry or not enough permissions to remove devices from the registry. :raises NotFound: Device does not exist. parameters: [] responses: '204': description: '' tags: - devices parameters: - name: id in: path required: true type: string
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
Built Distribution
Hashes for dj_gcp_iotdevice-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a0f58a09e8a1a107486c5b9535c6aaff5d53b37df5d41e6865322534a34381b |
|
MD5 | 0130f4f4fc8b63e50cbf0d02954863a5 |
|
BLAKE2b-256 | 401c09d62cd44208eb8201e86dfd1e440f1d909253116aa4c1fe6afd8257220c |