さくらのIoTプラットフォーム「sakura.io」を使ってみよう

2018/2/23

さくらインターネット株式会社

コミュニティマネージャー

法林 浩之(C) Copyright 1996-2017 SAKURA Internet Inc

はじめに

本日の資料はこちらで公開します
https://www.slideshare.net/hourin/

もしくは「slideshare 法林」で検索
2

SNSへの投稿、大歓迎です！

#sakuraio #osc18tk

3

私について法林 浩之
写真@hourin
どんな人？
・フリーランスエンジニア
・さくらインターネット コミュニティマネージャー- 会社主催イベントの運営- 社外イベント対応(協賛/出展/登壇/取材など)- [New!] さくらのナレッジ 編集長
・日本UNIXユーザ会 幹事 (元会長)- さまざまなコミュニティと共同でイベントを開催- 全国各地のイベントで研究会を開催
・くわしくは「法林浩之」で検索
4

どんな話をするのか• IoTを取り巻く状況• IoTサービスを作るときの問題点• sakura.ioについて• 開発経緯• サービス概要• 利用事例• sakura.ioとOSSの組み合わせ5

さくらインターネットについて
商号

代表取締役

大阪本社（梅田/大阪）

東京支社（西新宿）

さくらインターネット株式会社（SAKURA Internet Inc.）

田中 邦裕

設立

1999年8月17日（サービス開始：1996年12月23日）

資本金

22億5,692万円

事業内容

インターネットでのサーバの設置およびその管理業務
電気通信事業法に基づく電気通信事業
マルチメディアの企画並びに製作・販売

従業員数

495名（連結/2017年3月末）

所属団体

特定非営利活動法人 日本データセンター協会（JDCC）
社団法人 コンピュータソフトウェア協会（CSAJ）
社団法人 日本ネットワークインフォメーションセンター（JPNIC）
社団法人 インターネットプロバイダー協会（JAIPA）

グループ
会社

株式会社Joe’sクラウドコンピューティング
ゲヒルン株式会社
株式会社S2i
アイティーエム株式会社
櫻花移動電信有限公司
ビットスター株式会社

福岡オフィス（赤坂）6さくらインターネットの事業領域
VPS・クラウド

レンタルサーバ

専用サーバ

データセンター

新サービス
IoT

さくらのレンタルサーバ
さくらのマネージドサーバ
1台のサーバを複数の契約者でサーバを共有または占有することができ、管理はさくらインター
ネットに任せて使うサービス

1台を共有

ハウジング

さくらの VPS
仮想化技術を用い、1台の物理サーバ上に複数の仮想サーバを構築し、仮想専用サーバとして分けた領域の占有サービス

1台を占有

リモートハウジング
高性能サーバと拡張性の高いネットワーク
を圧倒的なコストパ
フォーマンスで利用できるIaaS型パブリック・
クラウド・サービス

高性能で拡張性と信頼性の高いサーバをまるごと独占して利用することができ、自由にカスタマイズして利用可能なサービス

データセンター内にお客様専用のハウジングスペースを確保し、ネットワーク機器やサーバなどの機材を自由に置けるサービ
ス

1台～複数台IoTデバイスからのセンサデータ蓄積や活用のため、モジュールを含めて一体型で提供するIoTプラットフォーム・サービス

さくらのセキュアモバイルコネクト
クラウドにダイレクトに接続し、任意のネットワークへ接続可能なSIM。セキュリティを担保し、国内で最も安価な通信を提供
AI ・ 人工知能【サービスの主な利用用途】
ウェブサイト運営、ブログ、インターネット・メール
ネットビジネス、電子商取引、動画・音楽配信、開発環境
エンタープライズ
会員制サイト、キャンペーン・サイト
SNS、ウェブ・アプリケーション、SaaS、ASP

機械学習、データ解析、高精度シミュレー
ション用途に特化したGPU搭載の専用サー
バサービス

新しい社会のインフラを支えながら、最先端のサービスを構築
7

IoTを取り巻く状況
8

IoTと呼ばれているもの

http://mattturck.com/2016-iot-landscape/9IoTと呼ばれているもの“インターネット"と同じぐらい広すぎる
10

IoTと呼ばれているもの(垂直統合型)

モノとサービスの両方を提供(垂直統合型)
11

IoTと呼ばれているもの(水平統合型)

汎用的な基盤を提供(水平統合型)

12

IoTと呼ばれているもの(分類)各種構成要素を提供(要素技術)

13

sakura.ioの位置付け

sakura.ioはここに分類されるサービス

ソフトウェア/接続性/分析/セキュリティなどのプラットフォームサービス

http://mattturck.com/2016-iot-landscape/14

IoTはビジネス転換のキーに

出典：総務省 http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h28/html/nc123200.html

IoTによりデータが収集・活用されることでビジネスモデル転換を生み、さらにデータの活用が促進される

15

どうやって

データ
集めるの？
16

「どうやってデータ集めるの？」に挑戦

sakura.ioは「どうやってデータ集めるの？」に挑戦するサービス

ソフトウェア/接続性/分析/セキュリティなどのプラットフォームサービス

http://mattturck.com/2016-iot-landscape/17

IoTサービスを作るときの問題点
18

IoTサービスを作る人がやりたいことモノからデータを取得してWebやアプリで使いたい！
Webやアプリから指令を出してモノを操作したい！
通信 ネットワーク

DB

ミドル

API

モノをインターネットにつないで何かしたい
19

IoTサービスを作る人が実際にやること

通信 ネットワーク

DB

ミドル

API

ハードウェア/ソフトウェア両方の知識が必要
20

IoTサービスを作るときに必要な作業

IoTサービスを作るときに必要な作業• ハードウェア(モノ作り)• 機構設計 / 電気設計 / ファームウェア設計 / 通信設計

• ソフトウェア(フロントエンド)• UI設計 / アプリ開発• ソフトウェア(バックエンド)• インフラ設計 / ミドルウェア設計 / DB設計 / API設計• セキュリティ• ユーザ認証 / 機器認証 / 暗号化 / バックアップ
21

IoTサービスを作るときに必要な作業

IoTサービスを作るときに必要な作業• ハードウェア(モノ作り)• 機構設計 / 電気設計 / ファームウェア設計 / 通信設計

これらを全部できる人は• UI設計 / アプリ開発• ソフトウェア(バックエンド)
ほとんどいない• インフラ設計 / ミドルウェア設計 / DB設計 / API設計• ソフトウェア(フロントエンド)• セキュリティ• ユーザ認証 / 機器認証 / 暗号化 / バックアップ
22ハードウェアエンジニアの守備範囲

通信 ネットワーク

DB

ミドル

API

物理的なことや電気的なことはわかるがTCP/IPやHTTPのことはわからない

23

ソフトウェアエンジニアの守備範囲

通信 ネットワーク

DB

ミドル

API

TCP/IPやHTTPのことはわかるが物理的なことや電気的なことはわからない

24

通信方法をどうするか

モノをネットにつなぐ手段は増えている

TCP/IP

not IP

近くと
つながる
どこでも
つながる
25

通信方法をどうするか

IoT向けの通信方式として注目

出典：ビジネスネットワーク.jp http://businessnetwork.jp/Detail/tabid/65/artid/5106/Default.aspx

26通信方法をどうするかどの方式にも弱点がある• LAN / WiFi：回線やアクセスポイントが必要• モノをつなぐためだけにBフレッツを敷設？

• LTE• 山奥や地中深くでは電波が入らない• 空中では使用禁止(電波法)• Bluetooth：近距離でないと使えない• その他：普及していない27

セキュリティをどう守るか• IoTで扱うデータは個人情報が多い• 生体情報、位置情報、など• データの暗号化は必須• IoTデバイスはコンピュータとしては非力な場合が多い• Linuxでは重いので軽量なリアルタイムOSが普及• デバイス側に暗号化の仕組みを実装するのは難しい• ハードウェアエンジニアにはTCP/IPやSSLの実装は困難• インターネットにつなぐと攻撃対象になる• 不正アクセスを受けて乗っ取られる• DoS攻撃を受けて通信できなくなる28

その他の問題• 多様な環境に適応する必要性• WiFiがあるとは限らない• スマホがあるとは限らない• できれば設定や操作をなくしたい• デバイスが勝手にデータを送受信すればよい• 初期投資が大きい• モノの製造コストがかかるのが大きな負担• サービスの継続にコストがかかる• デバイスの量産、保守、サポートなど
29

さくらインターネットのIoTへの取り組み30

IoTサービスを作るときの問題点

IoTサービスを作る人がやりたいことモノからデータを取得してWebやアプリで使いたい！
Webやアプリから指令を出してモノを操作したい！
通信 ネットワーク

DB

ミドル

API

モノに関する部分と、Webサービスやアプリの部分だけ作りたい
31

IoTサービスを作るときの問題点

IoTサービスを作る人が実際にやること

通信 ネットワーク

DB

ミドル

API

ネットワークとデータをやり取りしたいだけなのに…
やらなければならないことが多すぎる32

さくらインターネットの取り組み

通信⇔データ連携
さくらインターネットにおまかせ

通信 ネットワーク

DB

ミドル

API

モノとWebの間でデータを相互にやりとりするためのプラットフォームサービスを開発

モノとWebの間でデータを相互にやりとりするためのプラットフォームサービスを開発

33

sakura.io概要
34

既存の事業領域 や エンジニアのスキルセット を変更することなく、モノやサービス作りに注力することができる
かつ、 収集されたデータの流通 も見据えた基盤
これまで気付けなかった「モノ・コト」の相関性や関係性を見出し、それを世界でシェアできるプラットフォーム がコンセプト35

sakura.ioの注力分野「sakura.io」のターゲット分野

広義IoT

狭義IoT

（商業・コンシューマー）（工業/工場）

低単価だが母数が多い【 広義のIoT 】領域に注力
36✔ デバイス数60億個以上（2016年時点）✔ 成長率15％以上（2016-2021年予想）
出典：総務省 http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h29/pdf/29honpen.pdf

サービスとしては母数が多く、成長が期待されている「コンシューマ」分野に携わる「法人」にフォーカス（所謂B2B2Cモデル）

36

sakura.ioが提供する価値【 モノ 】 と 【 データセンター 】 を直結することでデータ活用を促進
どちらの業種にも新技術習得や事業領域変更は不要

37

他のIoTプラットフォームとの差異

sakura.io
や
り
た
い

他社IoT
プラットフォームIoT用MVNO事業者

企画・アイディア「データを迎えに行く」という発想

センサー/チップ・モノからのアウトプットだけでなくモノへのインプットも・電源を入れるだけで利用可能

デバイス（外装、基板、ファームウェア）

サービス（可視化/予測/効率化）

や
ら
ね
ば
な
ら
な
い

データの送受信手段
安全な通信経路
デバイス認証/管理プラットフォーム機能（収集/蓄積/連携）【 やりたい 】に注力できるプラットフォームとして提供
38

sakura.io詳細
39

データセンタ事業者だからできたデータの収集データの蓄積ラージスケール対応

データの連携アップデート

運用機能

障害切り分け、復旧

セキュリティ

必要な機能・運用をプラットフォームサービスとして提供
IoTデバイスやサービスごとの基本機能開発や運用設計は不要

40

さくらの通信モジュール

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

34mm

LTEモデムチップ
通信制御用MCU

SIMカードコネクタ
46mm

SDカードほぼ2枚分に収まるコンパクトサイズ
モノ側の通信に必要なすべてを凝縮

41

組込エンジニアの負担を軽減

データの収集データの蓄積データの連携

ラージスケール対応

障害切り分け、復旧

セキュリティ

運用機能

アンテナ

開発範囲

アプリケーション

アップデート

従来の通信手法
I2C/SPI

コマンドI/F
上位プロトコル
TCP/IPスタック
モデムコマンド制御

削減

UART制御省電力制御

複数の無線規格に対応

IoTデバイス/サービスの開発工数を削減「作らなければならないもの」より「作りたいもの」に注力可能

42どこでもつながる通信モジュール

データの収集46mm

量産性に配慮した“基板間コネクタ”を採用

LTE
2.4GHz920MHz(LoRa)

34mm

データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

方式

GW

特徴

通信可能
レンジ

伝送
速度

消費
電力

LTE

不要

単独
使用可

キャリア網内
どこでも

速い

大きい

2.4GHz帯

必要

短距離
大容量

数百メートル

速い

小さい

920MHz帯(LoRa)

必要

長距離
小容量

遅い

小さい

（最大1Km程度）

数キロメートル（最大10km程度）

共通インターフェースおよび寸法のため複数の無線規格への対応が容易

43データはポリシーに応じたデータストアに自動で保管

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

フリー

ライト

スタンダードプライベート

料金

無料

有料（50円/月）※

有料（200円/月）

有料

専有/共有

共有領域

共有領域

共有領域

専有領域

公開有無

公開

非公開

非公開

非公開

閲覧可能期間

40日間

40日間

2年間

制限なし

リリース

未公開

リリース済みリリース済み未公開※料金は通信モジュール1個あたりの金額となります※ライトプランは現在無料で提供されています

デバイスから送られたデータはポリシーに応じてプラットフォーム内のデータストアに自動で保存される

44

Webエンジニアの負担を軽減する設計

データの収集

リアルタイム連携

データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

JSON形式{"module": "XXXXXXXXX","type": "channels","datetime": "2016-06-01T12:21:11.628907163Z","payload": {"channels": [{"channel": 1,"type": "i","value": 1,"datetime": "2016-06-01T10:21:11.628907163Z"}, {"channel": 2,
…
}]
}

一括連携

HTTP
Request}

データ取り出しやデバイス制御はすべてJSONフォーマットで実施
既存システムや扱いに慣れたクラウドサービスとの接続も可能

45

「安全」を超えた「安心」を

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

さくらの通信モジュール

さくらの通信モジュール

SSL/TLS通信
インターネット

他社モジュール＋さくら提供SIM

デバイスからプラットフォームまでは閉域網経由、他デバイス含め
外部アクセスはAPI経由でのみ行うことでセキュリティを担保

46

さくらが考えるIoTのセキュリティ• インターネット上のサーバ間の通信はSSLを使用• サーバは継続的にアップデート可能• 組み込み機器との通信は構造上安全にする• 閉域網を利用(グローバルネットワークに接続しない)• 通信の暗号化と認証は基本的にLTEを利用• その上で簡易な暗号化と認証をソフトウエアで実装• モノ作りの人にTCP/IPやSSLを実装させない
47

運用を考慮した機能群

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

時刻提供機能

時刻要求

時刻提供

時刻提供
※一部マイコン側での対応が必要です

スケジュールでの一斉動作といった場合でも通信モジュールから時刻情報を提供可能

48

運用を考慮した機能群

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

簡易位置情報提供機能
基地局情報

簡易的な
位置情報

※利用には別途月額料金が必要になります

エリアレベルでの大まかな設置場所を収集するようなケースであれば通信モジュールの機能として提供

49

運用を考慮した機能群

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

ファイル配信機能
ファイル要求ファイル要求ファイル配信ファイル配信
※一部マイコン側での対応が必要です※別途通信量に対する課金が発生します

設置済みデバイスに対する遠隔アップデート等
ソフトウェアな問題への対処を実現

50

世界のすべてを繋ぎたい
汎用/特定サービスとの連携

世界中で利用できる

世界対応

統一IF
サイズ

[New!]

セキュリティ
連携
サービス

クラウド
スケール

既存システムと連携しやすいフラットな仕組みを世界のどこでも使えるように提供

51

ご提供価格/方式
52

sakura.io 料金体系

つなぐ

初期費用（モジュール購入）
月額費用（回線、プラットフォーム利用）

貯める

連携する

8,000円
60円/月 ～

※料金はモジュール単位53

sakura.io 料金体系（月額費用）
•基本料金

✓

60円/月 ※毎月1万回分の通信が可能なポイントを付与•追加料金✓ 通信回数の追加、オプション機能の利用※特定のオプション機能を利用した場合は別途定額の追加料金がかかります

追加料金
オプション機能利用60円

sakura.io
利用開始

モジュール購入

通信回数追加100円

通信回数追加100円

モジュールB 基本料金

モジュールB 基本料金

60円

60円

モジュールA 基本料金

モジュールA 基本料金

モジュールA 基本料金

60円

60円

60円

N月

N+1月

N+2月

基本料金

5分に1回の通信なら、毎月60円で実現
より幅広いサービスへ適用可能

54

sakura.io 1回の通信に含めることができるデータ（LTEモデル）
sendenqueue

送信（Tx） キュー

最大

128byteマイコン
dequeue

受信（Rx） キュー（自動受信）

32個分のキュー（Tx/Rx）

sakura.ioモジュール

1回の送受信データ（メッセージ）は、最大「128byte（8byte x 16）」時間や送信元情報はプラットフォーム受信時に付与、マイコン側対応不要

55

参考：sakura.io 料金表（ハードウェア）

LTE通信モジュール

Arduino用シールド

商品名

Raspberry Pi用HAT

ブレイクアウトボード

必須/オプション

料金

8,000円sakura.io モジュール（LTE）

必須

sakura.io シールド for Arduino

オプション

5,000円sakura.io ブレイクアウトボード

オプション

2,500円

オプション

5,000円sakura.io HAT for Raspberry Pi

NEW!!

登録後 60円/月※モジュール金額は個包装のものです※すべて税別表記です

56

提供方式
提供方式

数量

販売経路

用途

備考

個包装

１個〜

店舗
ECサイト

個人利用
プロトタイプ生産
少量製品

アンテナ同梱

トレイ

90個単位

ECサイト
商社

少〜中量生産アンテナ無し独自設計マイコンへの相当機能追加

初期費用＋
サポート費用プロトコル
ライセンス（LTE／920MHz）

応相談

お問い合わせください

ライセンス方式での提供で、より柔軟な設計製造が可能に57

プロトコルライセンス方式「 自社ソフトウェアに組み入れたい 」に対応
通信機能の「 つくりかた 」を提供

さくら

お客様

開発時

プロトコル仕様書
ライブラリ/サンプルコード(C言語・Go言語)
製造・検査手順書

ファームウェア開発
通信モジュール開発
ハードウェア開発

製造時

SIM

製造ライン開発
製造※ ファームウエアアップデートは自社で実施する必要があります。
58プロトコルライセンス採用事例：tsumug スマートロック「T!NK」

T!NK https://tinklock.com/ 株式会社tsumug https://tsumug.com/
TechCrunch記事 http://jp.techcrunch.com/2017/11/09/tsumug-tink/

アパマンショップホールディングスと連携、2021年までに賃貸管理物件100万世帯への設置を目指す

59

今後の活動計画

新製品、新機能を拡充し、市場拡大を目指す
2017

2018

現在
サービス
sakura.io

・データエクスチェンジ
通信モジュールLTE提供開始
・ユーザ間データ取引開始
・LPWAテストチーム発足（データ取引所等）・大量利用者むけ機能拡充
・LPWA提供開始
・データストア拡充
・イベント開催等によるマーケティング施策

施策

データ流通

流通形態
と

・パートナー提携強化による拡販
・顧客の事業化支援 / 海外版提供

クローズ

・企業横断的なデータ共有
機能提供

クローズ+オープン

流通量60

さくらが提供するIoT用途製品群
新規 製造製品向け

既存 製品にもNEW

セキュアモバイルコネクト

プラットフォームの提供

IoT向けSIMの提供

SIM付き通信モジュールをコアとした
IoTプラットフォームの提供

クラウドにダイレクトに接続し、任意のネットワークへ接続可能なSIM。セキュリティを担保し、国内で最も安価な通信を提供

単体方式

ゲートウェイ方
式

接続方法開
示

LTE

LoRa

SIM供給

＋

IoTに必要なプラットフォーム機能を提供
つなぐ

保存する

通常SIM 〜 MFF2まで連携する

IoTに求められる通信機能を提供
安全

安価

高速通信
61

sakura.ioとはなにか？

電気信号とJSONを相互変換する
プラットフォーム
I2C/SPI

JSON

モノ/マイコンクラウド

これまでのモノ作り/サービス作りを補完
現在持っている技術/事業範囲で共創が可能

62

利用事例
63

広がる利活用分野

公共
教育
農業
健康
新分野
製造
64

害獣駆除

• イノシシやマングースの駆除に利用• 罠に通信モジュールを装着し動作状況を取得• LTEが不安定な場所ではゲートウェイを利用

http://pcn.club/katsuyama/azure201703/

http://knowledge.sakura.ad.jp/other/7902/

65

バス乗客リアルタイムオープンデータシステム• 鯖江市のコミュニティ
バス「つつじバス」• 運転手の操作盤に通信モジュールを装着
し乗客数などを取得• 集計結果はオープン
データとして活用

https://www.sakura.ad.jp/press/2017/0330_sabae-tsutsujibus/
66灯油配送の効率化• 制作：ゼロスペック株式会社• 灯油タンクにセンサーと通信モジュールを設置• 灯油の残量を計測し送信• 残量が少なくなったら配送• https://www.zero-spec.com/

67天草Xアスロン• アウトドアスポーツの競技会• 2016年の大会にて実証実験• パラグライダーの飛行状況を
リアルタイムで表示• 空中ではLTEが使えないのでLoRaを使用• https://thinkit.co.jp/article/10084

68

sakura.ioとOSSの組み合わせ69

sakura.ioの両端はオープン

電気信号とJSONを相互変換する
プラットフォーム
I2C/SPI

JSON

モノ/マイコンクラウド

sakura.ioの両端はオープンな通信方式とデータ形式を採用
70

デバイス側• I2C/SPIで通信できればよい• 接続用ボードを販売• Arduino用シールド• Raspberry Pi用HAT• Arduino用ライブラリやサンプルプログラムも公開• http://www.arduinolibraries.info/libraries/sakura-io• https://github.com/sakura-internet/SakuraAlphaArduino71インターネット側• sakura.ioで用意したAPIによりリクエストを送出• 対応プロトコル/サービス
{
•
•
•
•
•
•

Websocket
Webhook (Incoming / Outgoing)
MQTT
DataStore APIAWS IoT
Azure IoT Hub• URLの例• wss://api.sakura.io/ws/v1/(ID)• https://api.sakura.io/incoming/v1/(ID)"module": "XXXXXXXXX","type": "channels","datetime": "2016-06-01T12:21:11.628907163Z","payload": {"channels": [{"channel": 1,"type": "i","value": 1,"datetime": "2016-06-01T10:21:11.628907163Z"}, {"channel": 2,
…
}]
}

}
• JSON形式のデータが返ってくる• お好みのプログラミング言語でJSONデータを処理• 主要な言語はJSONを扱うライブラリあり
72利用例その1
温度・湿度の測定(Node-RED編)
73システム構成

温湿度データを取得しsakura.ioへ送出
マイコン（Arduino Uno）

さくらの通信モジュール

Websocketでデータを入手し
Node-REDで処理
LTE
閉域網

WebSocket

仮想サーバ
Linux (CentOS)
温湿度センサ（SHT31/HDC1000）

74

作業内容

1. sakura.ioの設定
₋₋₋

プロジェクトの作成
さくらの通信モジュールの登録
連携サービス(Websocket)の設定

2. 機器の配線とマイコンのプログラム開発
₋₋₋

通信モジュールとArduinoシールドを接続
温湿度センサーからの出力をArduinoに取り込めるよう配線
温湿度情報をsakura.ioに出力するArduinoのプログラムを作成

3. サーバの作成とデータ加工処理の開発
₋₋
₋

Node-REDサーバを作成
温湿度データを加工するフローを作成
WebSocketでデータを入手し、 Node-REDで加工してグラフ表示＆Twitterに投稿
75

sakura.ioの設定②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

温湿度センサ（SHT31/HDC1000）

さくらの通信モジュール

マイコン（Arduino Uno）

仮想サーバ
76

sakura.ioの設定
プロジェクトの登録

通信モジュールの登録

連携サービスの登録77

連携サービスの設定
連携サービスとして、WebSocketなどのオープンな通信プロトコルや、
AWS IoTなどのようなクラウド事業者のサービスを選択することができます。

78

連携サービスの設定（WebSocket）
連携サービスとしてWebSocketを選択すると、WebSocketのURLが設定されます。
このURLにアクセスすると、sakura.ioとの間でJSON形式のデータを送受信します。

79

機器の配線とマイコンのプログラム開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

温湿度センサ（SHT31/HDC1000）

さくらの通信モジュール

マイコン（Arduino Uno）

仮想サーバ
80

さくらの通信モジュールとArduinoの接続
通信モジュールの下にArduinoシールドを敷き、さらにその下にArduinoを接続します。
通信モジュールにはLTEアンテナを取り付けます。

LTEアンテナ

Arduinoシールド

通信モジュール

Arduino81

温湿度センサーの接続
温湿度センサーをブレッドボードに設置し、図のように配線します。
（実際にはArduinoシールドに対して配線します）
SCL, SDAの2本の線でI2Cによる通信を行います。

GND
RDY/ADR
SCL
SDA
3.3V

＜凡例＞

SCL
SDA
GND
3.3V
82

Arduinoのプログラムの構築
Arduinoにてsakura.ioを制御するためのライブラリをインストールし、
温湿度センサーの情報を送信するプログラムをArduinoに書き込みます。
(プログラムはGitHubで公開しています。 https://github.com/sakuraio)

プログラムが動作すると、シリアルモニタに温度・湿度・カウンタ値などが表示されます。

83

【参考】デバイスから送信されたデータの確認
sakura.ioの管理画面では、デバイスから送信されたデータがリアルタイムで表示されます。

時刻：
データがモジュールのキューに格納された時刻のタイムスタンプ

モジュール：
データを送信した
通信モジュールのID

チャンネル
データが格納されたチャンネル番号型：
データの型式値：
送信された値→ 温度→ 湿度→ カウント値84サーバの作成とデータ加工処理の開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

温湿度センサ（SHT31/HDC1000）

さくらの通信モジュール

マイコン（Arduino Uno）

仮想サーバ
85

Node-REDとは
Node-REDは「ノード」と呼ばれる機能の固まりをシート上で組み合わせ、ひとつの「フロー」にすることで、ほとんどプログラミングを知らない人でもプログラムを構築することができるツールです。
デプロイ

ノード
パレット

シート

Info/Debug
コンソール

86

Node-REDサーバの作成

作業概要• サーバを作成 (ここではCentOS 7を使用)• Node関連プログラムのリポジトリを登録• Node.jsのインストール• Node-REDのインストール• Node-REDの自動起動設定
87

Node-REDサーバの作成
さくらのクラウドには、サーバ作成時に任意のスクリプトを自動実行する「スタートアップスクリプト」機能があります。
スタートアップスクリプトにNode-REDを指定することにより、前ページに掲げた作業がすべて自動的に実行され、Node-REDサーバを簡単に作ることができます。

88Node-RED フローの作成
sakura.ioからWebSocketで温湿度データを入手し、加工して表示するフローを作成します。
WebSocketのURLとTwitterのIDを設定し、デプロイすると動作します。

https://github.com/sakuraio/handson-sample/blob/master/node-red/graph-display-and-temperature-tweet

89

Node-RED フローの作成
フローの内部ではこのような処理をしています。
文字列として受け取った
JSONデータの変換
WebSockerのURLを設定

温度（ch0）データだけを抽出

通信モジュールからのデータのみを通過/ui/ にグラフとして可視化
文章を生成（実行後10分待機）温度（ch1）データだけを抽出

Twitterアカウント連携で投稿/ui/ にグラフとして可視化

https://github.com/sakuraio/handson-sample/blob/master/node-red/graph-display-and-temperature-tweet

90

Node-RED フローの動作確認（グラフ表示）【 http://<サーバのIPアドレス>:<指定したWeb UIポート番号>/ui/ 】 にアクセスすると、取得した情報に応じて動的にグラフが生成されることを確認できます。

91Node-RED フローの動作確認（Twitter投稿）
フローをデプロイすると、その時取得した温度センサの情報が文中に埋め込まれた状態で、設定したTwitterアカウントにツイートが投稿されます。
［ メッセージ化 ］ ノードの内容を書き換えることで任意の文章に変更することができます。

92

利用例その2
温度・湿度の測定(Zabbix編)
93システム構成

温湿度データを取得しsakura.ioへ送出
マイコン（Arduino Uno）

さくらの通信モジュール

Websocketでデータを入手し
Zabbixに投入
LTE
閉域網

WebSocket

仮想サーバ
Linux (CentOS)
温湿度センサ（SHT31/HDC1000）

94

作業内容

1. sakura.ioの設定
₋

利用例1と同じ

2. 機器の配線とマイコンのプログラム開発
₋

利用例1と同じ

3. Zabbixサーバの構築とデータ取得プログラムの開発
₋₋₋
₋

Zabbixサーバを作成
Zabbixにおける監視の設定
sakura.ioからのデータ取得プログラムを開発
プログラムをサーバに設置し定期的に作動するように設定
95

Zabbixサーバの構築

作業概要• サーバを作成 (ここではCentOS 7を使用)• firewalldの設定• Webサーバ(Apacheやnginxなど)の入手と設定• DBサーバ(MySQL/MariaDB/PostgreSQLなど)のインストールとDB作成• Zabbixのインストールと設定
96

Zabbixサーバの作成
さくらのクラウドには、サーバ作成時に任意のスクリプトを自動実行する「スタートアップスクリプト」機能があります。
スタートアップスクリプトにzabbix-serverを指定することにより、前ページに掲げた作業がすべて自動的に実行され、Zabbixサーバを簡単に作ることができます。

97

Zabbixの監視設定(概略)監視の有効化 → アイテムの作成 → グラフの追加→ スクリーンの追加

98Zabbixへのデータ投入プログラム
sakura.io からの WebSocket を受信 → 温度と湿度を zabbix_sender で送信
下記の例はPerlとMojoliciousを使用しているが、WebsocketとJSONを扱えるならどのプログラム言語でも記述可能#!/usr/bin/perl
use strict;
use warnings;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;$ua->websocket('wss://api.sakura.io/ws/v1/xxxxxxxxxx/' => sub {（略）
open(CMD, "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o $dat |");
print "Temp:",$dat,"¥n";print "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o ",$dat,"¥n";99

WebsocketのURIを入手しプログラムに設定

100温度・湿度をZabbixでグラフ化

101利用例その3
LEDの操作102

システム構成
Node-REDのGUIでLEDを操作しWebSocketにてデータを送信

sakura.ioからデータを受信し3色のLEDを点灯/消灯
抵抗入りLED

さくらの通信モジュール

マイコン（Arduino Uno）

LTE
閉域網

WebSocket

仮想サーバ
10
3

作業内容

1. sakura.ioの設定
₋

利用例1,2と同じ

2. 機器の配線とマイコンのプログラム開発
₋₋₋

通信モジュールとArduinoシールドを接続
Arduinoからの信号がLEDに伝わるように配線
sakura.ioから入手したデータによりLEDを操作するArduinoのプログラムを作成

3. サーバの作成とLED操作フローの開発
₋₋
₋

Node-REDサーバを作成
LEDを操作するフローを作成しデプロイ
Node-REDのGUIを操作しLEDを点灯/消灯
104

機器の配線とマイコンのプログラム開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

抵抗入りLED

さくらの通信モジュール

マイコン（Arduino Uno）

仮想サーバ
10
5

LEDの接続
LEDをブレッドボードに設置し、図のように配線します。
（実際にはArduinoシールドに対して配線します）

Digital5
GND

Digital6
GND

Digital7
GND

＜凡例＞

D5
D6
D7
GND
3.3V
10
6

Arduinoのプログラムの構築
sakura.ioから受信したデータに応じてLEDに信号を送るプログラムをArduinoに書き込みます。
(プログラムはGitHubで公開しています。 https://github.com/sakuraio)

プログラムが動作すると、シリアルモニタに結果が表示されます。(LEDに関する情報は出ません)

107

サーバの作成とLED操作フローの開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

抵抗入りLED

さくらの通信モジュール

マイコン（Arduino Uno）

仮想サーバ
10
8

Node-RED フローの作成
左端のボタンをクリックすると赤/緑/青のLEDをON/OFFするフローを作成します。
WebSocketのURLと、LEDノードに通信モジュールのIDを設定し、デプロイすると動作します。

https://github.com/sakuraio/handson-sample/blob/master/node-red/graph-and-control-and-temperature-tweet

109

Node-RED フローの動作確認【 http://<サーバのIPアドレス>:<指定したWeb UIポート番号>/ui/ 】 にアクセスし、最右列のボタンをクリックすると、それに応じてLEDが点灯/消灯します。

110

まとめ
11
1

今日お話ししたこと• IoTを取り巻く状況• データ収集方法が課題• IoTサービスを作るときの問題点• 作業範囲が広範 / どの通信方式を選ぶか / セキュリティの確保• sakura.ioについて• 開発経緯 / サービス概要 / 利用事例

• sakura.ioとOSSの組み合わせ• 温湿度センサーから取得した温度と湿度をNode-REDやZabbixで表示• Node-REDからデータを送信しLEDを点灯/消灯
112

sakura.ioが目指す世界

通信⇔データ連携
さくらインターネットにおまかせ

通信 ネットワーク

DB

ミドル

API

モノとWebの間でデータを相互にやりとりするためのプラットフォームサービスを開発

既存の事業領域/スキルセットの大幅な変更なく
モノ/サービスづくり、連携に注力可能

11
3

参考情報
11
4

sakura.io体験ハンズオン• 今日の講演で紹介した内容を実習するハンズオン• 東京では毎月開催中• パートナーとの共催ハンズオンも実施中• 駅すぱあと / myThings / Azure / AWS / Bluemix / Twilio など• 開催予定：2/26(月)東京、3/15(金)福岡(Twilio)、4/14(土)広島• イベントページ• さくらのイベント(関東版)：https://sakura-kanto.doorkeeper.jp/• さくらのイベント(九州版)：https://sakura-kyushu.doorkeeper.jp/• さくらのイベント(中四国版)：https://sakura-chushikoku.doorkeeper.jp/
115

sakura.ioではじめるIoT電子工作• sakura.ioを使ったIoT工作の解説書• 2018年2月2日発売 [New!]• セミナーで紹介した内容はほぼ掲載• それ以外の内容• Raspberry Piとsakura.ioの接続• LinuxやPythonでセンサーの値を処理• sakura.ioから受信したデータの処理(JavaScript、MQTT、データストアなど)• 展示ブースに書籍あり
11
6

全国でさくらのイベントを！

• さくらのイベントを全国で開催したい！
• sakura.ioのハンズオン• さくらのクラウドなど各種サービスのハンズオン• さくらの夕べ / さくらクラブ など…

• 協力者求む！
• 会場の提供• 参加者集め
• 地元コミュニティとの共催も可• 連絡先：sakura-club@sakura.ad.jp
117そこに、さくら118

参加者アンケートにご協力ください

ご回答いただいた方に粗品を進呈します