Raspberry pi 定时天气播报

Raspberry pi 定时天气播报

    操作步骤:   

    1. 简单的写了python脚本

    2. 添加定时计划里执行

    3.使用百度的天气接口:http://api.map.baidu.com/telematics/v3/weather?location=city&output=json&ak=api_key

     百度的语音合成接口:http://tsn.baidu.com/text2audio?tex=text&lan=zh&cuid=cuid&ctp=1&tok=token

  python脚本内容

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import os
import urllib.request
import sys
import json

#get token
def get_token():
    api_key="your api key"
    sec_key="your secret key"
    auth_url="https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id="+api_key+"&client_secret="+sec_key

    res = urllib.request.urlopen(auth_url)
    #print(res.read())
    json_data = res.read().decode(‘utf-8‘)
    print(json_data)

    result = json.loads(json_data)[‘access_token‘]
    return result

def get_weather(city):
    api_key="your api key"
    weather_url="http://api.map.baidu.com/telematics/v3/weather?location="+city+"&output=json&ak="+api_key

    res = urllib.request.urlopen(weather_url)
    json_data = res.read().decode(‘utf-8‘)
    #print(json_data)
    json_data = json.loads(json_data)
    #get json data
    #check result status
    status = json_data[‘status‘]
    if status==‘success‘:
        results=json_data[‘results‘][0]
        pm25=results[‘pm25‘]
        weather_data=results[‘weather_data‘]
        date=weather_data[0][‘date‘]
        weather=weather_data[0][‘weather‘]
        wind=weather_data[0][‘wind‘]
        temperature=weather_data[0][‘temperature‘].replace(‘~‘,‘到‘)
        result=‘今天是{} PM2.5是{} 天气{} {} 温度为{}‘.format(date,pm25,weather,wind,temperature)
        return result
    else:
        return ‘‘

token=get_token()
weather=get_weather(‘beijing‘)

if os.path.exists(‘/home/pi/weather/weather.txt‘):
    with open(‘/home/pi/weather/weather.txt‘,‘wt‘) as f:
        f.write(weather)
        f.close()
        print(weather)
else:
    print(‘weather.txt not exists‘)

#tts
url=‘http://tsn.baidu.com/text2audio?tex=‘+weather+‘&lan=zh&cuid=raspberrypi2&ctp=1&tok=‘+token

print(url)
try:
    os.system(‘/usr/bin/mplayer "%s"‘ %(url))
except Exception as e:
    print(‘Exception‘,e)

    添加到crontab 定时计划里,每天早上7:10执行

10 7 * * * /usr/local/bin/python3.5 /home/pi/weather/weather.py

    v附录:百度天气API返回的JSON数据

{
  "error": 0,
  "status": "success",
  "date": "2016-02-25",
  "results": [
    {
      "currentCity": "beijing",
      "pm25": "33",
      "index": [
        {
          "title": "穿衣",
          "zs": "较冷",
          "tipt": "穿衣指数",
          "des": "建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。"
        },
        {
          "title": "洗车",
          "zs": "较适宜",
          "tipt": "洗车指数",
          "des": "较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"
        },
        {
          "title": "旅游",
          "zs": "适宜",
          "tipt": "旅游指数",
          "des": "天气较好,同时又有微风伴您一路同行。虽会让人感觉有点凉,但仍适宜旅游,可不要错过机会呦!"
        },
        {
          "title": "感冒",
          "zs": "易发",
          "tipt": "感冒指数",
          "des": "昼夜温差大,且空气湿度较大,易发生感冒,请注意适当增减衣服,加强自我防护避免感冒。"
        },
        {
          "title": "运动",
          "zs": "较适宜",
          "tipt": "运动指数",
          "des": "天气较好,无雨水困扰,较适宜进行各种运动,但因天气凉,在户外运动请注意增减衣物。"
        },
        {
          "title": "紫外线强度",
          "zs": "最弱",
          "tipt": "紫外线强度指数",
          "des": "属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"
        }
      ],
      "weather_data": [
        {
          "date": "周四 02月25日 (实时:4℃)",
          "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/qing.png",
          "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
          "weather": "晴",
          "wind": "微风",
          "temperature": "7 ~ -5℃"
        },
        {
          "date": "周五",
          "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
          "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
          "weather": "多云转晴",
          "wind": "微风",
          "temperature": "8 ~ -3℃"
        },
        {
          "date": "周六",
          "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
          "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/yin.png",
          "weather": "多云转阴",
          "wind": "微风",
          "temperature": "6 ~ -3℃"
        },
        {
          "date": "周日",
          "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
          "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
          "weather": "多云转晴",
          "wind": "北风3-4级",
          "temperature": "6 ~ -4℃"
        }
      ]
    }
  ]
}
时间: 2024-10-12 20:57:00

Raspberry pi 定时天气播报的相关文章

raspberry pi 自动发布天气信息到QQ空间/微博

raspberry pi 自动发布天气信息到QQ空间/微博 参考链接: https://aoaoao.me/951.html/comment-page-1 http://www.ipip5.com/today/api.php?type=json 说明: 天气信息来自于百度地图API,历史上的今天来自于网络API(见上). 准备工作: 安装python(没有的,自行下载安装) 安装requests: git clone git://github.com/kennethreitz/requests.

Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度

 Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度 硬件平台: Raspberry Pi B+ 软件平台: 1  安装 requests 库 首先我们要先解决requests库,当我们向YEELINK POST 消息的时候会用到  : r = requests.post(apiurl, headers=apiheaders, data=json.dumps(payload)) 安装easy_install: <span style="line-heigh

Raspberry Pi 摄像头模块应用程序文档翻译

http://dreamcolor.net/archives/raspicam-documentation.html —————————————————————————————————————————————————————————————————————— Raspberry Pi 摄像头模块应用程序文档翻译 更新日志: 2014 年 3 月 24 日更新:根据 2013 年 12 月更新的文档,对原译文进行扩展翻译.翻译完毕. 2014 年 3 月 4 日更新:根据 2013 年 12 月更

Raspberry Pi 整点报时

Raspberry Pi 整点报时 参考链接: http://blog.sina.com.cn/s/blog_6d1aef300100qta0.html http://linuxtools-rst.readthedocs.org/zh_CN/latest/tool/crontab.html 1.安装Mplayer 2.下载语音文件(解压到/{home}) 3.创建脚本文件TimeAudio.sh(/usr/local/bin) #!/bin/bash filePath=/{home}/TimeA

VNC connect to raspberry pi under ubuntu desktop environment

1 使用Remmina Remote Desktop ubuntu 14.04自带一款远程桌面叫作 Remmina Remote Desktop 利用它即可方便打开已经开启VNC server的raspberry pi 如图,已经新建好了一个raspberry的链接. 新建服务链接 填写链接name 选择链接所使用protocol,注意要选VNC 填写server的地址 填写登录user name以及password 如图: 2 使用SSL/SSH VNC Viewer 下载vnc viewer

Adding an On/Off switch to your Raspberry Pi

http://www.raspberry-pi-geek.com/Archive/2013/01/Adding-an-On-Off-switch-to-your-Raspberry-Pi#article_f5 Which Switch? Aaron Shaw Pulling the plug on your Pi without an orderly shutdown can corrupt the SD card. Also, many users prefer a convenient sw

Raspberry pi,一个好玩的派:第五季 无线网卡

Raspberry pi的板子由于成本原因是没有加无线模块的,不想被网线束缚的我们,需要自备USB无线模块.在购买板子时,看见官方推荐EDUP无线网卡,价格还算合适,就直接入手了. 采用REALTEK8188芯片,802.11n,传输速度150Mbps,适用范围130平方米. 将其插到任一U口即可,如下图: 由于外壳阻碍了电源插孔,所以只好先裸着了,图中已经加电,HDMI的另一头是电视机. 接下来的任务就是如何让这个无线网卡工作,连接到我已经开启的无线路由器. 一.wpa_gui 在进入Rasp

Raspberry pi,一个好玩的派:第一季 开源硬件

开源之风从软件吹到了硬件,三个比较有代表性的是Raspberry Pi(树梅派).Arduino(阿尔杜伊诺,好吧,原谅我的发音)和BeagleBone Black.所谓的开源精神,有人总结为四种维度: 第一,人人可用:第二,人人可探:第三,人人可改:第四,人人可再发布. 说白了,就是我们可以窥探这些硬件是设计的细节,比如如何走线.排板啦,或更厉害的,使用芯片的技术细节我们也可以知道.这增加了我们再次开放的可能性,使可玩性更高.喜欢折腾的硬件黑客\GEEK把这些板子变成最好玩的玩具,在折腾的过程

Raspberry Pi 3 with Openwrt

https://wiki.openwrt.org/toh/raspberry_pi_foundation/raspberry_pi#boot_log_raspberry_pi_3 Table of Contents Supported Versions Hardware Specifications Raspberry Pi SoCs Raspberry Pi Models Using I2C and SPI Power Notes Serial Boot Logs Boot Log (Rasp