2017年12月8日金曜日

Google Homeで家電を制御してみる

Google Home Miniをせっかく購入したのでこの前作ったIR Stationを使って赤外線リモコンが使える家電をGoogleアシスタントで制御してみた。

流れとしてはGoogleアシスタントをIFTTTと連動させて、IFTTTからIR Stationを呼び出す感じ。
まずは手始めにシーリングライトをオンオフするところから始めてみた。

まずIR StationをどうやってIFTTTと連動させるかなんだけど、Webhookが使えそう。

Chromeのデベロッパーツールで学習リモコンのボタンをクリックしたときの動作を見てみるとsendでIDをPOSTしてる模様。
IDはどうやらリモコンを登録した順番に割り振ってるようで、さらにPOSTじゃなくてGETでも赤外線を飛ばすことができた。

とりあえず必要なリモコンのボタンをどんどんIR Stationに割り振ってIDをデベロッパーツールで調べれば行けそう。


IDの調べ方はIR StationのページをChromeで開いた状態でF12を押してデベロッパーツールを開いて学習リモコンのボタンをクリック。
するとsendが読み込まれるのでそこのForm DataというところにIDが出てくる。この数字がクリックしたボタンに割り当てられてるIDになるみたい。

そしてWebから
http://IR StationのIPアドレス/signals/send?id=先程のID

とすればIR Stationから赤外線を飛ばすことができる。
IFTTTのWebhookを使うためにポートを開けてIR Stationを外部から制御できるようにしておかないといけない。

あとはIFTTTで連動するだけ。Webhookのアドレスの部分はグローバルIPかDDNSを入れる感じ。

ネット経由の割にはだいぶレスポンスが良い。
HomeBridgeとかよりは設定が簡単でいいなぁ

これで赤外線リモコンが使えるものはほぼ音声で制御できるかも?

2017年12月4日月曜日

Google Home Miniを買ってみた

楽天ブックスで半額セールをしていたのでついGoogle Home Miniを買ってしまった。
半額なら最低限普通のスピーカー的な使い方ができれば問題ないかなと言うことで…
おもったよりだいぶ小さい箱。

箱を開けると本体が。ファブリック感が良い。

付属品はちょっとした説明とACアダプタのみ。
ACアダプタはmini USBでデザインとか質感はなかなか良いと思う。

裏面のオレンジ色はゴムで結構グリップする。本体にはACアダプタとミュートスイッチぐらいしか無いかも。タッチ式のボタンはあるようだけど。

音声認識中は真ん中あたりのLEDが光るっぽい。本体の左右を触ると音量の上げ下げができる。

とりあえず電源を入れるとGoogle Homeアプリから設定するように言われるのでGoogle Homeアプリから自宅のWiFiに繋いだり個人設定すれば普通に使える状態に。
音質的には声は聞きやすいかも。低音は物足りないけど作業用BGMぐらいだったら問題ないかもなぁ

IFTTTでも使えるようなので色々連動させてカスタムコマンドで遊んでみようかな

2017年12月3日日曜日

S270を買ってみた

結局PX-BCUDだけだとBS/CSしか見れなくて微妙に不便なのでPX-S1UD V2.0のOEM元?であるS270をポチってみた。
11/11のセールにポチって届くのに3週間かかった…
セールだから仕方ないね

中国から来た割には箱が原型をとどめている

日本語の説明も書いてある!
ISDB-T対応の国の言語それぞれで説明が書いてあるのかな

付属品はアンテナとそのスタンド2種類、アンテナ変換アダプタとUSB延長ケーブル

アンテナ端子はそのままだと日本のF型と互換性がないので付属の変換アダプタをぶっ刺します。

PX-S1UD V2.0とそっくりというかそのまんま?

とりあえずWindowsで動作確認。
ドライバはPX-S1UD V2.0のものをダウンロードして使用してみた。
BondriverはBondriver_BDATを使用した。
PX-BCUDで環境は整っているのでチャンネルスキャンするだけで普通に使えたー
今度はRaspberry Piでためしてみよ。

2017年12月2日土曜日

IR Stationを作ってみた

Wi-Fi接続の学習リモコンといえばIRKitとかeRemoteとかいろいろ出てるけどどれも意外と値段が張る…
IRKitに関してはオープンソースなので回路図やソフトウェアが公開されていて部品を買って組み立てれば多少はお安くなるんだろうけども、結構部品もお高い。

安価なWiFi搭載マイコンである、ESP-WROOM-02を使って学習リモコンを作っている例が何件かあったので調べてみた。
1つはminIRum。IRKitの一部機能を実現しているもの。
作者さんのサイトではHomebridgeでHomeKit互換の学習リモコンとしての使用例が。IRKit互換なのでHomebridgeではIRKit用のプラグインそのまま使えるっぽい?
もう一つはIR Station。こちらはフル機能の学習リモコンで、タイマーなども使える模様。ブラウザから操作するので対応機種選ばなそう。

ということで今回はIR Stationを作ってみることに。
どちらもESP-WROOM-02なのでハードだけ作ってしまえばソフト書き換えでどっちにでもなりそうだし。

ソースコードや回路図はGithubのIR Stationにアップロードしてくださっているのでそちらを利用させていただいた。

とりあえず部品は手持ちのものを利用して作成することに。
前にAtmega328やRaspberry Piで学習リモコンを自作した時の余りを利用した。

ESP-WROOM-02はだいぶ前に購入して、ユニバーサル基板に実装していたものを再利用した。


ケース買ってからLEDの位置を決めようかと思っていたので赤外線LEDの実装適当。
RGB LEDもケースに入れるときかな…

ソフトの方はArduinoから書き込む。
ESP8266の設定はGithubに書いてあるとおりなんだけど、NTPを使って時刻が正常に取得できなかったのでNTPのサーバーの変更を行った。
ntp.cppのIPAddress timeServerのところをNICTのIPアドレスに変更した。

これで正常に時間が設定されるようになった。

ついでにルータからIR Stationのホスト名を取得するとESP_から始まるデフォルトのホスト名になっていたのでホスト名を"IR-Station"に変更してみた。

修正箇所はwifi.cppの57行目あたりにWiFi.biginがあるのでその上に
WiFi.hostname("IR-Station");
と追加した。

プログラムを焼いたらお次はSPIFFSにWebサーバ用のデータを書き込む。
ファイルシステムにデータをアップロードするためにArduinoにプラグインを追加しないといけない。
Arduino ESP8266 filesystem uploader
こちらからツールをダウンロードしてドキュメントの中にあるArduinoフォルダにtoolsというフォルダを作ってESP8266FSフォルダごと突っ込むだけ。

あとはツールのESP8266 Sketch Data Uploadからデータをアップロードするだけ。
マイコンの設定が正常に行われてないとうまく書き込めないので注意。

起動するとIR-StationというSSIDでAPモードで立ち上がるのでパスワード(IR-Station)を入れて192.168.4.1にアクセスするとWiFiの設定ができる。
あとは自宅のWiFiに繋げば完成っぽい。

詳しい使い方は作者さんのページがわかりやすい。

一応ダイキンのエアコンとNECのシーリングライトがうまく動いてるのですごく便利になった。
エアコンのリモコン信号は特殊な物が多いのでエアコンのリモコンを学習できるリモコンなら他の製品も問題なく動きそう。
ESP-WROOM-02ならRaspberry Piみたいに電源切るとき気を使わなくても良いし、低消費電力だし。
後はこれを小型のケースに組み込みたいな

2017年11月8日水曜日

DuinoFun UHS miniを買ってみた

Arduino用のUSB Host ShieldのArduino Pro mini版のクローンを買ってみた。
Circuits@HomeのUSB host mini r1.0のコピーっぽい?MAX3241Eは3.3V駆動なので、レベル変換がついてないUSB host miniは3.3V駆動のArduino Pro mini用に作られてるっぽい。
結局重ねて使うことも無いと思うしESP32とかでも使ってみたいのでピンヘッダを必要最低限にしてみた。

V_BUSとVCCはパターンカットで切り離して、V_BUSに5V、VCCに3.3Vをわけれ入れられるようにした。
そうしないと3.3Vで動くUSBデバイスしか動かせないし…

これならブレッドボード上でArduino Pro Micro以外でも試せそう。
一応Arduino Pro microで動作確認。

ライブラリはUSB Host Shield Library 2.0を使用した。
とりあえずこの環境での動作は問題なさそうなので今度は別なマイコンでも試してみたいなぁ

2017年11月3日金曜日

Orange Pi PCにArmbianを入れてKernel 4.xを使ってみた

久しぶりにRaspberry Piを引っ張り出してきたんだけど、そういえばOrange Pi PCでも同じことできるんじゃないかということで久しぶりにOrange Pi PCを引っ張り出してきた。
以前はテレビに繋いで使ってたんだけどFireTV Stick2が来てから全然使ってなかったし。

ディストリビューションはArmbianを使ってみることに。Armbianは今のところデフォルトでKernel 3.4系みたいだけど、PX-BCUDはカーネル4.7以降だとカーネルモジュールが組み込まれているようなのでArmbianのNightly Buildに切り替えて、カーネルを入れ替えてみた。

まずはarmbian-configでNightly Buildに切り替える。

sudo  armbian-config

これでSystemの設定から変更することができる。
少し時間がかかる。

古いバージョンを消去する。
sudo aptitude remove ~nlinux-dtb ~nlinux-u-boot ~nlinux-image ~nlinux-headers
sudo aptitude remove ~nlinux-firmware ~narmbian-firmware ~nlinux-$(lsb_release -cs)-root 1 aptitude remove ~nlinux-firmware ~narmbian-firmware ~nlinux-$(lsb_release -cs)-root
(勝手に改行されてるけど2行です…

あとは新しいバージョンのカーネルやヘッダをインストール。

sudo apt-get install linux-image-dev-sun8i linux-dtb-dev-sun8i linux-headers-dev-sun8i
sudo apt-get install linux-u-boot-orangepipc-dev linux-$(lsb_release -cs)-root-dev-orangepipc
sudo apt-get install sunxi-tools swconfig a10disp
sudo reboot

これで再起動後にカーネル4.11.12で起動した。
H3のカーネル4.xはまだ使えないモジュールがあったり不安定だったりするのでまだまだだろうけど、一応Raspberry Pi同様にPX-BCUDを動かすことができた。

ただなんかVLCでhttpストリーミングしてるとOrange Pi PCが落ちるんだよなぁ…
何が悪いんだろ…

2017年10月29日日曜日

PX-BCUDをRaspberry Piで使ってみた。

だいぶ前に買ったUSB接続のBS/CSチューナー、PX-BCUDをいつのまにかLinuxで使えるようにしてくれた人が居たようなのでためしにRaspberry Pi 3 Model Bで試してみた。

さらにRaspbianの最新バージョンだとモジュールが組み込まれているのでUSBに接続するだけで認識するみたい。

こんな感じでモジュールが勝手に読み込まれてた。

B-CASリーダとして使っていたSCR3310-NTTComもLinux対応だったのでこいつも普通に認識してそうな感じ。

あとは録画ツールの準備。
PX-BCUDではrecpt1の派生であるrecdvbで使えるようにしてくださってる人がいるのでそれを使うことに。
デフォルトではtsの復号化をしてくれないのでB-CASカードでtsを復号化してくれるようにlibarib25も必要。

まずはlibarib25のセットアップ。

カードリーダを使うためのライブラリとcmakeを入れる。

sudo apt-get install cmake libpcsclite-dev

libarib25をダウンロードして解凍

wget https://github.com/stz2012/libarib25/archive/master.zip -O libarib25.zip
unzip libarib25.zip

libarib25をmakeするためのディレクトリに移動してmakeしてinstall

cd libarib25-master
cmake.
make
sudo make install

次にrecdvbをセットアップする
recdvbは派生が色々あるようだけど今回はdogeel版を使用してみた。

recdvbをダウンロードして解凍

wget https://github.com/dogeel/recdvb/archive/master.zip -O recdvb.zip
unzip recdvb.zip

recdvbをlibarib25を有効にしてmakeしてinstall
cd recdvb-master
sudo apt-get install autoconf
./autogen.sh
./configure --enable-b25
make
sudo make install


これで一通りの準備が整った…ハズ。

カードリーダーにB-CASを差し込んで(例によって差し込む向き注意)テストしてみる。
recdvbにはネットワーク越しでVLCでテレビを視聴できる機能もあるのでこの機能で見れるか試してみた。

recdvb --http 8080 --b25 --strip
これでRaspberry Piのポート8080に接続すると復号化された映像をVLCから再生できる。

クライアントのPCにはVLCをインストール。iPadのVLCアプリでも可能だった。
メディア→ネットワークストリームを開くから
http://ラズパイのIP:8080/チャンネル
という形でアクセスするとテレビを視聴できるはず。
チャンネルはrecdvb -helpで一覧を見ることができる。
例えばラズパイのIPがで192.168.0.2のBS11を見たい場合は
http://192.168.0.2:8080/211
をVLCから開けば再生できるはず。

とりあえずLinuxで使えることが確認できた。
Chinachuとかを使えば低消費電力な録画サーバーの構築とかもできそうだなぁ

Related Post

Google Homeで家電を制御してみる

Google Home Miniをせっかく購入したのでこの前作ったIR Stationを使って赤外線リモコンが使える家電をGoogleアシスタントで制御してみた。 流れとしてはGoogleアシスタントをIFTTTと連動させて、IFTTTからIR Stationを呼び出す感じ。...