esp8266显示农历

参考这个内容 https://www.cnblogs.com/xingqi/p/13269929.html

1.请求网页内容,把这个链接粘贴到地址栏中会有如下信息:
http: //api.xlongwei.com/service/datetime/convert.json

2.请求步骤

在这里插入图片描述
3.把用getString 函数获得的内容进行解析

1.先把网页内容进行复制到https://arduinojson.org/v6/assistant/,生成arduino 代码;

2 .把获得的内容作为参数传入这个函数中
DeserializationError error = deserializeJson(doc,httpClient.getString());

在这里插入图片描述

在这里插入图片描述
1----如果下面的程序报错 可以试着这样
应该是8266自带库版本不一样,此处需要改一下用法:
WiFiClient client; //新添加
HTTPClient httpClient;
httpClient.begin(client,url);

即可。

2—还有我用arduino ide 1编译会一直重启,用arduino IDE 2.0就没问题

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

#define URL "http://api.xlongwei.com/service/datetime/convert.json"
const char* ssid = "FAST_201";   //WiFi密码和账号
const char* password = "rz666888";
 WiFiClient client; //新添加
 
void setup() {
  Serial.begin(9600);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password); //开始连接wifi
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
}
  Serial.println("");
  Serial.print("WiFi Connected!");
  
  httpClientRequest();  

}

void loop() {
  delay(1000);
}


// 发送HTTP请求并且将服务器响应通过串口输出
void httpClientRequest(){
 
  //重点1 创建 HTTPClient 对象
  HTTPClient httpClient;
 
  //重点2 通过begin函数配置请求地址。此处也可以不使用端口号和PATH而单纯的
  httpClient.begin(client,URL); 
  Serial.print("URL: "); Serial.println(URL);
 
  //重点3 通过GET函数启动连接并发送HTTP请求
  int httpCode = httpClient.GET();
  Serial.print("Send GET request to URL: ");
  Serial.println(URL);
  
  //重点4. 如果服务器响应HTTP_CODE_OK(200)则从服务器获取响应体信息并通过串口输出
  //如果服务器不响应HTTP_CODE_OK(200)则将服务器响应状态码通过串口输出
  if (httpCode == HTTP_CODE_OK) {
    // 使用getString函数获取服务器响应体内容
    String responsePayload = httpClient.getString();
    Serial.println("Server Response Payload: ");
    Serial.println(responsePayload);
  } else {
    Serial.println("Server Respose Code:");
    Serial.println(httpCode);
  }

  
//json 解析
 StaticJsonDocument<512> doc;

DeserializationError error = deserializeJson(doc,httpClient.getString());

if (error) {
  Serial.print(F("deserializeJson() failed: "));
  Serial.println(error.f_str());
  return;
}

const char* nongli = doc["nongli"]; // "农历2022年2月15日"
const char* chinese = doc["chinese"]; // "二零二二年二月十五"
const char* ganzhi = doc["ganzhi"]; // "壬寅"
const char* shengxiao = doc["shengxiao"]; // "虎"
int lunarYear = doc["lunarYear"]; // 2022
int lunarMonth = doc["lunarMonth"]; // 2
int lunarDay = doc["lunarDay"]; // 15
bool isLeapMonth = doc["isLeapMonth"]; // false

//串口输出
  Serial.print(F("lunarYear"));
  Serial.print(lunarYear);
  Serial.println(F("  "));   
Serial.print(F("lunarMonth: "));
  Serial.print(lunarMonth);
  Serial.println(F("   "));
  
  Serial.print(F("lunarDay: "));
  Serial.print(lunarDay);
  Serial.println(F("   "));
//重点5. 关闭ESP8266与服务器连接
  httpClient.end();
  
}

}

补充 :
想把输出

 String location_name_String = results_0["location"]["name"].as<String>();
  int now_temperature_int = results_0_now["temperature"].as<int>();

在这里插入图片描述
在这里插入图片描述
太极创客详情

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值