Skip to content
Gateway for Loxone™ miniserver to communicate with mqtt broker
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
config
lib
.gitignore
LICENSE
README.md
package.json

README.md

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"
    }
}
You can’t perform that action at this time.