Open8

sakura.io by IchigoSoda で IoT

hideharahidehara

IchigoJam(Soda)側から使うと楽なコマンド

  • IOT.IN()
    • PRINT IOT.IN() ... 自モジュールあての通信取得
  • IOT.OUT()
    • IOT.OUT(300) ... 自モジュールから sakura.io にvalue を送出
hideharahidehara

モジュール製造は終わってるんよねぇー

プロジェクトごとに、複数モジュールが紐付けられる

プロジェクトごとに、連携サービスを設定。関連モジュールからデータがくると、全部の連携サービスに投げてもらえるみたい。

hideharahidehara

プロジェクト詳細みると、その他にも色々できそう。とりあえずは、連携サービスだけでいけるかと判断してる。

hideharahidehara

今回やりたいことは IchigoSoda からなにか送られたら LINE通知をしたい。

LINE通知には LINE Notify を使う。

GitHub , IFTTT, Mackerel は ボタンぽちで連携が可能みたい

それ以外の場合は、アクセストークンを発行して、APIDocに沿って利用する。

GASから叩く時などは、アクセストークンを使うことになる。

トークン発行数は、100個/ユーザー。

API Rate Limit は 1000回/時間 ということで、普通の使い方なら十分に思う。

hideharahidehara

GAS でハンドルしてみる。

こんな流れかな。

<Sakura.io> ==outgoing.Webhook==> <GAS> ==POST==> <LINE Notify API>

  1. GAS で JSON ペイロードを受け取るWebアプリを作成して、公開
  2. 上記のURLを、sakura.io の outgoing.webhook に設定
  3. GASで受け取れたら、LINE Notify API に POST する

※GASのWebアプリURLが変更されないように操作

hideharahidehara

GAS を sakura.io の outgoing.webhook をうけとる

doPost(e) で受けるとこんな感じ。

eについては、Google公式を参照 > リクエスト パラメータ

e

{
  parameters={}, 
  parameter={}, 
  queryString=, 
  postData=FileUpload, 
  contentLength=191.0, 
  contextPath=
}

POST 本文のコンテンツ テキストをみる

e.postData.contents

{
  "module":"uXxxXxxxXXxc",
  "type":"channels",
  "datetime":"2023-11-13T06:56:57.544513251Z",
  "payload":
  {
    "channels":[
    {
      "channel":0,
      "type":"i",
      "value":3,
      "datetime":"2023-11-13T06:56:57.544513742Z"
    }
    ]
  }
}