我也不知道这个计划什么时候能够完成,总之先放在这里吧。

首先要设计获取和保存数据的程序

利用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)

最后修改:2021 年 01 月 30 日 12 : 46 PM