Pixoo64のREST APIを使ってみた②

# Pixoo64のREST APIできること
前回に続きAPIの詳細を見ていきたいと思います。
[Pixoo64 REST API](http://doc.divoom-gz.com/web/#/12?page_id=89 "http://doc.divoom-gz.com/web/#/12?page_id=89")
フォルダのようなアイコンでカテゴリ分けされています。
| カテゴリ | 説明 |
|:-:|:-:|
| dial contorol | 時計コントロール  |
| channel control  | チャンネルコントロール |
| system setting |  システム設定 |
| tool  | ツール |
| animation function  | アニメーション機能 |
| command list  | コマンドリスト |


# dial control　(時計コントロール)
Divoomのスマホアプリの「チャンネル-時計」に関するところのようです。
![dialcontrol_1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483228/28d9d4a0-040b-c8a3-ca4e-2d6c9adad521.jpeg)

### Dial Type
時計タイプを取得する機能定義のAPIです。
呼び出してみると以下のような結果が返ってきます。
```json:レスポンス
{"ReturnCode":0,"ReturnMessage":"","DialTypeList":["Social","financial","Game","normal","HOLIDAYS","TOOLS","Sport","Custom","self"]}
```

### Dial List
時計タイプに属するClockIdを取得するAPIです。
時計タイプとページ番号を引数に指定します。
```json:リクエスト
{"DialType":"Social","Page":1}
```
```json:レスポンス
{"ReturnCode":0,"ReturnMessage":"",
"DialList":[{"ClockId":24,"Name":"Twitter Post"},
{"ClockId":38,"Name":"YouTube Account"},{"ClockId":40,"Name":"YouTube Video"},
{"ClockId":46,"Name":"Bilibili Account"},{"ClockId":48,"Name":"Bilibili-works"},
{"ClockId":52,"Name":"Bilibili Concept Account"},{"ClockId":54,"Name":"Bilibili Concept Video"},
{"ClockId":58,"Name":"DouYu Stream"},{"ClockId":100,"Name":"Twitter Account"},
{"ClockId":102,"Name":"Influencer "},{"ClockId":114,"Name":"Bilibili Video"},
{"ClockId":116,"Name":"Bilibili Stream"},{"ClockId":160,"Name":"Divoom"},
{"ClockId":222,"Name":"TikTok Video"},{"ClockId":248,"Name":"New Twitch Account"},
{"ClockId":252,"Name":"New Twitch Stream"},{"ClockId":258,"Name":"Twitch Live List"}]}
```
### Select faces Channel
時計の選択をするAPIです。
```json:リクエスト
{"Command":"Channel/SetClockSelectId","ClockId":38}
```
実行するとPixoo64の画面が変わります。
![dialcontrol_2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483228/3fccd6ff-e22c-dc6e-343a-95be5259c886.jpeg)
※存在しないClockIdを指定した場合は、エラーコードの0で成功のまま、画面が切り替わらないだけでした。

### Get select face id
選択されているClockIdとBrightnessを取得できるようです。
```json:リクエスト
{"Command":"Channel/GetClockInfo"}
```
```json:レスポンス
{"ClockId":146,"Brightness":90}
```
***


# channel control (チャンネルコントロール)

### select channel
チャンネル選択するAPIです。
![channelcontrol_0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483228/9049dd4c-a2de-3d10-0c80-d0346e57a88c.jpeg)
SelectIndexは
0:Faces(時計);
1:Cloud Channdle(クラウドチャンネル);
2:Visualizer(ビジュアライザ);
3:Custom(カスタム);
4:black screen(画面オフ)のいずれかを設定します。
さきほど出てきたdial controlは、0：Facesのチャンネル内の機能に当たるようです。
```json:リクエスト
{"Command":"Channel/SetIndex","SelectIndex":2}
```

### get cureent channel
現在のチャンネルを取得するAPIです。
```json:リクエスト
{"Command":"Channel/GetIndex"}
```
```json:リクエスト
{"SelectIndex":2}
```

### Cloud Channel
クラウドチャンネルの選択するAPI
![channelcontrol_1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483228/774e638c-6bd9-348d-e694-0452254189bf.jpeg)
Indexは
0:Recommend gallery(おすすめ);
1:Favourite(お気に入り);
2:Subscribe artist(登録アーティスト);
3:album(アルバム作成)のいずれかを設定します。
```json:リクエスト
{"Command":"Channel/CloudIndex","Index":1}
```

### Visualizer Channel
チャンネルのビジュアライザの項目を選択するAPIです。
ビジュアライザはマイクで拾った音に反応するオーディオスペクトルの機能です。
![channelcontrol_2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483228/f4247f3b-1191-819e-90cb-03b13b880efd.jpeg)
EqPositionは0～となっており、画面の左上からの順番のようです。
```json:リクエスト
{"Command":"Channel/SetEqPosition","EqPosition":6}
```

### control custom channel
チャンネルのカスタムを選択するAPIです。
![channelcontrol_3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483228/3003b748-2cb9-7f91-b2af-055cc17b4d0a.jpeg)
CustomPageIndexは自分で好きなピクセルアート作品を選択して作る機能のページの選択(0-2)です。
```json:リクエスト
{"Command":"Channel/SetCustomPageIndex","CustomPageIndex":1}
```

***

# system setting　(システム設定)
Divoomアプリの設定画面
![system_setting_1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2483228/52436d68-c4bc-5d6f-07c4-33c6d3adccb0.jpeg)

### set brightness
ピクセルの明るさを設定するAPIです。
Brightnessには0-100を設定します。明るさ0はだと何も見えません。
```json:リクエスト
{"Command":"Channel/SetBrightness","Brightness":10}
```

### get all setting
システム設定値を取得するAPIです。
```json:リクエスト
{"Command":"Channel/GetAllConf"}
```
```json:レスポンス
{"error_code":0,"Brightness":1,"RotationFlag":0,"ClockTime":10,"GalleryTime":10,"SingleGalleyTime":10,"PowerOnChannelId":0,"GalleryShowTimeFlag":0,"Time24Flag":1,"TemperatureMode":0,"GyrateAngle":0,"MirrorFlag":0,"LightSwitch":1}
```
取得できる情報
| 項目 | 説明 | 対応するset API |
|:-:|:-:|:-:|
| Brightness | 画面の明るさ | set brightness |
| RotationFlag | 時計+おすすめギャラリーのローテーション  | ? |
| ClockTime  | 時計表示時間  | ?  |
| GalleryTime  | ギャラリー表示時間  | ?  |
| SingleGalleyTime  |  シングルアニメ表示時間 | ?  |
| PowerOnChannelId  | デフォルトのスタートアップチャンネル | ?  |
| GalleryShowTimeFlag  | 右上の表示時間 | ? |
| Time24Flag  | 時刻の表記 |  Set hour mode |
| TemperatureMode  | 温度の表記 | Set tempreature mode  |
| GyrateAngle  |  ディスプレイの回転 | Set Rotaition angle   |
| MirrorFlag  | 反転表示 | Set Mirror mode  |
| LightSwitch  | 画面のON/OFF  |  Screen switch |

### Weather area setting
天気の情報を取得するための緯度経度を設定するAPIです。
```json:リクエスト
{"Command":"Sys/LogAndLat","Longitude":"43.062","Latitude":"141.3543"}
```

### Set Time Zone
タイムゾーンを設定するAPIです。
```json:リクエスト
{"Command":"Sys/TimeZone","TimeZoneValue":"GMT+9"}
```

### system Time
システム時間するAPIです。
UtcはUNIX時間で1970年1月1日午前0時0分0秒からの経過秒数です。
```json:リクエスト
{"Command":"Device/SetUTC","Utc":1664745538 }
```

### Screen switch
画面をON/OFFるAPIです。
OnOff:0がOFF、OnOff:1がONです。
```json:リクエスト
{"Command":"Channel/OnOffScreen","OnOff":0}
```

### Get Device Time
デバイスの時間を取得するAPIです。
```json:リクエスト
{"Command":"Device/GetDeviceTime"}
```
```json:レスポンス
{"error_code": 0, "UTCTime":1664745901, "LocalTime":"2022-10-03 06:25:01"}
```

### Set tempreature mode
温度の表記を設定するAPIです。
Mode:0が℃、Mode:1が℉です。
```json:リクエスト
{"Command":"Device/SetDisTempMode","Mode":0}
```
### Set Rotaition angle
画面の回転を設定するAPIです。
Mode:0が0度、Mode:1が90度、Mode:2が180度、Mode:3が270度です。
```json:リクエスト
{"Command":"Device/SetScreenRotationAngle","Mode":2}
```

### Set Mirror mode
画面の反転(ミラーモード)を設定するAPIです。
Mode:0が通常、Mode:1が反転です。
```json:リクエスト
{"Command":"Device/SetMirrorMode","Mode":1}
```

### Set hour mode
時間表記を設定するAPIです。
Mode:0が12時間表記、Mode:1が24時間表記です。
```json:リクエスト
{"Command":"Device/SetTime24Flag","Mode":1}
```

### Set High Light mode
画面のハイライトモードを設定するAPIです。
Mode:0がclose、Mode:1がopenです。
```json:リクエスト
{"Command":"Device/SetHighLightMode","Mode":1}
```
### Set White Balance
画面のホワイトバランスを設定するAPIです。
RGBそれぞれ0-100の値を設定できます。
```json:リクエスト
{"Command":"Device/SetWhiteBalance","RValue":100,"GValue":100,"BValue":100}
```

### Get the Weather of the device
デバイスのお天気情報を取得するAPIです。
```json:リクエスト
{"Command":"Device/SetWhiteBalance","RValue":100,"GValue":100,"BValue":100}
```
```json:レスポンス
{"error_code":0,"Weather":"Cloudy","CurTemp":17.08,"MinTemp":17.03,"MaxTemp":17.37,"Pressure":1021,"Humidity":87,"Visibility":10000,"WindSpeed":5.96}
```
取得できる情報は
| 項目 | 説明 |
|:-:|:-:|
| Weather  | 天候 (“Sunny”,”Cloudy”,”Rainy”,”Rainy”,”Frog”) |
| CurTemp  | 現在温度  |
| MinTemp  | 最低気温  |
| MaxTemp  | 最高気温  |
| Pressure  | 気圧(hPa)  |
| Humidity  | 湿度  |
| Visibility  | 視界  |
| WindSpeed  | 風速(m/s)  |

※APIの仕様ページにWeatherの説明にRainyが２つあるのは誤記と思われます。
***

結構説明が長くなってきたので、今回はここまで次回に続く。