Home Automation is a central server platform for automating your home.
- Blazor user interface
- RESTful API for UI extensability
- MQTT backhaul for communicating with IoT devices
- MongoDb data store.
This project is intended to run on a small Linux server, but when built from source, it can be run on any platform that is capable of running dotnet core. The current deployment server has 2 phyical NICs, one as a DHCP client on the main home network, the second as a DHCP server, powering a seperate subnet exclusively for the IoT devices.
ASP.NET Core with NGINX has built in support for TLS 1.2. The IoT devices are on a seperate subnet, and do not have direct internet connections. All IoT traffic is routed through the central server as an edge server, and any outgoing information is controlled via the server.
A big thank you to all the libraries we depend on for this project.
- AutoFixture - https://github.com/AutoFixture/AutoFixture
- Moq - https://github.com/moq/moq4
- xUnit - https://github.com/xunit/xunit
And a big thank you to the folks over at Studio 3T for providing me with a free license for their product.
What you'll need:
- Visual Studio 2019 16.3 or newer (or VS code)
- DotNet Core 3.0
- MongoDB
- Current settings file points to localhost:27017
- Current version 4.0.6
This is where the core datamodels and view models will be stored. Right now there is no difference between the data models and the view models.
This is where the data access happens. All MongoDB code or any other data access from the API should go through this library.
This is where all of the domain logic for the API is located.
This is a Blazor Web Assembly project. Right now the Blazor libraries are in preview, but are expected to be finalized this spring.
The Automated testing suite for all projects.
This is the RESTful interface for consumption by the Blazor UI and any other UI interfaces on the main network.
All devices must implement the interfaces here.
The first of the device projects. This will implement the interfaces from DeviceBase as necessary for interfacing with the physical PowerStrip device.