Abstract
Sensible is an open-source Internet of Things (IoT) project. A small tool that provides monitoring for your Linux server, Docker or LXC container, Raspberry Pi, etc. via Home Assistant sensors and MQTT discovery. By default Sensible comes with only a few example sensors, but it is basically a framework that enables you to quickly prototype and implement your own sensors. It is built using Go, MQTT. Key capabilities include: Security! MQTT encryption and all the bells and whistles to make it production ready ASAP!; There should be a way to implement sensors in Go for fully customized sensor data (plugin architecture) without rebuilding Sensible itself; Documentation for the REST API. The complete source code is publicly available on GitHub under the Apache License 2.0, making it a useful reference for students building an Internet of Things (IoT) mini project or final-year project.
1. Introduction
By default Sensible comes with only a few example sensors, but it is basically a framework that enables you to quickly prototype and implement your own sensors.
The below ongoing video series showcase Sensible and its capabilities along with development news, updates and the feature roadmap.
Sensible is currently a framework application that works with Home Assistant and MQTT discovery. You can configure sensors as plugins for the framework and the sensors will appear in Home Assistant. There are currently two ways to implement sensors, although this part is still under development. First, you can code them in Golang and build them as part of Sensible. Second, you can implement them as unix shell scripts. In this case, you don't need to build Sensible, but you can use a prebuilt binary.
2. Objective
A small tool that provides monitoring for your Linux server, Docker or LXC container, Raspberry Pi, etc. via Home Assistant sensors and MQTT discovery.
This project demonstrates how Go, MQTT can be applied to a real-world Internet of Things (IoT) problem.
3. Key Features / Modules
- Security! MQTT encryption and all the bells and whistles to make it production ready ASAP!
- There should be a way to implement sensors in Go for fully customized sensor data (plugin architecture) without rebuilding Sensible itself
- Documentation for the REST API
- A way to control Sensible via MQTT
- Configuration via environment variables
- A lot of small TODO items in the code
4. Technology Stack
5. System Requirements
General requirements for this technology stack — check the README for exact versions.
- Go 1.20 or later
- Git (to clone the repository)
6. Installation & Setup
git clone https://github.com/TheTinkerDad/sensible.git
cd sensible- Currently only Linux is supported - if you're running other OSes, sorry, you'll have to wait!
- Grab one of the releases from https://github.com/TheTinkerDad/sensible/releases or build Sensible on your own (see below)
- The .tar.gz file only contains the binary, extract it somewhere convenient.
- Run it the first time with "./sensible -r" and it'll generate the default config file: /etc/sensible/settings.yaml and the required folders
- Edit the config file to customize your settings
- Scripts should be located under /etc/sensible/scripts (or in the folder you've configured in the settings.yaml file)
- You can find the example scripts here or you can start by making your own, they are rather simple
- Add a sensor entry in the config file for each of your scripts like:
- name: Sensible Host IP Address
kind: script
sensorid: ip_address
script: ip_address.sh
unitofmeasurement: ""
icon: mdi:check-networkFull setup instructions are in the project README.
7. Future Enhancements
Suggested extensions you can add to make this your own project.
- Add a mobile dashboard using Blynk or Firebase
- Store readings in a cloud database for history charts
- Add alerts via SMS / Telegram when thresholds are crossed
8. Viva / Review Questions
Common questions examiners ask for projects in this domain.
- Which microcontroller / board and sensors are used and why?
- How does the device send data (Wi-Fi, MQTT, HTTP, Bluetooth)?
- Where is the sensor data stored and visualised?
- How is power consumption managed?
- How would you secure the device and its communication?
9. Source Code & License
This project is developed by TheTinkerDad and published on GitHub under the Apache License 2.0. Please follow the license terms and credit the original author when you use or modify this code.
Want to build this as your internship project?
Work on an Internet of Things (IoT) project like this with mentor guidance, weekly reviews and an internship certificate from Training Trains, Erode — online or offline.
Apply for Internet of Things (IoT) Internship