TodoList - Smart-Home-Automation/shass GitHub Wiki
To-Do List
Sensor/Actuator (Device)
-
Base code library
- This base library will need to be on every device developed specificaly for SHASS.
- If will send a beacon to the Hub to let the Hub know it's online. The Hub will assign the device a unique ID.
- This will start a conguration process between the Device and the Hub.
- The configuration process will allow the device to communicate with the Gateway or directly with the MQTT service.
- All devices will follow a common protocol when communicating with the gateway.
- The base code may also allow the device to act as a repeater for other devices creating a mesh type typology.
-
Divice Code
- Each sensor/actuator will need code on top of the base code to send/recieve payaloads and/or commands from the gateway.
-
Communication/Commands/Payloads
- We will need to discuss the communication protocol.
- Establish commands & payloads
Gateway
- The Gateway would be a Raspberry PI. (PI 4 recommended)
- Code to communicate with the devices.
- The code will need to except the protocol from the devices.
- Publish events to the MQTT service from the information from the devices.
- Subscribe to events from the MQTT service recieved from the Hub.
- Except 3rd party adaptors for devices not designed for SHASS.
- This would include Zigbee, Z-Waze and others.
MQTT Service
- This could be a 3rd party or we could develop our on.
- There are several open-source MQTT services avaliable.
- Not all of them are cross-platforms.
- We could develop our own using Nu-Get packages that would simplify the process.
- This could ensure it is cross-platform as well as ease the installation process.
- The MQTT service will run on the same system that the Hub runs on.
- The MQTT service will be the pipeline for communication between the Gateway & the Hub.
- Need a standard for creating topics.
Hub
Backend
- The Hub will be the main controller for the entire system.
- The Hub will be developed in a modular format that will ensure features can be easily added.
- It will subscribe to events from the MQTT service, recieved from the Gateway or devices directly connected.
- It will publish events to the MQTT service with commands to the Gateway for the devices.
- The Hub will have APIs to communicate with the UI and possibly other systems.
- The Hub will have an Event Store to respond events recieved from the MQTT service.
- The Hub will have a Workflow engine to help with managing automation based on events.
- The Hub will have a logger to log events and other data in a persistent storage such as Mongo DB or Sqlite.
- etc...
Front-in