AndroidスマホをNFCタグにかざして家電を操作する方法

iPhone(iOS13以降)ではショートカットを利用してNFCタグにスマホをかざして家電を操作する方法がありますが、Androidスマホでも同じことができないか色々調べて試してみようと思いました。
そこで今回はNature Remoを利用してNFCタグにAndroidスマホをかざして家電を操作する方法についてまとめました

#準備するもの
・PC
・NFC対応Androidスマホ
・Nature Remo(旧版でもminiでもOK)
https://www.amazon.co.jp/Nature-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3-Remo-%E3%83%8D%E3%82%A4%E3%83%81%E3%83%A3%E3%83%BC%E3%83%AA%E3%83%A2-Remo-1W3/dp/B08BLSLWH4
・NFCタグ(対応しているものをお使いください、以下は例です)
https://www.amazon.co.jp/gp/product/B079JTYTWV/
・Nature Remoアプリ
https://play.google.com/store/apps/details?id=global.nature.remo&hl=ja&gl=US
・NFC Tools Pro Editionアプリ(HTTP POSTするために有料版を使用)
https://play.google.com/store/apps/details?id=com.wakdev.nfctools.pro&hl=ja&gl=US

#方法
Nature RemoのCloud APIを使用します。それには、「アクセストークン」と「Signal ID」が必要となります。

###アクセストークンの発行
まずは以下のリンク先から、Nature Remoのアプリで登録したアカウントを使いログインをして、「home.nature.global」からのアクセスを許可します。

https://home.nature.global/

アクセスを許可すると以下の画面へ移行するので「Go」をクリックします。

![Home-2018-07-19-21-47-41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/f93210ec-fd29-0517-ad96-14fb8061cff8.jpeg)

すると、以下のようなNature Remoのアクセストークンを管理できるページへ移動するので、ページ内の左下あたりにある「Generate access token」をクリックします。

![スクリーンショット 2021-01-10 19.23.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/319a4b9a-a8bd-2c23-d1fd-f5621b594dc2.png)

「Generate access token」をクリックすると、以下の画面のように新しいアクセストークンが表示され、有効なアクセストークンのリストに追加されます。

また、表示されているアクセストークンの下にある「Copy」をクリックするとアクセストークンがクリップボードにコピーされます。

![スクリーンショット 2021-01-10 19.27.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/54a4c049-ef69-5fbe-7ee6-be6f24b93836.png)

上記のアクセストークンが表示されているページは、更新するとアクセストーク表示が消えてしまい、再表示することはできません。

そのため、アクセストークンがわからなくなった場合には、もう一度「Generate access token」をクリックして新しいアクセストークンを発行する必要があります。

###Signal IDについて
Nature Remoアプリでリモコンのボタンを一つづつ登録すると、ボタン毎にSignal IDが振られます。そのSignal IDは、Cloud APIでリモコン送信を行う際に利用します。

###Signal IDなどのリモコン情報を取得する方法
Cloud APIを使いSignal IDを含むリモコン情報を取得するには、まず、Nature Remoのアプリを使い赤外線リモコンを登録します。

今回の例では、アプリで「新しい家電を追加する」ボタンから「電気」を追加して名前を「電気」とします。

そして、追加した家電内に照明をコントロールするリモコンのON、OFFの赤外線ボタンを、それぞれ「オン」と「オフ」という名前で登録します。

Signal IDを含むリモコン情報を取得するには、コマンドライン（Macのターミナル・Windows のコマンドプロンプトなど）で以下のcurlコマンドを実行します。

XXXXXXXXの箇所には自身で発行したアクセストークンの値を指定します。

```
curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXX"
```

上記のコマンドを実行すると、次のようなJSONデータが取得できます。

```
[
  {
    "id": "XXXXXXXX",
    "device": {
    	// 中略（Nature Remoのデバイスのデータ）
    },
    "model": null,
    "nickname": "電気",
    "image": "ico_light",
    "type": "IR",
    "settings": null,
    "aircon": null,
    "signals": [
      {
        "id": "XXXXXXXX",
        "name": "オン",
        "image": "ico_on"
      },
      {
        "id": "XXXXXXXX",
        "name": "オフ",
        "image": "ico_off"
      }
    ]
  }
]
```
※jsonが整形されていない場合は以下のようなツールを使用するかHomebrewでjqを導入して整形してみてください
http://tools.m-bsys.com/development_tooles/json-beautifier.php
https://qiita.com/tomitz/items/f48a6bfae1123cadc69a

Nature Remoアプリでリモコンのボタンを一つづつ登録した場合、JSONデータ内のキー"type"の値が"IR"となります。

そして、 キー"signals"の値にリモコンボタンの情報がオブジェクトの配列で取得できます。

今回の例では、照明リモコンのボタン「オン」「オフ」を登録したため、その2つのリモコンボタンが、キー"signals"の値にオブジェクトの配列として取得されています。

キー"id"の値が割り振られたSignal IDとなります。また、キー"name"と"image"の値 は、アプリで赤外線ボタンを登録した際の「ボタン名」と「アイコン名」となります。

なお、JSONデータの先頭にあるキー"id"の値はAppliance IDとなり、アプリで登録した家電毎に割り振られるIDとなります。

###Nature RemoのCloud APIを利用し赤外線信号を送信するタスクを作成
以下、NFC Tools Pro EditionでCloud APIを使用し、Nature Remoから赤外線信号を送信するタスクの作成手順となります。

「タスク」タブを開いて「タスクを追加」をタップします
![Screenshot_20210110-194750.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/61a4845c-87a1-a449-390e-beb021d5bc19.png)

「ネットワーク」をタップします
![Screenshot_20210110-195022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/5132d468-8c6c-2a98-ed01-48fa0d789f3f.png)

「HTTP POST」をタップします
※有料版でなければ使用できないようなので注意
![Screenshot_20210110-195122.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/be532296-9cf3-98a5-ec74-330320bb0c33.png)

POSTパラメータの横の「＋」をタップします

「リクエスト」に「https://api.nature.global/1/signals/XXXXXXXX/send 」と入力します
XXXXXXXXの箇所は、操作したい赤外線送信ボタンのSignal IDを指定します

「名前」に「access_token」、「値」に発行した自身のアクセストークンを入力します

入力したらOKをタップします
![Screenshot_20210110-195215.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/aeeed53c-c906-aec8-93cb-7964fa6f9951.png)

「書く」をタップしてNFCタグにスマホをかざして情報を書き込みます
![Screenshot_20210110-195323.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/c5d19160-1896-dcb5-70b5-289a04021820.png)

アプリを閉じてもう一度NFCタグにスマホをかざしてみて電気がオンorオフできたら成功です
![PXL_20210110_083715696.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202810/95eb423e-5703-e6d4-33b6-05c891afec34.jpeg)

（´ - `）.｡oO(安っぽい。。w)



#最後に
Nature Remoを利用してNFCタグにAndroidスマホをかざして家電を操作する方法についてまとめました。
あくまでこれは一つの方法であって、やり方は色々あると思うので参考になれば幸いです。



#参考
https://blog-and-destroy.com/12244
https://support.nature.global/hc/ja/articles/900001736023--iOS13%E4%BB%A5%E9%99%8D-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6-Siri%E3%81%8B%E3%82%89Nature-Remo%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B