ESP8266-NodeMCU——从苏宁API获取实时天气

2023-10-27

前言

        本篇介绍如何使用ESP8266-NodeMCU从苏宁API获取实时天气,苏宁API:点击跳转

        其显示如下:     

         其中我们要抓取的是红线部分的内容,并通过串口打印。当然,这部分也可以用来显示在OLED上,我之前就是这么玩。

        在正式开始前,需要了解使用WiFiManager库连接wifi的过程,下文代码中的wifi连接用了WiFiManager库,没有将要连接的wifi名称和密码直接写入代码,具体操作可以跳转参考: ESP8266-NodeMCU——使用WiFiManager库连接wifi

一、软件准备

(1)Arduino IDE

二、硬件准备

(1)ESP8266-NodeMCU

        

(2)一根可以传输数据的micro USB线

 三、实现代码

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

  char Json_Time[36];   //从苏宁API获取的Json数据(已解析后)的数组
  const String timeUrl = "http://quan.suning.com/getSysTime.do";  //苏宁API地址
  String timeMsg="";          //抓取时间部分
  String timeAfterParse=" ";  //Json解析后的有效数据缓存字符串
  char flag;
  
String callHttp(String httpUrl);    //抓取时间网站的Json数据
String parseJsonTime(String tjson); //解析Json数据


void setup() 
{ 
  Serial.begin(115200);     //串口波特率设置为115200
  connectWifi();            //连接WiFi,连接后才会继续往下运行 

}

void loop() 
{   
      timeMsg = callHttp(timeUrl);   //获取JSon数据
      if(timeMsg!="" )             //如果成功获取数据
     { 
      timeAfterParse = parseJsonTime(timeMsg); //解析Json数据
      timeAfterParse.toCharArray(Json_Time,timeAfterParse.length() + 1);  //Json_Time会变成字符串数组,内容和timeAfterParse一样    
      Serial.println(Json_Time);
     }  
    delay(900);
}

//================================================连接WiFi==================================================================
void connectWifi(){
  
WiFiManager wifiManager;
wifiManager.autoConnect("ESP8266-NodeMCU");   

}

//=================================================解析Json数据为字符串=====================================================
String parseJsonTime(String tjson){

  const size_t capacity =96;
  DynamicJsonDocument tdoc(capacity);   
  
  deserializeJson(tdoc, tjson); // 反序列化数据
  String datetime = tdoc["sysTime2"].as<String>();  // 获取解析后的数据信息
  return datetime;
}

//=================================================抓取时间网站的Json数据=====================================================
String callHttp(String httpUrl) { 
  HTTPClient hClient;   
  String message;
  hClient.begin(httpUrl);      //连接API地址 
  
  int httpCode = hClient.GET();   //请求获取Json数据
  if (httpCode > 0) {
    if (httpCode == HTTP_CODE_OK) {
      String payload = hClient.getString();   //数据转移
      message = payload;
    }
  } else {
    message = "[1-HTTP]failed, error:" + String(hClient.errorToString(httpCode).c_str());  //获取失败就报错
  }
  hClient.end();   //关闭API
  return message;  //返回信息
}

四、实现效果

         网络不好可能效果没有那么理想,可能不能每秒都抓取到,不过我在测试的时候,好像是API接口本身就卡,用电脑打开有时候也显示超时,之前玩的时候还是挺流畅的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP8266-NodeMCU——从苏宁API获取实时天气 的相关文章

随机推荐

  • JUC(java中的多线程)

    JUC 介绍 JUC是jdk中java util concurrent包的简称 该包提供了并发编程中常用的工具类 概括地说 JUC的就 是java并发编程工具包 目前juc泛指Java多线程开发技术 线程和进程 进程 运行中的程序 一个进程
  • 计算机把C盘无法扩展,c盘不能扩展卷【解决教程】

    喜欢使用电脑的小伙伴们一般都会遇到win7系统c盘不能扩展卷的问题 突然遇到win7系统c盘不能扩展卷的问题就不知道该怎么办了 其实win7系统c盘不能扩展卷的解决方法非常简单 按照 1 打开计算机页面选择计算机使用鼠标右键单击弹出下拉菜单
  • 目前身体现状

    突出特点 易疲劳 走路易累 高度怕冷 畏寒 易头昏 睡觉后无精神感 久睡有濒死感 记忆力有减退现象 只是感觉 久坐腰背痛 尤其坐长途车 年轻时不会
  • 手把手带你修复老照片

    你家里是否有很多带着故事的老照片呢 随着时间的流逝 这些照片难免会变模糊 或者有了划痕 今天给大家介绍一种使用程序修复老照片的方法 教程面向小白 对于有基础的人过程可能略显繁琐 修复效果如下图所示 我们需要在电脑中下载安装程序运行环境 修复
  • 【学习笔记】电机学

    电枢的感生电动势 E a C e n
  • C++Primer(第五版 )第十一章 关联容器 章节编程练习答案

    11 1 描述map和vector的不同 答 map 是关联容器 vector 是顺序容器 11 2 分别给出最适合使用list vector deque map以及set的例子 答 list 双向链表 适合频繁插入删除元素的场景 vect
  • 关于 0.1+0.2 == 0.3 不成立的一些细节

    很早之前看到一关于js的问题 如下 实际上 0 1 0 2 0 3 这个问题不是js特有 来看一段java代码 Test public strictfp void test System out println 0 1f 0 2f 0 3f
  • 记random的几个函数用法及区别:random(),randint(),randrange(),uniform()

    1 random random 作用 生成 0 0 1 0 之间的随机小数 注意 不包含1 0 参数 无 gt gt gt from random import gt gt gt seed 10 gt gt gt random 0 5714
  • 三款好用的软件代码检测工具

    Fortify 是一款由 Hewlett Packard Enterprise HPE 公司开发的源代码检测工具 Fortify可以检测代码中的安全漏洞和缺陷共900多种 它通过对应用程序的源代码进行静态分析 自动检测安全性漏洞及缺陷 Fo
  • 使用ionic中ion-slide-box实现移动app轮播特效

    H5混合式移动开发框架ionic 是使用angularJS的语法 加上大名鼎鼎的移动应用开发框架cordova的核心 它的特点是跨平台 入门简单 可以减少开发周期 实质上 ionic就是用制作网页的技术来开发移动app 下面使用ionic中
  • c语言三角函数计算

    头文件 math h 计算 sin32 sin x 180 Pi 其他类似 因为要输入弧度才可以计算 直接sin 30 是不行的 sin x cos x tan x arcsin x arccos x arctan x arccot x 以
  • 基于Python的Anaconda3,导包报错 cannot import name 'Timestamp'

    问题 已经在cmd下使用 pip install ggplot 成功安装了ggplot包 在IDLE以及Jupyter Notebook下使用 from ggplot import 语句导入ggplot包时报错 ImportError ca
  • 外网不能访问postgresql解决办法

    安装PostgreSQL数据库之后 默认只能本地访问连接 如果想在其他主机上访问PostgreSQL数据库服务器 就需要进行相应的配置 1 修改postgresql conf文件 在安装目录下data postgresql confi文件中
  • C语言丨求两个正整数的最大公约数

    两个正整数的最大公约数 Greatest Common Divisor GCD 是能够整除这两个整数的最大整数 两个正整数的最大公约数的求法有多种解答 本文就三种方法做详细介绍 穷举法 欧几里得算法 辗转相除法 递归方法 我们从一道问题来引
  • Java配置Path环境变量

    安装JDK 首先下载JDK 下载后安装到指定目录 一般安装到 D 盘下 安装目录中不要出现 中文 字符和 空格 双击 JDK exe 安装JDK 双击后直接 下一步 更改安装目录 一般安装到 D 盘下 安装目录中不要出现 中文 字符和 空格
  • 安装MetaMask的谷歌浏览器扩展

    废话不多说直接上下载地址 因为各种下载不到 最后在github上找到了 完美 下载地址 下载完成之后进行解压 打开浏览器地址栏输入 chrome extensions 然后选择以下选项 选择到刚才解压后的目录 即完成安装
  • 计算机视觉基础6-目标检测

    目标检测 区域卷积神经网络R CNN 目标检测 检测图片中所有物体的类别标签 位置 最小外接矩形 bounding box 模块1 提取物体区域Region proposal 模块2 对区域分类识别 RCNN selective searc
  • String,StringBuilder和StringBuffer区别及使用场景

    面试中常常会遇到这样的问题 1 你了解String类吗 2 String StringBuilder和StringBuffer适合在什么样的场景下使用 1 String类 首先看一下String的源码 1 2 3 4 5 6 7 8 9 1
  • 刷题之移动零

    给定一个数组 nums 编写一个函数将所有 0 移动到数组的末尾 同时保持非零元素的相对顺序 示例 输入 0 1 0 3 12 输出 1 3 12 0 0 说明 必须在原数组上操作 不能拷贝额外的数组 尽量减少操作次数 来源 力扣 Leet
  • ESP8266-NodeMCU——从苏宁API获取实时天气

    前言 本篇介绍如何使用ESP8266 NodeMCU从苏宁API获取实时天气 苏宁API 点击跳转 其显示如下 其中我们要抓取的是红线部分的内容 并通过串口打印 当然 这部分也可以用来显示在OLED上 我之前就是这么玩 在正式开始前 需要了