homebridge から、処理結果を chromecast で表示できないかと、pychromecast を試す。
pychromecast の 定番サンプルで、自宅サーバの画像ファイルの URL を与えて、表示を試すが真っ黒画面の表示で動かない。
webサーバのアクセス履歴を見ても、chromecast からのアクセス履歴が無いので、指定した URL にアクセスしていない。
chromecastは、ローカルのDNSを使わない
自宅では、サーバのプライベートアドレスを返す、自宅内 DNS が動いていて、自宅外ではグローバルアドレスを引けるようにしている。自宅ドメインのURLのファイルを表示できないことから、たぶん chromecast は、DHCP の指定する DNS サーバ情報を使っていないのだろう。DNSポイズニングを懸念するなら、あたりまえだろうな。
ということで、URL を、プライベートアドレスを生書きしたものを与えたら、普通に動いた。
(追記) プライベートアドレスのURLだと、https も表示できない。IPアドレス表記のURLだとホスト名が判らないから、https ではオレオレ認証扱いされるのか、これまた表示できない。プライベートアドレスなコンテンツの場合は、アドレス表記に直してかつ、プロトコルを http に変更が必要だな。
#!/usr/bin/python3 import time import pychromecast # デバイス名 chromecast_name = "リビングルーム" # 指定した名前のchromecastを探す chromecasts, browser = \ pychromecast.get_listed_chromecasts( friendly_names = [ chromecast_name ] ) chromecast = next( filter( lambda cc: cc.device.friendly_name == chromecast_name , chromecasts ) , None ) if not chromecast : sys.exit( 1 ) chromecast.wait() mc = chromecast.media_controller mc.play_media( 'http://192.168.xx.xx/wp/wp-content/uploads/2020/10/IMG_4165.jpg' , 'image/jpeg' ) mc.block_until_active() mc.play() # 接続を切る pychromecast.discovery.stop_discovery( browser )
google home で温度グラフ表示
pychromecast がうまく使えるようになったので、homebridge + Google Home にて温度グラフを表示するようにしてみた。「OK Google, 温度グラフをつける」(‘をつける’というのは、スイッチ扱いで登録してあるから)