-
Notifications
You must be signed in to change notification settings - Fork 3
OpenChirp Software Stack
Khushboo Bhatia edited this page Mar 27, 2017
·
51 revisions
Tracking page for OpenChirp Software Stack development. The acronym CRUD is used in the following sections and it stands for Create, Read, Update, Delete.
- CRUD on location.
- Get devices at a location
- Get gateways at a location.
- Check to not allow deletion of non-empty locations.
- Validation in create/update request ( For example, creating a location with name "root" should not be allowed)
- CRUD on device.
- Create/List/Delete transducers on a device.
- Publish to a transducer.
- Create a device template from an existing device.
- List/Read/Delete a device template.
- Create a new device using a template.
- Create/List/Delete commands.
- Execute a command.
- CRUD on gateway.
- Get all devices linked to a gateway.
- CRUD on service.
- Add/Update/Remove a device on a service. ( This includes publishing to the service's topic so it is notified immediately).
- Get all devices linked to a service. (The output of this call includes the service specific config.)
- Notify service of changes to its properties.
- Create a user in database for every signup using a google account.
- Save owner for each resource created.
- API to get a user's devices, services, locations with a search by name option.
- Save user's session info in Redis.
- Service that stores transducer data to TSDB.
- REST API for reading last value of any device-transducer.
- REST API that returns time series data for visualization, dump csv.
- Enabled google-signin for end-user.
- API Key or public-private key auth for services/gateways( Users that will use REST API programatically.)
- User/Password based auth or possibly use the same public/private key from above for MQTT Broker.
- REST API to manage credentials(for REST and MQTT) for gateways/services.
- Any user with google account has read access but nobody has write access unless they are granted GLOBAL_WRITE role by an admin.
- Device Level access control.
- REST API for users with ADMIN role to manage privileges for others.
- Use RabbitMQ's MQTT plugin( Mosquitto is used currently) .
- Setup automatic backups.
- Restrict connection to localhost.
- Setup monitoring of all required components (node , mongodb, influxdb, redis, rabbitmq, services).
- Log all HTTP requests with userId and timestamp.
- Setup alerts for exceptions.
- Log file rotation and archiving.
- Shortcuts.
- Recently added devices.
- Write unit tests