256 views
Bytepower Weather === [toc] > P.S. Bytepower Weather 由旧服务ACB toolbox中迁移而来,通过提供位置信息(经纬度)来获取该位置的天气信息。迁移后放置在bytepower station中,由bytepower server转发该服务。 ## weather conditions ### 英文地区(locale = en) 目前使用OpenWeatherMap,天气现象摘自[OpenWeatherMap Doc](https://openweathermap.org/weather-conditions) ### 简体中文地区(locale=zh-Hans) 目前使用心知天气,天气现象摘自[心知文档](https://seniverse.yuque.com/books/share/e52aa43f-8fe9-4ffa-860d-96c0f3cf1c49/yev2c3) | condition | | -------------------- | | 晴(国内城市白天晴) | | 晴(国内城市夜晚晴) | | 晴(国外城市白天晴) | | 晴(国外城市夜晚晴) | | 多云 | | 晴间多云 | | 大部多云 | | 阴 | | 阵雨 | | 雷阵雨 | | 雷阵雨伴有冰雹 | | 小雨 | | 中雨 | | 大雨 | | 暴雨 | | 大暴雨 | | 特大暴雨 | | 冻雨 | | 雨夹雪 | | 阵雪 | | 小雪 | | 中雪 | | 大雪 | | 暴雪 | | 浮尘 | | 扬沙 | | 沙尘暴 | | 强沙尘暴 | | 雾 | | 霾 | | 风 | | 大风 | | 飓风 | | 热带风暴 | | 龙卷风 | | 冷 | | 热 | | 未知 | ## 缓存 关于缓存设计,这里每段缓存数据的索引(key)使用的是[geohash算法](https://en.wikipedia.org/wiki/Geohash),精度选择为5(0~12可供选择),位置偏差在4.89km x 4.89km。 也就是说,每个23.9121km^2^会缓存相同的天气信息,目前设置的缓存过期时间为1hr。 缓存容量占用:以使用owm(open weather map)为前提,每条缓存的内存占用约为6KB,以中国面积来计算,最多可能产生401,344个地区块,最多会占用~2.4GB(在全中国每个地区块在同1hr内都调用了bp的天气服务情况下)。 >接入中国本地化服务后的每地区块缓存大小,与之前计算有差异,因之前未汉化,预估一个地区块缓存为~6kB,现在是~12kB。 ![](https://s3.cn-northwest-1.amazonaws.com.cn/dev-bytepower/uploads/upload_a2f0b67615ca05425a1d4c8a98f78468.png) 优化:使用zlib进行简单的压缩。 ![](https://s3.cn-northwest-1.amazonaws.com.cn/dev-bytepower/uploads/upload_648fa355ccbd22a5fc90da5c717f72d6.png) ## bp天气服务统一输出格式 > 所有字段除非特殊说明,皆为字符串 输出格式: ```jsonc= { "weather":{ "location":{ "country":"", "coordinates":"", "name":"", "detail":"", "tz_long":"" }, "observation":{ "weather":"", "code":"", "temperature_fahrenheit":"", "temperature_celsius":"", "feelslike_fahrenheit":"", "feelslike_celsius":"", "wind_direction":"", "wind_kph":"", "wind_mph":"", "wind_scale":"", "visibility_km":"", "visibility_mi":"", "relative_humidity":"", "local_epoch":"", "observation_epoch":"" }, "sun_phase":{ "sunrise":{ "hour":"", "minute":"" }, "sunset":{ "hour":"", "minute":"" } }, "daily_forecast":[ { "date":{ "day":"", "month":"", "year":"", "weekday":"" }, "high":{ "fahrenheit":"", "celsius":"" }, "low":{ "fahrenheit":"", "celsius":"" }, "pop":"", "rain_fall":"", "day_condition":"", "day_code":"", "night_condition":"", "night_code":"", "wind_kph":"", "wind_mph":"", "wind_direction":"", "wind_scale":"", "relative_humidity":"" },... ], "hourly_forecast":[ { "forecast_time":{ "year":"", "month":"", "day":"", "weekday":"", "hour":"", "minute":"", "second":"" }, "temperature":{ "fahrenheit":"", "celsius":"" }, "pop":"", "weather":"", "code":"", "relative_humidity":"", "wind_kph":"", "wind_mph":"", "wind_direction":"", "wind_scale":"" },... ], "history_24h": [ { "code": "", "feelslike_celsius": { "celsius": "", "fahrenheit": "" }, "pressure": "", "relative_humidity": "", "temperature": { "celsius": "", "fahrenheit": "" }, "timestamp": { "day": "", "hour": "", "month": "", "year": "" }, "weather": "" },... ], "air_quality":{ "quality_summary":"", "air_quality_index":"", "pm2.5":"", "pm10":"", "so2":"", "no2":"", "co":"", "o3":"" }, "life_suggestion":{ "dressing":{ "brief":"", "detail":"" }, "ultra_violet":{ "brief":"", "detail":"" }, "sport":{ "brief":"", "detail":"" }, "air_pollution":{ "brief":"", "detail":"" }, "makeup":{ "brief":"", "detail":"" }, "flu":{ "brief":"", "detail":"" }, "car_washing":{ "brief":"", "detail":"" }, "fishing":{ "brief":"", "detail":"" } }, "service_provider":{ "name":"", "url":"" } } } ``` 具体说明: ***location(地区信息)*** | 字段 | 含义 | 说明 | | ----------- | -------------- | -------------------------------- | | country | 国家名称 | | | coordinates | 坐标(经纬度) | 格式为以空格分隔的经度纬度字符串 | | name | 所在地名字 | | | detail | 详细位置 | locale=en此字段没有值 | | tz_long | 时区 | | ***sun_phase(日相)*** > locale zh-Hans 这段信息不可用 | 字段 | 含义 | 说明 | | ------- | -------- | -------------------------------------- | | sunrise | 日出时间 | 下层有hour(小时),minute(分钟)两个字段 | | sunset | 日落时间 | 下层有hour(小时),minute(分钟)两个字段 | ***observation(当前观测信息)*** | 字段 | 含义 | 说明 | | ---------------------- | ------------------ | -------------------------------------------------- | | weather | 天气情况概述 | | | code | 天气情况代码 | 随service provider的不同而不同,需要接入方自行理解 | | temperature_fahrenheit | 华氏温度 | | | temperature_celsius | 摄氏温度 | | | feelslike_fahrenheit | 体感温度 华氏 | | | feelslike_celsius | 体感温度 摄氏 | | | wind_direction | 风向 | | | wind_kph | 风速(公里每小时) | | | wind_mph | 风速(英里每小时) | | | wind_scale | 风级 | locale en此字段没有值 | | visibility_km | 能见度(公里) | | | visibility_mi | 能见度(英里) | | | relative_humidity | 相对湿度 (0-100) | | | local_epoch | 本地时间 | Unix时间戳 精确度秒级别 | | observation_epoch | 观测时间 | Unix时间戳 精确度秒级别 | ***daily_forecast(逐日预报)*** > locale en与locale zh-Hans均提供10日预报 | 字段 | 含义 | 说明 | | ----------------- | -------------------- | --------------------------------------------------------- | | date | 日期 | 下层有year(年),month(月),day(日),weekday(星期)四个字段 | | high | 最高温度 | 下层有fahrenheit(华氏温度),celsius(摄氏温度)两个字段 | | low | 最低温度 | 下层有fahrenheit(华氏温度),celsius(摄氏温度)两个字段 | | pop | 降雨概率 (0-1的小数) | | | rain_fall | 降雨量 (单位为mm) | locale en此字段没有值 | | day_condition | 日间天气 | | | day_code | 日间天气代码 | 随service provider的不同而不同,需要接入方自行理解 | | night_condition | 夜间天气 | | | night_code | 夜间天气代码 | 随service provider的不同而不同,需要接入方自行理解 | | wind_kph | 风速(公里每小时) | locale en此字段没有值 | | wind_mph | 风速(英里每小时) | locale en此字段没有值 | | wind_direction | 风向 | locale en此字段没有值 | | wind_scale | 风级 | locale en此字段没有值 | | relative_humidity | 相对湿度 (0-100) | locale en此字段没有值 | ***hourly_forecast(逐小时预报)*** > locale en提供36小时预报 > locale zh-Hans提供23小时预报(由于第三方服务问题,该服务提供的24小时播报是从当前小时开始记24小时,而非下一小时开始记24小时,因此目前只能提供23小时预报) | 字段 | 含义 | 说明 | | ----------------- | ------------------ | ----------------------------------------------------------------------------------------- | | forecast_time | 预报时间 | 下层有year(年),month(月),day(日),weekday(星期),hour(小时),minute(分钟),second(秒)七个字段 | | temperature | 温度 | 下层有fahrenheit(华氏温度),celsius(摄氏温度)两个字段 | | pop | 降雨概率 | locale zh-Hans此字段没有值 | | weather | 天气情况概述 | | | code | 天气情况代码 | 随service provider的不同而不同,需要接入方自行理解 | | relative_humidity | 相对湿度(0-100) | | | wind_kph | 风速(公里每小时) | locale en此字段没有值 | | wind_mph | 风速(英里每小时) | locale en此字段没有值 | | wind_direction | 风向 | locale en此字段没有值 | | wind_scale | 风级 | locale en此字段没有值 | ***air_quality*** > locale en 这段信息不可用 | 字段 | 含义 | 说明 | | ----------------- | -------------------------------------------------------- | ----------------------------------------------------- | | quality_summary | 空气质量类别 | 有“优、良、轻度污染、中度污染、重度污染、严重污染”6类 | | air_quality_index | 空气质量指数 | | | pm2.5 | PM2.5颗粒物(粒径小于等于2.5μm)1小时平均值。单位:μg/m³ | | | pm10 | PM10颗粒物(粒径小于等于10μm)1小时平均值。单位:μg/m³ | | | so2 | 二氧化硫1小时平均值。单位:μg/m³ | | | no2 | 二氧化氮1小时平均值。单位:μg/m³ | | | co | 一氧化碳1小时平均值。单位:mg/m³ | | | o3 | 臭氧1小时平均值。单位:μg/m³ | | ***life_suggestion*** > locale en 这段信息不可用 | 字段 | 含义 | 说明 | | ------------- | -------- | ---- | | dressing | 穿衣 | | | ultra_violet | 紫外线 | | | sport | 运动 | | | air_pollution | 空气污染 | | | makeup | 化妆 | | | flu | 感冒 | | | car_washing | 洗车 | | | fishing | 钓鱼 | | ***service_provider*** > 目前在使用的两个provider分别是: > seniverse(心知天气) -- https://www.seniverse.com > open weather map -- https://openweathermap.org/ | 字段 | 含义 | 说明 | | ---- | -------------------- | ---- | | name | 服务提供方的名称 | | | url | 服务提供方的官方网址 | | ## 接口 > weather(天气)服务目前分两个费用档位,一个是standard(标准)档位,一个是economical(经济)档位,两者的主要差别在于缓存时间的长短,缓存时间越短,请求第三方服务的次数就会越多,产生的费用也就越多。 > > 且目前,economical档位仅支持ip的请求方式,standard档位仅支持经纬度的请求方式。 ### standard档位接口前缀: * **client to server** {bp_server}/bp/weather/std * **server to server** {bp_server}/bp/server/user/{user_id}/weather/std ### economical档位接口前缀: * **client to server** {bp_server}/bp/weather/eco * **server to server** {bp_server}/bp/server/user/{user_id}/weather/eco ### 1. (GET) 获取天气信息 **client to server**: {client_to_server前缀}/report | Required Headers | | ------------------------- | | X-BytePower-Sign | | X-BytePower-Session-Token | | economical 档位额外添加的请求头 | 备注 | | ---------------------- | ---- | | X-Forwarded-For | 网络运营商会自动添加,客户端无需单独添加 | **server to server**: {server_to_server前缀}/report | Required Headers | | ---------------------- | | X-BytePower-Auth-Token | | economical 档位额外添加的请求头 | 备注 | | -------------------- | ---------------------------------------- | | X-Forwarded-For | 网络运营商会自动添加,客户端无需单独添加 | **http请求参数** | 参数 | 含义 | 说明 | 示例 | | --------- | -------- | ----------------------------------------------------- | ----------------------------------- | | latitude | 经度 | standard档位必填 | | | longitude | 纬度 | standard档位必填 | | | locale | 语言地区 | 选填,目前支持两种locale:“zh-Hans”简体中文,“en”英文 | 缺省值为"zh-Hans",即默认为中文地区 | #### 示例输入1: 优盛大厦的经纬度:latitude:40.029389, longitude:116.411597, locale:zh-Hans #### 客户端请求: {bp_server}/bp/weather/std/report?latitude=40.029389&longitude=116.411597&locale=zh-Hans #### 服务器请求: {bp_server}/bp/server/user/{user_id}/weather/std/report?latitude=40.029389&longitude=116.411597&locale=zh-Hans #### 示例输入2: 设备当前ip地址:ip:220.181.38.148 #### 客户端请求: {bp_server}/bp/weather/eco/report?locale=zh-Hans #### 服务器请求: {bp_server}/bp/server/user/{user_id}/weather/eco/report?locale=zh-Hans 示例输出: ```json { "weather": { "air_quality": { "air_quality_index": "20", "co": "0.354", "no2": "5", "o3": "61", "pm10": "5", "pm2.5": "3", "quality_summary": "优", "so2": "2" }, "daily_forecast": [ { "date": { "day": "27", "month": "8", "weekday": "5", "year": "2021" }, "day_code": "0", "day_condition": "晴", "high": { "celsius": "29", "fahrenheit": "84" }, "low": { "celsius": "18", "fahrenheit": "64" }, "night_code": "1", "night_condition": "晴", "pop": "0.33", "rain_fall": "1.2", "relative_humidity": "71", "wind_direction": "西南", "wind_kph": "8.4", "wind_mph": "13.4", "wind_scale": "2" }, { "date": { "day": "28", "month": "8", "weekday": "6", "year": "2021" }, "day_code": "0", "day_condition": "晴", "high": { "celsius": "29", "fahrenheit": "84" }, "low": { "celsius": "19", "fahrenheit": "66" }, "night_code": "1", "night_condition": "晴", "pop": "0.35", "rain_fall": "1.2", "relative_humidity": "80", "wind_direction": "北", "wind_kph": "3.0", "wind_mph": "4.8", "wind_scale": "1" }, { "date": { "day": "29", "month": "8", "weekday": "7", "year": "2021" }, "day_code": "4", "day_condition": "多云", "high": { "celsius": "28", "fahrenheit": "82" }, "low": { "celsius": "20", "fahrenheit": "68" }, "night_code": "4", "night_condition": "多云", "pop": "0.65", "rain_fall": "2.76", "relative_humidity": "86", "wind_direction": "南", "wind_kph": "3.0", "wind_mph": "4.8", "wind_scale": "1" }, { "date": { "day": "30", "month": "8", "weekday": "1", "year": "2021" }, "day_code": "4", "day_condition": "多云", "high": { "celsius": "28", "fahrenheit": "82" }, "low": { "celsius": "21", "fahrenheit": "69" }, "night_code": "4", "night_condition": "多云", "pop": "0.36", "rain_fall": "1.2", "relative_humidity": "88", "wind_direction": "南", "wind_kph": "8.4", "wind_mph": "13.4", "wind_scale": "2" }, { "date": { "day": "31", "month": "8", "weekday": "2", "year": "2021" }, "day_code": "9", "day_condition": "阴", "high": { "celsius": "26", "fahrenheit": "78" }, "low": { "celsius": "19", "fahrenheit": "66" }, "night_code": "4", "night_condition": "多云", "pop": "0.72", "rain_fall": "3.03", "relative_humidity": "96", "wind_direction": "东", "wind_kph": "3.0", "wind_mph": "4.8", "wind_scale": "1" }, { "date": { "day": "1", "month": "9", "weekday": "3", "year": "2021" }, "day_code": "0", "day_condition": "晴", "high": { "celsius": "29", "fahrenheit": "84" }, "low": { "celsius": "20", "fahrenheit": "68" }, "night_code": "1", "night_condition": "晴", "pop": "0.35", "rain_fall": "1.2", "relative_humidity": "82", "wind_direction": "西南", "wind_kph": "3.0", "wind_mph": "4.8", "wind_scale": "1" }, { "date": { "day": "2", "month": "9", "weekday": "4", "year": "2021" }, "day_code": "4", "day_condition": "多云", "high": { "celsius": "31", "fahrenheit": "87" }, "low": { "celsius": "19", "fahrenheit": "66" }, "night_code": "1", "night_condition": "晴", "pop": "0.34", "rain_fall": "1.2", "relative_humidity": "76", "wind_direction": "南", "wind_kph": "3.0", "wind_mph": "4.8", "wind_scale": "1" }, { "date": { "day": "3", "month": "9", "weekday": "5", "year": "2021" }, "day_code": "13", "day_condition": "小雨", "high": { "celsius": "31", "fahrenheit": "87" }, "low": { "celsius": "20", "fahrenheit": "68" }, "night_code": "13", "night_condition": "小雨", "pop": "0.35", "rain_fall": "1.2", "relative_humidity": "82", "wind_direction": "东", "wind_kph": "8.4", "wind_mph": "13.4", "wind_scale": "2" }, { "date": { "day": "4", "month": "9", "weekday": "6", "year": "2021" }, "day_code": "13", "day_condition": "小雨", "high": { "celsius": "26", "fahrenheit": "78" }, "low": { "celsius": "19", "fahrenheit": "66" }, "night_code": "13", "night_condition": "小雨", "pop": "0.96", "rain_fall": "5.7", "relative_humidity": "90", "wind_direction": "东南", "wind_kph": "3.0", "wind_mph": "4.8", "wind_scale": "1" }, { "date": { "day": "5", "month": "9", "weekday": "7", "year": "2021" }, "day_code": "9", "day_condition": "阴", "high": { "celsius": "22", "fahrenheit": "71" }, "low": { "celsius": "17", "fahrenheit": "62" }, "night_code": "13", "night_condition": "小雨", "pop": "0.37", "rain_fall": "1.2", "relative_humidity": "95", "wind_direction": "东", "wind_kph": "8.4", "wind_mph": "13.4", "wind_scale": "2" } ], "hourly_forecast": [ { "code": "4", "forecast_time": { "day": "26", "hour": "13", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "42", "temperature": { "celsius": "26", "fahrenheit": "78" }, "weather": "多云", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "4", "forecast_time": { "day": "26", "hour": "14", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "47", "temperature": { "celsius": "26", "fahrenheit": "78" }, "weather": "多云", "wind_direction": "东南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "4", "forecast_time": { "day": "26", "hour": "15", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "50", "temperature": { "celsius": "28", "fahrenheit": "82" }, "weather": "多云", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "4", "forecast_time": { "day": "26", "hour": "16", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "57", "temperature": { "celsius": "28", "fahrenheit": "82" }, "weather": "多云", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "4", "forecast_time": { "day": "26", "hour": "17", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "62", "temperature": { "celsius": "27", "fahrenheit": "80" }, "weather": "多云", "wind_direction": "南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "4", "forecast_time": { "day": "26", "hour": "18", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "67", "temperature": { "celsius": "26", "fahrenheit": "78" }, "weather": "多云", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "26", "hour": "19", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "71", "temperature": { "celsius": "26", "fahrenheit": "78" }, "weather": "晴", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "26", "hour": "20", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "73", "temperature": { "celsius": "25", "fahrenheit": "77" }, "weather": "晴", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "26", "hour": "21", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "76", "temperature": { "celsius": "24", "fahrenheit": "75" }, "weather": "晴", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "26", "hour": "22", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "78", "temperature": { "celsius": "23", "fahrenheit": "73" }, "weather": "晴", "wind_direction": "西", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "26", "hour": "23", "minute": "0", "month": "8", "second": "0", "weekday": "4", "year": "2021" }, "pop": "", "relative_humidity": "82", "temperature": { "celsius": "22", "fahrenheit": "71" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "27", "hour": "0", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "85", "temperature": { "celsius": "21", "fahrenheit": "69" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "27", "hour": "1", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "86", "temperature": { "celsius": "20", "fahrenheit": "68" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "27", "hour": "2", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "86", "temperature": { "celsius": "19", "fahrenheit": "66" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "27", "hour": "3", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "85", "temperature": { "celsius": "19", "fahrenheit": "66" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "27", "hour": "4", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "85", "temperature": { "celsius": "18", "fahrenheit": "64" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "1", "forecast_time": { "day": "27", "hour": "5", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "83", "temperature": { "celsius": "18", "fahrenheit": "64" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "0", "forecast_time": { "day": "27", "hour": "6", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "80", "temperature": { "celsius": "18", "fahrenheit": "64" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "0", "forecast_time": { "day": "27", "hour": "7", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "74", "temperature": { "celsius": "19", "fahrenheit": "66" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "0", "forecast_time": { "day": "27", "hour": "8", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "63", "temperature": { "celsius": "22", "fahrenheit": "71" }, "weather": "晴", "wind_direction": "西北", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "0", "forecast_time": { "day": "27", "hour": "9", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "56", "temperature": { "celsius": "22", "fahrenheit": "71" }, "weather": "晴", "wind_direction": "西", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "0", "forecast_time": { "day": "27", "hour": "10", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "51", "temperature": { "celsius": "23", "fahrenheit": "73" }, "weather": "晴", "wind_direction": "西南", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" }, { "code": "0", "forecast_time": { "day": "27", "hour": "11", "minute": "0", "month": "8", "second": "0", "weekday": "5", "year": "2021" }, "pop": "", "relative_humidity": "47", "temperature": { "celsius": "24", "fahrenheit": "75" }, "weather": "晴", "wind_direction": "东", "wind_kph": "10", "wind_mph": "16.0", "wind_scale": "2" } ], "life_suggestion": { "air_pollution": { "brief": "中", "detail": "气象条件对空气污染物稀释、扩散和清除无明显影响,易感人群应适当减少室外活动时间。" }, "car_washing": { "brief": "较适宜", "detail": "较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。" }, "dressing": { "brief": "热", "detail": "天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。" }, "fishing": { "brief": "适宜", "detail": "白天风和日丽,适宜垂钓,渺渺蓝天,悠悠白云将陪伴你度过愉快的垂钓时光。" }, "flu": { "brief": "少发", "detail": "各项气象条件适宜,无明显降温过程,发生感冒机率较低。" }, "makeup": { "brief": "去油防晒", "detail": "建议用蜜质SPF20面霜打底,水质无油粉底霜。" }, "sport": { "brief": "较适宜", "detail": "天气较好,但考虑气温较低,推荐您进行室内运动,若户外适当增减衣物并注意防晒。" }, "ultra_violet": { "brief": "强", "detail": "紫外线辐射强,建议涂擦SPF20左右、PA++的防晒护肤品。避免在10点至14点暴露于日光下。" } }, "location": { "coordinates": "39.99 116.4", "country": "CN", "detail": "朝阳,北京,中国", "name": "朝阳", "tz_long": "Asia/Shanghai" }, "observation": { "code": "4", "feelslike_celsius": "27", "feelslike_fahrenheit": "80", "local_epoch": "1629951137", "observation_epoch": "1629949163", "relative_humidity": "36", "temperature_celsius": "28", "temperature_fahrenheit": "82", "visibility_km": "14.2", "visibility_mi": "22.7", "weather": "多云", "wind_direction": "西北", "wind_kph": "11.0", "wind_mph": "17.6", "wind_scale": "2" }, "service_provider": { "name": "seniverse", "url": "https://www.seniverse.com/" }, "sun_phase": { "sunrise": { "hour": "", "minute": "" }, "sunset": { "hour": "", "minute": "" } } } } ``` ### 2.(GET) 获取当前天气 **client to server**: {client_to_server前缀}/live | Required Headers | | ------------------------- | | X-BytePower-Sign | | X-BytePower-Session-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **server to server**: {server_to_server前缀}/live | Required Headers | | ---------------------- | | X-BytePower-Auth-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **http请求参数** | 参数 | 含义 | 说明 | 示例 | | --------- | -------- | ----------------------------------------------------- | ----------------------------------- | | latitude | 经度 | standard档位必填 | | | longitude | 纬度 | standard档位必填 | | | locale | 语言地区 | 选填,目前支持两种locale:“zh-Hans”简体中文,“en”英文 | 缺省值为"zh-Hans",即默认为中文地区 | ### 3.(GET) 获取小时天气预报 **client to server**: {client_to_server前缀}/hourly | Required Headers | | ------------------------- | | X-BytePower-Sign | | X-BytePower-Session-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **server to server**: {server_to_server前缀}/hourly | Required Headers | | ---------------------- | | X-BytePower-Auth-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **http请求参数** | 参数 | 含义 | 说明 | 示例 | | --------- | -------- | ----------------------------------------------------- | ----------------------------------- | | latitude | 经度 | standard档位必填 | | | longitude | 纬度 | standard档位必填 | | | locale | 语言地区 | 选填,目前支持两种locale:“zh-Hans”简体中文,“en”英文 | 缺省值为"zh-Hans",即默认为中文地区 | ### 4.(GET) 获取每日天气预报 **client to server**: {client_to_server前缀}/daily | Required Headers | | ------------------------- | | X-BytePower-Sign | | X-BytePower-Session-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **server to server**: {server_to_server前缀}/daily | Required Headers | | ---------------------- | | X-BytePower-Auth-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **http请求参数** | 参数 | 含义 | 说明 | 示例 | | --------- | -------- | ----------------------------------------------------- | ----------------------------------- | | latitude | 经度 | standard档位必填 | | | longitude | 纬度 | standard档位必填 | | | locale | 语言地区 | 选填,目前支持两种locale:“zh-Hans”简体中文,“en”英文 | 缺省值为"zh-Hans",即默认为中文地区 | ### 5.(GET) 获取空气质量指数 (locale=en地区暂不支持) **client to server**: {client_to_server前缀}/air | Required Headers | | ------------------------- | | X-BytePower-Sign | | X-BytePower-Session-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **server to server**: {server_to_server前缀}/air | Required Headers | | ---------------------- | | X-BytePower-Auth-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **http请求参数** | 参数 | 含义 | 说明 | 示例 | | --------- | -------- | ----------------------------------------------------- | ----------------------------------- | | latitude | 经度 | standard档位必填 | | | longitude | 纬度 | standard档位必填 | | | locale | 语言地区 | 选填,目前支持两种locale:“zh-Hans”简体中文,“en”英文 | 缺省值为"zh-Hans",即默认为中文地区 | ### 6.(GET) 获取生活指数 (locale=en地区暂不支持) **client to server**: {client_to_server前缀}/suggestion | Required Headers | | ------------------------- | | X-BytePower-Sign | | X-BytePower-Session-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **server to server**: {server_to_server前缀}/suggestion | Required Headers | | ---------------------- | | X-BytePower-Auth-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **http请求参数** | 参数 | 含义 | 说明 | 示例 | | --------- | -------- | ----------------------------------------------------- | ----------------------------------- | | latitude | 经度 | standard档位必填 | | | longitude | 纬度 | standard档位必填 | | | locale | 语言地区 | 选填,目前支持两种locale:“zh-Hans”简体中文,“en”英文 | 缺省值为"zh-Hans",即默认为中文地区 | ### 7.(GET) 获取过去24小时天气信息 > 特殊说明:因第三方(OpenWeatherMap)数据缺失,locale=en的response中没有地区(location)信息 返回的过去24小时逐小时天气数组由过去第1个小时,过去第2个小时,一直到过去第24个小时顺序排列。 **client to server**: {client_to_server前缀}/history_24h | Required Headers | | ------------------------- | | X-BytePower-Sign | | X-BytePower-Session-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **server to server**: {server_to_server前缀}/history_24h | Required Headers | | ---------------------- | | X-BytePower-Auth-Token | | economical档位必需报头 | | ---------------------- | | X-Forwarded-For | **http请求参数** | 参数 | 含义 | 说明 | 示例 | | --------- | -------- | ----------------------------------------------------- | ----------------------------------- | | latitude | 经度 | standard档位必填 | | | longitude | 纬度 | standard档位必填 | | | locale | 语言地区 | 选填,目前支持两种locale:“zh-Hans”简体中文,“en”英文 | 缺省值为"zh-Hans",即默认为中文地区 | 示例输出: ```jsonc= { "weather": { "history_24h": [ { "code": "10d", "feelslike_celsius": { "celsius": "25", "fahrenheit": "77" }, "pressure": "1007", "relative_humidity": "69", "temperature": { "celsius": "24", "fahrenheit": "76" }, "timestamp": { "day": "9", "hour": "13", "month": "9", "year": "2021" }, "weather": "Rain" }, { "code": "10d", "feelslike_celsius": { "celsius": "25", "fahrenheit": "77" }, "pressure": "1007", "relative_humidity": "69", "temperature": { "celsius": "24", "fahrenheit": "76" }, "timestamp": { "day": "9", "hour": "12", "month": "9", "year": "2021" }, "weather": "Rain" }, { "code": "04d", "feelslike_celsius": { "celsius": "26", "fahrenheit": "79" }, "pressure": "1007", "relative_humidity": "65", "temperature": { "celsius": "25", "fahrenheit": "78" }, "timestamp": { "day": "9", "hour": "11", "month": "9", "year": "2021" }, "weather": "Clouds" }, { "code": "04d", "feelslike_celsius": { "celsius": "24", "fahrenheit": "75" }, "pressure": "1007", "relative_humidity": "73", "temperature": { "celsius": "23", "fahrenheit": "75" }, "timestamp": { "day": "9", "hour": "10", "month": "9", "year": "2021" }, "weather": "Clouds" }, { "code": "50d", "feelslike_celsius": { "celsius": "22", "fahrenheit": "72" }, "pressure": "1006", "relative_humidity": "94", "temperature": { "celsius": "21", "fahrenheit": "71" }, "timestamp": { "day": "9", "hour": "9", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "11d", "feelslike_celsius": { "celsius": "20", "fahrenheit": "68" }, "pressure": "1005", "relative_humidity": "94", "temperature": { "celsius": "19", "fahrenheit": "67" }, "timestamp": { "day": "9", "hour": "8", "month": "9", "year": "2021" }, "weather": "Thunderstorm" }, { "code": "50d", "feelslike_celsius": { "celsius": "20", "fahrenheit": "68" }, "pressure": "1006", "relative_humidity": "94", "temperature": { "celsius": "19", "fahrenheit": "67" }, "timestamp": { "day": "9", "hour": "7", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "11d", "feelslike_celsius": { "celsius": "21", "fahrenheit": "70" }, "pressure": "1008", "relative_humidity": "88", "temperature": { "celsius": "20", "fahrenheit": "69" }, "timestamp": { "day": "9", "hour": "6", "month": "9", "year": "2021" }, "weather": "Thunderstorm" }, { "code": "50n", "feelslike_celsius": { "celsius": "20", "fahrenheit": "69" }, "pressure": "1006", "relative_humidity": "100", "temperature": { "celsius": "19", "fahrenheit": "67" }, "timestamp": { "day": "9", "hour": "5", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "50n", "feelslike_celsius": { "celsius": "19", "fahrenheit": "67" }, "pressure": "1007", "relative_humidity": "100", "temperature": { "celsius": "18", "fahrenheit": "66" }, "timestamp": { "day": "9", "hour": "4", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "50n", "feelslike_celsius": { "celsius": "19", "fahrenheit": "67" }, "pressure": "1008", "relative_humidity": "100", "temperature": { "celsius": "18", "fahrenheit": "66" }, "timestamp": { "day": "9", "hour": "3", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "50n", "feelslike_celsius": { "celsius": "19", "fahrenheit": "67" }, "pressure": "1008", "relative_humidity": "100", "temperature": { "celsius": "18", "fahrenheit": "66" }, "timestamp": { "day": "9", "hour": "2", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "50n", "feelslike_celsius": { "celsius": "20", "fahrenheit": "68" }, "pressure": "1008", "relative_humidity": "94", "temperature": { "celsius": "19", "fahrenheit": "67" }, "timestamp": { "day": "9", "hour": "1", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "50n", "feelslike_celsius": { "celsius": "20", "fahrenheit": "69" }, "pressure": "1008", "relative_humidity": "100", "temperature": { "celsius": "19", "fahrenheit": "67" }, "timestamp": { "day": "9", "hour": "0", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "50n", "feelslike_celsius": { "celsius": "21", "fahrenheit": "70" }, "pressure": "1008", "relative_humidity": "94", "temperature": { "celsius": "20", "fahrenheit": "69" }, "timestamp": { "day": "8", "hour": "23", "month": "9", "year": "2021" }, "weather": "Mist" }, { "code": "02n", "feelslike_celsius": { "celsius": "22", "fahrenheit": "72" }, "pressure": "1009", "relative_humidity": "94", "temperature": { "celsius": "21", "fahrenheit": "71" }, "timestamp": { "day": "8", "hour": "22", "month": "9", "year": "2021" }, "weather": "Clouds" }, { "code": "02n", "feelslike_celsius": { "celsius": "22", "fahrenheit": "72" }, "pressure": "1008", "relative_humidity": "94", "temperature": { "celsius": "21", "fahrenheit": "71" }, "timestamp": { "day": "8", "hour": "21", "month": "9", "year": "2021" }, "weather": "Clouds" }, { "code": "10n", "feelslike_celsius": { "celsius": "23", "fahrenheit": "74" }, "pressure": "1008", "relative_humidity": "88", "temperature": { "celsius": "22", "fahrenheit": "73" }, "timestamp": { "day": "8", "hour": "20", "month": "9", "year": "2021" }, "weather": "Rain" }, { "code": "09n", "feelslike_celsius": { "celsius": "25", "fahrenheit": "77" }, "pressure": "1007", "relative_humidity": "73", "temperature": { "celsius": "24", "fahrenheit": "76" }, "timestamp": { "day": "8", "hour": "19", "month": "9", "year": "2021" }, "weather": "Rain" }, { "code": "10d", "feelslike_celsius": { "celsius": "25", "fahrenheit": "78" }, "pressure": "1007", "relative_humidity": "83", "temperature": { "celsius": "24", "fahrenheit": "76" }, "timestamp": { "day": "8", "hour": "18", "month": "9", "year": "2021" }, "weather": "Rain" }, { "code": "01d", "feelslike_celsius": { "celsius": "28", "fahrenheit": "82" }, "pressure": "1006", "relative_humidity": "65", "temperature": { "celsius": "26", "fahrenheit": "80" }, "timestamp": { "day": "8", "hour": "17", "month": "9", "year": "2021" }, "weather": "Clear" }, { "code": "01d", "feelslike_celsius": { "celsius": "26", "fahrenheit": "79" }, "pressure": "1006", "relative_humidity": "78", "temperature": { "celsius": "25", "fahrenheit": "78" }, "timestamp": { "day": "8", "hour": "16", "month": "9", "year": "2021" }, "weather": "Clear" }, { "code": "01d", "feelslike_celsius": { "celsius": "29", "fahrenheit": "84" }, "pressure": "1006", "relative_humidity": "57", "temperature": { "celsius": "27", "fahrenheit": "82" }, "timestamp": { "day": "8", "hour": "15", "month": "9", "year": "2021" }, "weather": "Clear" }, { "code": "01d", "feelslike_celsius": { "celsius": "30", "fahrenheit": "86" }, "pressure": "1006", "relative_humidity": "54", "temperature": { "celsius": "28", "fahrenheit": "84" }, "timestamp": { "day": "8", "hour": "14", "month": "9", "year": "2021" }, "weather": "Clear" } ], "service_provider": { "name": "open weather map", "url": "https://openweathermap.org" } } } ```