TVチューナーの監視
記事書いた
UPNP
とりあえず試してみる
> code
$ sudo apt-get install gupnp-tools
<<
DLNA
-- 近そう
-- ほぼこれか?
- 結局WireSharkでWindows Media Playerの通信を盗み見た。
- 敗因はContent-Type設定していないだけだった・・
PoC
完了した
結局 ContentDirectoryのサービスを見つけて、そこにBrowseというActionを送信すると録画済みの番組リストが得られた。
フィルタやソートを指定していないので謎の順番だが、HDDが認識できないときはこれが空になるように見える
初回リクエスト時はHDDがスピンアップしていなくて失敗する。
何度かリクエストするとそのうち取得できる。
エラー時の結果
> code
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>701</errorCode>
<errorDescription>Error</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
<<
設計
- APIにアクセスする
- 規定間隔で規定回数試行して期待する結果が得られない場合は異常と判断し通知を送る
-- s:Body直下がs:Faultの場合は失敗とみなす
-- HDDが読めないときはこの状態か?
--- 恐らくそうだろう
--- 問題が再現しないとわからない
--- 念のため正常かどうか、を見るのがよさそう
-- s:BrowserResponse -> Result -> DIDL-Lite 以下のアイテム数が0以上なら成功とする
Service
> code
<serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceType>urn:schemas-digion-com:service:X_AccessControl:1</serviceType>
<serviceType>urn:schemas-digion-com:service:X_DeviceConfiguration:1</serviceType>
<serviceType>urn:schemas-dlpa-jp:service:X_DtcpPlus:1</serviceType>
<<
気づいた事
- 録画を消してもDLNAは古い番組リストを配信し続ける
-- テレキングリモートで閲覧すると古い番組をindexから消す処理が走っているように見える
--- (すごく遅い)
-- 一度上記が実行されるとDLNAでも消えている
やってみたいこと
- 録画一覧で何か遊ぶ
あとやること