ずっと前から試そうと思ってたのに、すっかり忘れてた。
ということで、レッツトライ!
RS-232C の通信仕様やコマンド一覧は、テレビの取扱説明書に載ってる。
NAS 専用サーバー (Synology DS920+) の導入より前は NAS 用途の PC サーバーを動かしてて、当時サーバーへの接続手段として SSH のほかに
USB シリアル変換アダプターと RS-232C クロスケーブルを使うこともあったから、必要な機材は揃ってる。
どうせならケーブルは接続したままにしておきたいので、ノート PC ではなく NAS サーバーに接続してみることにした。
USB シリアル変換アダプターを NAS サーバーの USB ポートに挿しただけでは認識されなかったが、カーネルモジュールを個別にロードすると /dev/ttyUSB0 として見えるようになった。簡単。
$ sudo insmod /lib/modules/usbserial.ko
$ sudo insmod /lib/modules/ftdi_sio.ko
$ dmesg | tail -4
[7574241.626506] usbserial: USB Serial support registered for FTDI USB Serial Device
[7574241.634900] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
[7574241.642515] usb 1-1: Detected FT232BM
[7574241.647021] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
$ sudo chmod a+rw /dev/ttyUSB0
RS-232C の通信仕様は取扱説明書に記載の通りボーレート 9600bps、データ長 8 ビット、パリティなし、ストップビット 1 ビット、フロー制御なしで OK。
コマンドやレスポンスの終端のリターンコードが CR (0DH) という点だけ注意かな。
後述の内容で aquos_ctrl.sh を作り、たとえばこんな感じで:
- 音量取得
$ ./aquos_ctrl.sh VOLM \?
- 音量を 22 に設定
$ ./aquos_ctrl.sh VOLM 22
- 入力 2 に入力切換
$ ./aquos_ctrl.sh IAVD 2
- 電源オフ
$ ./aquos_ctrl.sh POWR 0
音量設定や入力切換などは、リモコン操作と異なり目的の音量や入力端子などをダイレクトに指定できるので、便利な使い方が生み出せそうな気がする。
いちいち NAS サーバーにログインしてシェルスクリプトを実行するんじゃなくて、何らかの制御する仕組みを用意しないとアレだけれど。
きょうのところはここまで。
¶ aquos_ctrl.sh
#!/bin/bash
PORT=/dev/ttyUSB0
if [[ ${#1} != 4 || ${#2} > 4 ]]; then
echo "Usage: $0 COMMAND PARAMETER"
exit 1
fi
stty -F $PORT 9600 cs8 -parenb -cstopb -ixon sane inlcr ocrnl || exit 1
printf "%s%-4s\n" "$1" "$2" > $PORT
read -t 10 response < $PORT && echo $response || echo timeout
COMMAND と PARAMETER に指定できる具体的な値については、取扱説明書の RS-232C コマンド一覧を参照。
記事中にあるように 『将来的に「iD」と「QUICPay+」が縮小し、やがては終了していくことを予見している』 とはいえ、さすがにサ終までこのまま放置ってわけにいかない気が。