问题描述
我正在使用 Arduino 从 Firestore(一个数据库)读取一些数据。我可以使用rest Api从firestore中成功获取数据,并设法获取Payload(),但我正在尝试将其中一些数据存储到布尔值中。
这是我从数据库中收到的:
{
"name": "","fields": {
"nome_botao": {
"stringValue": "botao1"
},"nome": {
"stringValue": "Quarto"
},"icon": {
"stringValue": "LightBulb"
},"value": {
"booleanValue": true
}
},"createTime": "2021-02-01T17:59:56.695439Z","updateTime": "2021-02-01T18:13:49.703817Z"
}
我正在尝试从我的有效负载中存储 booelanValue。
这是我的代码:
#if defined(ESP32)
#include <WiFi.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#endif
#include <Firebase_ESP_Client.h>
/* 1. Define the WiFi credentials */
#define WIFI_SSID "stuuf"
#define WIFI_PASSWORD "stuuf"
/* 2. Define the project ID */
#define FIREBASE_HOST "stuuf-stuuf-stuuf.firebaseio.com"
#define FIREBASE_PROJECT_ID "stuuf-stuuf-stuuf"
#define API_KEY "stuuf"
/* 3. Define the user Email and password that alreadey registerd or added in your project */
#define USER_EMAIL "stuuf"
#define USER_PASSWORD "stuuf"
bool currentState;
//Define Firebase Data object
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long dataMillis = 0;
int count = 0;
void setup()
{
Serial.begin(115200);
WiFi.begin(WIFI_SSID,WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
config.host = FIREBASE_HOST;
config.api_key = API_KEY;
/* Assign the user sign in credentials */
auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;
Firebase.begin(&config,&auth);
Firebase.reconnectWiFi(true);
#if defined(ESP8266)
//Set the size of WiFi rx/tx buffers in the case where we want to work with large data.
fbdo.setBSSLBufferSize(1024,1024);
#endif
String content;
FirebaseJson js;
}
void loop()
{
if (millis() - dataMillis > 60000 || dataMillis == 0)
{
dataMillis = millis();
String documentPath = "mypath";
String mask = "";
Serial.println("------------------------------------");
Serial.println("Get a document...");
if (Firebase.Firestore.getDocument(&fbdo,FIREBASE_PROJECT_ID,"",documentPath.c_str(),mask.c_str()))
{
Serial.println("PASSED");
Serial.println("------------------------------------");
Serial.println(fbdo.payload());
Serial.println("------------------------------------");
Serial.println();
}
else
{
Serial.println("Failed");
Serial.println("REASON: " + fbdo.errorReason());
Serial.println("------------------------------------");
Serial.println();
}
}
}
CurrentState 是 bool 值,它将从有效负载接收“值”。
解决方法
由于您从 Firestore 获得的文档是 JSON,因此您需要一个 JSON 解析器来从中获取数据。例如:ArduinoJson