Code Monkey home page Code Monkey logo

automatica's Introduction

Automatica.Core

Donate

Donate with Bitcoin

Donate DogeCoin: DPVz6RSAJrXZqTF4sGXpS1dqwvU36hSaAQ

Status

Backend Buid

Build Status Core

Frontend Build

Build Status Web

Develop Automatica.Core.Cloud Status

Cloud Status

SonarCloud

Quality Gate Status

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.

Table of contents

Where to get

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.

Raspberry PI

You can download the latest image & binaries here

Implemented drivers/logics

At the moment the following drivers & logics are implemented and ready to use, also all the drivers & logics bellow will be shipped by default.

Drivers

Logics

Features

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....

Project structure

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

How to build

Make sure that you have built the frontend first.

Frontend

cd src/automatica.core/Automatica.WebNew
npm install
npm run start

The angular dist folder is in src/automatica.core/Automatica.Core/wwwroot

Backend

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

Contribute

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.

  1. Fork the repo on GitHub
  2. Clone the project to your own machine
  3. Commit changes to your own branch
  4. Push your work back up to your fork
  5. 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!

Online Demo

The current demo can be found here.

Login with User: sa Password: sa

Demo will be reseted daily!

Docker images

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.

How to use this image

docker run -it -p 5001:5001 automaticacore/automatica:latest-develop --name automatica

Database

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.

SQLite

$ 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

MySQL

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

Plugins

Do persist your plugin directory set the "AUTOMATICA_PLUGIN_DIR" environment variable and mount the folder in your docker repository!

Run in a docker image

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

Roadmap

Things I want to implement in the near future - help is appreciated!

Roadmap core

  • 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.
  • ...

Roadmap cloud

  • Gateway to connect your server via the cloud
  • Backup
  • Insights (Repoting, ...)
  • ...

Roadmap Drivers

  • ZigBee
  • Z-Wave
  • Fronius Solar API
  • MQTT
  • 1-Wire
  • Homematic
  • HTTP - JSON/XML
  • ...

Roadmap Logics

  • P/PI/PID
  • ...

Screenshots

Configuration Configuration

Logic-editor Logic editor

Documentation

Documentation

automatica's People

Contributors

dependabot[bot] avatar p3root avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.