/node-lox-mqtt-gateway

Gateway for Loxone™ miniserver to communicate with mqtt broker

Primary LanguageJavaScriptMIT LicenseMIT

node-lox-mqtt-gateway

Version npmnpm Downloads

NPM

Gateway for Loxone™ miniserver to communicate with mqtt broker

For communication with miniserver is used WebSocket api described in Loxone™ API Documentation

Preamble

This is experimental version.

Use it at your own risk.

Quick start

sudo npm install -g node-lox-mqtt-gateway

lox-mqtt-gateway --NODE_CONFIG='{"mqtt":{"host":"mqtt://localhost:1883","options":{"username":"XXX","password":"YYY"}},"miniserver":{"host":"192.168.0.77:80","username":"XXX","password":"YYY"}}'

MQTT Interface

MQTT topic base

mqtt_prefix/category/room/control_name/{state|cmd}

example

lox/light/bedroom/main_light/state

States of Loxone™ miniserver to MQTT

If you tries to get the state of specific control you need to subscribe

topic

(MQTT topic base)/state

message contains data

in JSON format.

TODO: Make documentation for all controls

MQTT to Loxone™ miniserver actions

If you could make some action you must publish message with:

topic

(MQTT topic base)/cmd

data

There is a command string like in Loxone™ API Structure file documentation

example of whole message

{
    "topic": "lox/light/bedroom/main_light/cmd",
    "data": "on"
}

Configuration

configuration file has 3 sections

sections

winston (logger)

It contains array of transports with its options.

{
    "winston": [{
        "Console": {
            "level": "debug"
        },
        "File": {
            "level": "info",
            "filename": "somefile.log"
        }
    }]
}

mqtt

It contains host and options for mqtt.

Detailed explanation of the options.

{
    "mqtt": {
        "host": "mqtt://localhost:1883",
        "options": {
            "username": "test",
            "password": "test1234"
        }
    }
}

miniserver

It contains:

  • host - miniserver address (hostname:port)
  • username - credentials for miniserver
  • password
  • readonly - if it's set to true then no commands will be send to miniserver - it's for testing and development
  • encrypted - use AES-256-CBC encrypted web sockets
  • mqtt_prefix - topic prefix for Loxone™ messages
{
    "miniserver": {
        "host": "192.168.0.77:80",
        "username": "testlox",
        "password": "1234",
        "readonly": false,
        "encrypted": true,
        "mqtt_prefix": "lox"
    }
}

your own config dir

You could use your own config dir

lox-mqtt-gateway --NODE_CONFIG_DIR='/your/config/dir'

example

/your/config/dir/default.json

{
    "winston": [{
        "Console": {
            "level": "debug",
            "colorize": true,
            "timestamp": true
        }
    }],
    "mqtt": {
        "host": "mqtts://localhost:8883",
        "options": {
            "rejectUnauthorized": false,
            "username": "test",
            "password": "test1234",
            "clientId": "lox_to_mqtt_gateway"
        }
    },
    "miniserver": {
        "host": "192.168.0.77:80",
        "username": "testlox",
        "password": "1234",
        "readonly": false,
        "mqtt_prefix": "lox"
    }
}