# ギー4のお風呂が空いてるかどうかAPI
RESTなAPIでお風呂の空き状態がわかるようにしてみました。
## ステータス
空いてる:`vacant`, 誰か使ってる: `using`
## 現在の状態を見る
GET https://bath.gee4.dev/
現在の状態と取得した日時を返します。
現在の状態と書きましたが、厳密には一番最後に取得したときの状態を返す感じです。
```
{"status":"vacant","time":"2019-05-23T11:37:19.000+09:00"}
```
## 最近の100状態を見る
GET https://bath.gee4.dev/sensor_outputs
最新の100件を取得します。
新しいのが上に来ます。
```
[
{"status":"vacant","time":"2019-05-23T14:26:40.000+09:00"},
{"status":"vacant","time":"2019-05-23T14:26:35.000+09:00"},
{"status":"vacant","time":"2019-05-23T14:26:30.000+09:00"},
{"status":"vacant","time":"2019-05-23T14:26:25.000+09:00"},
...
]
```
## 日を指定して一日分を全部取得する
GET https://bath.gee4.dev/sensor_outputs/20190523
`yyyymmdd`形式の日付を指定して、その日の出力をすべて取得します。
こっちは古いのが上に来ます。
```
[
{"status":"vacant","time":"2019-05-23T12:21:08.000+09:00"},
{"status":"vacant","time":"2019-05-23T12:35:03.000+09:00"},
{"status":"vacant","time":"2019-05-23T12:35:08.000+09:00"},
{"status":"vacant","time":"2019-05-23T12:35:13.000+09:00"},
...
]
```
## センサーの出力を登録する
POST https://bath.gee4.dev/sensor_output
ラズベリーパイからAPIサーバにデータを送信するのに使っているAPIです。
センサーの出力をそのままJSON形式にしたものをリクエストボディに送信します。
なにかに使えると思って全項目を保存してますが、APIが使ってるのは`a1`だけです。。。
リクエストボディの例:
```
{
"rc":"80000000",
"lq":"42",
"ct":"2AD7",
"ed":"82020CE5",
"id":"0",
"ba":"3080",
"a1":"2467",
"a2":"1292",
"p0":"000",
"p1":"000"
}
```
## お風呂の利用状況を見る
GET https://bath.gee4.dev/history/20190523
日付を指定して何時から何時までお風呂が使われていたかの履歴を取得します。URLの末尾8桁がyyyymmdd形式の日付です
こんな感じで取得できます。
```
[
{"status":"using", "from":"00:06", "to":"00:57"},
{"status":"using", "from":"00:59", "to":"01:15"},
{"status":"using", "from":"02:37", "to":"02:48"},
{"status":"using", "from":"06:24", "to":"06:24"},
...
]
```
日付の代わりに`today`と`yesterday`が使えます
GET https://bath.gee4.dev/history/today
GET https://bath.gee4.dev/history/yesterday
### ソースコード
#### APIサーバ
ruby-2.6.3 rails-6.0.0です
https://github.com/mktoho12/gee4-bath
#### センサーからAPIサーバにデータを登録するクライアント
ruby-2.3.0です。
https://github.com/mktoho12/gee4-bath-sensor
プルリクお待ちしてます