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-tydom-cedriceugeni

v0.29.0

Published

Homebridge plugin to manage Tydom devices by Delta Dore

Downloads

25

Readme

homebridge-tydom


Homebridge plugin to easily manage Tydom hardware by Delta Dore from Apple HomeKit.

  • Compatible with Homebridge v1.6+ and v2.0.

  • Rely on node-tydom-client to communicate with an existing Tydom bridge (required).

  • Properly propagates external events into Apple HomeKit.

  • Built with TypeScript for static type checking with exported types along the library.

  • Supports Webhooks to trigger non-homekit dependent actions or notifications.

Documentation

Installation

  1. Add homebridge-tydom plugin to your homebridge install:
{
  "private": true,
  "description": "This file keeps track of which plugins should be installed.",
  "dependencies": {
    "homebridge-tydom-cedriceugeni": "^0.29.0"
  }
}
  1. Configure the homebridge-tydom platform, providing your Tydom identifiers:
{
  "bridge": {
    "name": "Homebridge 27C9",
    "username": "0E:21:1B:E7:27:C9",
    "port": 53619,
    "pin": "031-45-154"
  },
  "accessories": [],
  "platforms": [
    {
      "platform": "Tydom",
      "hostname": "mediation.tydom.com",
      "localHostname": "192.168.0.X",
      "username": "001A25123456",
      "password": "YourPassw0rd",
      "debug": true
    }
  ]
}

Your username is the MAC Address of your local Tydom hardware, it should be 001A25 + your 6-character home ID that you can find in the mobile app.

The password for newer Tydom setups can be auto-generated by the mobile application and hard to get. Only solution for now is to use some SSL Proxying application on your mobile to inspect the requests. You can follow the following guide from @aure-olivier to get it.

For your password, you can also use an environment variable HOMEBRIDGE_TYDOM_PASSWORD with the base64 encoded value of your password.

Example: HOMEBRIDGE_TYDOM_PASSWORD=Zm9vYmFyYmF6 for a foobarbaz password (echo -n "foobarbaz" | base64)

  1. Configure the locale used for the labels (supported languages: French (default) & English) using the HOMEBRIDGE_TYDOM_LOCALE environment variable with value fr or en.

SecuritySystem

You can also manage your TYXAL+ security system from HomeKit (but it requires your alarm pin code):

As HomeKit security system has 3 active levels: stay, night, away you can configure which zones are linked to these active levels (away is by default every zones).

  1. You need to add the following to the config settings field (check the logs for your actual device id).
{
  "platforms": [
    {
      "settings": {
        "1521931577": { "aliases": { "stay": [3], "night": [2, 3] } }
      }
    }
  ]
}
  1. For the pin,

You can either add a pin field:

{
  "platforms": [
    {
      "settings": {
        "1521931577": { "pin": "123456", "aliases": { "stay": [3], "night": [2, 3] } }
      }
    }
  ]
}

Or you can also use an environment variable HOMEBRIDGE_TYDOM_PIN with the base64 encoded value of your pin (useful for containerized deployments where secrets are injected via environment variables).

You can optionnaly rename zones (default is Zone 1, Zone 2, etc.),

{
  "platforms": [
    {
      "settings": {
        "1521931577": { "zones": ["1st Floor", "Ground Floor", "Garden"] }
      }
    }
  ]
}

GarageDoorOpener

You can customize the default GarageDoorOpener delay (defaults to 20 seconds)

Value is in milliseconds:

{
  "platforms": [
    {
      "settings": {
        "1529094720": { "delay": 10000 } // 10 seconds
      }
    }
  ]
}

You can also configure an autoCloseDelay

{
  "platforms": [
    {
      "settings": {
        "1529094720": { "autoCloseDelay": 300000 } // 5 minutes
      }
    }
  ]
}

Webhooks

You can specify webhooks in your config.json to receive non homekit-dependent notifications.

For now all SecuritySystem events are relayed and we only support discord.

{
  "platforms": [
    {
      "webhooks": [
        {
          "url": "https://discord.com/api/webhooks/123456/abdcdef",
          "type": "discord",
          "level": "debug"
        }
      ]
    }
  ]
}

Category overrides (eg. Fan)

You can override categories of devices (eg. some light switch used to manage a fan)

  1. You need to add the following to the config settings field (check the logs for your actual device id).
{
  "platforms": [
    {
      "settings": {
        "1528565701": { "category": 3 }
      }
    }
  ]
}

3 being the Categories.FAN number.

You can find the global list here

Supported hardware

It is currently supporting the following devices (have them at home).

But should support many more similar devices out of the box.

Some other hardware that should work thanks to the community feedback:

It is relatively easy to add new hardware so don't hesitate to create a new issue.

Local mode and fallback

By default, the plugin connects to the Delta Dore remote mediation server using hostname, usually mediation.tydom.com. You can enable a local fallback by keeping hostname on the remote server and adding localHostname with the local IP or hostname of your Tydom bridge.

With this setup, the plugin first tries the primary hostname. If the remote server is unavailable at startup or during normal use, it switches to localHostname and keeps HomeKit working through your local network. While the local fallback is active, the plugin does not try both hosts for every request; instead, it retries the primary hostname every primaryRetryInterval seconds and switches back to the remote connection as soon as it is available again.

Example configuration:

{
  "platform": "Tydom",
  "hostname": "mediation.tydom.com",
  "localHostname": "192.168.0.X",
  "primaryRetryInterval": 300,
  "username": "001A25XXXXXX",
  "password": "YourPassw0rd",
  "debug": true
}

Relevant fields:

| Field | Description | | ---------------------- | ----------------------------------------------------------------------------------------------- | | hostname | Primary Tydom endpoint. Use mediation.tydom.com for the regular remote Delta Dore connection. | | localHostname | Optional local Tydom IP or hostname used when the primary endpoint is unavailable. | | primaryRetryInterval | Optional retry interval, in seconds, while running on the local fallback. Defaults to 300. |

To find the local IP of your Tydom bridge, the most reliable method is to open your router or internet box administration page and look at the DHCP/client list. Search for a device named Tydom, Delta Dore, or for a MAC address starting with 00:1A:25, which matches the usual Tydom username prefix. You can then verify the IP from a terminal with:

curl -k "https://192.168.0.X/mediation/client?mac=001A25XXXXXX&appli=1"

A 401 Unauthorized response is expected and means the Tydom bridge is reachable locally.

Tydom 2.0 firmware can sometimes have trouble dealing with multiple local clients, locking you away from the mobile app. If the mobile app stops working locally during tests, stop Homebridge and wait a short moment before trying again.

Legacy TLS/OpenSSL for local mode

The local Tydom bridge uses a self-signed certificate, and some firmware versions also require legacy TLS renegotiation. For local mode, NODE_TLS_REJECT_UNAUTHORIZED=0 is usually required. On recent Node.js/OpenSSL versions, you may also see an error such as ERR_SSL_UNSAFE_LEGACY_RENEGOTIATION_DISABLED; in that case, configure OpenSSL legacy renegotiation for the Homebridge Node.js process.

Only enable this for a trusted Homebridge process that needs local Tydom access.

Case 1: You start Homebridge yourself from a shell

Create an OpenSSL configuration file:

mkdir -p "$HOME/.homebridge"
cat > "$HOME/.homebridge/openssl-legacy.cnf" <<'EOF'
openssl_conf = openssl_init

[openssl_init]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
Options = UnsafeLegacyRenegotiation
EOF

Then start Homebridge with the two Node/OpenSSL environment variables added to your usual command:

NODE_TLS_REJECT_UNAUTHORIZED=0 \
NODE_OPTIONS="--openssl-shared-config --openssl-config=$HOME/.homebridge/openssl-legacy.cnf" \
homebridge

If you usually pass a custom Homebridge user directory, keep it at the end of the same command:

NODE_TLS_REJECT_UNAUTHORIZED=0 \
NODE_OPTIONS="--openssl-shared-config --openssl-config=$HOME/.homebridge/openssl-legacy.cnf" \
homebridge -U /path/to/homebridge

Case 2: You use the Homebridge Raspberry Pi image

On the official Homebridge Raspberry Pi image, open the terminal from the Homebridge web interface and run the following commands. They create the OpenSSL configuration in /var/lib/homebridge and add the environment variables to the homebridge systemd service.

sudo tee /var/lib/homebridge/openssl-legacy.cnf > /dev/null <<'EOF'
openssl_conf = openssl_init

[openssl_init]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
Options = UnsafeLegacyRenegotiation
EOF

sudo mkdir -p /etc/systemd/system/homebridge.service.d
sudo tee /etc/systemd/system/homebridge.service.d/override.conf > /dev/null <<'EOF'
[Service]
Environment="NODE_TLS_REJECT_UNAUTHORIZED=0"
Environment="NODE_OPTIONS=--openssl-shared-config --openssl-config=/var/lib/homebridge/openssl-legacy.cnf"
EOF

sudo systemctl daemon-reload
sudo systemctl restart homebridge

After the restart, check the Homebridge logs from the web interface. If the local Tydom connection works, you should see the plugin connect to localHostname when the primary host is unavailable.

To remove this OpenSSL override later:

sudo rm /etc/systemd/system/homebridge.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart homebridge

Configurations

| Field | Type | Description | | | -------------------- | ------------------- | --------------------------- | ------------------------------------------ | | hostname | string | Tydom hostname | | | localHostname | string | Local Tydom fallback host | Optional local IP or hostname | | primaryRetryInterval | number | Primary retry interval | Seconds, defaults to 300 | | username | string | Tydom username | | | password | string | Tydom password | | | settings | Record<string, ?> | Device settings (overrides) | | | includedDevices | Array<string> | number> | Include only devices with following ids | | excludedDevices | Array<string> | number> | Exclude all devices with following ids | | includedCategories | Array<string> | number> | Include only categories with following ids | | excludedCategories | Array<string> | number> | Exclude all categories with following ids |

  • The settings field enables you to override the name or homekit category of your Tydom device (check homebridge log for the device ids).

You can also use the following environment variables (base64 encoded values)

| Env | Description | | ------------------------- | --------------- | | HOMEBRIDGE_TYDOM_PASSWORD | Tydom password | | HOMEBRIDGE_TYDOM_PIN | Tyxal+ pin |

Help

If you open a new issue, please provide a dump of your tydom configuration using node-tydom-client:

npx tydom-client request /configs/file /devices/data /devices/meta /devices/cmeta --file tydom_output.json --username 001A25XXXXXX --password XXXXXX

Will create the file tydom_output.json to upload, you can use https://gist.github.com.

An homebridge log with debug enabled while using the tydom official app (to trace working requests) can also help a lot.

Debug

This library uses debug to provide high verbosity logs, just pass the following environment:

DEBUG=homebridge-tydom

You might also want to debug node-tydom-client

DEBUG=homebridge-tydom,tydom-client

Alternatively, you can set debug to true in the plugin's configuration.

Available scripts

| Script | Description | | ---------- | ------------------------------ | | start | Start homebridge in debug mode | | lint | Run eslint static tests | | format | Run prettier formatting | | check | Run TypeScript type checking | | test | Run lint, format, and check | | build | Compile the library with tsup |

Authors

Olivier Louvignes

  • http://olouv.com
  • http://github.com/mgcrea

License

The MIT License

Copyright (c) 2020 Olivier Louvignes <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.