国産APIで使える国産マイコンボードobniz

[国産Web API Advent Calendar 2018](https://qiita.com/advent-calendar/2018/apijp) の4日目の記事です

3日目の記事　→　@masatofujiiさんの"[公共データのAPI化「しずみちinfo」](https://qiita.com/masatofujii/items/0b5c4d7fc74c8c4a234e)"
5日目の記事　→　@kazuchikaさんの"[NHK番組表API（5才）](https://qiita.com/kazuchika/items/ceffb477222682fb882a)"




APIっていいですよね。いろいろなデータや学習結果があまり詳しくなくてもリクエストさえ出せれば使えます。
"天気予報"や"地図"とか"機械学習"とかが一般的ですが、実はapiで動かせるハードウェアがあるんです

それが国産マイコンボード**"[obniz（オブナイズ）](https://obniz.io)"**です
![obniz.png](https://qiita-image-store.s3.amazonaws.com/0/227015/0a27157d-9854-241c-7bf6-49d45954c995.png)


## 国産マイコンボード"obniz（オブナイズ）"とはなにか

obnizは**電子回路をAPIから動かせるクラウドシステムです。**
・・・これで分かる人はプロですね。もう少し噛み砕いて説明します。

obnizは物理的な電子回路ボードと、それと連携したクラウドシステムでできています。

<img width="773" alt="howobnizworks.png" src="https://qiita-image-store.s3.amazonaws.com/0/227015/669f40fa-85b7-8308-4335-3e2992313403.png">


APIはクラウドシステムにあって、そこにRESTやwebsocketでコマンドを送ると電子回路ボードがそれに応じて動くようになっています。

![about_api.png](https://qiita-image-store.s3.amazonaws.com/0/227015/6c52e87a-0fd1-8bef-13c7-f4b08a5ee665.png)


例えば、電子工作でおなじみLEDを光らせようと思ったとき、
LEDの２つの端子に5Vと0Vが必要になりますが、`[{"io0":true}]`というjsonを送ると0番ピンから5Vが出力され、`[{"io1":false}]`と送ると1番ピンから0Vが出力されます。

これで5Vと0Vが出力されるので、LEDを光らせることができます（※）
![led_on.jpg](https://qiita-image-store.s3.amazonaws.com/0/227015/49a49562-6d37-b537-47c5-50cfdb672740.jpeg)


※5V対応の抵抗内蔵LEDを使っています

もちろん入力もできますので、部屋の温度をobnizで測って世界中に公開！とかもできたりします

## cURLで使ってみる

APIの基本と言えばcURLだと思うので、cURLで動かしてみます。

どのobnizにどういうコマンドを送るか　となりますが、
obnizそれぞれに固有のURLがありますので、そちらにコマンドを送ることができます

たとえば固有のIDが1234-5678だった場合、下記のURLにPOSTします

```
https://obniz.io/obniz/1234-5678/api/1
```

`[{"io0":true}]`というコマンドを送る場合はこのようになります

```
curl https://obniz.io/obniz/1234-5678/api/1 -H "Content-Type: application/json" -X POST -d '[{"io0":true}]'
```


これを使えばLEDが光らせられますね！




## SDKで使ってみる

JavaScriptならSDKが用意されています。
HTMLで使えばWebから使えますし、node.jsでアプリからも動かせますね

SDKだと先程のコマンドはより直感的に使えます

```javascript
var obniz = new Obniz("1234-5678") 
var led = obniz.wired("LED", {anode:0, cathode:1}); 
led.on();
```

5Vがどうだとかそういうのが一切消えて、LEDという部品を0番ピンと1番ピンにつないだのでそのLEDをonにしてね！という形で書くことができます。

## 他のAPIと組み合わせる

APIのメリットの一つに、自分のシステムに組み込んだり、他のAPIと組み合わせて楽しむというものがありますよね

たとえばTwitterと連動する旗をつくってみたり、したりすることができます
2個以上のobnizを組み合わせてもいいですね

ユーザー作品集が公式ページに載ってるんですが、ほんとにいろいろあって楽しいです

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/obniz?src=hash&amp;ref_src=twsrc%5Etfw">#obniz</a> <a href="https://twitter.com/hashtag/Clova?src=hash&amp;ref_src=twsrc%5Etfw">#Clova</a> <a href="https://twitter.com/hashtag/Clova_CEK?src=hash&amp;ref_src=twsrc%5Etfw">#Clova_CEK</a><br>リアル・ジャンケン・スキルつくってみた。 <a href="https://t.co/nmyucgmMyk">pic.twitter.com/nmyucgmMyk</a></p>&mdash; Google Homer (@google_homer_) <a href="https://twitter.com/google_homer_/status/1056878446519832576?ref_src=twsrc%5Etfw">2018年10月29日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/obniz?src=hash&amp;ref_src=twsrc%5Etfw">#obniz</a> 今年出たマイコンで遊んでみた。こんなのが0ベースから1日程度でさくっと作れて凄い（小並）<br>このテストは、obnizが偉いのか、HTML5がすごいのか、それともthree.jsで素敵に見せてるのかごっちゃになってる。それでも、PICなどのマイコンで遊んでた過去経験からは想像つかない、驚くほど簡単。 <a href="https://t.co/qNthiwh7Pn">pic.twitter.com/qNthiwh7Pn</a></p>&mdash; 三浦琢(荒miu) (@miu_robo) <a href="https://twitter.com/miu_robo/status/1030732492767019009?ref_src=twsrc%5Etfw">2018年8月18日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 


<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/obniz?src=hash&amp;ref_src=twsrc%5Etfw">#obniz</a><br>まだ歩けないけど、準備運動まではできた。 <a href="https://t.co/9icrIUFBJX">pic.twitter.com/9icrIUFBJX</a></p>&mdash; Google Homer (@google_homer_) <a href="https://twitter.com/google_homer_/status/1047069186214846465?ref_src=twsrc%5Etfw">2018年10月2日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">PLANETS連載で話題にした子育てwithアレクサ研究の続き、アレクサによるお小遣いサーバー試作。ランダム要素を加えたり、お手伝い報酬制にしたり、夢広がる。 <a href="https://twitter.com/hashtag/SHYHACK?src=hash&amp;ref_src=twsrc%5Etfw">#SHYHACK</a> <a href="https://twitter.com/hashtag/PLANETS%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB?src=hash&amp;ref_src=twsrc%5Etfw">#PLANETSチャンネル</a> <a href="https://twitter.com/hashtag/obniz?src=hash&amp;ref_src=twsrc%5Etfw">#obniz</a> <a href="https://t.co/gw9bZPad7q">pic.twitter.com/gw9bZPad7q</a></p>&mdash; Kazutaka Kurihara 栗原一貴 (@qurihara) <a href="https://twitter.com/qurihara/status/1015401782950760448?ref_src=twsrc%5Etfw">2018年7月7日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

# まとめ
というわけでみなさん、いろんなAPIを使う際には一緒にハードウェアを動かすAPIも試してもらえればと思います。


公式サイト：https://obniz.io
作例集：https://obniz.io/explore
ユーザー作例集：https://obniz.io/explore/forum