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-switcheroo

v2.0.0

Published

User defined switches for http requests. Simple on/off or multiswitch radio buttons. Useful for lights, A/V systems, home automation, whatever

Downloads

24

Readme

npm version

homebridge-switcheroo

User defined switches for http requests. Simple on/off or multiswitch radio buttons. Useful for lights, A/V systems, home automation, whatever

Switch Types

Switch (standard on/off)

Meant to be used as a simple on/off switch. ==> light, projector, fan, garage door, car ignition (bad idea)

{
        "accessory": "Switcheroo",   // remember this *must* be 'Switcheroo'
        "type": "switch",
        "name": "Kitchen Light",
        "host": "192.168.0.XXX/kitchen",
        "on"  : "/light/on",
        "off" : "/light/off"
}

Multiswitch (radio buttons)

Works like a switcher - only one input can ever be on at one time. ==> A/V input switcher, KVM control, temperature settings, really bad piano

Define your multiswitch with whatever name you want to appear as the input title on Homekit controls. Then, the appropriate endpoint path to call. Complete http endpoints are constructed as host + path. Currently only built to support one http method per switch service, meaning, all endpoint calls will be either GET (default) or POST etc.

{
    "accessory": "Switcheroo",
    "type": "multiswitch",
    "name": "My HDMI Switcher",
    "host": "192.168.0.10X:8080",   // don't forget to specify a port, if necessary
    "multiswitch": [
       { "name" : "Apple TV"     , "path" : "/switcher/appletv" },
       { "name" : "HDMI"         , "path" : "/switcher/aux"     },
       { "name" : "Chromecast"   , "path" : "/switcher/chrome"  },
       { "name" : "PS4"          , "path" : "/switcher/ps4"     },
       { "name" : "Raspberry Pi" , "path" : "/switcher/pi"      }
    ]
}

Configuration Params

| Parameter | Description | Required | | -----------------------| ----------------------------------------------------------------------------------- |:--------:| | name | name of the accessory | ✓ | | type | switch or multiswitch | ✓ | | host | url for whatever is receiving these requests | ✓ | | on / off | (only switch) endpoint paths for the on/off states | ✓ | | on_body / off_body | (only switch) bodies for on/off state requests | | | multiswitch | (only multiswitch) list of inputs for the multiswitch - name and endpoint path | ✓ | | http_method | GET (default), POST, PUT, DELETE | | | username | username for request | | | password | password for request | | | send_immediately | option for request | | | manufacturer | will show in Home app description of this Homekit accessory, ex. 'LG' | | | model | will show in Home app description of this Homekit accessory, ex. 'HD 2000' | |

Debug logging

Running homebridge manually will allow you to see the Switcheroo console logs.

Switcheroo logging

Tips

  • Run Homebridge on startup and have it restart if crashed, read my notes
  • Make sure specify a port in the if necessary. (i.e. "base_url" : "http://192.168.0.XXX:2000")
  • Verify the correct http_method is begin used. Switcheroo defaults to GET

Installation

Read about an example Raspberry Pi + Homebridge setup guide with this package here

  1. Install homebridge using: npm install -g homebridge
  2. Install homebridge-http using: npm install -g homebridge-switcheroo
  3. Update your config file

Changes from 1.X.X

New

  • define unique paths for each multiswitch item
  • manufacturer, model params

Renamed

  • 'switch_type' -> 'type'
  • 'Switch' -> 'switch'
  • 'Multiswitch' -> 'multiswitch'
  • 'base_url' -> 'host'
  • 'on_url' -> 'on'
  • 'off_url' -> 'off'