我也不知道这个计划什么时候能够完成,总之先放在这里吧。
首先要设计获取和保存数据的程序
利用API接口每隔1小时获取一次数据(因为受到API接口上级限制,获取的数据间隔不能超过3600秒)
或者考虑利用webhook获取数据。
将数据按照格式记录入数据库或者文本文件。我估计初学阶段还是放在csv文件吧?每五分钟一个数据,一天288条,一个月8640条,按月份放在一个文件按里面。
原始数据格式大概如下,
{
"total": 1,
-"data": [
-{
-"timestamp": {
"value": 1608249900
},
-"battery": {
"value": 68
},
-"temperature": {
"value": 10.8
},
-"humidity": {
"value": 95.8
},
-"pressure": {
"value": 102.34
}
}
所以要设置的表头包括:
- 数据记录时间戳Times
- 时间戳转换后的数据时间year month day hour minute second
- 温度Tp
- 湿度humidity
- 气压pressure
- 电量battery
- API调用的时间TimeAPI
- 数据的情况(异常与否)STATE(状态)
其次要设计生成所有与输出直接相关的记录文本,文本内容要包含:
- 日平均气温Ta(temperature average)
//在本日数据中寻找最靠近2:00,8:00,14:00,20:00这4个时刻的数据,每个时刻找三组
//对于每个时刻的数据,如果数据递差不大于0.1度,就以最接近标准时刻的数据为基准
//若递差较大,则在2:00时刻的数据取最小值作基准,8:00,20:00的数据取平均值作基准;14:00的数据取最大值做基准。
//计这四个标准时刻基准数据的平均值
Ta = (t1+t2+t3+t4)/4;
- 当天季节日类型ds(day season)
计算方法:
if (Ta < 10) ds= "winter";
else if(Ta < 22) {
if(month <7) ds ="spring";
else ds="fall";
}
else ds ="summer";
- 日最高气温 Tmax
- 高温出现时间点 Tmax_time
//寻找前一日20:01至本日20:00间气温数据的极大值
//多个极大值则取最早的时间点
long long now=timestamp(now_year,now_month,now_day;20,0);
for(int temp;temp>now-3600*24;temp--){
if(Tmax<=temp.Tp){
Tmax = temp.Tp;
Tmax_time = temp;
}
}
- 日最低气温 Tmin
- 低温出现时间点 Tmin_time
//寻找前一日20:01至本日20:00间气温数据的极小值
long long now=timestamp(now_year,now_month,now_day;20,0);
for(int temp;temp>now-3600*24;temp--){
if(Tmin>=temp.Tp){
Tmin = temp.Tp;
Tmin_time = temp;
}
}
- 日温差 deltaT
deltaT = Tmax - Tmin;
- 近五日滑动均温Ta5
Ta5 = (today.ta + (today-1).ta + (today-2).ta + (today-3).ta + (today-4).ta)/4;
- 滑动均温季节日a5ds
a5ds = ds(Ta5);
- 平均湿度
- 最高湿度
- 最高湿度时间点
- 最低湿度
- 最低湿度时间点
- 平均气压
- 高压
- 高压时间点
- 低压
- 低压时间点
- 当前季节now_season
- 上一季节last_season
if(today.a5ds==(today-1).a5ds==(today-2).a5ds==(today-3).a5ds==(today-4).a5ds && today.a5ds!=now_season){
last_season=nows_eason;
now_season=today.a5ds;
}
- 今日天数(一年中的第几天)today
- 今日月日星期农历节气
- 机器电量
找到利用服务器发微博的好方法,生成推送的文本
微博推送的形式:
计划是在每日20:30分左右进行推送(要确保20:00的数据已经上报),推送样例如下
【城南气象】 2020年 12月 18日 星期五
庚子年 冬月初四 大雪 三候 (当前为秋季)
———————————————————
观测信息:
日平均气温:10.85℃(秋日)
日最高气温:11.9℃(12:30)
日最低气温:9.7℃(2:00)
日温差:2.2℃
近五日滑动均温:9.59℃(冬日)
近五组滑动均温季节日:秋秋秋冬秋
日平均湿度:95%RH
日最高湿度:98.4%RH(14:55)
日最低湿度:92.6%RH(03:05)
日平均气压:102.3kPa
日最高气压:102.5kPa(21:00)
日最低气压:102.13kPa(14:15)