2016年1月29日金曜日

IRKit+Tasker+Pebbleでスマート家電(1)

いつもベッドに入ってから、「あ、電気つけっぱだ」「暖房切ってない」とかやらかします。
今のような寒い時期や、すっごい眠いときにはこれが辛い。

そこで昔買った iPhoneを学習リモコンにする『L5 remote』を引っ張り出したのですが、
設定したものが全部ふっとんでる。やむなく設定しなおしたのですが、以下のような問題が。
 ・新しく買った加湿器に使うと、ON/OFFを際限なく繰り返すw
 ・そもそも冷暖房には使えてなかった(エアコンは学習する赤外線信号が複雑)
 ・PS3を赤外線操作できる周辺機器も買ってたのだが、設定が復活できない

最後のは『L5 remote』にあったクラウドがサービス終了してたため、
自分が持ってないリモコン設定を持ってことができなくなってしまったためです。
PS3を赤外線操作できるリモコンはほとんどありません(公式リモコンは Bluetooth)。
だが赤外線ならリモコンの一本化が狙えるので復活したい。

そこで一念発起して、スマート家電化を目指そうと考えました。
どうせならリモコンやスマホではなく、スマートウォッチ Pebbleから操作したい。
睡眠管理のために寝る時もつけてますからね。

で、買ったのが『IRKit』。WiFi経由で指示を出すと赤外線を出します。
この手の製品にしては手頃な値段で、やれることも多く、一方で設定はちょっと難しい。


ネット記事を参考に試行錯誤した顛末が誰かの参考になるかもしれないので残しておきます。
比較的古めの記事が多くてひっかかったというのもあったので。
あと Taskerや Pebbleでここまでやったという記事も見かけなかったので。

● IRKit初期設定編(iPhone)


iPhone だと公式のリモコンアプリも出ていて、普通に使う分には実は超簡単です。
まずアプリを使って初期設定と簡単なリモコン登録をしてみました。



ここは簡単に流してしまいますが、アプリの指示に従って
 家のWiFi情報入力>IRKitに接続>同梱のパスワードを入力>家のWiFiに接続
これで初期設定完了です。次にリモコンに天井のライトを登録してみます。
 追加ボタン>アプリの指示が出るので、ライトのリモコンをIRKitに向けて押す


で、作ったライト用のボタンを押すと、
 iPhoneアプリ>WiFiでIRKit>赤外線でシーリングライト
と指示が飛んで、電気がつきます。

● IRKit初期設定編(Android/Windows)


私は今は Androidをメインに使っているのと、やりたいのが Pebbleからの操作なので、
次はPCで少し難しめのことをします。といってもちょっと PC慣れた人なら大丈夫。

さて。ここで知りたいい情報は以下の2つ。信号送信スクリプトを書くために必要です。
・IRKitの DeviceID
・IRKitの ClientKey

まずIRKitのIPアドレスを確認します。
ルーター設定眺めたり、コマンド送ったりしたけど、以下が一番楽でした。


【追記】 アプリ紹介がうまく動いてないようなので。
     Fing - Network Tools というアプリです。

教えてくれたのはオフブレさんのブログ「87miles.net」。

次に DeviceIDと ClientKeyを知るために、IRKitから ClientTokenを貰います。
コマンドプロンプトから cURL というコマンドを使います。

まずこのサイトから cURL プログラムをダウンロード、解凍し、C:\Windows の下に置きます。
私のマシンは 64bitなので、"Win64 ia64 zip"(SSLの方)ってのを落としてきました。

このあたりの流れは以下のサイトを参考にさせてもらいました。
パソコンで家電をリモコン操作する IRKit

で、コマンドを打ってみるも、返ってきた答えが「404 Not Found」。
あれれーと30分ほどネットの海をさまよい、答えは公式サイトと製作者ブログにありました。

maaash.jp - IRKitの脆弱性とファームウェアアップデートのお願い
IRKit

% curl -i "http://(Fingで調べたIRKitのIP)/keys" -d '' -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.3.13.gbe33d36
Content-Type: text/plain

{"clienttoken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

最新ファームではヘッダ(-H から後)を付けないといけないのです。
これが参考にした幾つかのブログでは書かれてなくて引っかかった。

で、得られた ClientTokenを使って、DeviceIDと ClientKeyをゲットします。

% curl -i -d "clienttoken=XXXXXXXXXXXXXXXXXXXXX" "https://api.getirkit.com/1/keys"
HTTP/1.1 200 OK
Server: ngx_openresty
Date: Tue, 07 Jan 2014 08:46:06 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 94
Connection: keep-alive
X-Content-Type-Options: nosniff

{"deviceid":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","clientkey":"XXXXXXXXXXXXXXXXXXXXXXX"}

ここまでで下準備は完了です。
長くなりそうなので、続きは次の記事で。

2016年1月14日木曜日

フィットネス・ヘルス情報を(ある程度)一元化・自動化してみた



体組成計を買いまして。

せっかくなので毎日測って、記録を取ろうと思って買ったのですが、
フィットネス系サービスと連携する WiFi機能とかの体組成計は高いのです。

結局私が買ったのは Panasonic EW-FA13というやつで、
結構いろいろな数値も取れるし、精度の評判もいいのですが、お手頃2500円。
データ連携系を買おうと思うと、2万とかする。

しかも国内のメジャーメーカーだと自社のサービスとは連携するのですが、
スマホアプリやフィットネスバンドで有名なサービスにはデータを渡せなかったり。
じゃあ手入力でいいじゃないかと。

とはいえ面倒なのも事実。続けなければ意味がないので負荷は減らしたい。
あと一元管理したかったので様々なサービスを試した結果、最初の写真のようになりました。

では、その仕組みを紹介。




〇 ヘルス情報:体重・体脂肪率など

上記の図を左上からご覧ください。

 1. 体重を測る
 2. (図の右) Withingsに Androidアプリから日々入力(体重と体脂肪率のみ)
 3. (さらに右) numerousで表示 - IF(後述)でWithings記入時に自動更新

これがメインです。その日の体重、体脂肪率を表示する。
残念ながらヘルス情報と、歩数などのフィットネス情報を一元管理できるサービスがない。
そこで【一元表示】、【管理】、【連携】と3つに分けました。メインは【一元表示】。

【管理】は以下のステップです。できれば毎日だけど、溜めても大丈夫。
 1. 体重を測る
 2. (図の下) Androidアプリから入力(皮下脂肪率や筋肉レベルなどすべて)
 3. 上記アプリのPC版にアクセスし、csv出力
 4. 形を合わせてGoogle Driveにコピペ
2番のアプリは Panasonic Smart Appのダイエットメモというやつです。
csvは Withingに流し込むこともできる。試したら何故か体脂肪率が増えたけども。

【連携】というのは、フィットネス系にも体重情報だけは渡しておきたかったので。
2番まではメインと一緒で、そのあとも自動です。
 3. サービス連携で体重と体脂肪率が myfitnesspal に引き継がれる
 4. 同様に Misfitに引き継がれる
myfitnesspal は海外最大手らしいのですが、一元管理できないところで捨て。
と思ったら、これを間に挟まないと Misfit(あとで詳しく)にデータが渡せなくて拾い。

毎日しなきゃいけない手作業は、体重計に乗ることと、Withingsの入力のみ。

〇 ヘルス情報:心拍数

フィットネスバンドのように常に測れるわけではないけど、測って記録してみたかった。
図中央上部、「心拍数」のところからご覧ください。

 1. Androidアプリ Instant Heart Rateでスマホのカメラを使って計測
 2. 結果をTwitterでシェア。その際数値とハッシュタグ以外は削る
 3. numerousで表示 - IF(後述)でハッシュタグ付ツイートがあったときに自動更新

【管理】としては
 4. numerousの履歴を見て Withings、Google Driveに手入力

これも毎日必須としては測ってシェアするだけ。

【2016/1/22 追記】
1/20のアップデートで Withingsの Androidアプリに心拍数測定が導入されました。
別アプリ の起動、ツイートの手間がなくなりました。

 1. Androidアプリ Withings で体重・体脂肪率記入時に心拍数も測定
 2. numerousで表示 - IF(後述)で Withings記入時に自動更新

〇 フィットネス情報:歩数、移動距離、カロリー消費

図の右下の方、「Pebble」から「Misfit」の部分です。

スマートウォッチ Pebbleは前から愛用しているのですが、
せっかくなので入れておいたフィットネスアプリが Misfit 。
競合の Fitbitもできそうだったのですが、Pebbleアプリが有料のうえ評判いまひとつ。

Pebbleの Misfitアプリに蓄えられたデータは自動、または手動同期でスマホ→ウェブへ。
また同期時に IF(後述)で Numerousにも渡されます。
睡眠データも渡されるのですが、それは後述。


〇 フィットネス情報:睡眠

「Pebble」から下の「Sleep as Android」の流れです。

Misfitでもデータは取れるのですが、当初うまくいかず導入したのが Sleep as Android
機能を購入する必要がありますが、Google Driveや Twitter連携を自動でしてくれる。
精度も Misfit より高い気がします。

逆に Misfitの利点は、寝る前に開始ボタンを押す必要がないこと。
ただ Sleepはスマート目覚ましとしても使ってるので、両方使ってます。

さて numerous表示は図に書ききれなかったので略してますが、
Twitterにつぶやいたものを IF (後述)で拾って、numerousにコメント。
それを見たときに、深い睡眠がとれた率を手動でデータ入力してます。
numerousは数値しか受け入れないし、IF はテキスト加工できないので苦肉の策。
まあほぼ自動ってことで。

〇 フィットネス情報:カフェインカウンター

図では「Pebble」から上に伸びるラインです。

賞に輝きながら IF(IFTTT) の苦情で消えてしまった Pebbleアプリ PushButton。
 紹介ブログ:「Pushbutton」初代Pebbleと次世代Pebble Timeを「IFTTT」の実行ボタンにすることができるアプリが登場。IoTとかコントロール可能に-Thanx Palm(Yuu Andouさん)
IF の新サービス Do buttonを Pebbleからできるようにします。

IF は睡眠のところで書いたようにサービスとサービスを連携させるものなのですが、
この Do buttonアプリではボタンを押すと、予め登録したサービスに値を投げます。
でもスマホ取り出して、アプリ起動するの面倒です。そこで PushButton。
"pbw"で検索すると幸せになれます。

で、具体的な仕掛けですが、 Do buttonでボタンを押したら
numerousに作っておいた「CoffeeCountを1増やす」という機能を作成。
また IFで「0時になったら CoffeeCountをゼロにする」という機能も作成。

あとはコーヒーを飲むたびに Pebbleで PushButtonから CoffeeCountを押すだけです。
ときどき numerousの履歴から Google Driveに記録をうつします。

〇 フィットネス情報?:移動場所

左下。以前からAndroidに入れてある「Moves」のExportサービスを使って
Evernoteに日々の記録を投げてます。たまに見返すと面白い。


結局毎日必須の手作業は3つかな?これなら続けられそうです。
さて、他にもいろいろ使ってみたのですが諦めたサービスにも触れておきましょう。

からだバランスラボ
 パナの薦める自社サービスだったので使ってみた。が。
 モバイル版の案内があるのに開けず、データは入れたきりエクスポートもできず。
 体組成計の上位機種向けであるダイエットメモの方が小回りが利きました。
 てかなんで別アプリ?

▽ Google Fit
 他サービスを統合できるってあったから期待したけど、ごく一部のみ。
 入力できる値も少ない。将来に期待。

FitHub
 幾つかのフィットネスアプリを束ね、平均/個別で表示してくれる Androidアプリ。
 でもヘルス系ができなかったので。

▽ UP by Jawbone
 フィットネスバンドで有名。Pebbleでは代用できないのと、
 ハブとして myfitnesspal 的に使おうとしたらうまくいかなかったので断念。

▽ Runkeeper
 有名なフィットネスアプリ。これもうまくハブにできず断念。
 アクティビティの記録がメインなので、データを渡してはくれても貰ってはくれないのかな?

Fitbit
 家電量販店いくとこれのフィットネスバンドが並びまくってますね。携帯キャリアとも組んでる。
 これは前述のとおり、Pebbleとの相性で却下。アプリの見た目も Misfitがよかった。
 図のPebble の画面のがそれです(小さくて見えないかな?)

▽ ARGUS
 これは惜しかった!見た目がよく、情報も多く統合できるのだが、
 他サービスとの連携が弱く、Pebbleとも組み合わせられなかった。
 心拍数測定アプリの Instant Heart Rateは同じ Azumio社のアプリです。

▽ Runtastic Heart RateCardiograph
 Instant Heart Rate同様の Android用心拍数測定アプリ。
 外部への測定値出力ができなかったのが分かれ目でした。
 Runatic はメジャーサービスなのに、Share時のツイートが「測定しました」って・・・

以上、長くなりました。ご覧いただき、ありがとうございます。
参考になれば幸いです。






2016年1月10日日曜日

秋葉原パレットタウンのノートPC福袋 2016

あけましておめでとうございます。

めずらしく福袋なぞ買ったら案外良かったので書いておこうと思います。
秋葉原のパレットタウンというお店の、3000円のやつを買いました。
ノートPC必ず入ってます。というのがウリだそうで。


1. SONY VAIO VGN-FS92PS


 でかくて重くて古いですが、いじって遊べるPCあってもいいなと思って買ったので大満足。
 
 OS:Windows XP Pro SP2 → SP3にアップデート
 CPU:Pentium M  740(1.73 GHz)
 メモリ:DDR2 400 512MBx2
 HDD:40GB → 120GBに換装
 15.4型ワイドWXGA(1280×800)
 DVD-ROMドライブ搭載、WLANなし
 USBポート x3、RGB出力ポート、LANポート、モデムポート
 音声入出力端子、メモリースティックスロットあり

 はじめ音が出なかったのですが、ヘッドホン端子をこちょこちょしてたら直りました。
 またヘッドホン使うと出なくなりそうだったので、Bluetoothアダプタでスピーカーとペアリング。
 ネットは怖いのでスタンドアロンで、SP3には手持ちのディスクでアップデート。
 スリープを切って画面を閉じ、モニタ外部出力で使ってみてます。操作はBTマウスで。

2. 海連 Technote TN-A501


 http://www.kairen.co.jp/japanese/release/060614.TNA501.html

 右下のやつ。メモ紙を挟んで付属のペンで書くと記録できるそうな。
 なんかペンタブになるっていう話も。発売当初の価格は19,800円。
 パレットタウンでは500円で売れ残ってたそうで。

3. ポップなトースター


 パレットタウン店頭では 2480円だったかな?で展示されてた。売れないだろw

4. ブルーライト低減メガネ


 パレットタウン店頭では 780円だったかな?効果あるんですかね?

5. その他


 ・PCIスロット用ファン
 ・EPSON用互換インク
 ・PC用ヘッドフォンx3
 ・iPhone用充電ケーブル
 ・auガラケー用ポータブル充電器x2(単三電池付)
 ・Galaxy用カバー
 ・New Nexus7用カバー
 ・汎用ノートPCカバー(VAIOは入らない)
 ・超古そうなFujitsuテンキー
 ・マウス

ノートPCで十分元は取れてるんですが、それ以外でも一応元はとってるのかな。
面白かったです。それではみなさま、よいお年を~。