chroju.dev/blog

the world as code

Nature Remo API で遊んだ

Amazon Echo dotに続いてGoogle Home miniも安売りに釣られて買ったので、せっかくだしVUI (Voice User Interface) の醍醐味であるはずの家電操作もやってみたくなって Nature Remo を買った。

Nature Remo
Nature Remo
posted with amazlet at 18.06.11
Nature, Inc.

ちなみにこれ書いてるときに気付いたけど、廉価版の mini ってのも近々出るらしいです。

Nature Remo

赤外線信号を学習させて使えるスマートリモコン。Wi-Fiに繋げてインターネット経由でAPIを叩く形で操作する。専用のスマートフォンアプリからリモコン感覚でも使えるし、IFTTT Channel化されているので、他サービスと連携させていろいろやったりもできる。あとGoogle HomeやAlexaとも直接連携できるようになっている。

最近この手のIoT家電系製品は他にもあると思うけど、正直あまり比較して買ってはいないので、比較優位があるかはわからない。どうもIRKitの後継のようだったので、実績を鑑みてある程度信頼は置けそうだというのと、TLでちらほら買っているソフトウェアエンジニアを見かけたという、ただそれだけの理由で選んだ。

API開放がよい

なので他製品での状況はわからないが、Nature RemoはAPIが開放されているのがすごくいい。API仕様はSwaggerで公開されているのもポイントが高い。

Swagger UI
Swagger UI favicon http://swagger.nature.global/

やろうと思えば実質なんでもできる。手始めにslackからスラッシュコマンドでエアコンを点けられるようにしてみた。OFFにするコマンドをまだ実装していないので、滅多矢鱈と打てないんだけどイイ感じ。

https://gyazo.com/ada116f88ba891fa63ecf9e42258143e

あとこれは買ってから気付いたのだが、Nature Remoにはセンサーが内蔵されていて、温度・湿度のデータもAPI経由で取得できる。機器の設置場所によっても変動する値だし、全幅の信頼を置いていいデータではないかもしれないが、自室の温度・湿度の状態をモニタリングするのは興味があったので、influxDBへ突っ込んでGrafanaでグラフにしてみている。家に帰って窓を開けて、お茶飲みながらグラフ眺めてると結構如実に気温が下がっていったりして面白い。

https://gyazo.com/cdead523411083bb6481e577cb1ebe98

APIでセンサー情報をGETすると、返ってくるjsonはこんな感じで、Swaggerには書かれていない "il" という項目があるんだけど、照度センサーも内蔵しているらしいのでおそらくは "illuminance" かな?と思っている。ちなみに今のところ照度の取得はアプリからもIFTTTからも出来ないので、今後拡張されるのかもしれない。ついでに人感センサーもあるらしいので、そちらの情報も取得できるようになると嬉しい。

[
  {
    "name": "Remo",
    "id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "created_at": "2018-04-28T12:12:33Z",
    "updated_at": "2018-06-11T13:18:55Z",
    "firmware_version": "Remo/1.0.62-gabbf5bd",
    "temperature_offset": 0,
    "humidity_offset": 0,
    "users": [
      {
        "id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "nickname": "chroju",
        "superuser": true
      }
    ],
    "newest_events": {
      "hu": {
        "val": 60,
        "created_at": "2018-06-11T12:43:29Z"
      },
      "il": {
        "val": 13.8,
        "created_at": "2018-06-11T13:19:09Z"
      },
      "te": {
        "val": 25.39,
        "created_at": "2018-06-11T07:41:56Z"
      }
    }
  }
]

やろうと思えばMackerelで気温を監視して、一定の値になったらWebhookからエアコン起動みたいなこともできると思うけど、大惨事になりそうな予感(閾値近辺で値が行ったり来たりしてON/OFFしまくるとか)があってやってはいない。まぁ自室だから別に大惨事でもいいか。やったら面白そう。

ちなみにAPIを叩くのはGoでやりたかったので、ライブラリ作ろうかなと思ったら既にあったのでありがたく使わせていただいている。何か気付いたことがあればIssueなりPRなり送れたら送りたい。

papix/go-nature-remo: API Client for Nature Remo (Golang)

とにかく「家電にAPIが生える」という感覚は想像以上に楽しかったので、いろいろ便利にしていきたいです。こうなると逆に、遠隔操作にBluetoothを使うPS4が、本来赤外線操作より便利だったはずなのに、不便に思えてくるのが面白い。