Skip to content
@DomoticASW

DomoticASW

DomoticASW

Distributed Systems course

Developers

Screenshots of the application

Screenshot devices Screenshot lamp Screenshot music-player Screenshot liam-presence-automation Screenshot emma-musica-wakeup Screenshot relaxing-lights-sun-setting Screenshot edit-automation Screenshot liam-permissions Screenshot device-groups

Project description

Create a smart home system and its own protocol, allowing devices to be added or removed dynamically (without having to stop the system).

The protocol enables smart home devices to describe the actions they support and the data they generate. This means device manufacturers can create compatible devices without requiring changes to the system.

Users interact with the system through web client. The web client doesn’t talk directly to the smart devices but communicates through a server installed in the house.

The server is also accessible online, so users can manage their home remotely.

Automations can be set up, triggered either by users or external events.

The client can receive custom push notifications from the server, such as:

  • Alerts when a device goes offline
  • Notifications when the temperature hits a set threshold
  • Updates when the washing machine finishes its cycle
  • Results of a scheduled automation

There are two types of users:

  • Admin: Can add and remove devices from the system and define which devices other users can interact with. (The admin also uses the system, he's not technical staff.)
  • User: Can only interact with devices they’ve been given access to by the admin.

The system includes an authentication feature so that only authenticated users can interact with it. Users can register themselves but won’t be able to use the system until approved by an admin.

System Components

  • Server
  • Web Client
  • Multiple IoT devices

Technologies

We plan to use:

  • MEVN stack (using TypeScript where possible)
  • Other languages or runtimes to implement the devices
  • HTTP REST APIs for client-server and server-device communication
  • Docker to containerize components (server and devices)
  • Docker Compose for easier development and testing
  • Kubernetes for deployment

Fault Tolerance and Resilience

  • Since there are several devices in the house, it’s important for the server to track which devices are active and working properly, detecting offline devices if possible.
  • Ensure the server can automatically restart in case of a crash.

Try DomoticASW

We have prepared a full demo with sample data in order to let you try DomoticASW.

Other important repositories

Other doc

Distribuited doc

Popular repositories Loading

  1. .github .github Public

    Shell

  2. server server Public

    TypeScript 1

  3. client client Public

    DomoticASW client

    Vue 1

  4. semantic-release semantic-release Public

  5. commitlint commitlint Public

  6. roomba roomba Public

    A Roomba simulated device for testing DomoticASW

    Scala

Repositories

Showing 10 of 14 repositories

Top languages

Loading…

Most used topics

Loading…