Contenu connexe Plus de Masafumi Okada (6) RとIoT2. Contents
• 初級 - mongodbに貯めたデータを読んでみる
• 中級 - MQTTプロトコルでPublishされたデータを
Subscribeして取得してみる
• 上級 - R on Raspberry Piで、直接シリアル通信でデー
タを受けてみる(未完)
• 番外編 - ShinyからIoTガジェットを操作する
4. Internet Of Things
• IoT: Internet of Things, モノのインターネット
• マイコンが付いていたものに、Wi-FiやBluetooth, 3G通信チッ
プが付くようになり、ネットと情報の送受信ができるようになっ
た
• 様々な機器に搭載されているセンサーのデータを容易に集めら
れるようになり、利用できるデータが爆発的に増大した
• Rの機能なら、これらセンサーからの一次情報を直接リアルタ
イムに収集分析できるかもしれない
15. Rを動かすマシンとセンサーを直接接続
し、シリアル通信, GPIO等でデータを読む
• R tty connection patch なるものがR 2.12あたり向
けに公開されている。それでシリアル通信は可能っ
ぽいが…
• Raspberry Pi / BeagleBone / PCduino / Galileo /
Edison / DragonBoard あたり向けにRをビルドする
環境を整える時間がなく未完
• 続きはいずれブログで
17. 使用したIoT機器
• Espruino + ESP8266 + BME280
• 温度・湿度・気圧センサチップのBME280
• シリアル通信で制御できるWi-Fiモジュール ESP8266
• JavaScriptでプログラムが書けるマイコン Espruino
• これらをつなぎ、BME280からI2Cで読み取ったデータをWi-Fiで
MQTT Brokerに飛ばす自作システム
21. Shinyで表示するときのTips
# reactiveValues()でReactive variableを宣言
myReact <- reactiveValues(wdf=data.frame())
# reactivePoll() で1000msごとのポーリングを設定。
# checkWeather()がponte からHTTPで最新の温度湿度気圧情報を取
得する関数
wdata <- reactivePoll(1000, session, checkWeather,
checkWeather)
# データが来ていたら、今までのデータにrbindで追加する
observe({
myReact$wdf <- rbind(isolate(myReact$wdf), wdata())
})
24. 参考文献
• ponte - HTTPゲートウェイ、mongoDBストレージ接続を備えた
MQTT Broker
• http://www.eclipse.org/ponte/
• tty patch for R 2.13 - Rから直接シリアル通信を行う機能を付加する
パッチ
• https://biostatmatt.com/code
• がじぇろぐ - 製作日記的なもの
• http://b.okadajp.org/