loxone2mqtt

0.0.0-development • Public • Published

loxone2mqtt

NPM version Dependency Status Build Status js-semistandard-style License: MIT

Gateway for Loxone™ miniserver to communicate with mqtt broker with the https://github.com/mqtt-smarthome topic and payload format.

This is a fork of node-lox-mqtt-gateway (c) 2016 Ladislav Dokulil , heavily modified and rewritten to suite my needs.

Notable changes:

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 loxone2mqtt

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/{state|set}/category/room/control_name/

example

lox/state/light/bedroom/main_light

States of Loxone™ miniserver to MQTT

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

topic

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

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_prefix/set/category/room/control_name/

data

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

example of whole message (todo)

{
    "topic": "lox/set/light/bedroom/main_light",
    "val": 1
}

Configuration (todo - switch to yargs command line)

configuration file has 2 sections

sections

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

{
    "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"
    }
}

Readme

Keywords

Package Sidebar

Install

npm i loxone2mqtt

Weekly Downloads

1

Version

0.0.0-development

License

MIT

Last publish

Collaborators

  • krambox