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

homebridge-multiswitcheroo

v3.0.4

Published

User defined switches for http GET requests. Simple on/off or multiswitch on/off. Useful for lights, A/V systems, home automation, and includes live status polling!

Downloads

47

Readme

verified-by-homebridge npm version npm downloads

MultiSwitcheroo

homebridge-multiswitcheroo

User defined multi-switch accessories for http GET requests.

Ideally, you would use this to set a characteristic, like volume. For example, our config below outlines a single accessory with a mute, high, medium & low switch for a Yamaha receiver's volume.

You can create new switches in the Homebridge ConfigUi now (as of version 2.0), but if you want to do it manually, everything is explained below.

Define your MultiSwitcheroo with whatever name you want to appear as the main switch title in the home app. This is what is visible if left displayed as a single tile (default). The name for each switch is what the individual switches should show. Sometimes these transfer to the home app, and sometimes not, so you may have to rename them all once in the home app, but only once.

Then, set the appropriate statusUrl to call for the status at the set pollingInterval (default 3000).

The statusPattern is a regular expression string (regex) sought in the response from the server to get an accurate status for each switch (see the Mute switch in the MultiSwitcheroo config example below for a really good example of a complex pattern where an unknown number is present in the string). Remember you must esacape any special characters (including spaces) with a \.

Set the onUrl & offUrl as appropriate for each switch. Must be the full URL, including http:// & port.

The manufacturer, model, serialNumber, & firmwareRevision are all optional, but it is best to set them. If you do not set them, they will all default to things that will not error in Controller for HomeKit because of duplicate serial numbers if you have multiple devices using the same one. Plus, it's fun to set these with your own stuff anyway, plus I made it super easy for you in the ConfigUI!

Currently only built to support the GET http method.

  {
        "accessory": "MultiSwitcheroo",   // remember this *must* be 'MultiSwitcheroo' for multi
        "name": "Volume Switch",
        "manufacturer": "Manufacturer",
        "model": "Model",
        "serialNumber": "VOLUMESW01",   // best to specify a SN to avoid conflicts
        "statusUrl": "http://192.168.1.91/YamahaExtendedControl/v1/main/getStatus",
        "pollingInterval": 5000,
        "switches": [
            {
                "name": "Mute",
                "onUrl": "http://192.168.1.91/YamahaExtendedControl/v1/main/setMute?enable=true",
                "offUrl": "http://192.168.1.91/YamahaExtendedControl/v1/main/setMute?enable=false",
                "statusPattern": "{\"response_code\":0,\"power\":\"on\",\"sleep\":0,\"volume\":[0-9]+,\"mute\":true"
            },
            {
                "name": "Low",
                "onUrl": "http://192.168.1.91/YamahaExtendedControl/v1/main/setVolume?volume=51",
                "offUrl": "http://192.168.1.91/YamahaExtendedControl/v1/system/getFuncStatus",
                "statusPattern": "{\"response_code\":0,\"power\":\"on\",\"sleep\":0,\"volume\":51,\"mute\":false"
            },
            {
                "name": "Medium",
                "onUrl": "http://192.168.1.91/YamahaExtendedControl/v1/main/setVolume?volume=81",
                "offUrl": "http://192.168.1.91/YamahaExtendedControl/v1/system/getFuncStatus",
                "statusPattern": "{\"response_code\":0,\"power\":\"on\",\"sleep\":0,\"volume\":81,\"mute\":false"
            },
            {
                "name": "High",
                "onUrl": "http://192.168.1.91/YamahaExtendedControl/v1/main/setVolume?volume=111",
                "offUrl": "http://192.168.1.91/YamahaExtendedControl/v1/system/getFuncStatus",
                "statusPattern": "{\"response_code\":0,\"power\":\"on\",\"sleep\":0,\"volume\":111,\"mute\":false"
            }
        ]
  }

Standard Switch (Switcheroo)

This switch version had to be removed from the plugin to fix the code. If you need a single switch install homebridge-http-switch or revert to version 1.0.3 of homebridge-multiswitcheroo and it will continue to work.

If you already had a Switcheroo accessory defined & wish to update, simply change the accessory type from Switcheroo to HTTP-SWITCH & change the pollingInterval config entry to pullInterval, then install the homebridge-http-switch plugin and reboot. The switch will continue to work just as before (scenes & automations will need to be rebuilt; sorry about this).

Configuration Params

| Parameter | Description | Required | | -----------------------| ----------------------------------------------------------------------------------- |:--------:| | name | name of the switch or switches | ✓ | | accessory | must be MultiSwitcheroo | ✓ | | statusUrl | url for status requests | ✓ | | statusPattern | regex sought in statusUrl response body | ✓ | | onUrl | endpoint path for the on state | ✓ | | offUrl | endpoint path for the off state | ✓ | | pollingInterval | interval to poll for status updates in milliseconds (default 3000ms or 3 seconds) | ✓ | | switches | array of switches required for MultiSwitcheroo devices (see axample config) | ✓ | | manufacturer | will show in Home app description of this Homekit accessory, ex. 'Yamaha' | | | model | will show in Home app description of this Homekit accessory, ex. 'Default Model' | | | serialNumber | will show in Home app description of this Homekit accessory, ex. 'SERIALNUMBER1' | | | firmwareRevision | will show in Home app description of this Homekit accessory, ex. '1.0.0' | |

Tips

  • Make sure specify the full URL in the statusURL. (i.e. "statusUrl" : "http://192.168.0.XXX:2000").
  • Must prepend 'http://' to all URLs.
  • Verify your server only uses GET. This plugin only does GET requests.
  • Use this plugin in a child bridge. It's just better.
  • You can expose multiple switches on the same child bridge, just use the same _bridge username & port in the config.
  • Name your child bridge using name under bridge settings. Defining multple switches will cause this to look bad so fix it in the config.

Installation

  1. Install homebridge using: npm install -g homebridge
  2. Install homebridge-multiswitcheroo using: npm install -g homebridge-multiswitcheroo
    • if in hb-shell environment use: hb-service add homebridge-multiswitcheroo
  3. Update your config.json file or add swithces using plugin settings in the Homebridge ConfigUI.

This plugin was originally generated with a lot of help from ChatGPT, but i have since re-written it.