0%

使用Nodemcu連接firebase資料庫

Firebase是什麼

Firebase是一款Google提供的服務,可以串連iOS、android、Unity、Web APP,協助開發者在雲端快速建立後端服務,提供即時的雲端資料庫,開發者可以不用在開發後端的前提下,專心撰寫前端的程式,目前在一定使用額度下,提供免費服務

安裝Firebase library

  1. 在arduino IDE裡面要安裝Firebase的library,我們需要先到Github上下載檔案,直接Download ZIP就可以了
  2. 下載完畢之後,打開Arduino IDE>Sketch>Include Library>Add .ZIP Library,接著選擇剛剛下載下來的ZIP檔就完成Library的安裝了

建立Firebase專案

  1. 首先先進入Firebase>登入>新建專案>輸入專案名稱與地區之後建立專案
    螢幕快照 2017-08-03 下午7.47.57

  2. 接著點選overview旁邊的設定>專案設定>服務帳戶>資料庫密鑰>顯示並複製密鑰
    螢幕快照 2017-08-03 下午7.49.42
    螢幕快照 2017-08-03 下午7.51.33

  3. 回到剛剛上一步的視窗,點選左側的Database>規則>將”.read”跟”.write”都更改為true並發布,這樣可以使資料庫無需權限的被讀取跟寫入
    螢幕快照 2017-08-03 下午7.53.40

  4. 記錄Database的網址,如此範例就是https://nodemcu-94c0b.firebaseio.com/
    螢幕快照 2017-08-03 下午8.04.55

    arduino程式碼

    將上一步記錄下來的網址與金鑰分別輸入firebaseURl、authCode,且更改ssid、password,並上傳程式碼即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>

char ssid[] = "your SSID"; //Wifi SSID
char pass[] = "your password"; //Password

#define firebaseURl "firebaseURl" //輸入firebase資料庫的網址記得去掉前面的"http://"與最後面的"/"
#define authCode "authCode"//資料庫金鑰

int led = D5;

void setupFirebase() {
Firebase.begin(firebaseURl, authCode);
}

void setupWifi() {
WiFi.begin(ssid, pass);
Serial.println("Hey i 'm connecting...");
while (WiFi.status() != WL_CONNECTED) {
Serial.println(".");
delay(500);
}
Serial.println();
Serial.println("I 'm connected and my IP address: ");
Serial.println(WiFi.localIP());
}


void setup() {
pinMode(led, OUTPUT);
Serial.begin(115200);
setupWifi();
setupFirebase();
}

void loop() {
String path = "device/led"; //資料的路徑
FirebaseObject object = Firebase.get(path); //將資料抓進去一個firebase物件

bool ledState = object.getBool("state"); //抓取物件裡面"state"欄位的值

Serial.println("ledState:");
Serial.println(ledState);
digitalWrite(led, ledState);
}

##實際測試

  1. 根據arduino的程式碼可以看到,我們要抓取led狀態的路徑是在device/led下的state,所以我們如下圖建立一個這樣的資料結構,記得先把值輸入false,預設是關閉的狀態
    螢幕快照 2017-08-03 下午8.28.54
  2. 建立完畢之後,nodemcu抓到的資料就是false,如果我們把false改成true,led就會即時的被點亮了
    20631572_1631616013517920_215347726_n