|
自从入坑以来 一直在网上看代码 学习人家的。今天我也发一个出来 我自己的成果 分享给大家 让大家少走弯路 。一起成长。。。
先上代码
//本例用BLINKER库试验 设备开机进行ESP方式配网 然后 连接天气API进行天气查询
#define BLINKER_WIFI
//#define BLINKER_ESP_SMARTCONFIG //ESP模式配网
#define BLINKER_APCONFIG //AP模式配网
#include <Blinker.h>
char auth[] = "你的KEY";
char w_addr[]="beijing-tongzhouqu";//城市关键字,请根据需要修改
//城市关键字,参考 https://diandeng.tech/doc/weather-and-air#%E5%8F%AF%E7%94%A8%E5%9F%8E%E5%B8%82%E5%85%B3%E9%94%AE%E5%AD%97
bool first_label=false; //开机标签,开机第一时间更新天气信息
void weatherData(const String & data){
//更新天气
BLINKER_LOG("weater: ",data);
}
void airData(const String & data){
//更新空气质量
BLINKER_LOG("air:",data);
}
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print("millis", BlinkerTime);
}
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT); // 开机上电
digitalWrite(LED_BUILTIN, LOW); //点亮LED
BLINKER_DEBUG.stream(Serial);
Blinker.begin(auth);
Blinker.attachData(dataRead);
Blinker.attachWeather(weatherData);//天气调用的回调函数
Blinker.attachAir(airData);//空气质量回调函数
Blinker.setTimezone(8.0);//设置时区
}
void loop() {
Blinker.run();
if(Blinker.connected() && first_label==false )
{
//判断是否第一次开机 并且已经连接上网络
first_label=true; //开机标志位 为真
Blinker.weather(w_addr);
Blinker.aqi(w_addr);
}
if(first_label==true) //此处脸上网络 LED就开始闪烁
{
digitalWrite(LED_BUILTIN, HIGH); //点亮LED .
Blinker.delay(500);
digitalWrite(LED_BUILTIN, LOW); //点亮LED
Blinker.delay(500);
}
}
说明:
设备上电 LED常亮 等待联网
设备通过AP或者ESP模式配网成功以后 LED灯会闪烁提示。
然后获取天气信息和空气质量数据 并LOG给串口。
1.
//#define BLINKER_ESP_SMARTCONFIG //ESP模式配网
#define BLINKER_APCONFIG //AP模式配网
这俩宏定义就是配网用的,一个是 ESP配网 一个是AP配网模式
我个人感觉AP模式好用些 ESP感觉不是太灵光。
还有就是 Blinker.begin(auth);这句话里头 只有auth参数 加其他的会报错的。
2.天气这一块我一直鼓捣了大半个月吧。因为官方也没给个详细的天气代码。东找找 西学学总算摸索出来了。
天气没氪金的话 玩玩就算了。一天50次,也够调试用了。。。
一点心得 记录下 。有问题留言我 |
|