npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

homebridge-knx-v2

v2.3.0

Published

KNX interface for an IP gateway — Homebridge v2-compatible fork of homebridge-syntex-knx (adds lock type; vendors a patched syntex-dynamic-platform)

Readme

Homebridge SynTex KNX — v2 fork

Homebridge v2-compatible fork of homebridge-syntex-knx. Based on upstream 1.0.4-b71. The [email protected] dependency is vendored into lib/ (with the fixes below applied directly), so there's no post-install patching — it installs and loads reliably in Homebridge's shared node_modules (where a hoisted dependency defeats patch-package). Changes vs. upstream:

  • Fixes the load-time crash on Homebridge v2 (Cannot find module 'homebridge' / removed top-level Formats/Perms) — connection.js now reads them from homebridge.hap.
  • Declares engines.homebridge: ^1.6.0 || ^2.0.0.
  • Avoids the broken upstream b72/b91 dependency pin ([email protected], never published) so it installs cleanly.
  • Adds a lock device type (HomeKit LockMechanism) — valueLockCurrentState, targetLockTargetState (DPT 1.001). Example:
    {
      "type": "lock",
      "datapoint": { "value": "1.001", "target": "1.001" },
      "address": { "status": { "value": "1/1/1", "target": "1/1/1" }, "control": { "target": "1/1/1" } },
      "inverted": false
    }
    status.value = lock-state feedback (optional); control.target = lock/unlock command. With no status.value, current state mirrors the last command.
  • Adds a doorbell device type (HomeKit Doorbell service) — a rising edge on the KNX group address fires a single-press "ding"; never fires on restart. Read-only:
    { "type": "doorbell", "address": { "status": { "value": "1/1/2" } }, "datapoint": "1.001" }

The Homebridge platform name is still SynTexKNX, so existing config (and configs converted from homebridge-knx) work unchanged. Install: sudo npm install -g homebridge-knx-v2.


Homebridge SynTex KNX

NPM Recommended Version NPM Beta Version NPM Downloads GitHub Commits GitHub Code Size

A simple plugin to control KNX devices. This plugin is made to cooperate with Homebridge: https://github.com/nfarina/homebridge It connects to a KNX IP Gateway and offers some special tweaks.

Core Features

  • IP Gateway Connection: Connect to your KNX IP Gateway trough your network.
  • Device Control: View and control your KNX devices.
  • HTTP Access: Update and read device states via HTTP calls.
  • Automation: We integrated our powerful automation API for fast and complex automation.

Troubleshooting

GitHub Issues

  • Report us your Issues
  • Join our Discord Server

Discord


Installation

  1. Install homebridge using: sudo npm install -g homebridge
  2. Install this plugin using: sudo npm install -g homebridge-syntex-knx
  3. Update your config.json file. See snippet below.
  4. Restart the Homebridge Service with: sudo systemctl restart homebridge; sudo journalctl -fau homebridge

Example Config

Info: If the baseDirectory for the storage can't be created you have to do it by yourself and give it full write permissions!

  • sudo mkdir -p /var/homebridge/SynTex/ ( create the directory )
  • sudo chmod -R 777 /var/homebridge/SynTex/ ( permissions for many processes )
  • sudo chown -R homebridge /var/homebridge/SynTex/ ( permissions only for homebridge )
"platforms": [
    {
        "platform": "SynTexKNX",
        "baseDirectory": "/var/homebridge/SynTex",
        "ip": "192.168.1.100",
        "options": {
            "port": 1714,
            "language": "us",
            "disablePreload": false
        },
        "log": {
            "debug": false
        },
        "accessories": [
            {
                "id": "knx1",
                "name": "Sensor Accessory",
                "services": [
                    {
                        "address": {
                            "status": "1/0/0"
                        },
                        "type": "contact"
                    }
                ]
            },
            {
                "id": "knx2",
                "name": "Boolean Accessory",
                "services": [
                    {
                        "address": {
                            "status": ["1/1/0", "1/1/1"],
                            "control": ["1/1/0", "1/1/1"]
                        },
                        "type": "switch"
                    }
                ]
            },
            {
                "id": "knx3",
                "name": "Dimmer Accessory",
                "services": [
                    {
                        "address": {
                            "status": "1/1/2",
                            "control": "1/1/2"
                        },
                        "type": "dimmer"
                    }
                ]
            },
            {
                "id": "knx4",
                "name": "RGB Accessory",
                "services": [
                    {
                        "address": {
                            "status": "1/1/3",
                            "control": "1/1/3"
                        },
                        "type": "rgb"
                    }
                ]
            },
            {
                "id": "knx5",
                "name": "Window Covering Accessory",
                "services": [
                    {
                        "address": {
                            "status": "1/1/4",
                            "control": "1/1/4"
                        },
                        "delay": {
                            "up": 11000,
                            "down": 10000
                        },
                        "type": "blind",
                        "name": "Up / Down"
                    },
                    {
                        "address": {
                            "status": "1/1/5",
                            "control": "1/1/5"
                        },
                        "type": "switch",
                        "name": "Stop"
                    }
                ]
            },
            {
                "id": "knx6",
                "name": "Inverted Accessory",
                "services": [
                    {
                        "datapoint": "1.001",
                        "address": {
                            "status": "1/0/0"
                        },
                        "type": "contact",
                        "inverted": true
                    }
                ]
            },
            {
                "id": "knx7",
                "name": "Multi Accessory",
                "services": [
                    {
                        "address": {
                            "status": "1/0/0"
                        },
                        "type": "contact",
                        "name": "Contact"
                    },
                    {
                        "address": {
                            "status": "1/0/1"
                        },
                        "type": "humidity",
                        "name": "Humidity"
                    },
                    {
                        "address": {
                            "status": "1/0/2"
                        },
                        "type": "leak",
                        "name": "Leak"
                    },
                    {
                        "address": {
                            "status": "1/0/3"
                        },
                        "type": "light",
                        "name": "Light"
                    },
                    {
                        "address": {
                            "status": "1/0/4"
                        },
                        "type": "motion",
                        "name": "Motion"
                    },
                    {
                        "address": {
                            "status": "1/0/5"
                        },
                        "type": "occupancy",
                        "name": "Occupancy"
                    },
                    {
                        "address": {
                            "status": "1/0/6"
                        },
                        "type": "smoke",
                        "name": "Smoke"
                    },
                    {
                        "address": {
                            "status": "1/0/7"
                        },
                        "type": "temperature",
                        "name": "Temperature"
                    },
                    {
                        "address": {
                            "status": "1/1/1",
                            "control": "1/1/1"
                        },
                        "type": "led",
                        "name": "LED"
                    },
                    {
                        "address": {
                            "status": "1/1/1",
                            "control": "1/1/1"
                        },
                        "type": "outlet",
                        "name": "Outlet"
                    },
                    {
                        "address": {
                            "status": "1/1/1",
                            "control": "1/1/1"
                        },
                        "type": "switch",
                        "name": "Switch"
                    },
                    {
                        "address": {
                            "status": "1/1/2",
                            "control": "1/1/2"
                        },
                        "type": "dimmer",
                        "name": "Dimmer"
                    },
                    {
                        "address": {
                            "status": "1/1/3",
                            "control": "1/1/3"
                        },
                        "type": "rgb",
                        "name": "RGB"
                    },
                    {
                        "datapoint": "5.001",
                        "address": {
                            "status": "1/1/4",
                            "control": "1/1/4"
                        },
                        "delay": {
                            "up": 11000,
                            "down": 10000
                        },
                        "type": "blind",
                        "name": "Blind"
                    },
                    {
                        "datapoint": "1.001",
                        "address": {
                            "status": "1/1/1",
                            "control": "1/1/1"
                        },
                        "type": "switch",
                        "name": "Inverted Switch",
                        "inverted": true
                    }
                ]
            }
        ]
    }
]

Required Parameters

  • platform is always SynTexKNX
  • baseDirectory The path where cache data is stored.
  • ip The IP address of your KNX gateway.
  • accessories For the accessory config.

Optional Parameters

  • port To control your accessory over HTTP calls.
  • language You can use your country initials if you want to change it ( Currently supported: us, en, de )
  • disablePreload Disable reading device states after reboot ( prevents the bus from overflow )

Log Parameters

  • Disable certain log level: error, warn, info, read, update, success and debug ( for example debug: false )

Accessory Config

  • Every accessory needs these parameters: id, name and services ( required )
  • id has to be either a physical group address or another random unique text ( no duplicates! )
  • name could be anything.
  • services The services of your accessory.
    • name could be anything.
    • type Define the service type ( blind, contact, dimmer, fan, humidity, leak, led, light, motion, occupancy, outlet, rain, relais, rgb, smoke, switch, temperature, thermostat )
    • address can include your status and probably control group address from your knx system.
    • You can customize group address datapoints by adding datapoint ( KNX datapoint types )
    • For Boolean and Percentage Devices you can add inverted ( inverts the state from false -> true / 0 -> 100 )
    • For Window Coverings you can add delay for up and down ( to calibrate the time it takes to open / close the covering )

SynTex UI

Control and set up your devices by installing homebridge-syntex This plugin is made for plugin management, automation system and device control.

Check out the GitHub page for more information: https://github.com/SynTexDZN/homebridge-syntex

Update KNX Device

  1. Open http:// Bridge IP /devices?id= Device ID &value= New Value
  2. Insert the Bridge IP and Device ID
  3. For the New Value you can type this pattern:
  • For boolean devices: true / false ( dimmer, fan, led, outlet, rgb, switch )
  • For numeric devices: 10 / 12.4 ( blind, thermostat )
  • For dimmable lights add &brightness= New Brightness ( has to be a number )
  • For colored lights add &hue= New Hue ( has to be a number )
  • For colored lights add &saturation= New Saturation ( has to be a number )
  • For thermostats add &target= New Target Temperature ( has to be a number )
  • For thermostats add &state= New Current Heating Cooling State ( has to be a number )
  • For thermostats add &mode= New Target Heating Cooling State ( has to be a number )
  • For fans add &direction= New Rotation Direction ( has to be a number )
  • For fans add &speed= New Rotation Speed ( has to be a number )
  • For accessories with multiple service types add &type= SERVICETYPE
  • For accessories with multiple services with more than one of the same service type add &counter= SERVICENUMBER
    ( First of that type = 0, second = 1 .. )

Example: http://homebridge.local:1714/devices?id=ABCDEF1234567890&type=dimmer&counter=0&value=true&brightness=100
( Updates the value and brightness of ABCDEF1234567890 to turned on, 100% brightness for example )

Read KNX Device

  1. Open http:// Bridge IP /devices?id= Device ID
  2. Insert the Bridge IP and Device ID
  • For accessories with multiple service types add &type= SERVICETYPE
  • For accessories with multiple services with more than one of the same service type add &counter= SERVICENUMBER
    ( First of that type = 0, second = 1 .. )

Example: http://homebridge.local:1714/devices?id=ABCDEF1234567890
( Reads the state of ABCDEF1234567890 for example )

Remove KNX Device

  1. Open http:// Bridge IP /devices?id= Device ID &remove=CONFIRM
  2. Insert the Bridge IP and Device ID
  • To remove a specific service add &type= SERVICETYPE
  • To remove a specific service from an accessory with more than one of the same service type add &counter= SERVICENUMBER
    ( First of that type = 0, second = 1 .. )

Example: http://homebridge.local:1714/devices?id=ABCDEF1234567890&remove=CONFIRM
( Removes ABCDEF1234567890 from the Config and Home App )


Automation

To enable the automation module you have to create a file named automation.json in your baseDirectory >> automation or install the homebridge-syntex plugin to create them via UI ( only between SynTex plugins ) Example: For manual configuration update your automation.json file. See snippet below.

{
    "automation": [
        {
            "id": 0,
            "name": "Demo Automation",
            "active": true,
            "trigger": {
                "logic": "AND",
                "groups": [
                    {
                        "logic": "OR",
                        "blocks": [
                            {
                                "id": "multi2",
                                "name": "Multi Device",
                                "letters": "F0",
                                "plugin": "SynTexWebHooks",
                                "operation": "<",
                                "state": {
                                    "value": 1000
                                }
                            },
                            {
                                "operation": "=",
                                "time": "16:00",
                                "options": {
                                    "stateLock": true
                                }
                            }
                        ]
                    },
                    {
                        "logic": "AND",
                        "blocks": [
                            {
                                "id": "multi1",
                                "name": "Multi Switch",
                                "letters": "41",
                                "plugin": "SynTexWebHooks",
                                "operation": "=",
                                "state": {
                                    "value": false
                                },
                                "options": {
                                    "stateLock": true
                                }
                            },
                            {
                                "operation": "=",
                                "days": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5
                                ]
                            }
                        ]
                    }
                ]
            },
            "result": [
                {
                    "id": "knx5",
                    "name": "Multi Accessory",
                    "letters": "80",
                    "plugin": "SynTexKNX",
                    "operation": "=",
                    "state": {
                        "value": true
                    }
                },
                {
                    "id": "extern1",
                    "name": "Extern Accessory",
                    "letters": "40",
                    "bridge": "192.168.1.100",
                    "plugin": "SynTexWebHooks",
                    "operation": "=",
                    "state": {
                        "value": false
                    },
                    "options": {
                        "stateLock": false
                    }
                },
                {
                    "operation": "=",
                    "delay": 1000
                },
                {
                    "url": "http://192.168.1.100:1714/devices?id=ABCDEF1234567890&value=true"
                }
            ]
        }
    ]
}

Required Parameters

  • id A unique ID of your automation.
  • name The name of the automation.
  • active Enable / disable a single automation.
  • trigger What triggers the automation?
    • logic Define a logical operation for your groups ( AND, OR )
    • groups Logical layer one
      • logic Define a logical operation for your blocks ( AND, OR )
      • blocks Logical layer two
  • result What happens when running an automation?
  • options General automation options
    • timeLock Set a timeout to prevent to many executions ( in milliseconds )

Block Configuration

Service Block ( Trigger, Result )

  • id is the same like in your config file ( or in your log )
  • name The name of the accessory.
  • letters See letter configuration below.
  • bridge IP of your other bridge ( optional )
  • plugin Use the platform name of the plugin ( optional, see supported plugins below )
  • operation Use the logical operands ( >, <, = )
  • state The state of your accessory.
    • value is used for the main characteristic.
    • brightness can be used for dimmable / RGB lights.
    • hue can be used for RGB lights.
    • saturation can be used for RGB lights.

Time Block ( Trigger )

  • operation Use the logical operands ( >, <, = )
  • time Define a time point ( e.g. 16:00 )

Weekday Block ( Trigger )

  • operation Use the logical operands ( = )
  • days Set the weekdays ( from 0 to 6 )

Delay Block ( Result )

  • delay Set a timeout ( in milliseconds )

URL Block ( Result )

  • url Fetch an URL.

Letter Configuration

The letters are split into two parts ( characters )

1. Service Type

  • 0 : Occupancy
  • 1 : Smoke
  • 2 : Airquality
  • 3 : RGB
  • 4 : Switch
  • 5 : Relais
  • 6 : Stateless Switch
  • 7 : Outlet
  • 8 : LED
  • 9 : Dimmer
  • A : Contact
  • B : Motion
  • C : Temperature
  • D : Humidity
  • E : Rain
  • F : Light
  • G : Blind
  • H : Thermostat
  • I : Fan

2. Duplicate Counter

  • If there are more services of the same type the counter indicates which is which
  • Simply count from top to bottom.

Example: The first switch in your config has the letters 40, the second 41 and so on ..

Supported Plugins

  • SynTexKNX ( homebridge-syntex-knx )
  • SynTexMagicHome ( homebridge-syntex-magichome )
  • SynTexTuya ( homebridge-syntex-tuya )
  • SynTexWebHooks ( homebridge-syntex-webhooks )

Currently Supported

  • Contact Sensor
  • Humidity Sensor
  • Leak / Rain Sensor
  • Light Sensor
  • Motion Sensor
  • Occupancy Sensor
  • Smoke Sensor
  • Temperature Sensor
  • Switch / Relais / Outlet
  • LED Lights / Dimmable Lights / RGB Lights
  • Blinds / Shutters / Window Coverings
  • Thermostats / Fans