最近一段时间天气总是多变,经常需要查手机,于是希望树莓派能够实时播报天气,这样可以让家里的老人小孩了解到天气变化。因为原来有弄过一些功能,比如文字转语音、播放语音等,因此过程相对简单,具体如下

步骤一. 获取天气

提供天气预报的API还是挺多的,这里选择和风天气,有免费版,而且文档还比较完善,提供了实时天气、生活指数、未来3天预报等;使用步骤也比较简单,注册、激活、获取key;这里只用到了实时天气及生活指数

# 获取实时天气
whether=`curl -s 'https://free-api.heweather.com/v5/now?city=城市名&key=你的key'|jshon -e HeWeather5 -e 0 -e now`
cond=`echo $whether|jshon -e cond -e text`
# 获取温度
tmp=`echo $whether|jshon -e tmp`
# 获取舒适度指数
comf=`curl -s 'https://free-api.heweather.com/v5/suggestion?city=城市名&key=你的key'|jshon -e HeWeather5 -e 0 -e suggestion -e comf -e txt`

PS:城市名可以中文、拼音,jshon是json解析工具

步骤二. 拼接字符串

为了比较正式,我添加了日期,具体如下

week=`date +星期%w|sed 'y/1234567/一二三四五六天/'`
echo "今天是`date +%Y年%-m月%-d号`$week $cond $tmp摄氏度 $comf"

最终出来的结果是:今天是2017年4月7号星期五 晴 22摄氏度 白天有雨,从而使空气湿度加大,会使人们感觉有点儿闷热,但早晚的天气很凉爽、舒适。

步骤三. 文字转成语音

利用百度语音,将文字转成语音,并利用音频播放软件进行播放

/user/local/bin/pi whether fuzhou|/user/local/bin/pi say

PS: pi say 可以将文字转成语音并播放

步骤四. 定点播报

可以利用cron设定每天7点进行播报

* 7 * * * /user/local/bin/pi whether fuzhou|/user/local/bin/pi say