National Pizza Magistrate

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

    Install

    npm i loxone2mqtt

    DownloadsWeekly Downloads

    1

    Version

    0.0.0-development

    License

    MIT

    Last publish

    Collaborators

    • krambox