My home automation solution
- add rpiZero when/if needed?
- very good price, good horsepower
- if always on & with main power available
We we'll be using the following hardware/software:
intel NUC running ubuntu server, and hosting:
- influxdb (as a docker container)
- this will record sensors time-series data
- mongoDB (as a docker container)
- this will record all the configuration parameters that are not meant to be recorded in influxdb (heating temperature, user parameters...)
- nginx (as a docker container)
- this will host the main UI webpage
- the access from internet will be done on demand
- grafana (as a docker container)
- will provide various dashboards
- various python modules:
- SMS_operator
- conversationnal agent interface with the other modules to allow reporting and commands over SMS
- using chatterbot with a dedicated logic adapter (https://chatterbot.readthedocs.io/en/stable/logic/create-a-logic-adapter.html)
- conversationnal agent interface with the other modules to allow reporting and commands over SMS
- scheduler
- time and calendar reminders using SMS_operator and interphone modules
- let's reuse the BC2 scheduler module
- time and calendar reminders using SMS_operator and interphone modules
- SMS_operator
RPI 2, that will be:
- interfacing
- an e-paper display to show various metrics and status data
- switches and contraptions to modify user service configuration parameters (absent, present, night mode...)
- hosting the interphone module
- plays vocal annoucements generated by the TTS module hosted on bc-speech
** old intel NUC running windows 7 with a french Best-of-Vox TTS software (now retired)
- a dedicated bc_TTS python script allows TTS serving via HTTP
ESP8266 & ESP32 devices running micropython to interface multiple sensors.
- I'll be using Wemos/LOLIN D1 mini pro, D32 & D32 pro devices (https://www.wemos.cc/, https://wiki.wemos.cc/start)
- some devices are always-on, others are powered with a 18650 rechargeable Lipo battery supplying a +5V/+3.3V boost shield.
- Bootstraping python scripts will be used along with a source code nginx server hosting python scripts with checksums to allow the ESP devices to check and update regularly over the wifi network if needed
commands the heater ON/OFF through a latching relay interface
- uses a touch-enabled TFT to allow manual ON/manual OFF/AUTO selection + show current state
reads the main power metrics and pushes them to influxDB.
reads the water metrics and pushes them to influxDB
... are under the notes/ subdirectory
- first ESP device able to update OTA
- set up a dedicated dockerized nginx setup to serve the git directory, and generate basic checksums for any ESP .py file
- develop the bootstrap python scripts & test them
- set up and flash an ESP32 pro device
- set up work env, how to easily and conveniently send/run scripts
- test read/write to flash os
- test import of other python scripts
- test SD card read/write
- test local web server
- test local web client, get the checksum values for a module directory
- test local web client file download with chunk/streaming to flahs os (try with big files to SD card)
- specify, document and implement the bootstrapping with OTA update (rewrite reboot scripts if necessary, using a normal boot, and an update boot)
- add an e-paper display to the ESP device