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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@plasma2450/node-red-contrib-homekit-bridged

v0.3.9

Published

Node-RED nodes to simulate Apple HomeKit devices. Based on node-red-contrib-homekit, but with support for bridged devices.

Downloads

34

Readme

node-red-contrib-homekit-bridged

Node-RED nodes to simulate Apple HomeKit devices. Based on node-red-contrib-homekit, but with support for bridged devices.

Why this fork?

As Marius Schmeding seems to have abandoned his great work, I decided to fork his repo and to introduce some major rework.

The biggest change is the use of HAP-NodeJS in bridged mode: only add one bridge in the iOS home app to access all your devices! Also, I (believe I) fixed some issues:

  • devices don't show as unreachable after redeploying
  • having more than one device per accessory (in the "old" world) or bridge doesn't lead to iOS losing the parameters for this device anymore

Unfortunately, I had to introduce a new node type homekit-bridge and remove the old homekit-accessory. This means you either have to start over with a new flow or edit it manually. Thankfully, Fredrik Furtenbach published a command line script to aid in the conversion.

If you go for the manual way:

  1. Export your flows.
  2. Delete all flows.
  3. Remove node-red-contrib-homekit.
  4. Install node-red-contrib-homekit-bridged.
  5. Open the exported flow in a text editor and remove the nodes of type homekit-accessory.
  6. Remove the parameter accessory on all of your homekit-services and save the file.
  7. Import the edited flow.
  8. Add a new bridge and change all your services to use it.

Prerequisites

These nodes are based on the extremely awesome HAP-NodeJS -Project which uses an implementation of mdns to provide Bonjour / Avahi capability. Please refer to the HAP-NodeJS Wiki and to mdns for install instructions, if you get stuck on the following.

Install

For Debian / Ubuntu you need to install the following in order to support Bonjour / Avahi

    sudo apt-get install libavahi-compat-libdnssd-dev

Then run the following command in your Node-RED user directory - typically ~/.node-red

    npm install node-red-contrib-homekit-bridged

Docker

You can also pull a docker image containing everything needed to get started, thanks to raymondmm (Raymond Mouthaan).

Please see instructions on Docker Hub.

Nodes

Bridge

The Bridge node is a configuration node, specifying the bridge that iOS sees, i.e. the device that is manually being added by the user. All accessories behind a bridge noded are then automatically added by iOS.

  • Pin Code: Specify the Pin for the pairing process.
  • Port: If you are behind a Firewall, you may want to specify a port. Otherwise leave empty.
  • Manufacturer, Model, Serial Number: Can be anything you want.
  • Name: If you intend to simulate a rocket, then why don't you call it Rocket.

Service

The Service node represents the single device you want to control or query. Every service node creates its own HAP accessory to keep things simple

  • Bridge: On what bridge to host this Service and its Accessory.
  • Manufacturer, Model, Serial Number: Can be anything you want.
  • Service: Choose the type of Service from the list.
  • Name: optional
  • Characteristic Properties: Customise the properties of characteristics.

Input Messages

Input messages can be used to update any Characteristic that the selected Service provides. Simply pass the values-to-update as msg.payload object.

Example: to signal that an Outlet is turned on and in use, send the following payload

{
    "On": 1,
    "OutletInUse": 1
}

Hint: to find out what Characteristics you can address, just send {"foo":"bar"} and watch the debug tab ;)

Output Messages

Output messages are in the same format as input messages. They are emitted from the node when it receives Characteristics updates from a paired iOS device.

Supported Types

The following is a list of Services that are currently supported. If you encounter problems with any of them please file an Issue.

  • Air Quality Sensor
  • Battery Service
  • Camera Control
  • Camera RTP Stream Management
  • Carbon Dioxide Sensor
  • Carbon Monoxide Sensor
  • Contact Sensor
  • Door
  • Doorbell
  • Fan
  • Garage Door Opener
  • Humidity Sensor
  • Leak Sensor
  • Light Sensor
  • Lightbulb
  • Lock Management
  • Lock Mechanism
  • Microphone
  • Motion Sensor
  • Occupancy Sensor
  • Outlet
  • Relay
  • Security System
  • Smoke Sensor
  • Speaker
  • Stateful Programmable Switch
  • Stateless Programmable Switch
  • Switch
  • Temperature Sensor
  • Thermostat
  • Time Information
  • Window
  • Window Covering

Context

Context info can be provided as part of the input message and will be available in the output message as hap.context.

Example:

{
    "On": 1,
    "Context": "set_from_mqtt_topic"
}

FAQ

How can I generate Debug logs?

Stop your node-red instance and start it again using the following command: DEBUG=Accessory,HAPServer,EventedHTTPServer node-red

This should output detailed information regarding everything in the homekit context.

The same command gets sent over and over. How do I stop that?

I only want to get messages when something has been changed in the Home app, but also all messages I send into the homekit node get forwarded, too. How do I stop that?

Insert this node right after your homekit node:

[{"id":"","type":"switch","z":"","name":"check hap.context","property":"hap.context","propertyType":"msg","rules":[{"t":"nnull"}],"checkall":"true","repair":false,"outputs":1,"x":0,"y":0,"wires":[]}]

This will filter out all messages with their payload property hap.context not set, which means they are events that have been sent to homekit via node-red, not via the Home app.