図:IRCC-IPのイメージ

IRCC-IPとは

IRCC-IP(InfraRed Compatible Control over Internet Protocol)は、赤外線リモコンの操作をローカルネットワーク上のIPプロトコルを使ってエミュレートする通信プロトコルです。ディスプレイの電源制御、音量調整、入力ソースの切り換えなど、物理リモコンと同等の操作をIPベースで実行できます。

主な特長

リモコン操作感覚での制御

ユーザーが普段使い慣れたリモコン操作感覚で、ディスプレイを遠隔操作できます。IPアドレス単位で個別に制御するため、複数台のディスプレイの操作にも対応できます。

通信仕様とセキュリティ

IRCC-IPはSOAPプロトコル上のXMLメッセージでコマンドを送信します。構文が明確で、HTTP POSTリクエストとして容易に実装が可能です。Pre-Shared Key認証方式に対応し、正規の操作以外のコマンド送信を防止できます。

Webアプリ連携で制御可能

HTML5やAndroidアプリと連携し、カスタムUIのボタン操作をローカルネットワーク上のディスプレイに即時反映できます。ユーザー操作に応じた柔軟な制御を実現できます。

準備と実装ガイド

事前準備

事前準備イメージ
  • PCとディスプレイを同一ネットワークに接続する
  • 有線LAN/無線LANいずれも対応

必要なディスプレイ設定

本体設定と電源管理

認証方式とKeyの設定

クライアント側に応じたディスプレイの認証方式の設定は、「本体設定」で行います。
操作手順:[設定]→[ネットワークとインターネット]→[ローカルネットワーク]→[IPコントロール] →[認証]

詳しくはこちら

端末からディスプレイの遠隔制御を有効にする設定

使用する端末を登録し有効にすると、その端末からディスプレイ制御が可能になります。
操作手順:[設定]→[ネットワークとインターネット]→[モバイル機器設定]

サスペンド状態でのディスプレイ制御

REST APIを活用することで対策が可能です。
詳しくはこちら

サスペンド状態の復帰対策

ディスプレイが意図せずサスペンド状態になると、HTTPサーバーが停止するため、IRCC-IPによる通信ができなくなります。その場合は、Wake-on-LAN(WoL:ネットワーク経由でのリモート起動)機能を有効にしておくことで、ディスプレイの電源を復帰させることができます。

1.Wake-on-LANの有効化

操作手順:[設定]→[ネットワークとインターネット]→[リモートスタート]


2.Wake-on-LANによるサスペンド状態からの復帰

マジックパケットを複数回送信することを推奨しています。

WoLマジックパケットによるサスペンド状態復帰手順
MACアドレスの取得

ChromeのDevToolsでgetSystemInformationを呼び出すと、ディスプレイのMACアドレスを確認できます。

http://[ディスプレイのIPアドレス]/sony/system

HTTPリクエスト例

HTTP
POST /sony/system HTTP/1.1
Host: 192.168.0.100
Content-Type: application/json
X-Auth-PSK: 1234
{
  "method": "getSystemInformation",
  "params": [],
  "id": 1,
  "version": "1.0"
}

レスポンス例

JSON
{
  "result": [{
    "macAddr": "00:11:22:33:44:55",
    ...
  }],
  "id": 1
}
WoLマジックパケットの作成

WoLマジックパケットは、「FF FF FF FF FF FF」+MACアドレスを16回繰り返したUDPパケットです。ディスプレイのMACアドレスを元に生成します。

マジックパケットの送信
ネットワーク上の対象ディスプレイのブロードキャストアドレス宛にUDPポート9または7いずれかでマジックパケットを複数回送信します。複数回送ることでディスプレイの確実な作動を促します。

電源ON状態の確認
マジックパケット送信後、IRCC-IPでの通信が可能になるまで待ちます。

「通常モード」環境の場合
電源ON後、setPowerStatusで画面表示状態に切り換える必要があります。

「プロモード」環境の場合
自動的にスクリーンONになります。

IRCC-IPでの制御実行
通信可能になったら、IRCC-IPで電源や入力などの制御を行います。

クライアント設定(認証方式と通信パラメーターの送信方法

Pre-Shared Key

Pre-Shared Key は、HTTPリクエストのカスタムヘッダー「X-Auth-PSK」として、IRCC-IPに送信する必要があります。

例 X-Auth-PSKヘッダー (Pre-Shared Key: 1234)

HTTP
POST /sony/IRCC HTTP/1.1
Host: 192.168.1.100:80
Content-Type: application/json
X-Auth-PSK: 1234
Content-Length: 85

基本構成・キーとIRCCコード

IRCC-IP HTTPリクエストの制御URLは以下です。

http://[IP]/sony/ircc

例 IRCC-IP HTTP リクエスト (Pre-Shared Key: 1234)

HTTP
POST /sony/ircc HTTP/1.1
HOST: 192.168.0.1
Accept: */*
Content-Type: text/xml; charset=UTF-8
SOAPACTION: "urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"
X-Auth-PSK: 1234
Connection: Keep-Alive
Content-Length: 313

POST /sony/ircc
IRCC-IP制御用のエンドポイント(固定URL)

HOST: 192.168.0.1
ディスプレイ本体のIPアドレス

SOAPACTION
実行したいIRCC-IP(例はX_SendIRCC)

X-Auth-PSK: 1234
認証用のPre-Shared Key。ディスプレイに設定した値と一致する必要があります。

キーとIRCCコード

以下の情報はREST APIでgetRemoteControllerInfoを呼び出しても同様に取得できます。

キーIRCC コード (Base64 エンコード)
PowerAAAAAQAAAAEAAAAVAw==
InputAAAAAQAAAAEAAAAlAw==
SyncMenuAAAAAgAAABoAAABYAw==
Hdmi1AAAAAgAAABoAAABaAw==
Hdmi2AAAAAgAAABoAAABbAw==
Hdmi3AAAAAgAAABoAAABcAw==
Hdmi4AAAAAgAAABoAAABdAw==
Num1AAAAAQAAAAEAAAAAAw==
Num2AAAAAQAAAAEAAAABAw==
Num3AAAAAQAAAAEAAAACAw==
Num4AAAAAQAAAAEAAAADAw==
Num5AAAAAQAAAAEAAAAEAw==
Num6AAAAAQAAAAEAAAAFAw==
Num7AAAAAQAAAAEAAAAGAw==
Num8AAAAAQAAAAEAAAAHAw==
Num9AAAAAQAAAAEAAAAIAw==
Num0AAAAAQAAAAEAAAAJAw==
Dot(.)AAAAAgAAAJcAAAAdAw==
CCAAAAAgAAAJcAAAAoAw==
RedAAAAAgAAAJcAAAAlAw==
GreenAAAAAgAAAJcAAAAmAw==
YellowAAAAAgAAAJcAAAAnAw==
BlueAAAAAgAAAJcAAAAkAw==
UpAAAAAQAAAAEAAAB0Aw==
DownAAAAAQAAAAEAAAB1Aw==
RightAAAAAQAAAAEAAAAzAw==
LeftAAAAAQAAAAEAAAA0Aw==
ConfirmAAAAAQAAAAEAAABlAw==
HelpAAAAAgAAAMQAAABNAw==
DisplayAAAAAQAAAAEAAAA6Aw==
OptionsAAAAAgAAAJcAAAA2Aw==
BackAAAAAgAAAJcAAAAjAw==
HomeAAAAAQAAAAEAAABgAw==
VolumeUpAAAAAQAAAAEAAAASAw==
VolumeDownAAAAAQAAAAEAAAATAw==
MuteAAAAAQAAAAEAAAAUAw==
AudioAAAAAQAAAAEAAAAXAw==
ChannelUpAAAAAQAAAAEAAAAQAw==
ChannelDownAAAAAQAAAAEAAAARAw==
PlayAAAAAgAAAJcAAAAaAw==
PauseAAAAAgAAAJcAAAAZAw==
StopAAAAAgAAAJcAAAAYAw==
FlashPlusAAAAAgAAAJcAAAB4Aw==
FlashMinusAAAAAgAAAJcAAAB5Aw==
PrevAAAAAgAAAJcAAAA8Aw==
NextAAAAAgAAAJcAAAA9Aw==