WeMos D1 Connect to Firebase

ネットで検索すると、大抵はArduinoからFirebaseのAPIを叩くためのFirebaseArduinoというライブラリを利用する例が公開されている。しかしそのライブラリは、もう数年前からメンテナンス停止した。

試しにサンプルなど動かしてみたが、Firebaseに繋がらない。

色々と調べて、MobizTのライブラリを利用することで成功した。

https://github.com/mobizt/Firebase-ESP8266

いきなり参考リンクから本番プログラムを作ると動かないので、サンプルの Beginner_start_here をまずお試し。

https://github.com/mobizt/Firebase-ESP8266/tree/master/examples/Beginner_start_here

(誤り)API KEYを使う

(正しい)スークレドを使う

Firebaseから、LEDの色と明るさの制御はできた。

#include "FirebaseESP8266.h"
#include <ESP8266WiFi.h>
#include <Adafruit_NeoPixel.h>

#define PIN D1
#define NUM_LEDS 8

const char* ssid = "ssid003";
const char* password = "12345";

FirebaseData firebaseData;

Adafruit_NeoPixel leds(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

// Current color values
int redValue = 0;
int greenValue = 0;
int blueValue = 0;

void setup() {
  Serial.begin(115200);
  connectWifi();
  leds.begin();
  
  Firebase.begin("https://test2-xxxxx-default-rtdb.firebaseio.com/", "9jBRxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiCI");
}

void loop() {

  if (Firebase.getInt(firebaseData, "/red")) {
    if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != redValue) {
        redValue = val;
         setLedColor();
      }
    }
  }

  if (Firebase.getInt(firebaseData, "/green")) {
    if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != greenValue) {
        greenValue = val;
        setLedColor();
      }
    }
  }

  if (Firebase.getInt(firebaseData, "/blue")) {
    if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != blueValue) {
        blueValue = val;
        setLedColor();
      }
    }
  }
}

void connectWifi() {
  // Let us connect to WiFi
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println(".......");
  Serial.println("WiFi Connected....IP Address:");
  Serial.println(WiFi.localIP());

}

void setLedColor() {
  Serial.printf("red=%d, green=%d, blue=%d\n", redValue, greenValue, blueValue);

  for (int i=0; i < NUM_LEDS; i++) 
    leds.setPixelColor(i, leds.Color(redValue, greenValue, blueValue));
  leds.show();
}

 

 

 

Ref:

https://www.survivingwithandroid.com/esp8266-firebase-realtime-database-iot-controlled-rgb-leds/