如何解决如何使用Arduino访问从Firestore收到的payload()中的内容
我正在使用 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。