Automatica is a building management system thats runs on .NET Core and is built to run on every OS. It is able to connect different automation systems and generate a rich visualization with a powerfull rule engine. Try it as your smart home hub today.
- Automatica.Core
- Table of contents
- Where to get
- Implemented drivers/logics
- Features
- Project structure
- How to build
- Contribute
- Online Demo
- Docker images
- Roadmap
- Screenshots
- Documentation
I currently use the system on a Raspberry.PI3. It runs also on Windows and Mac, but I have only built a build system for the raspberry right now. If you need Automatica.Core for Windows/Mac just create an Issue.
You can download the latest image & binaries here
At the moment the following drivers & logics are implemented and ready to use, also all the drivers & logics bellow will be shipped by default.
- Automatica.Remote
- Constants
- EnOcean
- FroniusSymo
- Apple HomeKit
- Hue Bridge Simulator
- Ikea Tradfri
- KNX+BAOS
- Loxone Miniserver
- MachineFlags
- MBus
- ModBus
- OpenWeatherMap
- Times
- WakeOnLan
- ZWave
- Sonos
Automatica.Core provides a rich set of features, for example:
- Trendings - record datapoints (used later for ML, Reporting,...)
- ETS Import - import your existing ETS5 project
- Dockerizeable - automatica.core can run in a dockerized environment
- Easy to extend
- ...TBC....
This project is a mono repository. The master & develop branch will be splitted nightly.
The Structure of the project is as follows.
.
├── automatica.build/ # Some build tools for the project (submodule repo)
├── bin/ # Bin tools for spliting the repo
├── build/ # Some build tools for the project
├── docker/ # Docker build files
├── documentation/ # docfx documentation source
├── images/ # Image files displayed in the readme.md
├── src/ # Source files
| ├── automatica.core.plugin.standalone # Standalone plugins - split repository
| ├── automatica.core.slave # Automatica slave - split repository
| ├── automatica.core # The core system for automatica.core - split repository
| ├── automatica.drivers # Automatica drivers - split repository
| ├── automatica.logics # Automatica logics - split repository
| ├── automatica.supervisor # Automatica supervisor - split repository
├── LICENSE
└── README.md
Make sure that you have built the frontend first.
cd src/automatica.core/Automatica.WebNew
npm install
npm run start
The angular dist folder is in src/automatica.core/Automatica.Core/wwwroot
cd src/automatica.core
dotnet restore
dotnet build
or open the src/automatica.core/automatica.core.sln with Visual Studio an hit F5.
You can download the latest plugins with the automatica-cli. More here
Please refer to each project's style and contribution guidelines for submitting patches and additions. In general, we follow the "fork-and-pull" Git workflow.
- Fork the repo on GitHub
- Clone the project to your own machine
- Commit changes to your own branch
- Push your work back up to your fork
- Submit a Pull request so that we can review your changes
NOTE: Be sure to merge the latest from "upstream" before making a pull request! Pull request must have no merge conflicts!
Any help is appreciated!
The current demo can be found here.
Login with User: sa Password: sa
Demo will be reseted daily!
Docker images will be build daily. The automaticacore image is here available.
There is also a automaticacore_proxy image which represents an nginx reverse proxy.
docker run -it -p 5001:5001 -p 5002:5002 --env server:port=5001 --env server:ssl_port=5002 automaticacore/automatica:latest-develop --name automatica
Automatica works with different database systems. Currently we support MySQL and SQlite.
The first startup can takeup some time, because the database needs to be initialized.
$ docker run -it \
-p 5001:5001 \
--mount type=bind,source=~/database,target=/app/database \
-e DATABASE_TYPE="sqlite" \
-e "ConnectionStrings:AutomaticaDatabaseSqlite=Data Source=/app/database/automatica.core.db" \
--name automaticacore \
automaticacore/automatica:latest-develop
You need to provide a maria-db server and enter the credentials in the environment variable in the docker run command:
$ docker run -it \
-p 5001:5001 \
-e DATABASE_TYPE="mysql" \
-e ConnectionStrings:"AutomaticaDatabaseMaria=Server=<server>;User Id=<username>;Password=<password>;Database=<db-name>" \
--name automaticacore \
automaticacore/automatica:latest-develop
Do persist your plugin directory set the "AUTOMATICA_PLUGIN_DIR" environment variable and mount the folder in your docker repository!
To just play around with automatica.core use this docker-compose configuration.
version: '3.3'
services:
automatica:
image: automaticacore/automaticacore:develop-latest
restart: always
ports:
- "5001:5001"
nginx:
image: automaticacore/automaticacore_proxy:develop-latest
restart: always
ports:
- "80:80"
links:
- automatica
Things I want to implement in the near future - help is appreciated!
- Automatica.Core Mobile
- Alarms
- Automatic editor - to generate time/trigger based actions
- Simulate movement in the building when you are on vacation,etc...
- Scripting interface
- Reporting
- Metering
- Generate reports about your energy consumption and calculate the costs for your building/level/room,....
- AI - Machine Learning
- The building should know when are people at home and maybe in which room, therefore the building can detect automatically some enhancements for the configuration and be so more energy efficient.
- ...
- Gateway to connect your server via the cloud
- Backup
- Insights (Repoting, ...)
- ...
- ZigBee
- Z-Wave
- Fronius Solar API
- MQTT
- 1-Wire
- Homematic
- HTTP - JSON/XML
- ...
- P/PI/PID
- ...