Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Isaax Public API IoTデバイスを管理する

272 views

Published on

2018-07-12 に開催したAPI Meetup #27
途中からほぼほぼ jq コマンドの話です。
Presented by 杉田知至 isaax.io

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Isaax Public API IoTデバイスを管理する

  1. 1. Isaax Public API IoTデバイスを管理する 2018-07-12 Thu API Meetup #27@株式会社ウフル 杉田知至
  2. 2. 杉田知至 @tomotomobile Isaax by 株式会社XSHELL 2017年12月からIoTの仕事を始めました。 YouTuberに取材されました。 Raspberry Pi 3 B+ 買いました! 著書 「エンジニアのためのWordPress開発入門」 自己紹介
  3. 3. ✦ 2018.2.14 - IoTLT vol.36 ✦ 2018.2.23 - isaax UG+さくらクラブ共催 IoT勉強会 ✦ 2018.2.24 - Node-RED UG Osaka 勉強会 ✦ 2018.3.3 - Raspberry Jam Big Birthday Weekend 2018 in TOKYO ✦ 2018.3.23 - SIerIoTLT vol.6 ✦ 2018.3.28 - ISID社内勉強会 ✦ 2018.4.18 - SIerIoTLT vol.7 ✦ 2018.4.24 - iret社内勉強会 ✦ 2018.5.17 - クラウディアン社内勉強会 ✦ 2018.5.22 - SIerIoTLT vol.8 ✦ 2018.5.31 - セラク みんなの情熱大学 ✦ 2018.6.7 - 情報科学専門学校 ✦ 2018.6.9 - IoTLT × IoT ALGYAN(あるじゃん) 夏の大LT祭り!@ABC2018S IoTトラック ✦ 2018.6.18 - SIerIoTLT vol.9 ✦ 2018.6.29 - IoTLT vol.40 ✦ 2018.7.12 - 情報科学専門学校 最近の社外での登壇歴
  4. 4. 今から話す内容 • IoTデバイスの状態監視をRestfulAPIでやってみよ う!そのためにはisaax Public APIが超便利だよ。 • あんまり時間がないので概要だけの紹介です。 • APIの紹介をするつもりがjqコマンドの話になって しまったよ。 • 有料サブスクリプションの機能です(使いたい人は こっそり話しかけてくd…)
  5. 5. と、そのまえに
  6. 6. アイザックス知ってる人? https://isaax.io/
  7. 7. isaaxを使うとIoTデバイスの開発が簡単 つねに、 すべてを最新に! 開発環境で上手く 動いたものをPush MQTT MQTT
  8. 8. isaaxを使うとIoTデバイスの開発が簡単 つねに、 すべてを手軽に! APIを使って デバイスの管理 デバイス 生きてる?
  9. 9. 登録済みProject/Device一覧
  10. 10. Deviceの詳細
  11. 11. APIで操作すればもっと楽になるよ https://apidoc.isaax.io/
  12. 12. 使ってみよう
  13. 13. …の前に、ざっくりisaaxの構成 PROJECT A CLUSTER A CLUSTER B DEVICE A DEVICE B DEVICE C DEVICE D DEVICE E DEVICE F ACCOUNT TEAM branch: master branch: develop 1. Clusterは、同類デバイスの集合体である。 2. Clusterごとに、それぞれのgitブランチの紐づけが可能! 3. Clusterに更新をかけると、そのクラスターに繋がっている全てのデバイスに インストールされているアプリケーションが、一括で更新される。
  14. 14. ほぼ全部APIで操作できます https://apidoc.isaax.io/
  15. 15. Getting Started curl -sSX GET --url 'https://api.isaax.io/status' よゆーよゆー
  16. 16. プロジェクトを取得してみた Documentation https://apidoc.isaax.io/#d205ab37-5f96-4337- ad66-9e8fd2f5d560
  17. 17. All Projects curl -sSX GET --url 'https://api.isaax.io/projects' --header 'Authorization: Bearer {APIKEY}’ よゆーよ…
  18. 18. あばばばば・・・・
  19. 19. インストール Mac: $ brew install jq Windows: https://y-mattu.hatenablog.com/entry/2016/01/19/211118 に書いてあった Linux: $ sudo apt-get install jq jq使いましょう
  20. 20. Basic Usage (jq) echo '[{"name":"ore","age":17},{"name":"omae","age":30}]' |jq "."
  21. 21. All Projects curl -sSX GET --url 'https://api.isaax.io/projects' --header 'Authorization: Bearer {APIKEY}' | jq "."
  22. 22. よゆーよゆー
  23. 23. id, 名前, 接続サービス curl -sSX GET --url 'https://api.isaax.io/projects' --header 'Authorization: Bearer <API_KEY>’ | jq 'map({id, name, exportLogs})'
  24. 24. コイツラがAWSのお金使ってたんだな。
  25. 25. デバイスを取得してみた Documentation https://apidoc.isaax.io/#61399e22-cfa8-4360-a977- faaaa3e1445c
  26. 26. All Devices curl -sSX GET --url 'https://api.isaax.io/devices' --header 'Authorization: Bearer <API_KEY>’ | jq
  27. 27. よゆーよゆー
  28. 28. id, ラベル, IPアドレス curl -sSX GET --url 'https://api.isaax.io/devices?limit=50&page=1' --header 'Authorization: Bearer <API_KEY>’ | jq '.list[] | {id:.id, label:.label, ifs:.interfaces}'
  29. 29. よゆーよゆー
  30. 30. id, ラベル, 最後のメッセージ curl -sSX GET --url 'https://api.isaax.io/devices?limit=50&page=1' --header 'Authorization: Bearer <API_KEY>’ | jq '.list[] | {id:.id, label:.label, lastMessageAt:.lastMessageAt}’ エンジニアに教えてもらった 「lastMessageAtが1分以内ならオンラインとみなしてる」
  31. 31. よゆーよゆー
  32. 32. id, ラベル, 最後のメッセージ 降順ソートしてみる curl -sSX GET --url 'https://api.isaax.io/devices?limit=50&page=1' --header 'Authorization: Bearer <API_KEY>’ | jq '.list[] | {id:.id, label:.label, lastMessageAt:.lastMessageAt} | sort_by(.lastMessageAt) | reverse' sort_by()とreverseを使えば 降順ソート出来るらしい
  33. 33. id, ラベル, 最後のメッセージ 降順ソートしてみる curl -sSX GET --url 'https://api.isaax.io/devices?limit=50&page=1' --header 'Authorization: Bearer <API_KEY>’ | jq '.list[] | {id:.id, label:.label, lastMessageAt:.lastMessageAt} | sort_by(.lastMessageAt) | reverse' あれ?
  34. 34. マイクロミリ秒の文字列だとソードできないの? "2018-07-12T09:32:02.952872Z"
  35. 35. 感想 • jqを使えばAPIがサポートしてないサーチも出来る。API使 いなら覚えといて損はない。 • Isaax Public APIはキー名の命名規則にばらつきがあるの で、今後アップデートが入りそう。定期的にAPIドキュメ ントをチェックするのが良さげ。 • とはいえ、デバイスの情報を一括取得できるのは超便利。 • 今回試さなかったけどデバイスや環境変数のアップデート もできます。 • jqミートアップあったら参加したい。
  36. 36. APIへの要望はIsaax Campへどうぞ https://camp.isaax.io/
  37. 37. ご清聴ありがとうございました
  38. 38. Appendix
  39. 39. jqコマンドの参考記事 • jq コマンドを使う日常のご紹介 - Qiita • https://qiita.com/takeshinoda@github/items/2dec7a72 930ec1f658af • 軽量JSONパーサー『jq』のドキュメント:『jq Manual 』をざっくり日本語訳してみました | Developers.IO • https://dev.classmethod.jp/tool/jq-manual-japanese- translation-roughly/ • jq 1.5 Manual • https://stedolan.github.io/jq/manual/v1.5/
  40. 40. Isaax Public API関連 • パブリックAPIの使い方 • https://isaax.io/docs/ja/public-api.html • Isaax API (English) • https://apidoc.isaax.io/ • Isaax公式ドキュメント • https://isaax.io/docs/

×