Plug-in Homebridge para Philips Hue Sync Box.
A Sync Box pode ser exposta como uma lâmpada. Os seguintes recursos são suportados:
Ligado/Desligado
Brilho
A Sync Box pode ser exposta como um switch. Os seguintes recursos são suportados:
Ligado/Desligado
Você também pode ativar acessórios de TV adicionais que suportem:
Alternando entradas HDMI
Alternando modos
Intensidade de comutação
Mudando de área de entretenimento
Cada um dos acessórios de TV adicionais suporta o widget remoto do iOS:
Para cima/para baixo: altera o brilho
Esquerda/direita: alterar intensidade
Selecionar (botão central): alternar modos
Botão de informações: alternar entradas HDMI
Reproduzir/Pausar: ativar/desativar
Além disso, cada acessório de TV pode ter uma lâmpada integrada com suporte para:
Ligado/Desligado
Brilho
Importante : os acessórios de TV devem ser adicionados ao HomeKit manualmente, os logs mostram o pino para adicioná-los (deve ser o mesmo pino do plugin).
Instale o plugin via npm:
npm instalar homebridge-philips-hue-sync-box -g
Você precisa criar novas credenciais para se comunicar com a Philips Hue Sync Box:
Certifique-se de que a caixa de sincronização esteja ativada
Certifique-se de que a sincronização esteja interrompida
Faça uma solicitação HTTP POST para https://<SYNC-BOX-IP>/api/v1/registrations
O corpo da solicitação deve ser JSON: { "appName": "homebridge", "appSecret": "MDAwMTExMDAwMTExMDAwMTExMDAwMTExMDAwMTExMDA=", "instanceName": "homebridge" }
A primeira resposta à solicitação será { "code": 16, "message": "Invalid State" }
IMPORTANTE: Agora clique e segure o botão da Sync Box até que o LED fique verde. Solte imediatamente o botão assim que o LED ficar verde! Ele mudará para branco novamente.
Imediatamente faça a solicitação novamente
A resposta contém uma string accessToken
Dicas:
Uma maneira de fazer isso é inserir o seguinte no Terminal: curl -H "Content-Type: application/json" -X POST -d '{"appName": "homebridge", "appSecret":"MDAwMTExMDAwMTExMDAwMTExMDAwMTExMDAwMTExMDA=", "instanceName": "homebridge"}' https://<SYNC-BOX-IP>/api/v1/registrations
, substituindo <SYNC-BOX-IP>
pelo endereço IP da sua Sync Box. Se ocorrer um problema devido a um erro de certificado, adicione o parâmetro -k
ao comando cURL.
Outra maneira pode ser usar ferramentas como Postman . Defina o método de solicitação como POST
e insira https://<SYNC-BOX-IP>/api/v1/registrations
como o URL de solicitação (substitua <SYNC-BOX-IP>
pelo endereço IP da sua Sync Box). Em seguida, abra a aba “Corpo”, defina o tipo como “raw” e selecione “JSON” como tipo de conteúdo no menu suspenso. Em seguida, insira { "appName": "homebridge", "appSecret": "MDAwMTExMDAwMTExMDAwMTExMDAwMTExMDAwMTExMDA=", "instanceName": "homebridge" }
na caixa de texto do corpo. Clique no botão “Enviar” no canto superior direito para enviar a solicitação. Se ocorrer um problema devido a um erro de certificado, você poderá desativar a verificação de certificado no Postman. Vá para as configurações globais, abra a aba "Geral" e desative o botão de alternância para "Verificação do certificado SSL".
{"plataformas": [ {"platform": "PhilipsHueSyncBoxPlatform","syncBoxIpAddress": "<SYNC-BOX-IP-ADDRESS>","syncBoxApiAccessToken": "<ACCESS-TOKEN>","defaultOnMode": "video","defaultOffMode": " passthrough","baseAccessory": "lâmpada","tvAccessory": false,"tvAccessoryType": "tv","tvAccessoryLightbulb": false,"modeTvAccessory": false,"modeTvAccessoryType": "tv","modeTvAccessoryLightbulb": false,"intensityTvAccessory": false,"intensityTvAccessoryType": "tv", "intensityTvAccessoryLightbulb": falso,"entretenimentoTvAccessory": false,"entertainmentTvAccessoryType": "tv","entertainmentTvAccessoryLightbulb": false,"isApiEnabled": false,"apiPort": 40220,"apiToken": "<SEU-TOKEN>"} ] }
syncBoxIpAddress : O endereço IP da sua Philips Hue Sync Box.
syncBoxApiAccessToken : o token de acesso que você obtém durante o registro.
defaultOnMode (opcional): O modo usado ao ligar a Sync Box via HomeKit. O padrão é video
. Os valores possíveis são video
, music
, game
ou lastSyncMode
.
defaultOffMode (opcional): O modo usado ao desligar a Sync Box via HomeKit. O padrão é passthrough
. Os valores possíveis são powersave
ou passthrough
.
baseAccessory (opcional): Determina o tipo de acessório base da Sync Box. O padrão é lightbulb
. Os valores possíveis são lightbulb
, switch
ou none
. Se none
for usado, nenhum acessório de base ficará exposto.
tvAccessory (opcional): Habilita um acessório de TV para alternar as entradas da Sync Box. O padrão é false
.
tvAccessoryType (opcional): Tipo de ícone que o app Apple Home deve mostrar. Os valores possíveis são tv
, settopbox
, tvstick
ou audioreceiver
. O padrão é tv
.
tvAccessoryLightbulb (opcional): Habilita uma lâmpada integrada ao Acessório de TV para comutação das entradas. O padrão é false
.
modeTvAccessory (opcional): Habilita um acessório de TV para alternar os modos ( video
, music
, game
) da Sync Box. O padrão é false
.
modeTvAccessoryType (opcional): Tipo de ícone que o app Apple Home deve mostrar. Os valores possíveis são tv
, settopbox
, tvstick
ou audioreceiver
. O padrão é tv
.
modeTvAccessoryLightbulb (opcional): Habilita uma lâmpada integrada para o acessório de TV para alternar os modos. O padrão é false
.
intensidadeTvAccessory (opcional): Habilita um acessório de TV para alternar a intensidade ( subtle
, moderate
, high
, intense
) da Sync Box. O padrão é false
.
intensidadeTvAccessoryType (opcional): Tipo de ícone que o app Apple Home deve mostrar. Os valores possíveis são tv
, settopbox
, tvstick
ou audioreceiver
. O padrão é tv
.
intensidadeTvAccessoryLightbulb (opcional): Habilita uma lâmpada integrada ao Acessório de TV para alterar a intensidade. O padrão é false
.
entertainmentTvAccessory (opcional): Habilita um acessório de TV para alternar a área de entretenimento da Sync Box. O padrão é false
.
entertainmentTvAccessoryType (opcional): tipo de ícone que o app Apple Home deve mostrar. Os valores possíveis são tv
, settopbox
, tvstick
ou audioreceiver
. O padrão é tv
.
entertainmentTvAccessoryLightbulb (opcional): Permite uma lâmpada integrada ao acessório de TV para alternar as áreas de entretenimento. O padrão é false
.
isApiEnabled (opcional): habilita uma API HTTP para controlar a caixa de sincronização. O padrão é false
. Consulte API para obter mais informações.
apiPort (opcional): a porta em que a API (se habilitada) é executada. O padrão é 40220
, altere esta configuração da porta que já está em uso.
apiToken (opcional): O token que deve ser incluído em cada solicitação da API. É obrigatório se a API estiver habilitada e não tiver valor padrão.
Este plugin também fornece uma API HTTP para controlar alguns recursos do Sync Box. Ele foi criado para que você possa automatizar ainda mais o sistema com os atalhos do HomeKit. A partir do iOS 13, você pode usar atalhos para automação do HomeKit. As automações executadas no coordenador do HomeKit (ou seja, iPad, AppleTV ou HomePod) também suportam solicitações HTTP, o que significa que você pode automatizar sua caixa de sincronização sem interruptores e botões irritantes expostos no HomeKit.
Se a API estiver habilitada, ela poderá ser acessada na porta especificada no host deste plugin.
http://<YOUR-HOST-IP-ADDRESS>:<apiPort>
O token deve ser especificado como valor do cabeçalho Authorization
em cada solicitação:
Authorization: <YOUR-TOKEN>
Use o endpoint state
para recuperar o estado da Sync Box. O método HTTP deve ser GET
:
http://<YOUR-HOST-IP-ADDRESS>:<apiPort>/state
A resposta é uma resposta JSON, as seguintes propriedades estão incluídas:
{ groupId: '<group-number>', mode: 'passthrough|powersave|video|game|music', lastSyncMode: 'video|game|music', brightness: 0-100, hdmiSource: 'input1|input2|input3|input4', options: { video: { intensity: 'subtle|moderate|high|intense', backgroundLighting: true|false }, game: { intensity: 'subtle|moderate|high|intense', backgroundLighting: true|false }, music: { intensity: 'subtle|moderate|high|intense' } } }
Use o endpoint state
para definir o estado da caixa de sincronização. O método HTTP deve ser POST
:
http://<YOUR-HOST-IP-ADDRESS>:<apiPort>/state
O corpo da solicitação deve ser JSON e pode conter qualquer/alguns/todos os seguintes valores:
{ groupId: '<group-number>', mode: 'passthrough|powersave|video|game|music', brightness: 0-100, hdmiSource: 'input1|input2|input3|input4', options: { video: { intensity: 'subtle|moderate|high|intense', backgroundLighting: true|false }, game: { intensity: 'subtle|moderate|high|intense', backgroundLighting: true|false }, music: { intensity: 'subtle|moderate|high|intense' } } }