在 Arduino 中获得 API 的时间

Get time with API in Arduino

我正在尝试使用 API 获取当前当地时间。我正在使用 WEMOS D1 Mini 和 get 方法,blynk 从 API 到 return JSON 并存储它。

我用这个代码

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <BlynkSimpleEsp8266.h>

String json;
char auth[] = "";
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";

BLYNK_WRITE(V0) {
  json = param.asStr();
}

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
}

void loop() {
  Blynk.run();
  Blynk.virtualWrite(V0, "https://api.bot-dev.org/time/");
  JsonObject& root = jsonBuffer.parseObject(json);
  long time = root[String("ENtime")];
}

但我无法接收长时间变量中的时间。

你可以用更简单的方法来做到这一点。 您需要将 WebHook 小部件添加到您的应用程序。在 webhoook 小部件中,您需要放置 https://api.bot-dev.org/time/ url。并将此小部件分配给虚拟图钉,比方说 V0。 Webhook 小部件在触发后将 return 响应您的硬件。所以你的代码应该是这样的:

BLYNK_WRITE(V0) {
  //here you'll get response from the webhook
  json = param.asStr();
}

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
}

void loop() {
  Blynk.run();

  //trigger the webhook
  Blynk.virtualWrite(V0, 1); //you can send any value to trigger webhook
}

请记住,您还需要从主循环中移出 Blynk.virtualWrite 以避免 flooding

Here is 有关 webhook 小部件的更多详细信息。