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