loxone2mqtt
Version:
Gateway for Loxone™ miniserver to communicate with mqtt broker
161 lines (108 loc) • 4.23 kB
Markdown
[](http://badge.fury.io/js/loxone2mqtt)
[](https://gemnasium.com/github.com/krambox/loxone2mqtt)
[](https://travis-ci.org/krambox/loxone2mqtt)
[](https://github.com/Flet/semistandard)
[](https://opensource.org/licenses/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](https://github.com/alladdin/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_prefix/{state|set}/category/room/control_name/`
**example**
`lox/state/light/bedroom/main_light`
If you tries to get the state of specific control you need to subscribe
`mqtt_prefix/{state|set}/category/room/control_name/`
in **JSON** format.
**TODO:** Make documentation for all controls
If you could make some action you must publish message with:
`mqtt_prefix/set/category/room/control_name/`
There is a command string like in [Loxone™ API Structure file documentation](https://www.loxone.com/dede/wp-content/uploads/sites/2/2016/08/0900_Structure-File.pdf?x94623)
```json
{
"topic": "lox/set/light/bedroom/main_light",
"val": 1
}
```
configuration file has 2 sections
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
{
"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"
}
}
```