● 構想
前回の記事で最後に少し書きましたが、
部屋の温度、湿度を家電のスマート化に活かせないかと考えて、
温湿度センサー付きの中古スマホを格安で購入しました。
REGZA Phone T-02D
けど遊ぶには全然十分なスペックです。
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%を超えたらオフ
なんてことができますね。
ただスマホの温湿度センサーだと精度が甘いかもなので注意です。