Skip to content

peterhym21/H5.IntelliHouse2000App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build succeeded Test passing Issues Issues Contributors Forks License

Intelligent house App

H5 App 3 group project

Table of Contents

Case

Build a APP for the Intelligent House

  • Home page for alarm
  • Page for log with 3 tabs for 3 log-levels
  • Page for climate with 3 tabs for 3 rooms

(back to top)

Requirements

  • Can show current (latest measurement) of temperature and humidity and possibly other information.
  • Can show a graph of the measurements, where you can choose between the last hour, day and week.
  • There must be a button that can activate a servo via MQTT (and simulate opening a window or turning on the ventilation).
  • The app must be built with the MVVM design pattern and Dependency Injection.
  • Can display recent data if the network is interrupted.
  • Is robust against unstable network connection.
  • The project is submitted in Github with a good Readme file and presented to the class. The readme file also marks which objectives have been met.

Optionel Requirements

  • Possibility to select different measurement sessions, e.g. corresponding to different rooms in the house.
  • You can also wish for an alarm that notifies you that the temperature has gone beyond a given limit.

(back to top)

Architecture diagram

architecture diagram

(back to top)

Summary and rundown

The IntelliHouse2000 is a all-in-one microcontroller combo that provides climate control, monitoring and alarm/entry functions for the entire house. You can have sensors in all rooms, and set the parameters for each sensor. If an event is triggered while the alarm is armed, no apparent function will happen in the house, but the log will be updated and the user will get a message1 with the event, timestamp and what sensor triggered it. If however the alarm is disarmed (that is, the user is home) IntelliHouse2000 will take action on the event. All of this is then displayed on the App for the IntelliHouse2000, IntelliHouse2000App with a easy to use UI for userfrendlynes.

If you forget to turn off your car in the garage, and the sensor detects rising CO2 levels, the user will be warned, displays around the house will show the event, and the garage door will open incrementally until the sensor value returns to normal

If the humidity in the house rises rapidly, the appropriate window will be opened incrementally until the sensor detects a drop in humidity. As an extra function2 you can add weather sensor as well, so the window doesn't open if the humidity outside is higher than inside, or it rains.

No matter what action have been taken (open doors, windows etc.) those will automatically close when the alarm system is armed. This happens with both perimeter and full arm.

(back to top)

Folder Structure

Folder structure

We use MVVM, Services, Repositories and Helpers

And uses FBF (Folder By Feature)

(back to top)

API Endpoints

OPS: Full api documentaiton can be found on swagger

Base URL : https://mqtt-api.tved.it/

Method Uri Description Parameters Parameter formats
GET / Smoke test
GET /all Get last 50 logs
GET /info Get last 50 logs with log level info
GET /debug Get last 50 logs with log level debug
GET /system Get last 50 logs with log level system
GET /critical Get last 50 logs with log level critical
GET /kitchen Get all temperature and humidity readings from the kitchen since ts ts (timestamp) Datetime format: yyyy-MM-dd HH:mm:ss
GET /kitchen/1 Get last temperature and humidity reading from the kitchen
GET /bedroom Get all temperature and humidity readings from the bedroom since ts ts (timestamp) Datetime format: yyyy-MM-dd HH:mm:ss
GET /bedroom/1 Get last temperature and humidity reading from the bedroom
GET /livingroom Get all temperature and humidity readings from the livingroom since ts ts (timestamp) Datetime format: yyyy-MM-dd HH:mm:ss
GET /livingroom/1 Get last temperature and humidity reading from the livingroom
GET /airq Get all air quality readings since ts ts (timestamp) Datetime format: yyyy-MM-dd HH:mm:ss
GET /airq/1 Get last air quality reading

MessageCenter

Topics Method
AlarmArmedSubject Pub/Sub
AlarmPartiallyArmedSubject Pub/Sub
AlarmFullyArmedSubject Pub/Sub
Set-Humid Pub/Sub
Set-Temp Pub/Sub

(back to top)

MQTT Topics

Topics Access Method
home/alarm/arm External Pub/Sub
home/alarm/alarm External Sub
home/alarm/alarm Internal Pub
home/climate/status/# External Sub
home/climate/status/[section]/[type] Internal Pub
home/climate/servo External Pub
home/log/[logLevel]/[type] Internal Pub
home/log/# External Sub

(back to top)

Libraries

Name Version
CommunityToolkit.Mvvm 8.0.0
Microsoft.Maui.Dependencies 6.0.547
Microsoft.Maui.Extensions 6.0.547
Microsoft.Windows.SDK.BuildTools 10.0.22000.194
MQTTnet 3.1.1
MQTTnet.Extensions.ManagedClient 3.1.1
Polly 7.2.3
sqlite-net-pcl 1.8.116
Syncfusion.Maui.Charts 20.3.56
System.Runtime.InteropServices.NFloat.Internal 6.0.1

(back to top)

App Pages

License

  • Hardware: CC-BY-LA (Creative Commons)
  • API: GPLv3
  • Frontend: GPLv3
  • Mobile: GPLv3

(back to top)

Contact

Project Link: https://github.com/Thoroughbreed/H5_Embedded_Project

(back to top)

1 - Informs the user via mobile app over the MQTT protocol

2 - Function not built in yet

3 - Logs via MQTT to a database in the following layers: Debug, Info, Critical.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages