前段时间偶尔发现了新大陆
在论坛上面瞎晃的时候,忽然之间点开一个网页,秒了一眼之后,感觉,哇,瞬间开启新大陆啊!那就是今天的主角---树莓派。看到上面的大佬们,一个个功能的DIY,我瞬间崩塌了,如醍醐灌顶一样。什么
- 定时播放各种声音,音乐,朗诵。
- 搭建个人私有云。
- 通过外网访问家里的电脑啊,这那的。
- 远程控制空调啊,什么的。
- 比较高级的实时监控战车,这个比较牛X了就
尘归尘,土归土
兴奋之余,还是觉得先从一个小功能开始吧,基于一些功能需要拓展硬件的需求,所以现决定先从天气预报开始们,都是软件的东西。主要是怕我自己买了那么多的东西用来吃灰!那就有点浪费了。好了,废话到此,下面开始记录过程
- 选取天气预报接口
- 处理接口数据
- 语音合成MP3文件
- 树莓派安装音频播放器
- 树莓派设置定时任务
1.自己玩,就选了个免费的--和风天气。安装官方给的文档一步步来就好。麻烦的一点是处理返回的json串的时候,不熟练所以用了最笨的方法,代码比较冗长,望各位见谅见谅(喷轻点),后面会做精简和优化的!
String result = "";
BufferedReader in = null;
try
{
String urlNameString = "https://free-api.heweather.com/v5/weather?city=北京&key=4a77eab0ed90418180b33b4cabf74b12";
URL realUrl = new URL(urlNameString);
URLConnection connection = realUrl.openConnection();
// 连接,读取超时时间设置
connection.setConnectTimeout(4000);
connection.setReadTimeout(15000);
connection.connect();
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null)
{
result += line;
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if (in != null)
{
in.close();
}
}
catch (Exception e2)
{
e2.printStackTrace();
}
}
//处理返回数据,由于JSONObject和百度语音合成的JSONObject重复,只能先这样
com.alibaba.fastjson.JSONObject parseObject = JSON.parseObject(result);
Object object = parseObject.get("HeWeather5");
String jsonString = JSON.toJSONString(object);
String substring = jsonString.substring(1, jsonString.length() - 1);
com.alibaba.fastjson.JSONObject api = JSON.parseObject(substring);
Object object2 = api.get("aqi");
String jsonString2 = JSON.toJSONString(object2);
com.alibaba.fastjson.JSONObject parseObject2 = JSON.parseObject(jsonString2);
Object obj3 = parseObject2.get("city");
String jsonString3 = JSON.toJSONString(obj3);
com.alibaba.fastjson.JSONObject parseObject3 = JSON.parseObject(jsonString3);
// PM2.5
Object obj4 = parseObject3.get("pm25");
String PM25 = JSON.toJSONString(obj4).substring(1,
JSON.toJSONString(obj4).length() - 1);
// 空气质量
Object obj5 = parseObject3.get("qlty");
String quailty = JSON.toJSONString(obj5).substring(1,
JSON.toJSONString(obj5).length() - 1);
Object object3 = api.get("basic");
String jsonString4 = JSON.toJSONString(object3);
com.alibaba.fastjson.JSONObject parseObject4 = JSON.parseObject(jsonString4);
// 所在城市
Object obj6 = parseObject4.get("city");
Stri