Awesome
node-lox-mqtt-gateway
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"
}
}