Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GAS(Google Apps Script)がつくりだす JavaScriptとIoTハ...
Search
pokiiio
November 18, 2017
Technology
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GAS(Google Apps Script)がつくりだす JavaScriptとIoTハードウェアの禁断の関係 @秋のJavaScript祭 in mixi 2017
https://javascript-fes.doorkeeper.jp/events/66335
https://github.com/pokiiio/2017-11-19_JSFES
pokiiio
November 18, 2017
More Decks by pokiiio
See All by pokiiio
enebularで釣果情報を収集する
pokiiio
0
290
enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた
pokiiio
0
2.5k
東京の陽性者数ばかりTVに出ててずるくない?
pokiiio
1
180
実践Node-RED活用マニュアルで電子ペーパーネタを書きました!
pokiiio
0
1.7k
テレワークを1ヶ月してみて分かった 3つのこと
pokiiio
0
460
技術書典の進捗を監視する
pokiiio
2
500
SonoSwitch
pokiiio
0
120
SonoSwitch
pokiiio
0
130
冬休みを利用して子供と遊べるゆるメカトロを作ったよ
pokiiio
0
310
Other Decks in Technology
See All in Technology
人とエージェントが高め合う協業設計
kintotechdev
0
760
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
220
kaonavi Tech Night#1
kaonavi
0
160
Aurora MySQL 8.4リリース! Rubyistが備えること / what-rubyist-should-prepare-for-aurora-mysql-8-4
fkmy
0
780
書籍セキュアAPIについて
riiimparm
0
250
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
230
GoでCコンパイラを作った話
repunit
0
150
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
370
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
460
AIが当たり前の組織で エンジニアはどう育つか
nishihira
1
990
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
510
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
740
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
The Curse of the Amulet
leimatthew05
2
13k
Site-Speed That Sticks
csswizardry
13
1.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
220
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Paper Plane (Part 1)
katiecoart
PRO
1
9.8k
Color Theory Basics | Prateek | Gurzu
gurzu
0
400
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Transcript
GAS(Google Apps Script)がつくりだす JavaScriptとIoTハードウェアの禁断の関係 @秋のJavaScript祭 in mixi 2017 ポキオ
禁断って なんだよ
ポキオとは • Androidエンジニア • Twitter : @pokiiio • Blog :
Androidのメモとか (http://relativelayout.hatenablog.com/ )
IoTLT Connpass最大の IoT関係の勉強会で ちょいちょい登壇
デブサミ2017 コミュニティ展示を させていただきました
de:code 2017 前夜祭(day0) LTしてきました
dotstudioさんで 記事も公開 京急ネタです
ハンズオン会も 開催してます IoTの楽しさを広める活動
KQ-IoT
None
京急は神 *個人の感想です
KQ : Keikyu 京急好きの京急好きによる京急好きのためのIoTガジェット 俺得だっていいじゃないか、にんげんだもの
K: クソみたいな Q: クオリティ 凝ったことはしない、最小工数でやりきる、たまに力尽く クソコードだって、動けばいいよ、にんげんだもの
KQ-IoT
はい
IoTの話
Wi-Fiが使える マイコンボードが いっぱいある
Raspberry Pi 3 Model B https://www.raspberrypi.org/ ESPr Developer https://www.switch-science.com/catalog/2500/ Nefry
BT https://dotstud.io/shop/nefry-bt-single/ ESP32-DevKitC http://akizukidenshi.com/catalog/g/gM-11819/
そもそも マイコンボードって 何ができるの?
マイコンボード INPUT OUTPUT センサー各種 電気信号 時間トリガー LED スピーカー ディスプレイ 電気信号
たとえば「リモコンの操作」 ①ボタンを押す ②ボタンが押されたことを検知 ③赤外発光ダイオードを特定の 光らせ方で光らせる ④赤外発光 ダイオードが光る ⑤チャンネルが変わる
たとえば「リモコンの操作」 ①ボタンを押す ②ボタンが押されたことを検知 ③赤外発光ダイオードを特定の 光らせ方で光らせる ④赤外発光 ダイオードが光る ⑤チャンネルが変わる INPUT OUTPUT
それに 応じて
マイコンボード INPUT OUTPUT センサー各種 電気信号 時間トリガー HTTP-GET LED スピーカー ディスプレイ
電気信号 HTTP-POST 「HogeなINPUTがあったら、FugaなOUTPUTをする」 みたいなロジックを自由にプログラムできる! Wi-Fi付きマイコンボードならHTTP-GET/POSTも!
このプログラミングを JSで行えるのが…
None
JavaScriptでIoTができる! • Jonny-Fiveはnode.js上で動作する • JavaScriptでコーディングするとマイコンボードの GPIO(入出力端子)をコントロールできる • node.js⇔マイコンボードはFirmataというプロトコルで通信する
JavaScriptでIoTができる! • Jonny-Fiveはnode.js上で動作する • JavaScriptでコーディングするとマイコンボードの GPIO(入出力端子)をコントロールできる • node.js⇔マイコンボードはFirmataというプロトコルで通信する ただし大きな制約が
マイコンボードによっては母艦PC必須 マイコンボード OS タスク タスク タスク Raspberry Pi 3 Model
B マイコンボード タスク ESPr Developer Nefry BT ESP32-DevKitC ※マルチタスク可能な子もある
マイコンボードによっては母艦PC必須 マイコンボード OS タスク タスク タスク Raspberry Pi 3 Model
B • Raspberry Pi上ではOSが走る • OSがnode.jsやJohnny-Fiveをサポートすれば Raspberry Pi単体でJohnny-FiveによるGPIOの 操作が可能
マイコンボードによっては母艦PC必須 マイコンボード OS タスク タスク タスク Raspberry Pi 3 Model
B • Raspberry Pi上ではOSが走る • OSがnode.jsやJohnny-Fiveをサポートすれば Raspberry Pi単体でJohnny-FiveによるGPIOの 操作が可能 ラズパイは大丈夫
マイコンボードによっては母艦PC必須 マイコンボード タスク • 非力なマイコンボードだとOSなし • もちろんnode.jsもだめ • Johnny-Fiveでプログラミングするには 別途PC等が必要
• PCとマイコンボードはUSB接続 or Wi-Fi接続 が必要
マイコンボードによっては母艦PC必須 マイコンボード タスク • 非力なマイコンボードだとOSなし • もちろんnode.jsもだめ • Johnny-Fiveでプログラミングするには 別途PC等が必要
• PCとマイコンボードはUSB接続 or Wi-Fi接 続が必要 IoT感が薄れる
IoTでJSを もっと使いたいなぁ…
そこでGAS
Google Apps Script https://www.google.com/script/start/
Google Apps Script • JSベース • Googleが提供するサーバサイドスクリプト環境 • 雑に言うとGoogle版VBA:Google Suiteとの連携が簡単にできる
• オレオレWebAPIが無料で簡単に作れる
例:電車遅延通知ガジェット ②HTTP-GET ③情報取得 ⑤GPIOを操作 LEDを点灯 ①定期的に処理を開始 ④情報をパース 遅延情報 サーバー
例:電車遅延通知ガジェット ②HTTP-GET ③情報取得 ⑤GPIOを操作 LEDを点灯 ①定期的に処理を開始 ④情報をパース 遅延情報 サーバー AUTHとか
あると だるい パースとか だるい
例:電車遅延通知ガジェット ②HTTP-GET ⑥何色に 光らせるか通知 ⑦言われるが ままにLEDを 光らせる ①定期的に処理を開始 遅延情報 サーバー
GAS ③さらに HTTP-GET ④情報取得 ⑤情報をパース
例:電車遅延通知ガジェット ②HTTP-GET ⑥何色に 光らせるか通知 ⑦言われるが ままにLEDを 光らせる ①定期的に処理を開始 遅延情報 サーバー
GAS ③さらに HTTP-GET ④情報取得 ⑤情報をパース 面倒な処理は GASでやっちゃう マイコンは 言われるがままに LEDをを光らせる
Pros. • Google Apps Script ◦ 無料 ◦ 簡単にAPIを作れる ◦
JavaScript • マイコンボード ◦ マイコンで難しい処理をする必要がない ◦ ロジック変更はGASをいじるだけ ◦ 簡単に複数台対応できる
Cons. • 全部JavaScriptで書けるわけではない ◦ マイコンボード上の実装は Arduino言語を… ◦ ちょっと長い…(なんとかライブラリ化したい) • 基本的にトリガーはマイコンボードから書ける必要がある
◦ リアルタイム性がアレ ◦ ユースケースによっては許容できる
デモ
構成 ②HTTP-GET ③何色に光らせるか通知 ④言われるが ままにLEDを 光らせる ①定期的に処理を開始 GAS モバイル ルーター経由
ESP8266側のコード(一部) #include <ESP8266WiFi.h> #include <Adafruit_NeoPixel.h> #include <HTTPSRedirect.h> #define PIN 4
#define NUMLED 1 #define SSID "xxxxx" #define PASSWORD "xxxxx" #define HTTPS_PORT 443 #define HOST "script.google.com" #define URL "/macros/s/xxxxx/exec" #define FINGERPRINT "08:9E:B2:B8:77:37:3E:85:26:09:CA:29:13:D2:B0:57:26:DE:C4:6D" #define INTERVAL_SEC 5
HTTPSRedirect* client = nullptr; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMLED, PIN, NEO_RGB
+ NEO_KHZ800); void setup() { // Serialの初期化 Serial.begin(115200); Serial.println(""); // マイコン内蔵RGB LEDの初期化 pixels.begin(); // Wi-Fi接続開始 connectWifi(); } void loop() { // Google Apps Scriptを叩く String result = doRedirectGet(); // サフィックスを念のため確認 if (!result.startsWith("pokio")) { delay(INTERVAL_SEC * 1000); return; } // 光る letMeBlink(result); } 続きはこちら… https://github.com/pokiiio/2017-11-19_JSFES
GAS側のコード function doGet() { return ContentService.createTextOutput("pokio,255,0,0"); } デモでは色を決め打ちで…
サマリ • IoTやらマイコンボードをJSで扱える環境が増えている • 一番楽なのはRaspberry Pi+Johnny-Fiveだと思う • GASもユースケースによっては有用 • マイコンボードは触らずにGASだけ触れば挙動の変更ができる
Thank you