あとクリップスタンド。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
→ オフのタスクを指定
さて、今朝は・・・雨みたいですね。