node-lox-mqtt-gateway
Version:
Gateway for Loxone™ miniserver to communicate with mqtt broker
174 lines (120 loc) • 3.89 kB
Markdown
[](https://www.npmjs.com/package/node-lox-mqtt-gateway)[](https://www.npmjs.com/package/node-lox-mqtt-gateway)
[](https://nodei.co/npm/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](http://www.loxone.com/enen/service/documentation/api/api.html)
This is experimental version.
Use it at your own risk.
`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_prefix/category/room/control_name/{state|cmd}`
**example**
`lox/light/bedroom/main_light/state`
If you tries to get the state of specific control you need to subscribe
`(MQTT topic base)/state`
in **JSON** format.
**TODO:** Make documentation for all controls
If you could make some action you must publish message with:
`(MQTT topic base)/cmd`
There is a command string like in [Loxone™ API Structure file documentation](http://www.loxone.com/tl_files/loxone/downloads/other/loxone-structure-file.pdf)
```json
{
"topic": "lox/light/bedroom/main_light/cmd",
"data": "on"
}
```
configuration file has 3 sections
It contains array of transports with its options.
```json
{
"winston": [{
"Console": {
"level": "debug"
},
"File": {
"level": "info",
"filename": "somefile.log"
}
}]
}
```
It contains host and options for [mqtt](https://github.com/mqttjs/MQTT.js).
[](https://github.com/mqttjs/MQTT.js#mqttclientstreambuilder-options)
```json
{
"mqtt": {
"host": "mqtt://localhost:1883",
"options": {
"username": "test",
"password": "test1234"
}
}
}
```
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
```json
{
"miniserver": {
"host": "192.168.0.77:80",
"username": "testlox",
"password": "1234",
"readonly": false,
"encrypted": true,
"mqtt_prefix": "lox"
}
}
```
You could use your own config dir
`lox-mqtt-gateway --NODE_CONFIG_DIR='/your/config/dir'`
```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"
}
}
```