2016年8月16日火曜日

金沢旅行

少し前の話になりますが、急に思い立って金沢にいってきました。
目的は「生誕百年記念 井上有一大回顧展」。
これが3/21までだったので我慢できず・・・

3/19(Sat)
 22:40 生まれてはじめての深夜バス。ときめく。

3/20(Sun)
  7:15 金沢駅到着。金沢は15年ぶりくらい。
      むかしはこんなじゃなかったような。


  7:30 くつろぎ館のカフェ アルコ・スタツィオーネ。
      バスまでタバコ吸ってくつろぐ。


  8:30 バス混んでる。急遽歩くことにする。

  8:35 尾山神社へ着く。和洋折衷の素敵な神社。

  8:40 9時には目的の美術館が開く。やばい。
      ふと見るとレンタサイクルがある。これだ!

  9:00 21世紀美術館到着。
      まちのりってレンタサイクルは各所にステーションがあって
      乗っていった先に置いていける。便利。


  9:30 並んで個展チケットを購入後、公開展示ゾーンを見学。


 10:00 井上有一展。やばい。大胆な筆使いと模索の跡。
       空襲体験の書は鬼気迫って鳥肌ものだった。
       が、周りは読めない文字をクイズ感覚で見学してた。
       お金と時間使うんだから、もっと楽しみ方を覚えてきたらいいのに。


 11:30 個展を堪能し、ここからは観光。せせらぎ通り方面へ。
       鞍月用水→長町武家屋敷跡→武家屋敷跡野村家。


 12:30 まちのりで市街地、新竪町商店街をぶらり。



 13:00 兼六園→金沢城。


 14:30 主計町茶屋街→ひがし茶屋街。ひがし混みすぎ。
       地酒のお店があったのでふらり。



 15:30 もりもり寿し 近江町店。たっぷり1時間待って入店。
       それだけの甲斐あってウマイ!
       のどぐろのおいしさをはじめて知った。


 17:45 シャトルバスで郊外のホテルへ。

3/20(Sun)
 10:45 チェックアウト。バスで駅へ。

 11:20 駅前ホテルの露店温泉。ふはー。

 12:30 おみやげ買って、東京行きのバスへ。

 21:00 新宿到着。

久々の一人旅。強行軍でしたが充実でした~。

2016年4月29日金曜日

予約してた iPhone SEが入荷されたが機種変してこなかった件


ソフトバンクさん、悪い言い方をすれば今回のは詐欺ではないかと。

 iPhone SE見積り。今より月々が安くなると聞いて予約
  ↓
 受取。見積りにミスがあり、今より高くなると判明
  ↓
 見積りに別のミスがあり、さらに高くなると判明
  ↓
 下取りができるかわからないと判明。さらに高くなるかも

前回の見積りメモ持っていってよかった。
こっちから色々確認しなかったら、請求来るまで気づかなかったよ?

より細かな経緯は以下のとおりです。

1. 3/27 ソフトバンクショップを訪問し、iPhone SEを予約する


 いまは iPhone 5Sを以下のプランで契約している。
 ・ホワイトプラン       1,008円
 ・Sベーシックパック    324円
 ・二段階パケット      2,016円

      機種変更前 3,492円

 これを iPhone SE(64GB)に機種変更すると、
 ・本体代金-月々割     625円
 ・下取り                 -1075円

        お見積り  3,092円
              機種変前比 -400

 新しい機種にできるうえに、月々も下がるなら文句なし。
 半年後には simロックを解除して 低額sim運用もできるし。
 というわけで予約。

2. 4/28 受け取りにいく。あれ?見積りのときより高くない?


 店員が iPadで出した価格は以下。

      機種変更後 3,892円

 あれ?と思って前回書いてもらった「お見積りシート」を出す。

                  見積り比 +800
              機種変前比 +400

 店員が50分かけて内訳を確認する。
 ・ホワイトプラン       1,008円
 ・Sベーシックパック    324円
 ・二段階パケット      2,016円
 ・本体代金             2,910円
 ・月々割               -1,785円
 ・下取り                -1,075円

 合計 3,542円。ただし割引しきれないものがあるらしく 3,892円とのこと

 見積りでは月々割を -2,235円、パケットフル契約時の割引額で
 提示していたのが間違いだったとのこと。

 ぐぬぬ。今より月々アップ、2年計算で9,600円出して SEにするメリットはあるか?
 見積もりに比べると、2年計算で20,000円近く増えるのも癪だし・・・

 一旦外出させてもらって、考えを整理。
 月々400円プラスで、半年後にsimフリーで実用できる最新機種が手に入るなら・・・

3. さらに 825円増し


 ショップに戻って、同じ店員に最終確認をさせてもらう。
 これ以上絞れるプラン、オプションはないか。

  私「この下取り、契約上は iPhone 4S になってると言ってましたが、
    持ち込み機種変で iPhone 5Sにしてます。
    それで下取り額があがるといったことはないですか?」

 店員、一旦裏に下がって確認。

  店員「4Sの下取り価格は -250円でした。-1075円は 5Sの買取価格でした。
     契約では 4Sなので、お客様の下取り価格は -250円の誤りでした」

 は?

 ・ホワイトプラン       1,008円
 ・Sベーシックパック    324円
 ・二段階パケット      2,016円
 ・本体代金             2,910円
 ・月々割               -1,785円
 ・下取り                  -250円

   機種変更後(改)  4,367円
               見積り比 +1,275
           機種変前比   +875

 下げるつもりの確認で、あがっちゃったけど?

 これ、俺が最終確認を取らずに機種変更を進めてたら、
 しれっとこの額で請求きたってこと?(怒)

4. 最後はギャンブルのすゝめ


 今度こそ間違いないか、別の店員にも確認してもらい、
 どなたが担当してくれたか覚えておくために両名の名刺をいただく。

  私「もう間違いないですね?」

  店員「はい」

  私「じゃあこれで一旦帰って再検討します。在庫はキープで」

  店員「取置き期限を確認してきます」

 店員、一度裏に下がる。

  店員「5/5迄におねがいします。あと・・・」

  私「はい」

  店員「下取り、つかないかもしれません」

 は!?

 曰く、契約上の記録と機種が違うので、
  - 下取りできない
  - 4Sとして下取り
  - 5Sとして下取り
 機種変後の下取り手続きをしてみないと、どれかわからないと。

 ・ホワイトプラン       1,008円
 ・Sベーシックパック    324円
 ・二段階パケット      2,016円
 ・本体代金             2,910円
 ・月々割               -1,785円
 ・下取り                       0円

   機種変更後(改2)  4,617円
               見積り比 +1,525
           機種変前比 +1,125

 私「さっき、もう間違いないって言ったじゃないですか・・・」



1ヶ月も入荷を待ちに待ってこの仕打ちかよ。

とりあえず最悪の事態を想定して、最後の改2の価格、
もし下がったらラッキーくらいに考えて、改めて機種変更を検討しよう。

24ヶ月計算で 27,000円出して、SEを買うメリットはあるのか!?


2016年3月3日木曜日

降水確率をLED電球の色で知らせる Tasker+IRKit ハック

リモコン付きの16色LED電球を買いました。1000円。
あとクリップスタンド。700円。




ほんとは いろんなことができそうな Philips hueがほしかった。
けど、スターターで25,000円。

今回は Taskerで取得した降水確率にあわせて、このLEDを IRKitから灯します。
着想になったのは、こちら↓

au Umbrella stand


買えば8000円、作れば2000円。いうても IRKitが8000円してますからね。

● 降水確率を取得する(Tasker)


使わせていただく天気情報は Weather ServiceのXMLデータ

わたしは東京なので、以下のXMLページになります。
http://www.otenki.co.jp/xml/xml/yohou4410.xml

で、Taskerですが、Taskを新規登録。
1. Net > HTTP Get → "Server:Port"に上記アドレスを入力。
 これで%HTTPDにページの全情報が格納されます。
2. Varilables > Varilable Set
  → "Name" に任意の変数(%otenki)
  → "To" に %HTTPD
 いちおう、%HTTPDから自前の変数に移し替えます。
3. さて、長ったらしいデータをどこで切って、降水確率を抜き出すか。
  Varilables > Varilable Split
  → "Name" にさきほどのの変数(%otenki)
  → "Splitter" に proba0

XMLデータでは、<weatherdata type="today"> のところに今日の予報、
"tomorrow" のところに明日の予報、そして
 "proba01" - 0 -6 時の降水確率
 "proba02" - 6 -12時の降水確率
 "proba03" - 12-18時の降水確率
 "proba04" - 18-24時の降水確率
となってます。そこで"proba0"で区切ってやると
 "%otenki1" → XML冒頭から todayの proba01の手前まで
 "%otenki2" → "1>xx</"
 "%otenki3" → "1><"
 "%otenki4" → "2>xx</"
って感じになります。xxは降水確率の数字。使うのだけ整理すると、
 "%otenki4"  → today の 6 -12時の降水確率
 "%otenki6"  → today の 12-18時の降水確率
 "%otenki8"  → today の 18-24時の降水確率
 "%otenki10" → tomorrow の 0 -6 時の降水確率
 "%otenki12" → tomorrow の 6 -12時の降水確率

さて次に、実行時間ごとに次の12時間の予報を取得しようと思います。
天気予報は 5時、11時、17時の3回更新されますので、
 0 -5 時に実行 → tomorrow の 0 -6、6 -12時の降水確率
 (日付は変わってますが、昨日が todayとして残ってます)
 5 -11時に実行 → today の  6-12、12-18時の降水確率
 11-17時に実行 → today の 12-18、18-24時の降水確率
 17-24時に実行 → today の 18-24、tomorrow の 0 - 6時の降水確率
としようと思います。
また12時間分、ふたつの予報をとって、高い数字の方をLEDで警告することにします。

4. Task > If → %TIME > 0.00 And %TIME < 5.00
5. Varilables > Varilable Section
  → "Name" に %otenki10
  → "From" を 3
  → "Length" を 2
 これで余計な文字列を取り除いた数字2桁が取得できます。
  → "Store Result In" に %rainyA(ひとつめの降水確率を格納する任意の変数)
6. Varilables > Varilable Section
  → "Name" に %otenki12
  → "From" を 3
  → "Length" を 2
 これで余計な文字列を取り除いた数字2桁が取得できます。
  → "Store Result In" に %rainyB(ふたつめの降水確率を格納する任意の変数)

ここで問題発生です。降水確率がゼロのときはXMLの記載は"0"で、
2桁とってくると"0<"と次の括弧が入ってしまう。
次のA,Bの値比較時などに困ったことになってしまいます。そこで。

7. Varilables > Varilable Set
  → "Name" に %rainyA
  → "To" に 0
  → "If" に %rainyA ~ 0<
8. %rainyBについても同様に

で、比較です。
9. Task > If → %rainyA > %rainyB
10. Varilables > Varilable Set → "Name" に %rainy、"To" に %rainyA
11. Task > Else
12. Varilables > Varilable Set → "Name" に %rainy、"To" に %rainyB
13. Task > End If
これで大きい値が%rainyに格納されます。同じだった場合は %rainyBが入る。

以下、時間帯の違いを繰り返すだけです。一部入力値は割愛。

14. Task > Else → "If" に %TIME > 5.00 And %TIME < 11.00
15. Varilables > Varilable Section で "%otenki4"
16. Varilables > Varilable Section で "%otenki6"
17~23は7~13と同じ

24. Task > Else → "If" に %TIME > 11.00 And %TIME < 17.00
25. Varilables > Varilable Section で "%otenki6"
26. Varilables > Varilable Section で "%otenki8"
27~33は7~13と同じ

34. Task > Else
35. Varilables > Varilable Section で "%otenki8"
66. Varilables > Varilable Section で "%otenki10"
37~43は7~13と同じ

44. Task > End If

● 降水確率に応じてLEDを光らせる(Tasker+IRKit)


降水確率50%以上の時は濃い青、
20%~40%のときは薄い青、
0~10%のときは薄いオレンジにすることにしました。

また光るタイミングとしては、au Umbrella standのように
日常の動作に混ぜ込みたかった。
私は毎朝体重を測って、家に置きっぱのお古のスマホから
入力するようにしています。
そこで入力の際に充電スタンドから取り外したときにLEDが光る、
再び充電スタンドに置いたら消える、という運用にしました。

IRKitにて赤外線信号を読み取り、jsonファイルにする手順は
過去の記事をご参照ください。

45. Code > JavaScript → roomLEDon.json
46. Task > If →  %rainy > 49
47. Code > JavaScript → roomLEDblue1.json
48. Task > Else →  "If" に %rainy > 19 And %rainy < 50
49. Code > JavaScript → roomLEDblue2.json
50. Task > Else
51. Code > JavaScript → roomLEDorange2.json

また別の新規タスクで
1. Code > JavaScript → roomLEDoff.json

そして新規プロファイルで
State > Power > Power → "Source" は Any、Invertにチェック
 → 降水確率のタスクを指定
State > Power > Power → "Source"  Any
 → オフのタスクを指定

さて、今朝は・・・雨みたいですね。

2016年3月2日水曜日

グローバルIPが変わったら知らせるTaskerタスク

家に近づいたときに PCを Wake on LANで起動するようにしてるのですが、
グローバルIPが変わってしまってて起動できないことがありました。

そこで家に据え置きのスマホでグローバルIPを監視し、
変更があった場合は知らせるタスクを作ってみました。

●家スマホ


新規タスク "GIPget"
1. NET > HTTP Get
  Server:Port → www.whatismyip.org
  Mime Type → text/plain
  Output File → Tasker/myip.txt
 myip.txtは任意の場所(私はSDカードのTaskerフォルダ)に作っておく
2. File > Read Line
  File → Tasker/myip.txt
  Line → 41
  To Var → %myip
 こんなのが入ります↓
 <span style="color: blue; font-size: 36px; font-weight: 600;">123:456:789:012</span>
3. Variables > Variable Split
  Splitter → >
4. Variables > Variable Split
  Splitter → <
 3~4でIP部分だけを抜き出します
5. File > Write File
  File → Tasker/newip.txt
  Text → %myip21
  Add Newline → チェック外す
 Splitで分割した変数は数字を後につけることで指定できます。
 %myip2 でひとつめの">"の後、%myip21 で">"後で"<"の前まで。

あとはプロファイルで1日1回、夕方くらいに呼び出す。
こうして最新のグローバルIPを記載した newip.txtを
FolderSync Liteでクラウドサーバに保存します。

一部参考にさせてもらったのが以下の記事。

What's My Home IP automated via Tasker - Google Group
DaWeav さんの書き込み

●持ち歩きスマホ


あらかじめ oldip.txt/newip.txt をスマホ上に作っておきます。
また newip.txtは家スマホが夕方に更新した後を見計らって
FolderSync Liteで上書きコピーします。

新規タスク "GIPcheck"
1. File > Read File
  File → Tasker/oldip.txt
  Var → %oldgip
 oldip.txtは前日までのIPが書いてあります。
2. File > Read File
  File → Tasker/newip.txt
  Var → %newgip
3. Task > If
  %oldgip neq % newgip
 "neq"はDoesn't Equalです。もし新旧IPが違ってたら…
4. Alert > Notify
  Title → グローバルIP変更
  Text → %newgip
 通知します。
5. File > Write File
  File → Tasker/oldip.txt
  Text → %newgip
  Add Newline → チェック外す
 oldip.txt を最新に更新します。
6. System > Set Clipboard
  Text → %newgip
 WoLアプリに張り付けられるよう、クリップボードに値を入れます。
7. Task > End If

これをFolderSync Liteの上書きコピー処理の後に回すよう、
プロファイルで時間指定します。

2016年2月22日月曜日

スマホの温湿度センサーとTaskerの連携

● 構想


前回の記事で最後に少し書きましたが、
部屋の温度、湿度を家電のスマート化に活かせないかと考えて、
温湿度センサー付きの中古スマホを格安で購入しました。

REGZA Phone T-02D

2012年7月発売のデュアルコア、Android4.1.2と現役利用にはちときつい。
けど遊ぶには全然十分なスペックです。

REGZAブランドだが、熱暴走など多数の不具合で有名な富士通製。
だが、この製品に限っては悪くない評判でした。
またあえて富士通製品を選んだのは、温湿度センサー内蔵が多いのが特徴だからです。
他に搭載してるのはGalaxyくらい?

相場の半額以下で販売していたサイトでは「水漏れ、画面割れなどありの特価品」と記載あり、
届いてみたら「メニューボタン欠損」「PCへのUSB接続不可(充電は可)」な製品でした。
ボタンはプラ片で埋め。データ転送はAirDroidで。バッテリーもさほど劣化なく好調。悪くない。

で、謹製アプリで温度、湿度は測れるのだけど、これでは見るだけしかできない。

それにこの子はセンサーだけが目当てで、このデバイスでがっつり何かする気もなかったので、
以下のような作りにしようと考えました。

1. T-02D で Taskerを使って、テキストに温度・湿度を保存
2. FolderSync Liteで Dropboxの Publicにテキストをアップロード
3. Tasker で Dropboxから Nexus5に温度・湿度を読み込む
4. 煮るなり焼くなり(今回はMinimalistic Text: Widgetsで画面上に表示)


● 手順 1:Taskerを使って、テキストに温度・湿度を保存


あらかじめローカルに空のテキストファイルを作っておきます(thermo.txtとか)。
わたしはPCで作っておいて、SDカードのTaskerフォルダの下にコピりました。


そしたら Taskerで任意の名前で新規 Taskを作成し、
1. Variables > Variable Set → Name は適当(%ONDOとか)、To に "round(%TEMP)"、
  Do Maths にチェック。%TEMP はセンサーからの温度取得、round は四捨五入です。
2. もひとつ、Variables > Variable Set → Name は適当(%SHITSUDOとか)、
  To に "round(%HUMIDITY)"、%HUMIDITY は湿度取得です。
3. File > Write File → File で先ほどのテキストを選択、Textには
  %ONDO
  %SHITSUDO
  と入れておきます。改行して2行で記載です。Add Newline のチェックは外します。

あと定期的に更新するために、上記 Taskを Profiles で定期イベントにしておきます。
Profilesタブで新規作成(+)をタップし、Timeで Repeat に every "15" Minute(s) とします。
そして先ほどタスクを選択。


● 手順 2:FolderSync Liteで Dropboxの Publicにテキストをアップロード


DropboxのPublicにおいたファイルを共有することで、URLでアクセスができます。
手順 3でNexus5のTaskerから読み込むため、また定期更新するために、
FolderSync Liteというアプリを使って、Dropboxに同期します。

まず「アカウント」であらかじめ Dropboxのアカウント認証をすませておきます。
次に「同期フォルダ」で新規作成(+)をタップし、
 固有の名前 → 任意
 アカウント → 先ほどのDropboxアカウントを選択
 同期タイプ → リモートフォルダ(スマホのデータをクラウドへ)
 リモートフォルダ → Dropbox のPublic を指定
 ローカルフォルダ → テキストのあるフォルダを選択(わたしは /storage/sdcard0/Tasker)
 スケジュール → 15分ごと
 同期オプション → チェックをすべて外し、「競合した場合の動作」は"古いものを上書き"
 接続 → 室温用なので "Wifiを使用"のみにしました
最後に右下の「保存」を押して完了です。

● 手順 3:Tasker で 別デバイスに温度・湿度を読み込む


まずPCのブラウザでDropboxに接続し、Public の "thermo.txt"を共有しておきます。
以下のようなアドレスが付与されます。u のとこは s だったりするかも。
 https://www.dropbox.com/u/xxxxxxxxxxxxxxx/thermo.txt?dl=0


そしたら 別デバイス(わたしは Nexus5)のTaskerで任意の名前で新規 Taskを作成し、
1. Net > HTTP Get
  Server:Port → https://dl.sropboxusercontent.com/u/xxxxxxxxxxxxxxx/thermo.txt
  Mime Type → text/plain (選択しなくてもいけるかも?)
  Output File → Tasker/temp.txt(一時ファイルを作っておきます。こうしないとうまくいかない?)
2. Variables > Variable Set → Name に "%GYO"、To に "1"。行指定用の変数を宣言
3. File > Read Line → File に先ほどの一時ファイル、Line に "%GYO"、Var to に
  温度を一時受けする変数。%TMP としました。
4. Variables > Variable Set → Name に "%GYO"、To に "2"。次は2行目を読みたいので。
5. File > Read Line → File に先ほどの一時ファイル、Line に "%GYO"、Var to に
  湿度を一時受けする変数。%HUM としました。
6. Plugin > MinimalisticText → Configration を開いて
  Variable name に 温度を MinimalisticText に渡す変数を入力。 "%ONDOV"としました。
Variable content に先ほどの一時受け変数 "%TMP"
7. もひとつ Plugin > MinimalisticText → Configration を開いて
  Variable name に 湿度を MinimalisticText に渡す変数を入力。 "%HUMV"としました。
Variable content に先ほどの一時受け変数 "%HUM"

これも定期的に取得・更新したいので、作った Taskを Profiles から呼び出すのですが、
手順 1と違って、以下のようにしないと読みだせませんでした。なんで?
Profilesタブで新規作成(+)をタップし、Timeで
 From に "AM 0:00"
 Repeat に every "15" Minute(s)
 To に "PM 11:59"


最後に MinimalisticText でホームでのウィジェット表示です。
ホーム画面長押しなど(ホームアプリによる)でウィジェット追加を選び、
MinimalisticText の任意のサイズを選んだら、
LAYOUTタブで「Locale variable」を選んで、「Variable name」"%ONDOV"を入力。
同様にもひとつ作った「Locale variable」で"%HUMV"を選んで、
あと「Static text」で「℃」や「%」をつけるなり、他のタブでサイズや色を変えるなりして完成~。

別デバイスに送るのでなければもっとシンプルに、Tasker で %TEMP/%HUMIDITY を読むだけ。
また取得した値を条件に、前回の赤外線送信と絡めれば
 ・ 30℃を超えたら冷房、25℃を切ったらオフ
 ・ 25%を下回ったら加湿器オン、50%を超えたらオフ
なんてことができますね。
ただスマホの温湿度センサーだと精度が甘いかもなので注意です。

2016年2月19日金曜日

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

前回はとりあえず Pebbleで家電を操作できるとこまで行き着きました。
今回はもうちょっとスマートに仕上げましょう。

● 個々の家電操作は IRKit Remote で (Pebble)


Tasker の魅力は連続したタスク処理や、条件での自動発動です。
帰り着く頃に明かりと冷暖房とPCをオンとか。

前回作った、iPhoneアプリでできることの Pebble版を求めるのであれば、
Taskerを使わずともアプリを作ってくださった方がいらっしゃいます。

makoto_kwさんの IRKit Remoteがそれです。

前回書いた送信用スクリプトを、家電ごとではなくひとつの Configuration.json にまとめ、
ネット上の参照できる場所に置くことで、写真のようにPebbleに一覧が表示されます。



設定方法の詳細は GitHubにわかりやすく書かれているので割愛します。


● Tasker+PebbleTasker では寝る前の一括操作なんてどうでしょう?(Android+Pebble)


で、Tasker では個々のコントロールではなく、連続処理や条件発動を作りこみます。
そもそもわたしのやりたかった、寝る前に家電一括オフとかです。

具体的には
 ・ PCのシャットダウン
 ・ 加湿器のオフ
 ・ 冷暖房のオフ
 ・ 天井のライトのオフ
 ・ LEDデスクスタンドのオフ
これらを、ベッドに入って Pebbleのボタン1個押すだけで実現したい。

で作ったのが以下のようなタスク。


1. スマホのWi-Fiがオフならオンにする ※手順3の前段階として
  Task > If → %WIFI ~ off
  Net > WiFi  → Set On
  Task > End If
2. 加湿器・エアコン・天井照明のオフ
  Code > JavaScript → Path に 加湿器のスクリプトを指定
  Code > JavaScript → Path に エアコンのスクリプトを指定
  Code > JavaScript → Path に 天井照明のスクリプトを指定x3
   ※照明は輝度Maxから消灯まで3回リモコンを押すので
3. リモートアプリ"Unified Remote"からPCをシャットダウン
  App > Launch App でアプリを指定
   ※一度アプリを起動しておかないと次の処理が走らなかった
  Plugin > Unified Remote → Remote Action > Power > Shutdown
4. LEDデスクスタンドのオフ
  Code > JavaScript → Path に コンセントオフのスクリプトを指定
  Code > JavaScript → Path に コンセントオンのスクリプトを指定
※各処理ごとに3~5秒のWait を入れてます。

まずステップ1と3の解説です。
PCのシャットダウンは赤外線ではないので、同一LAN上のAndroidからPCに
シャットダウンのコマンドを送るアプリを導入し、Taskerからプラグイン連携しました。
また WiFi経由が大前提なので、事前に WiFi Onになるような処理を入れ、
間に別の処理を入れて時間も稼いでいます。
Unified Remote は有料版じゃないとダメだったかもしれない。

次にステップ2。
冷暖房は入/切が別の信号(リモコン上で別ボタン)なので、
普通に入切したいときは IRKit Remote で随時、
今回のTaskerスクリプトでは寝る前のオフのみ組み込みました。

加湿器は オンオフが同じボタンでの操作なのでシンプル。
ただ、もし自分で切ってるときに一括操作をすると、逆にオンになってしまう。
今回のスマート化では家電のオンオフ状況は判断できないので仕方なしです。

シーリングライトも同様ですね。もし輝度を変えていた場合は明るくなっちゃう。
そのときは Pebble から  IRKit Remote で消します。

最後にステップ4。
LEDデスクスタンドはリモコンのないものなので本来は操作できないのですが、
コンセントの根っこに以下の製品を足しました。

これでスタンドへの通電がオンオフできます。オンのときに通電を切ればにすれば強制オフ。
オンにするにはスタンドのボタンを押すしかないですが、付けたいときは机にいるので問題なし。
ただ通電をカットした状態だとオンにできないので、通電カット時は再度通電までしときます。

この Tasker の Task を前回そうしたように、PebbleTaskerから指定します。
あとは寝るときに Pebble からその Task を呼び出すと、1~4を順次行ってくれます。

● 他にもいろいろ


IRKit Remote では以下も作っておきました。
・エアコンOn (夏季用)
・エアコンOn (冬季用)
・テレビOn/Off
・テレビチャンネル+
・テレビ入力切替

Tasker では以下のシナリオも作っておきました。
・基地局を判定して自宅近くに帰ってきたら照明・エアコン・加湿器・PCをオン
・休日目覚めたとき用に、LEDデスクスタンドとPCをオン
・Macのスリープ復帰

また最近中古で温湿度計のついたスマホ(Fujitsu T-02D)を買ったので、
これと連携すれば、温度/湿度に応じてエアコンと加湿器を自動操作もできそうです。

また、あまってる昔のスマホで賢い時計みたいなものも作ってみました。

・大きめに日時表示(WidgetHomeランチャー
・日時をタップしたら or 毎朝7時に天気予報表示(Llama + WeatherNow)
・Googleカレンダーの予定一覧(ジョルテ
・温湿度表示(Tasker + Minimalistic Text: Widgets
・会社に行く方向の運行情報表示(駅探ウィジェット

他にももっと便利にできることないかなー。

2016年2月8日月曜日

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

では前回の続きです。


● 赤外線信号情報を学習する(Android/Windows)


iPhoneアプリがやってくれてることを、コマンドでやります。
まず覚えさせたいリモコンを IRKitに向けてポチ。LEDが点滅します。
そしたら次のコマンド。

% curl -i "http://(Fingで調べたIRKitのIP)/messages" -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

{"format":"raw","freq":38,"data":[19991,10047,1275,(中略),19991,5049,1275]}

ゲットした情報のうち、一番下の行がリモコンの赤外線信号を数値化したものです。


● Tasker経由で信号送信してみる(Android)


では得た情報をまとめて、送信用スクリプトを作りましょう。簡単です。
メモ帳を開いて、以下をコピーしてください。

var id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
var key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
var msg = {"format":"raw","freq":38,"data":[XXXX,XXXX,XXX,X,XXXX,XXXX,XXXX,XXXX]};

function send(message){
  var xhr = new XMLHttpRequest();
  xhr.open("post", "https://api.getirkit.com/1/messages", false);
  var form = new FormData();
  form.append("deviceid", id);
  form.append("clientkey", key);
  form.append("message", JSON.stringify(message));
  xhr.send(form);
}

function main(){
  send(msg);
}

try{
  main();
}
catch(e){
  flash(e.message);
}
exit();

上から3行のXXXを書き換えます。(3行目はいちおう等号の後をすべて置き換えます)

・id の行に、前回ゲットした DeviceID
・key の行に、同じくゲットした ClientKey
・msg の行に、先ほどゲットした赤外線信号の情報。

そしたら"(任意の名前).json"という名前で保存してください。
わたしは家電の名前を付けてます。"humidifier.json"(加湿器)とか。

このあたりの手順は以下のブログを参考にさせていただきました。
rdmmtd's blog - IRKitを使って家に帰ったら電気がつくようにした

そしたらそれを Androidの適当な場所に置いてください。
わたしは Taskerフォルダの下に"Scripts"というフォルダを作って置きました。

そしたら、
1. Taskerで Tasksタブに移動。
2. "+"で新規作成>任意のタスク名(わたしはここも家電名)。
3. もう一度"+"でタスク内の処理を新規作成>Code>JavaScriptを選択
4. Path欄の虫メガネアイコンをタップして、先ほどのjsonファイルを指定
5. 戻るx2

これでタスクが1個できてると思います。
試しにタスクを開いて、左下の再生ボタンを押すと・・・

家電に信号が飛んだはずです。

● PebbleTasker(Pebble)


Tasker のタスクは、Profileタグで条件指定して自動発動もできますし、
ショートカットにしたりもできます。
それも便利なのですが、ここでは Pebble連携をやりましょう。

Tasker の右上の"・・・"から"Preferences"(設定)を選び、"Misc"タブへ。
"Allow External Access"にチェックを入れてください。

あとは簡単。PlayストアとPebbleストアで、スマホとPebbleの両方に PebbleTasker をダウンロード。Androidで PebbleTaskerを起動すると、Pebbleのボタンにアサインする画面が出るので、
先ほど作ったタスクを選択。

で、Pebbleで同アプリを起動してみると・・・


さあボタンを押してください。あなたの腕から家電が操作できるはず!
次回は Pebbleからの更なる使いこなしを行いましょう。

Evernote

Clip to Evernote