Git Product home page Git Product logo

mycontroller-v1-legacy's Introduction

MyController.org

Join%20Chat

Master: Build Status

Development: Build Status

About

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

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.

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.

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

$ 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

mycontroller-v1-legacy's People

Contributors

arturmon avatar cslauritsen avatar dietmar-franken avatar elgarfo avatar fraid avatar giltesa avatar gitter-badger avatar jkandasa avatar jordan-szwejda avatar mozzbozz avatar s0rc3r3r avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mycontroller-v1-legacy's Issues

Grouping Graphical reports

In current design graphical report shows only single sensor, which is ok but many times in field user want to compare with some other sensor result, example: on three phase voltage show all the three voltage differently. If we club all the sensors value in to single graph, user can understand easily whats going on.

No donation option

This is such a cool project that I want to donate some beers. (or coffees if you will)

The interface and website do not feature a donate option, how can users donate to this project?

Support for DualOptiboot-bootloader

Right now MyController supports only MYSBootloader to upgrade firmware. It will be nice to support for DualOptiboot-bootloader also as many people using this.

Remote control buttons in MyController

jkandasa, as we talk on mysensors forum, it's very kindly and would make mycontroller almost a perfect controller that we can control the IR devices from an interface on own mycontroller website, where you could save the signals of each button of the remote of TV, for example, and send the IR signals with no need of its remote fo this.

Thanks for your support.

Support line chart graph for various interpolate options

We are using angular-nvd3 to display graph for sensors. Line chart has various interpolate options like, linear, step-before, step-after, basis, basis-open, basis-closed, bundle, cardinal, cardinal-open, cardinal-closed, monotone

Give an global option under settings for the user to change to their taste.

if this then that available ?

hi all,
First i would like to thank everyone especially @jkandasa for such a great project.
i have a hydroponics greenhouse and i was wondering if with some modification can this project be used to automate some of the processes ?

1- is it possible to trigger an event based on a sensor ?
ie: when temp is <10c> then turn relay 1 (heater)

i am also looking to use spark photon and tinysine wifibee also known as RN-XV module.
please let me know if this project could fit what i have in mind.
some of the hardware will be used is:
unipi relay board
2X sparkfun photon weather boards
unipi 1-wire board for sensors
ph, conductivity probes board by https://www.whiteboxes.ch/shop/tentacle/
and bartendro dosing pumps using raspberry pi gateway.

many thanks.

Changing time format

MyController graphical and other time was showing in 24 hours format till 0.0.2-alpha4, but from 0.0.2-alpha5 it's showing in 12 hours format.

Give an option in settings so users can set with their interest.

When stop MyController.org server in RPI throws exception

When we stop MyController.org server in Raspberry PI with serial gateway throws the following exception,

2015-09-25 22:41:11,006 ERROR [MyController.org Shutdown-Hook] [org.mycontroller.standalone.gateway.serialport.SerialPortPi4jImpl:81] exception on pi4j serialport,
java.io.IOException: Failed to close serial file descriptor. (Error #9)
        at com.pi4j.jni.Serial.close(Native Method) ~[mycontroller-standalone-0.0.2-alpha3-single.jar:na]
        at com.pi4j.io.serial.impl.SerialImpl.close(SerialImpl.java:356) ~[mycontroller-standalone-0.0.2-alpha3-single.jar:na]
        at org.mycontroller.standalone.gateway.serialport.SerialPortPi4jImpl.close(SerialPortPi4jImpl.java:75) ~[mycontroller-standalone-0.0.2-alpha3-single.jar:na]
        at org.mycontroller.standalone.StartApp.stopServices(StartApp.java:257) [mycontroller-standalone-0.0.2-alpha3-single.jar:na]
        at org.mycontroller.standalone.AppShutdownHook$1.run(AppShutdownHook.java:33) [mycontroller-standalone-0.0.2-alpha3-single.jar:na]

Icons for Sensors

Can we have an option to upload icons and assign icons to sensors. Adding icons help in quickly identifying the sensor.

Node types display only valid options

While adding/editing node, we can define type of the node, now it is listing all the sensor types. we should list only S_ARDUINO_REPEATER_NODE or S_ARDUINO_NODE

Shows client time stamp in GUI

If server and client running in different timezone, in client side GUI shows all time in client time zone. This will confuse end user.

Implement MQTT Broker to serve other controllers and clients

Publish all the events from Serial (or) Ethernet gateway to MQTT. Also public MyController.org related events. We can add any number of controllers and clients. As we are implementing in controller side should support for authentication, hence we can use it in public network.

List senor types and sensor variable type in order

Sensor Types and Sensor Variable types are not listened in alphabetic order. Currently it's listing by enum number which is difficult for user when adding sensor, they have to search from top to bottom.
If we list these types in alphabetically order they can identify easily

Provide option to feed Firmware Type and Version id manually also

In current approach we could not provide type id and version id of firmware manually. Some cases it's giving trouble. Say I'm running 20 nodes on type id 2 and for some reason I deleted type and re created the same type again, but it generates different id, hence all the 20 nodes firmware will update again to avoid this situation we should provide an option to enter type and version id manually. In the above case we can use same id again to avoid duplicate update on nodes.

Document for REST API

MyController GUI and back-end communicating via REST API, if we document REST API details. user can create their own client.

Disable Send payload for readonly sensors

Disable Send payload for read-only sensors,
By mistaken if we send payload for read-only sensors, it's taken as reading of that sensor. To avoid this we should give some option to disable send payload for each sensor.

Add one more option globally to enable/disable 'Send Payload'.

User ID

In the form to ad a user you ask for a user id and in the users list is called username it´s a little bit confusing.

Map sensors with sensors value

MySensors each sensor type(S_) will support multiple sensor variable (V_) types. But in MyController current design supports only one type of variable for each type of sensor.

MyController should be redesigned as per the map http://www.mysensors.org/download/serial_api_15 also map should not be static, should be dynamic, so user can change it as per their specification

Multilanguage Support

Hi,
can you please add multilange support for MyController.org .
At the moment this can be made quick.After Mycontroller is growing more and more it become very difficult.

Regards Didi

Retry Serial Port and Virtual Port support

mycontroller makes 1 attempt at connecting to the serial port and then stops. It would be nice if some retries were attempted.

I am using a pseduo terminal to define a static port name but mycontroller does not successfully connect to this virtual port. I am not sure why.

Disable Timer failed, if it's a cron job

Build: 0.0.2-alpha5
Unable to disable timer if it's a cron job, throws the following exception,

com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of int from String value '0 45 1-23/2 ? * *': not a valid Integer value
 at [Source: Acme.Serve.Serve$ServeInputStream@240b7da9; line: 1, column: 1073] (through reference chain: org.mycontroller.standalone.db.tables.Timer["frequencyData"])

Export Sensor Data

Would be very useful to be able to export specific sensor data so it can be used in another system for further analysis (spreadsheet etc).

Even just a simple CSV data download would be a good start and maybe some filters to select the data range to download. If it was from the Graph screen it could perhaps download the selected data range there?

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.