1.0.0 • Published 3 years ago

homebridge-http-tv v1.0.0

Weekly downloads
3
License
Apache-2.0
Repository
github
Last release
3 years ago

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"
              }
            ]
        }
    ]
}
1.0.0

3 years ago