Pebble + Snowy + IFTTT + Wemo で時計から音声コマンドで灯りを点けたり消したりする話

Posted about 1 year ago by yoosee.
  iot pebble

さて最近は Pebble Time Round を思ったより腕につけているが、そんな Pebble に Snowy という、Pebble の音声入力を使って色々な音声コマンドを実行することができるアプリがある。Google Now や Siri ほど複雑なことはできないが、単位の変換やチップ計算、タイマーのセットなどが音声コマンドから簡単にできるので結構役に立つ。

この Snowy には IFTTT との連携機能がある。この手の実装によくある形だが IFTTT Maker Channel との連携になっている。つまり Snowy で何かしらコマンドを入れると、それに対応する Maker Channel のトリガーが実行される。

IFTTT Maker to Wemo

まずスマホ側 Pebble アプリの Snowy 設定 IFTTT MAKER KEY に Maker Channel を Activate すると表示される API Key を設定。Maker には例えば snowy_light_on というトリガー名を設定する。この snowy_ 以降のトリガー名がそのまま Pebble でのコマンド名になるので、Snowy に対して “Snowy, Light on” のように音声コマンドを入れるとこの Maker のトリガーが実行される。このトリガーに IFTTT の Recipe にて例えば WeMo Switch Channel の Power Toggle を設定しておけば、WeMo に接続された電灯が点灯・消灯する。

Maker Channel を使えば Pebble から IFTTT の任意のトリガーを引けるので、割と使い勝手があるんじゃないかと思う。唯一の問題は Snowy の音声認識は予め決まった Command であれば割と問題ないのだがこの場合は任意の英語、上記の例だと Light on になるが、これを正確に渡すための発音認識が結構厳しい…。まあ実体と違っても認識しやすい単語セットにするのが手だろうか。

余談になるが IFTTT の Maker Channel は非常に単純な構造で、アカウント毎に払いだされる Key を用いて HTTPS の POST を受けるとトリガーが発動するよう設定できる。設定をすればトリガーからパラメータも渡せる。

% curl -X POST https://maker.ifttt.com/trigger/snowy_light_on/with/key/abcdefg012345xyzzz

元々 Raspberry Pi などの DIY の電子キットなどから呼ぶ目的のチャネルらしいので、使い方を考えてみるのも面白いと思う。

 

Intel HD graphics causing high CPU utilization とその解決

Posted about 1 year ago by yoosee.
  windows

発生していた問題: Dell Laptop Latitude (Windows 7 Enterprise) を Dock につないで複数モニタに画像を出し、任意のウィンドウを最大化した場合、System プロセスが約30%程度のCPUを専有し続ける。

これはどうやら Intel HD Graphics の問題 (8159769 [SCALING BUG] Windows 10 / Intel HD Gra… | Intel Communities)らしい。Fix が少なくとも Windows 10 向けには Submit されたようだが今のところ手元には落ちてきていない。

I believe this is a problem with the Intel driver rendering the Aero Glass or drop shadow from the application on the analog monitor, across the primary / secondary monitor seam, onto the digital monitor.
Intel HD graphics causing high CPU utilization | Intel Communities

とのコメントの通り Aero に関連して発生する問題のようだ。Control Panel → Personalization → Windows Color and Appearance から Enable transparency のチェックボックスを外すと問題自体は発生しなくなった。

 

Pebble Time Round をいまさら買ったのだけどこれはかなり良いかもしれない

Posted about 1 year ago by yoosee.
  smartwatch pebble

今更の話だが Pebble Time Round - Black 20mm band (JP) を買ったのでレビューする。端的に言えば大変気に入った。少し前に Moto 360 1st gen を2ヶ月ほど借りて使った際に、スマートウォッチには 「時計」と「通知」、あとは「ヘルスモニタ」以外に必須な機能はないという結論に至ったのだが、Pebble はこれらに非常にうまくフォーカスして使い勝手を上げている。またこの Time Round は大変小さくて軽いのがいい。

Pebble Time Round

購入時は Refurbished (返品の再販売品) に加えて Amazon Gold Deal で $129.99 + tax まで値下がりしたが、今普通に買っても $180 くらいのようだ。なお標準では日本語対応がないが、日本語化は有志の language pack を入れるだけで簡単にできたので割愛する。

ハードウェア

Pebble Time Round を開封しての第一印象は「薄くて軽い!!」だった。感覚的にはスウォッチ程度で、スペックを見ても厚み 7.5mm 重さ 28g とかなり小さい。ステンレス筐体の出来もなかなか良くて安っぽさはないし、ボタンも安定感がある。moto360 は 11.5mm 49g だったので腕につけても相当な違いを感じる。

Pebble はタッチスクリーンがない代わりに右側に3つ、左側に1つのハードウェアボタンがある。右側は「上」「決定」「下」で左側が「戻る」ボタンになっている。 moto360 のタッチスクリーンはしばしば指の動きに反応しなくてストレスを溜めたことを考えると、ハードウェアボタンでの確実な操作はむしろ使いやすい。タッチスクリーンがあったところで上下左右のスワイプとボタンのプッシュ以外に大した操作はしないのだし。

惜しむべくは防水が IPX7 splash proof レベルなこと。プールにつけて入れないのはともかく、シャワーもよろしくないのは日常身に付けるものとしては少し残念ではある。革バンドなのでどのみち水はよくないのだが。

ウォッチフェイスとディスプレイ

Pebble Time Round Watch Faces

商品写真で見ていた時はウォッチフェイスの縁に 5 mm も枠があり広すぎてカッコ悪いと思っていたが、使ってみるとさほど気にならない。ただこの縁のおかげで時計としてはどうしても少しオモチャっぽい印象になるのは否めないので、もう少し表示面が広いと良かったのにとは思う。

画面は電力消費の少ない e-paper で、e-ink ではなく Transflective low-power memory LCD らしい。解像度は 180x180 となっているが、円形なので画素数はその分少ない。英語では特に問題ないのだが日本語を表示させるとフォントにシャギーが出るのがちょっと悲しいというか懐かしいというか、だが、実用には耐える。なお色数は64色だが、画像を見るような用途ではないので特に問題は感じない。

半透過型LCDということでいわゆる e-ink と比べると反射光下での視野性は多少劣るが、操作時の反応速度は普通のLCD同様に早くて全くストレスが無い。また標準で常時表示型なので、他の多くのLCDやAMOLEDスマートウォッチのように画面表示のために毎回腕をひねったりしなくていいのは快適だ。なお腕をひねるとバックライトを点灯させることが出来るので完全に暗いところでも文字盤は問題なく読める。

電池の持ちと充電

他の Pebble と違って Round は電池寿命が 2日強である。これは薄型のサイズによるもので、継続使用1週間の Pebble Time の電池容量が 150mAh なのに対して Round のそれは 56mAh らしく、そりゃ2日しか持たないわけだ。とは言え moto360 が 320mAh で丸1日持たないことを考えると e-paper と機能限定の恩恵は大きい。個人的にはあと1mm程度厚みを増してもいいからバッテリーをもう1日伸ばすなどしても良かった気はするが、この薄さと軽さは快適だし、15分程度で +40% 程度 (約1日分) の充電ができるのでさほどストレスはない。

充電は専用のUSBケーブル一体型磁気接触式コネクタで行う。充電速度はかなり早く、上記の通り15分もあれば+40% 程度の充電ができるし、フル充電も1時間もかからない。朝シャワーを浴びる時であったり仕事でキーボードを打ち続けるときには外すので、その時にでもちょっと充電しておけば十分である。予備の充電アダプタも安いので家と職場に置いてある。

時計バンド

Pebble Time Round のバンドは 20mm と 14mm のモデルがあるが、どちらも簡単にバンドの取り外しができて同サイズの市販品との交換ができる。Apple Watch のように専用バンドでないので、世にある非常に幅広いラインナップから自由に選ぶことが出来るのはメリット。

ソフトウェア

Pebble Timeline

Pebble のタイムラインUIは当初から評判が良くてレビューもそこらにあるのであまり詳しくは解説しないが、確かにこれはこれで使いやすい。というかまあ、スマートウォッチ自体で様々な情報を見たいとは殆ど感じないので、スケジュール・タイムラインにフォーカスしたのは当たりな気がする。

Pebble and Snowy listening voice command

Pebble Time Round にはスピーカーはないがマイクがあるので音声入力が出来る。日本語の入力は出来ないが、SMSに音声返答したり、タイマーやリマインダなどを音声コマンドで入力したりといったことが出来る。幾つかのソフトで IFTTT 連携があるので、時計経由で IFTTT のトリガーを引けるのは色々と面白いし使い勝手がある。

また moto360 を使っていた時は数日に1度程度はフリーズしたり電池切れでシャットダウンしたりして、再起動にこれがまた5分10分かかっていてストレスをためていたものだが、Pebble はそうした不安定さをほぼ全く感じない。ファームウェアの更新などで再起動しても30秒位で立ち上がってくる。日常使う「時計」に当たり前に期待したいレベルとしては大事なポイントだ。

総評

元々スマートウォッチが欲しいというよりは、旅行中に時刻合わせが必要のない時計が欲しいというのがひとつの大きな動機だった。moto360 は機能的には要件を満たすものの、飛行機に乗っている間に電池が切れてしまうのでは目的を果たせない。Pebble Time Round は電池が2日間なので、移動が24時間を超えても乗り切ることが出来るのは個人的に嬉しい。

moto360を試す前はスマートウォッチには色々と幻想を持っていたのだけど、最初に書いたとおりで実際に使ってみると結局のところ「時計」と「通知」、強いて他に言えば「ヘルスモニタ」以外に特に必要とする機能はないという結論に至った。なんにしてもスマホを一緒に持ち歩いているのが前提なので、少しでも複雑なことをするならスマホでやったほうが楽なのである。恐らく将来的に音声入力の発展が状況を変えるだろうが、現時点ではまだやれることは限られている。

その意味で Pebble はそうしたユースケースをうまくとらえて製品化している。常時表示の画面や長めの電池寿命など、日常使うことにストレスを感じないようなうまいパッケージングがされていると感じる。また毎日身につける「時計」として、この薄さと軽さは大きな長所だろう。何年かすればハードウェア性能が機能に追いつくのかもしれないが、現時点では最もこなれたスマートウォッチと呼んでいいのではなかろうか。

しかしこれ、低解像度・低色数で少しシャギーな日本語フォントを見たりするとどうしても古のPalmOS時代のノスタルジーを感じることよ。低機能で電池が持つというコンセプトも似てるしね。

 

飛行機で十分な睡眠をとるために欠かせない三種の神器

Posted about 1 year ago by yoosee.
  travel

仕事の都合で日米間の出張がしばしばあり、特にフロリダという米国でも最果てからの旅程になるため、快適な空の旅のためには努力が欠かせない。残念ながら毎回ビジネスクラスに乗れるほど偉くもないので、エコノミーでより良い睡眠をとるのが命題になっており、そのために個人的に三種の神器と勝手に銘じているものがある。まあごく普通のものだが。

飛行機安眠パック

これら3つは色々なものを試行錯誤した結果、今のところスリッパ以外は上記にリンクしている無印良品のものに落ち着いている(スリッパは別のものだがウェブ上に商品が見当たらない)。個人的にMUJIラブなのは否定しないが、特に耳栓に関しては10種類以上試して最近はこれに落ち着いた。ノイズキャンセルヘッドホンも試したが、正直ヘッドホンを付けて寝るのが煩わしいのと、遮音だけを考えたら耳栓の方が効果が高いと思う。

アイマスクはこれも3,4種類試したが、無印良品のものは圧迫が分散されるのと蒸れないので気に入っている。またアイマスクは意外と機内で無くすことがあるので値段の安さもありがたい。スリッパについては無印である必要はないが、カカトがついていて脱げにくく、足が温かくて蒸れないものを選ぶのがよい。靴を脱げるとくつろぎ度がだいぶ変わる。

長距離フライトにはこの3つは必ず持っていくので、ひとつの袋にいれて機内持ち込み荷物に放り込めるようにしている

これに以下の辺りを加えて持って行っている。

ネックピローは過去は必須に感じていたが、最近の飛行機のヘッドレストは折り曲げて首を支えられるものが多いので、そこまで必須ではなくなった。これも以前は無印良品の、例の人間を堕落させるクッションと同素材のヘッドピローが最良と使っていたが、最近ちょっとアプローチの違う Trtl Pillow を手に入れてなかなか気に入っている。これは首に巻くフリースにプラスチックの首をサポートする構造が入っていて、肩から顎のあたりで頭を支えることができるようになっている。ただこれ、日本で探すと Amazon.co.jpの並行輸入品Trtl Pillow で送料込み12,000円という、ちょっとどうかという値段になっている。

メラトニンは時差ボケ解消としてもオススメしたいサプリメントだが、いかんせん日本で手に入れるのは難しいようだ。長袖ジャケットはあると便利だが、無くても添乗員さんに「寒いのでブランケットがもう1枚欲しい」とリクエストすると国際便なら普通は無料で持ってきてくれる。寒くて眠れない時にはお願いするのが吉だろう。米国国内線だと有料のこともあるので注意が必要だが。マスクは個人的には乾燥がさほど気にならないのでしていないが、あれば嬉しい人はいるだろう。

日米航路はだいたい12-13時間のフライト(私の場合はフロリダ近辺空港から直通便がないため米国東海岸か中部空港での乗換えを入れて+6時間くらい)なので、飛行機に乗って大体2時間後くらいの機内食を頂くとメラトニンを飲み、耳栓・アイマスク・スリッパ・ネックピロー・ブランケットのフル装備で6時間位眠り、あとは仕事なり映画を見るなりして過ごすのが通例である。シートは中央列通路側を狙うことが多い。壁にもたれかかりたい人は窓隣を選ぶのもありだろう。

また安眠とは直接関係がないが、スマホ用のUSB充電器(最近の飛行機はシートに電源が付いているものが多い)、ヘッドホン(備え付けのものはあまり音がよくない。またスマホやゲームに繋ぐのにも使える)、ボールペン(税関書類などを書くのに使う)もパッケージに入れてある。場合によっては書類用に滞在先ホテルの住所などをメモっておくと便利だが、今時ならスマホに情報を入れて出かけるのでそれを参照できる。

唯一解決していないのは尾てい骨の痛みで、以前に 穴あきエアクッション を試して悪くはなかったんだけど決定力に欠けた。どなたかエコノミーでもおしりが痛くならず蒸れないクッションなりを知っていたらぜひ教えていただきたい。

この三種の神器とネックピロー、マスクくらいは無印良品に寄ればざっくり揃うので、長距離フライトで眠るのに苦労している人は試して頂ければ幸いである。

 

acd_cli で Amazon Cloud Drive を FUSE mount する

Posted about 1 year ago by yoosee.
  linux cloudstorage

去年の Black Friday で Amazon Cloud Drive Unlimited Everything プランが通常 $90 / year のところ $5 というお試し価格になっていたので試しに契約してみた。

Amazon Cloud Drive Unlimited Everything

しかし Amazon から提供されるクライアントは Windows 向けや Android/iOS 向けで、Linux 向けがないので自宅 Debian マシンにファイルを溜め込んでいる身からは使いにくい。ちょっと調べると API を用いた CLI ツールの実装が幾つかあったのでその中でも acd_cli というものを試してみた。結論から言えば素晴らしく使い物になる。

yadayada/acd_cli: A command line interface and FUSE filesystem for Amazon Cloud Drive

ポイントは FUSE として仮想 mount point を作れることで、容量無制限の Amazon Cloud Drive を自分のマシンのディレクトリとして管理できる。ファイルのアップロードはそこにコピーするだけなので大変簡単だ(同等のことはWebdavがあるBox.comなどでも出来るのだが)。一応最大ファイルサイズなどに制限があるようではあるが、バックアップを含めた普段使いでは特に困っていない。

adc_cli のインストール

インストールだが、基本的には docs/setup.rst にある通り Python の pip でインストールする。Debian stretch だと pip のバージョンが古くてそのままでは使えなかったので、python-virtualenv 及び python3 を使った下準備から始める。

% virtualenv -p /usr/bin/python3 acdcli
% source acdcli/bin/activate
...
% bin/pip3 install --upgrade git+https://github.com/yadayada/acd_cli.git

認証と利用

導入が終わったら認証を設定する。これも基本的には docs/authorization.rst のまま。Amazon App としての認証をお任せにする設定方法もあるが、今回は自前で Amazon Developer 登録で取得できる Key pair を使って設定した。

https://developer.amazon.com/public/apis/experience/cloud-drive/content/getting-started

Developer ConsoleLogin with Amazon タブから Create a New Security Profile で新しい Profile を作ると OAuth2 Credentials として Client ID 及び Client Secret が生成される。これを ~/.cache/acd_cli/client_data というファイルとして以下のフォーマットで記載する。

.. code :: json
 {
     "CLIENT_ID": "amzn1.application-oa2-client.0123456789abcdef0123456789abcdef",
     "CLIENT_SECRET": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
 }

これを設定した上で初期化コマンドを実行。

% bin/acd_cli -v init

URLが出るのでブラウザで表示して認証を進めると、oauth_data というファイルがダウンロードされる。これを以下のように配置する。

% mv oauth_data ~/.cache/acd_cli/

これでもう使えるようになっているはずだ。acdcli コマンドでステータスを表示したり単体ファイルをプッシュ・プルしたりできる。FUSE mount するのはパラメータに mount を指定して mount 先のディレクトリを記載するだけ。先に一度 sync しておく。

% acdcli sync
% acdcli mount ~/var/acd

これで ~/var/acd (ないし上記で指定する任意のディレクトリ)に Amazon Cloud Drive のトップディレクトリが表示され、操作やファイルの転送ができるようになる。

ちなみに df で確認すると容量は 100TB となっているようで、実際 Quota を見ると

% acdcli quota
...
    "quota": 109951162777600
}

という数字が返ってくる。Unlimited Plan なはずなので、100TB 近辺になると Quota が増えるんだろうか。まあ自分の用途で100TBどころか10TBを超えることもまず無いだろうと思うので何ら問題のない数値ではあるが。