スマートリモコン「sRemo-R3」のAPIの使い方

#sRemo-R3
sRemo-R3とはSOCINNOから出ているスマートリモコンです。
4,300円という安さで「温度センサー」「湿度センサー」「照度センサー」「Alexa」「Google Assistant」「Siri(ショートカット)」に対応しています。
https://sr.socinno.com/
<img width="350" src="https://sr.socinno.com/wp-content/uploads/elementor/thumbs/LP3_2-oh7vt7rmabmcw0emkz571mmks48v7oxw6kxnu7dxrc.png">
##APIが利用可能
sRemo-R3は`sCloud`というAPIが利用可能で`センサーの情報` `リモコン制御`などがプログラミングから可能です。
この記事でAPIの使い方はわかりやすく出ているので、具体的なコードを見なくてもいい人はリンク先からみてください。
自分は`Python`を使ってやっていきます。
https://sremosup.socinno.com/page-2872/

##アプリで出来ること
APIを利用する前にアプリで出来ることを確認していきます。

- センサー情報の確認
- 登録したリモコンの操作
- 手動登録した赤外線リモコンの操作
- 条件付きの自動リモコン操作(温度20度以上でリモコン1を実行)


<img width="250px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225372/aa97ffad-1f6a-3fb4-b478-e029c8d6e356.jpeg" /> <img width="250px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225372/ca40d46b-f46d-ebca-b8e4-48a09050a454.jpeg" /> <img width="250px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225372/eeae251d-b8eb-24ac-9067-7ff35f2ebd28.jpeg" />



##アプリが使いずらい
アプリが使いずらく、さらに条件付きの自動リモコン操作は7つまでしか登録できないのでAPIを利用してプログラミングした方が使いやすそう




- 温度、湿度、照度情報取得
- 時間情報取得
- アプリで登録した「1-141ボタン」の操作
- 5分間のアクセス数(5分間で10回までしかアクセスできない)(このアクセスもカウントされる)


## APIアクセストークン
https://sremo.biz/ を開いてアプリでログインしたアカウントと同じアカウントでログインして「APIアクセストークン」が表示されたらメモしておいてください。



##注意事項

sRemo-R3を`カスタムモード`で初期設定した場合`ポート開放`をする必要があります。
ポート開放をしない場合は初期化後`スマートモード`で再度初期設定してください。


##温度, 湿度, 照度情報取得

```python
from urllib.parse import urlencode
from urllib.request import urlopen
from json import loads

api_key = "jfkdSfjdSLFSDJKLjoweirjapfoijlkfjsaff" # APIアクセストークン
sRemo_identifier= "aeh3qf9nypfjh" # sRemo識別子

param = {"tkn": api_key}
paramStr = urlencode(param)

pre_url = "https://uapi1.sremo.net/user_api/" + sRemo_identifier + "/webthl?"

url = pre_url + paramStr

data = []

try:
  with urlopen(request) as response:
    data_byte  = response.read()
    data = loads(data)
except HTTPError as e:
  print(e)

print("温度は" + str(data["t"]) + "度")
print("湿度は" + str(data["h"]) + "%")
print("明るさは" + str(data["l"]) + "度")
```


##時間情報取得
```python

from urllib.parse import urlencode
from urllib.request import urlopen
from json import loads

api_key = "jfkdSfjdSLFSDJKLjfdarjapfoijlkfjsaff" # APIアクセストークン
sRemo_identifier= "aeh3qf9ffdsajh" # sRemo識別子

param = {"tkn": api_key}
paramStr = urlencode(param)

pre_url = "https://uapi1.sremo.net/user_api/" + sRemo_identifier + "/webtim?tkn=" + api_key

url = pre_url + paramStr

with urlopen(url) as readObj:
    response = readObj.read()
    data = loads(response)

print("日付: " + data["t"].split(" ")[0]))
print("時刻: " + data["t"].split(" ")[1]))
```


##アプリで登録した「1-141ボタン」の操作

```python

from urllib.request import urlopen
from urllib.parse import urlencode
from json import loads

api_key = "jfkdSfjdSLFSDfdsafirjapfoijlkfjsaff" # APIアクセストークン
sRemo_identifier= "aehdfasfdpfjh" # sRemo識別子


signal = "1" #「1-141ボタン」内の操作したいボタンの数字

param = {
    "tkn": api_key,
    "sig": signal
}

paramStr = urlencode(param)

pre_url = "https://uapi1.sremo.net/user_api/" + sRemo_identifier + "/webhook?"
url = pre_url + paramStr

try:
  with urlopen(request) as response:
    data= response.read()
except HTTPError as e:
  print(e)

print(response.decode('utf-8'))
```

## 5分間のアクセス数の確認
5分間で何回アクセスしたかが確認できるが、このアクセスもカウントされるので、ほぼ使い道はない

```python

from urllib.request import urlopen
from urllib.parse import urlencode
from json import loads

api_key = "jfkdSfjdSLFSsdafeirjapfoijlkfjsaff" # APIアクセストークン
sRemo_identifier= "aeh3fasdfypfjh" # sRemo識別子


signal = "1" #「1-141ボタン」内の操作したいボタンの数字

param = {
    "tkn": api_key,
    "sig": signal
}

paramStr = urlencode(param)

pre_url = "https://uapi1.sremo.net/user_api/" + sRemo_identifier + "/weblim?"
url = pre_url + paramStr

with urlopen(url) as readObj:
  response = readObj.read()
  data = loads(response)

print("アクセス数:" + str(data) + "回")

```