ネットで検索すると、大抵は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/