Datasocks : Realtime IoT made simple ✅
Monitor and control remotely in real time your IoT devices without the pain of dealing with networking.
IoT Made simple
An account, an API Key and you are good to go !
The idea behind Datasocks is to provide an easy way to connect, monitor and control multiple IoT devices without having to setup a web server and deal with networking.
Study Case
- You want to get the temperature and the humidity level of your room to be sure that your plants will survive 🌱. You also want to be able to water them at any moment.
- For that you decide to go with a singleboard computer (like a Raspberry Pi) or an Arduino.
- Once done, you realise you need to setup a web server/app in your house,deal with opening your home network to the internet and the security issues that are implied to it.
Here's come Datasocks : After setting up Datasocks on a VPS (on Linode let's say 😉) with minimal requirements, generating an API Key for your device and embed it into a script into your device , you are good to go.
Your plants will thank you. 🌱😋
Deploy
Thanks to Linode's Stackscript feature you can quickly setup an instance with datasocks pre-installed
cloud.linode.com/stackscripts/1018923
The only thing to set up next is an .env file and start the docker compose process
docker-compose --env-file ./.env up
Features
- Create and own multiple dashboards
- Create cards to display the last value of a metric
- Create graphs (Lineplot for now) to measure the evolution on a time period
- Create buttons to activate functions on your devices (Still in dev)
- Manage mutiple devices
Why Websockets
- No need to setup a web server on the device itself and expose it to the Internet
- Bi-Directionnial communications
- Asynchronous system
Tech Stack
- Backend using Django, DRF and Channels
- Frontend in vanilla js using Bootstrap and Chartjs
- Docker and Docker-compose
- NGINX
- Redis
Github Repo : github.com/duranbe/datasocks
It's for now designed as a self-hosted and private application only, hence for now the support for only one admin user.
This project was made during and for the Linode x Hashnode Hackathon