image::extra/images/logo-mycontroller.org_full.png[MyController.org, link="http://www.mycontroller.org"]
:source-language: java, angularjs
ifdef::env-github[]
image:https://badges.gitter.im/Join%20Chat.svg[link="https://gitter.im/mycontroller-org/mycontroller?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"]
endif::[]
[link=https://travis-ci.org/mycontroller-org/mycontroller]
Master: image:https://travis-ci.org/mycontroller-org/mycontroller.svg?branch=master["Build Status", link="https://travis-ci.org/mycontroller-org/mycontroller"]
[link=https://travis-ci.org/mycontroller-org/mycontroller]
Development: image:https://travis-ci.org/mycontroller-org/mycontroller.svg?branch=development["Build Status", link="https://travis-ci.org/mycontroller-org/mycontroller"]
====== Project website: http://www.mycontroller.org
====== Forum: http://forum.mycontroller.org
== About
MyController.org is an IoT automation controller for home, office or any place.
Primarly this project was started to support http://www.mysensors.org/[MySensors]. Later it was expanded to support other networks also. MyController.org was designed to run with limited resources. For instance, it can run on the first generation Raspberry Pi.
== Localization
MyController.org supports multiple languages. If you are interested in providing a translation for your native language, send a request via https://www.transifex.com/mycontrollerorg/multi-locale/[Transifex MyController.org locale project]
== System Requirements
MyController.org is a very lightweight server. Its resource requirements are modest:
- Disk : ~100 MB (may require more space, when we store metrics data for long time)
- Memory(RAM) : 256 MB
- Java : 1.8 or later
===== Supported Platforms (tested)
MyController.org is a Java-based application server. It can run on any platform where Java support is available.
- Linux
- Windows
- Orange PI
- Raspberry PI (Oracle Java recommended)
== MyController and MySensors Setup
image::extra/images/MyController-MySensors-RF.png[MyController and MySensors setup.]
== Installation
====== Download(executable bundle),
====== Configuration
Extract the downloaded bundle in the directory where you want it to run. The configuration files are located in mycontroller/conf
File: mycontroller.properties
Temporary files
mcc.tmp.location=tmp/ # <1>
<1> You can change the default location and file name. This directory is used as a temporary location for operations such as backup, restore, etc.
*Database Configuration*
----
mcc.db.h2db.location=../conf/mycontroller # <1>
----
<1> You can change the default location and file name. The database file will be stored with the extension `.h2.db`. Do not add file extension to this property.
*Web server configuration*
----
mcc.web.bind.address=0.0.0.0 # <1>
mcc.web.enable.https=true # <2>
mcc.web.http.port=8443 # <3>
mcc.web.file.location=../www/ # <4>
mcc.web.ssl.keystore.file=../conf/keystore.jks # <5>
mcc.web.ssl.keystore.password=mycontroller # <5>
mcc.web.ssl.keystore.type=JKS # <5>
----
<1> Bind interface address. 0.0.0.0 means it will bind to all available interfaces.
<2> Enable/disable https. Only one protocol is supported at a time. true - `https`, false - `http`.
<3> Port number of `http/https` to access MyController.org server.
<4> Web files location, no need to touch this one.
<5> If `https` is enabled these fields are mandatory.
Default URL: `https://
:8443` (ex: `https://localhost:8443`)
NOTE: Default username/password: `admin/admin`
*Important*: Change default `mcc.web.ssl.keystore.file` and `mcc.web.ssl.keystore.password` and `https` protocol is
recommended
*MQTT broker configuration*
----
mcc.mqtt.broker.enable=true # <1>
mcc.mqtt.broker.bind.address=0.0.0.0 # <2>
mcc.mqtt.broker.port=1883 # <3>
mcc.mqtt.broker.websocket.port=7080 # <4>
mcc.mqtt.broker.persistent.store=../conf/moquette/moquette_store.mapdb # <5>
----
<1> Enable/disable builtin MQTT broker. By default it is enabled. `true`- enabled, `false` - disabled
<2> Bind interface address for the MQTT broker. By default it will bind to all available interfaces.
<3> MQTT broker port
<4> Websoicket port
<5> Internal use. no need to touch this one.
*Logger configuration*
Configuration File Name: `logback.xml`
Default log file location: `logs/mycontroller.log`
====== Start/Stop Server
Executable scripts are located in `mycontroller/bin/`
* Linux
- Start : `./start.sh`
- Stop : `./stop.sh`
* Windows
- Start : Double click on `start.bat`
- Stop : `Ctrl+C`
* Other Platforms
```
java -Xms8m -Xmx256m -Dlogback.configurationFile=../conf/logback.xml -Dmc.conf.file=../conf/mycontroller.properties -cp "../lib/*" org.mycontroller.standalone.StartApp
```
=== Build locally
To build locally use a docker maven. it contains all the dependent jar
Run the following command to build locally.
```bash
git clone https://github.com/mycontroller-org/mycontroller-v1-legacy.git
cd mycontroller-v1-legacy
docker run --rm --name mycontroller-v1-builder \
--volume $PWD:/source \
--workdir /source \
quay.io/mycontroller-org/maven:mycontroller-v1-builder ./scripts/maven.sh
```
==== Generated bundle
executable bundles will be available at `dist/target`
```bash
$ ls -alh dist/target/*.{tar.gz,zip}
-rw-r--r--. 1 jkandasa jkandasa 36M May 8 22:58 dist/target/mycontroller-dist-standalone-1.6.0-SNAPSHOT-bundle.tar.gz
-rw-r--r--. 1 jkandasa jkandasa 36M May 8 22:58 dist/target/mycontroller-dist-standalone-1.6.0-SNAPSHOT-bundle.zip
```