如何使用 Arduino 在 NodeMcu 中从 URL 获取实时数据?
How to fetch Real-Time data from URL in NodeMcu using Arduino?
问题陈述
我希望我的 NodeMCU 每次循环都从 URL 获取最新的更新数据。
目前它不更新获取的内容。
例如,Link: http://abcdxyz.xyz/io.php 只有数字 223838。
一旦 NodeMCU 启动 运行,link 的信息就会更新为 240000,
然而,即使 link 在服务器上更新后,Arduino 串行打印机仍显示 223838。
这是我的代码:
#include "ESP8266WiFi.h"
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
# define LED D4 // Use built-in LED which connected to D4 pin or GPIO 2
String serverName = "http://abcdxyz.xyz/";
unsigned long timerDelay = 5000;
unsigned long lastTime = 0;
// WiFi parameters to be configured
const char* ssid = "XXXXXXXXX";
const char* password = "XXXXXXXXXX";
void setup() {
pinMode(LED, OUTPUT); // Initialize the LED as an output
Serial.begin(9600);
// Connect to WiFi
WiFi.begin(ssid, password);
// while wifi not connected yet, print '.'
// then after it connected, get out of the loop
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
//print a new line, then print WiFi connected and the IP address
Serial.println("");
Serial.println("WiFi connected");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
//Calling An URL FOR DATA
if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status
HTTPClient http;
http.begin("http://abcdxyz.xyz/io.php"); //Specify the URL
int httpCode = http.GET(); //Make the request
if (httpCode > 0) { //Check for the returning code
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
}
else {
Serial.println("Error on HTTP request");
}
http.end(); //Free the resources
}
delay(1000);
//Calling URL ENDS
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
}
想通了。每次 link 必须是新的 link 才能获取最新记录。
请遵循以下代码:
void loop() {
//Calling An URL FOR DATA
if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status
HTTPClient http;
randNumber = random(1, 99999);
String crow = "http://abcdxyz.xyz/io.php?tag=";
crow += randNumber;
Serial.println(crow);
http.begin(crow); //Specify the URL
int httpCode = http.GET(); //Make the request
if (httpCode > 0) { //Check for the returning code
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
}
else {
Serial.println("Error on HTTP request");
}
http.end(); //Free the resources
}
delay(1000);
//Calling URL ENDS
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
}
问题陈述 我希望我的 NodeMCU 每次循环都从 URL 获取最新的更新数据。 目前它不更新获取的内容。
例如,Link: http://abcdxyz.xyz/io.php 只有数字 223838。 一旦 NodeMCU 启动 运行,link 的信息就会更新为 240000, 然而,即使 link 在服务器上更新后,Arduino 串行打印机仍显示 223838。
这是我的代码:
#include "ESP8266WiFi.h"
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
# define LED D4 // Use built-in LED which connected to D4 pin or GPIO 2
String serverName = "http://abcdxyz.xyz/";
unsigned long timerDelay = 5000;
unsigned long lastTime = 0;
// WiFi parameters to be configured
const char* ssid = "XXXXXXXXX";
const char* password = "XXXXXXXXXX";
void setup() {
pinMode(LED, OUTPUT); // Initialize the LED as an output
Serial.begin(9600);
// Connect to WiFi
WiFi.begin(ssid, password);
// while wifi not connected yet, print '.'
// then after it connected, get out of the loop
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
//print a new line, then print WiFi connected and the IP address
Serial.println("");
Serial.println("WiFi connected");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
//Calling An URL FOR DATA
if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status
HTTPClient http;
http.begin("http://abcdxyz.xyz/io.php"); //Specify the URL
int httpCode = http.GET(); //Make the request
if (httpCode > 0) { //Check for the returning code
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
}
else {
Serial.println("Error on HTTP request");
}
http.end(); //Free the resources
}
delay(1000);
//Calling URL ENDS
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
}
想通了。每次 link 必须是新的 link 才能获取最新记录。 请遵循以下代码:
void loop() {
//Calling An URL FOR DATA
if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status
HTTPClient http;
randNumber = random(1, 99999);
String crow = "http://abcdxyz.xyz/io.php?tag=";
crow += randNumber;
Serial.println(crow);
http.begin(crow); //Specify the URL
int httpCode = http.GET(); //Make the request
if (httpCode > 0) { //Check for the returning code
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
}
else {
Serial.println("Error on HTTP request");
}
http.end(); //Free the resources
}
delay(1000);
//Calling URL ENDS
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
}