GithubHelp home page GithubHelp logo

telenot's Introduction

TELENOT_NODEJS

Program to read the states for several contacts from a Telenot alarm system using the GMS-Protcol. To recognize the data there is a REGEG pattern for different firmwares. For 25.56 it's for Meldebreiche /^(.*)6846466873023a24000500020(.*?)16$/ and for Meldegruppen /^683e3e6873023224(.*?)16$/. Lately I updated to Firmware 33.68 where the REGEG string has changed for Meldebreiche /^(.*)6860606873025424000500020(.*?)16$/ and for Meldegruppen /^689393687302872400000001(.*?)16$/.

Updates

  • 2019-02-15:
    • adjust source code to eslint and airbnb style guide;
    • Changed REGEG for firmware 33.68.
    • added new branch for homie and converted master into plain mqtt
  • 2019-03-24:
    • added docker-compose.yaml file. You can now start the container (including the build process) using docker-compose up -d --build which makes setup easier. For setting up the env-variables, create a .env file and add the parameters.
  • 2019-11-16:
    • added posibility to connect to MQTT broker with username and password. You need to a provice the environment variables MQTTUSER / MQTTPASSWORD.
    • added posibility to discover the bit positions for the changes. You need to set the env-variable DISCOVER = true and LOG_LEVEL should be DEBUG.
    • refactoring for decode method.
    • in the config.js file you need to provide the bit position for the sensor (use DISCOVERY to find the bit position)
  • 2020-12-17:
    • added new option to get current states. This is helpful if you connect to the mqtt broker but have missed the previous changes. E.g. when starting Home Assistant you can get all states and changes by requesting them with the state topic defined at config.js file
    • change identification of entity by using the hex position which is also shown in the Complex X program. This reduces the need for discovery of items.
    • refactor decode method to match new requirements with hex adress

Idea

As the Telenot KNX Gateway is quite expensive, I started research for another solution. Some people already got a solution working for Loxone, which I took as a reference. Then I started to implement a solution in Python which was working but caused high CPU usage running as a docker container (see python branch). So I decided to implement it in Javascript using node.js. This is my first Javascript project so it might not follow best practices. I'm welcome for tips / best-practices.

Run

You can either run the program using your local node.js version or run it using docker. For Docker you need to build the docker image using docker build -t michelmu/telenot-nodejs . afterwards you can start the container using docker run --name telenot-nodejs --restart=always -d michelmu/telenot-nodejs You can pass some config variables also as environment variables:

PARAMETER Description
MQTTHOST name or ip for the mqtt broker
MQTTPORT port for the mqtt broker
MQTTUSER user for mqtt broker
MQTTPASSWORD password for the mqtt user
TELNETHOST name or ip for the socket adapter
TELNETPORT port for the socket adapter
LOGLEVEL Posible log levels are ["error", "warn", "info", "verbose", "debug", "silly"]
DISCOVER Discover bit positions on change
PUBLISHTOPIC The topic to get current item states

This will result in:

docker run --name telenot-nodejs \
  --restart=always \
  -d \
  -e MQTTHOST="mqtt://host.name" \
  -e MQTTPORT="1883" \
  -e MQTTUSER="mqtt" \
  -e MQTTPASSWORD="secret"
  -e TELNETHOST="192.168.1.22" \
  -e TELNETPORT="1234" \
  -e PUBLISHTOPIC="telenot/alarm/publish"
  michelmu/telenot-nodejs

You can also get a prebuild docker image -- michelmu/telenot

Hardware

To get the serial data to the ethernet bus I use the following converter: USR-TCP232-302 Tiny - RS232 to Ethernet TCP-IP-Server-Modul (ordered at Amazon). In my program I can connect to this module using a socket connection and get the data.

To-Do's

  • setup Mocha as Test Framework

telenot's People

Contributors

dependabot[bot] avatar michelde avatar

Watchers

 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.