sadra keshtar
sadra keshtar

Reputation: 33

Get time with API in Arduino

I'm trying to get the current local time with an API. I am using a WEMOS D1 Mini and the get method with blynk to return JSON from the API and store it.

I use this code

#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")];
}

But i cant receive time in long time variable.

Upvotes: 1

Views: 509

Answers (1)

Dmitriy Dumanskiy
Dmitriy Dumanskiy

Reputation: 12777

You can do that in simpler way. You need to add WebHook widget to your app. In the webhoook widget you need to put https://api.bot-dev.org/time/ url. And assign this widget to the virtual pin, let's say V0. Webhook widget will return response to your hardware after it was triggered. So your code should look like that:

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
}

Have in mind that you need also to move out Blynk.virtualWrite from main loop in order to avoid flooding.

Here is more details regarding the webhook widget.

Upvotes: 1

Related Questions