Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FirebaseでLチカしてみた

 FirebaseでLチカしてみた

Tomohiko Himura

September 15, 2016
Tweet

More Decks by Tomohiko Himura

Other Decks in Programming

Transcript

  1. FirebaseͰLνΧͯ͠Έͨ 2016-09-15 IoTLT޿ౡ Vol.3

  2. ͻΉΒ ͱ΋ͻ͜

  3. ͻΉΒ ͱ΋ͻ͜ • ͱ͘ʹIoTͬΆ͍ωλΛ΋ͬͯͳ͍

  4. ͻΉΒ ͱ΋ͻ͜ • ͱ͘ʹIoTͬΆ͍ωλΛ΋ͬͯͳ͍ • ͳ͔ͥIoTLTօۈத

  5. ͜Ε·Ͱͷ͋Β͢͡

  6. 4月ぐらい Arduino買ってみる

  7. 低級コードつらいので HaskellでArduinoしてみた

  8. ハードウェア(個人的に)つらいし Haskellの需要ないし

  9. ハードウェア(個人的に)つらいし Haskellの需要ないし IoTのための
 クラウドサービスについて調べる

  10. None
  11. Google だけわかりやすいものがない

  12. Firebase or Could PubSub

  13. Could PubSub • データをとにかく流せる • 処理しようと思うとCloud DataFlow • ストリーム処理するのは値段が高い

  14. Firebaseさわってみる

  15. FirebaseͰLνΧ

  16. デモ http://bit.ly/ioth3al

  17. 構成

  18. 構成 Hosting Realtime Database ここはラズパイにしたい感 • FirebaseのDatabaseに書き込む • 書き換えた値を監視しているクライアントに通知 •

    通知を受けたクライアントがLEDの状態を変更
  19. ブラウザ側 var keypath = "switch" // DBʹswitchͱ͍͏໊લͰอଘ var switchRef =

    firebase.database().ref(keypath); var buttonState = null; var button = document.getElementById("button"); button.addEventListener('click', function(){ switchRef.set(!buttonState); // ΫϦοΫ͞ΕͨΒOn/Offτάϧ }); switchRef.on('value', function(sw) { buttonState = sw.val(); // ஋ͷมߋΛड͚औͬͨΒऔಘͯ͠දࣔ੾Γସ͑ if (buttonState) { button.innerHTML = '఺౮த'; button.style.background = "rgb(3,155,229)"; } else { button.innerHTML = 'ফ౮த'; button.style.background = "rgb(155,155,155)"; } });
  20. Arduino側 var board = new five.Board(); board.on("ready", function() { var

    led = new five.Led(13); led.off(); firebase.database().ref("switch").on('value', function(sw) { buttonState = sw.val(); //஋͕ߋ৽͞ΕͨΒ൓ө if (buttonState) { led.on(); } else { led.off(); } }); });
  21. とても簡単だった

  22. ファイルのホスティングもできる

  23. まとめ

  24. まとめ • Firebase • IoTにもつかえそう • アプリつくるならここから • Firebase database

    • WebSocketを直接扱うより簡単