loxone2mqtt
v0.0.0-development
Published
Gateway for Loxone™ miniserver to communicate with mqtt broker
Downloads
8
Readme
loxone2mqtt
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:
- https://github.com/mqtt-smarthome topic and payload format
- based on xyz2mqtt with yalm for logging and yargs (in progress)
- teduced and simplified code (in progress)
- https://github.com/mqtt-smarthome topic and payload format
For communication with miniserver is used WebSocket api described in [Loxone™ API Documentation] (https://www.loxone.com/enen/kb/api/)
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"
}
}