Warning
This app is tailored to my specific environment and is not intended as a general home automation app!
This project was initiated as a platform for me to acquire knowledge in Flutter/Dart, providing a practical scenario to refine my skills.
Being an enthusiast of open-source home automation and owning a variety of devices with different MQTT payload structures, this project presented an excellent chance to substitute the multiple control programs with one that is custom-made for my requirements.
I experimented with various reactive state frameworks before settling on Riverpod for data-binding.
I really like Flutter's declarative approach and the robustness of the resulting app.
The project is currently a work in progress, and with the knowledge I’ve gained about Flutter/Dart and the libraries I’m utilizing, there are numerous aspects I would approach differently now.
I am continually refactoring past errors and incorporating new devices as they become part of our household.
The app currently runs in desktop mode under Linux/Windows/OSX and Android/iOS.
The following devices can be controlled/monitored via MQTT messages:
Zigbee (Zigbee2MQTT)
- Window blinds (single and dual)
- Thermostats (underfloor heating)
- Ikea smart bulbs (and other dump bulbs)
- Garden zistern pump
- Sodastream uses (vibration sensor)
- Multi power strip
- Door contact sensors
- Humidity/Temp sensors
- Garage door (ESP32 controlling a remote controll via transistor)
- various Tasmota plugs
- Plant watering system for an always thirsty coffee bush (ESP8266, servo valve)
- Incubator for Tempeh etc. (ESP32)
- Basic IR remote controll for TV and sound bar
- Metrics of my SMA Tripower solar controller (modbus)
- Prusa I3 MK3s (USB Serial controller)
- Sleep modes and output device of my main PC
- Greenhouse temperature sensors (LoRa)
- Configuration data is stored in an encrypted file which is decrypted with a user provided key
It also lets me view the RTSP streams of two survailance cams (media_kit)
Tip
You can find an example bare bones MQTT/Riverpod example that uses a family provider here: https://github.com/vindolin/simple_mqtt_riverpod_example