Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Master: Build Status

Development: Build Status

Project website:

About is an IoT automation controller for home, office or any place. Primarly this project was started to support MySensors. Later it was expanded to support other networks also. was designed to run with limited resources. For instance, it can run on the first generation Raspberry Pi.

Localization supports multiple languages. If you are interested in providing a translation for your native language, send a request via Transifex locale project

System Requirements 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) 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

MyController  and MySensors setup.


Download(executable bundle),

Extract the downloaded bundle in the directory where you want it to run. The configuration files are located in mycontroller/conf


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= # (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. 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 server.

  4. Web files location, no need to touch this one.

  5. If https is enabled these fields are mandatory.

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 # (1) # (2) # (3) # (4) # (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 : ./

    • Stop : ./

  • Windows

    • Start : Double click on start.bat

    • Stop : Ctrl+C

  • Other Platforms

java -Xms8m -Xmx256m -Dlogback.configurationFile=../conf/logback.xml -Dmc.conf.file=../conf/ -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.

git clone
cd mycontroller-v1-legacy
docker run --rm --name mycontroller-v1-builder \
  --volume $PWD:/source \
  --workdir /source \ ./scripts/

Generated bundle

executable bundles will be available at dist/target

$ 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/