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-http-tv

v1.0.0

Published

A Homebridge plugin to let you control your TV (or a bridge server) using HTTP

Downloads

5

Readme

Features

  • Exposes a HomeKit TV accessory
  • Characteristics changes trigger HTTP requests to user-defined URLs
  • Every request customizable with HTTP method, headers and body
  • Kind of like homebridge-http-switch but for TVs

Installation

Homebridge should be installed. Then run the following to install homebridge-http-tv.

sudo npm install -g homebridge-http-tv

Add the platform to your Homebridge config.json file. You can find your file location here.

{
    "platforms": [
        {
            "platform": "http-tv",
            "devices": {
                "device config here, see below": ""
            }
        }
    ]
}

You're good to go now!

Configuration

You can use the visual config editor in Homebridge Config UI X. However for more detailed configuration you may have to edit the config.json file directly.

A note on HTTP requests

Generally you can globally define headers and http body in the main device config. However, every object marked <HTTPRequest> can include method, headers, and body properties, that only get used for that HTTP request. See example below.

Config Properties

  • name <string> required: Defines the name which is later displayed in HomeKit

  • power <HTTPRequest> required:

    • onUrl <URL> required: The URL to be requested when the TV is turned on.
    • offUrl <URL> required: The URL to be requested when the TV is turned off.
  • sources <Array<HTTPRequest>> required: The input sources available.

    • name <string> required: The name for the input source
    • url <URL> required: The URL to query when this input is selected.
    • type <number> optional (Default: 3 (HDMI)): The input type as defined here
  • method <string> optional (Default: "TV01"): The HTTP method to be used for all requests.

  • headers <object> optional: Key-Value object for HTTP headers to be included in every request.

  • serialNumber <string> optional (Default: "TV01"): Defines a custom serial number shown in the home app.

  • model <string> optional (Default: "TV"): Defines a custom model name shown in the home app.

  • manufacturer <string> optional (Default: "Mateffy"): Defines a custom manufacturer name shown in the home app.

HTTPRequest: The HTTP request object
  • method <string> optional (Default: "TV01"): The HTTP method to be used for all requests.
  • headers <object> optional: Key-Value object for HTTP headers to be included in every request.
  • body <string> optional: The HTTP body

Config Example

{
    "platforms": [
        {
            "platform": "http-tv",
            "devices": [
              {
                "name": "My TV",
                "serialNumber": "my-http-tv-1",
                "method": "POST",
                "headers": {
                    "Authorization": "Bearer token-example"
                },
                "power": {
                    "onUrl": "http://bridge.local/tv/on",
                    "offUrl": "http://bridge.local/tv/off",
                    "headers": {
                        "X-Custom-Header": "Value"
                    }
                },
                "sources": [
                    {
                        "name": "HDMI1",
                        "url": "http://bridge.local/tv/source/1",
                        "type": 3,
                        "method": "PATCH",
                        "headers": {
                            "X-Custom-Header-2": "value"
                        }
                    },
                    {
                        "name": "HDMI2",
                        "url": "http://bridge.local/tv/source/2",
                        "type": 3,
                        "body": "custom request body"
                    }
                ],
                "model": "HTTP TV",
                "manufacturer": "Lukas Mateffy"
              }
            ]
        }
    ]
}