Code Monkey home page Code Monkey logo

node-lox-mqtt-gateway's Introduction

node-lox-mqtt-gateway

Version npmnpm Downloads

NPM

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

node-lox-mqtt-gateway's People

Contributors

alladdin avatar christiantf avatar dusanmsk avatar fundy77 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.