$30 off During Our Annual Pro Sale. View Details »

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

    View Slide

  2. ͻΉΒ ͱ΋ͻ͜

    View Slide

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

    View Slide

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

    View Slide

  5. ͜Ε·Ͱͷ͋Β͢͡

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    クラウドサービスについて調べる

    View Slide

  10. View Slide

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

    View Slide

  12. Firebase
    or
    Could PubSub

    View Slide

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

    View Slide

  14. Firebaseさわってみる

    View Slide

  15. FirebaseͰLνΧ

    View Slide

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

    View Slide

  17. 構成

    View Slide

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

    View Slide

  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)";
    }
    });

    View Slide

  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();
    }
    });
    });

    View Slide

  21. とても簡単だった

    View Slide

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

    View Slide

  23. まとめ

    View Slide

  24. まとめ
    • Firebase
    • IoTにもつかえそう
    • アプリつくるならここから
    • Firebase database
    • WebSocketを直接扱うより簡単

    View Slide