Table of Contents
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
- 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.
- 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.
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.
We use MVVM, Services, Repositories and Helpers
And uses FBF (Folder By Feature)
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 |
Topics | Method |
---|---|
AlarmArmedSubject | Pub/Sub |
AlarmPartiallyArmedSubject | Pub/Sub |
AlarmFullyArmedSubject | Pub/Sub |
Set-Humid | Pub/Sub |
Set-Temp | Pub/Sub |
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 |
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 |
- Hardware: CC-BY-LA (Creative Commons)
- API: GPLv3
- Frontend: GPLv3
- Mobile: GPLv3
- Peter Hymøller - [email protected]
- Nicolai Heuck - [email protected]
- Jan Andreasen - [email protected]
Project Link: https://github.com/Thoroughbreed/H5_Embedded_Project
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.