これはobnizアドベントカレンダー2022の1日目の記事です
obniz使ってるよ! ってひとでも案外obnizが提供しているいろいろなAPIについては知られてなかったりするので、ちょっとAPIについて書いてみます
obniz ハードウェアAPI (Websokcet)
一番みんなが使ってるAPI。 obniz.jsが裏で使っているもの。
Websocketを利用して双方向通信をしながらデバイスの制御を行います。
https://obniz.com/ja/doc/reference/cloud/hardware-api/websocket-api
できること
- IOのON/OFFやUARTの送受信など、ピンの制御
- ディスプレイやスイッチなど、obnizBoardについているコンポーネントの状態把握
基本的にはデバイスに関することができます。Websocketなので双方向通信ができるのがポイントで、
IOの状態を変更するといったプログラム→デバイスの通信も、IOの状態を取得するといったデバイス→プログラムの通信も可能です。
WebsocketでAPIを作って公開しているところ、obniz以外だと全く知らない。。。
ブロードキャストで配信だけならビットコイン取引所とかあるんですが、個別のAPIは見ないですね。
websocketの中身はJSONになっていて、そこも含めて全部公開しています。
https://obniz.com/ja/doc/reference/websocket/ws
obniz ハードウェアAPI (REST API)
obniz ハードウェアAPI (Websokcet)って一般的じゃないよねってことで一応用意したREST API。
RESTは双方向通信ではないため、IOの状態を変更するといったプログラム→デバイスの通信はできるが、状態の確認などのデータ取得はできない。
できること
- IOの状態を変更する、UARTを送信するなどの1方向通信
REST APIとしてつくったものの、あまり使われてない。(みんなobnizjsを使ってくれている)
obniz Messaging API
obnizjsの中にひっそりと含まれているjs同士が通信するためのAPI.
obnizjsの中にあるのに、デバイスには通信が届かず、代わりにそのデバイスにつながっているobnizjsに通信が届く。
なお、じつはREST APIからこのmessageを送ることもできる
できること
- 複数のobnizjs同士で文字列を送りあえる
複数のobnizjsから1デバイスを制御する際の連携機能として作成。うまく使えば複数人が1つのデバイスを協調して動かすみたいなことができるかも。
※obnizの作品じゃないけど、 論理演算式コントローラー みたいなのって面白いなぁとおもってます
アプリのクラウド実行
API・・・と見せかけてAPIじゃないやつ
ただ、使い方によっては独自APIを生やしている、と言えなくもない。いや、言えないか。
予めobnizが動くHTMLを作っておき、それをwebhookで起動する方法。webhook起動なので、いろいろなサービスと連携することができる。
できること
- 30秒以内でobnizデバイスを制御できる
- デバイスの制御はobnizjsでできることなら何でも
- というかHTMLでできることなら何でも
obniz Cloud API
知る人ぞ知る、開発者コンソール内をブラウザを使わずに操作できるAPI。
デバイス一覧とか、アプリのインストールとかそういう普通は人がやるような作業を自動化するためのAPI
UIをポチポチ操作する代わりになる
できること
- 開発者コンソール内で行っていたことを自動化できる
- デバイス一覧取得
- アプリのインストール
- デバイス設定の変更 など
少量のデバイスだったらUIでやったほうが早いけど、大量のデバイスを持っている場合にありがたいやつ。
GraphQLで提供しているので、お好きなクライアントライブラリを使って利用することができる。
というわけで、obnizが提供しているAPIを紹介してみました!
大抵の人は最初の obniz ハードウェアAPI (Websokcet)しか使ったことないんじゃないかなと思います。
是非機会があれば使ってみてください。
あしたは @wakasamasao さんです!
タイトルみたら アプリのクラウド実行 について詳しく書いてくれそう・・!(期待)