Crontab 簡單實現樹莓派語音鬧鐘

樹莓派外接一個音箱就可以 Make 一款科技感和實用性兼備的「AI 鬧鐘」。這裡用到了 Linux 的計劃任務、百度語音 API、天氣 API。

不看天氣的死宅(不愛帶包),出門遇到下雨天就尷尬了,在學校還好可以蹭傘,到外面就不行了。

一開始的解決辦法就是將爬到的天氣信息發到微信上GETWeaInfo

結果有個很大的問題就是,網路要是斷了,或者程序不運行了,就要重新載終端上掃二維碼登錄(太麻煩了)。

於是乎~就有了下面的想法——用樹莓派做個天氣鬧鐘。下面開始了!

播放mp3

前提:樹莓派安裝系統(我裝的是最小化的Raspbian jessie)),ssh連接,wifi連接How to set up WiFi..網上都有…音響(基本都可以,沒有就用耳機先代替),LED。

sudo apt-get updatesudo apt-get install maplayer2#更新源#安裝mplayer(用他來播放MP3)mplayer xxx.mp3#測試一下

配置運行環境

前提:用的python3

安裝python3

sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev libssl-dev openssl libgdbm-dev liblzma-dev libreadline-dev libncursesw5-dev#安裝依賴包wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz#下載源碼包,你也可以換其他的tar zxf Python-3.6.1.tgz#解壓cd Python-3.6.1/./configure --prefix=/usr/loacl/python3makesudo make installecho $?#如果是0就是正確的,非零仔細看報錯信息去百度google(我沒有遇到,不好解答)sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3

安裝virtualenv

sudo pip install virtualenvmkdir naozhongcd naozhongvirtualenv - p /usr/bin/python3 naoz#/usr/bin/python3 是你安裝python3可執行路徑(不知道就運行$ which pytho3),source naoz/bin/activate#前面會出現(dirname)#deactivate (退出)

Python--Virtualenv簡明教程www.jianshu.com

安裝需要用到的庫

pip install requestspip install beautifulsoup4pip install baidu-aip#安裝失敗,因為依賴的庫pillow安裝失敗#那就裝一些pillow的依賴包sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk #我試下來需要一個一個安裝,#能安裝就安裝,不能的就跳過。#再次 pip install pillow&&pip install baidu-aip pip install rpi.gpio#遇到問題error:command arm-linux-gnueabihf-gcc failed with exit status 1sudo apt-get install python3-devsudo apt-get install libevent-dev#再次pip install rpi.gpio

代碼

燈閃亮

vim LEDShining.py

# -*- coding: utf-8 -*-import RPi.GPIO as GPIOimport time #init GPIOGPIO.setmode(GPIO.BOARD)GPIO.setup(11, GPIO.OUT)def LED_shining(): try: GPIO.output(11, 1) time.sleep(0.5) GPIO.output(11, 0) time.sleep(0.5) except: print()def main(): for tmp_a in range(60): LED_shining() GPIO.cleanup()if __name__ == __main__: main()

led正極接在11引腳上,負極我放在GND

獲取天氣並用百度語音轉mp3文件

vim wulala.py

# -*- coding: utf-8 -*-from aip import AipSpeechimport requestsimport refrom bs4 import BeautifulSoupimport time爬取天氣網-無錫http://www.weather.com.cn/weather/101190201.shtmldef getHtmlText(url,code=utf-8): try: r = requests.get(url) r.raise_for_status() r.encoding = code return r.text except: return def makeSoup(html): wstr = if html == : return 哎呀~今天我也不知道無錫天氣了 else: soup = BeautifulSoup(html,html.parser) soup1 = soup.find_all(li,attrs = {class:on})[1] str1 = re.findall(r>(.*)</,str(soup1)) b = try: slist = re.findall(r^(.*)</span>(.*)<i>(.*)$,str1[4]) for x in range(len(slist[0])): b += slist[0][x] except: b = str1[4] if / in b: b = b.replace(/,-) str1[4] = 無錫的溫度是+b #print(str1[4]) str1[6] = 小風風是+str1[6] for i in str1: if i != : wstr = wstr +i if 雨 in wstr: wstr += 今天別忘記帶雨傘哦! #print(wstr) return wstr用百度的AIP把文字變成mp3文件def stringToMp3(strings_txt): strings_txt = 起床呀~懶蟲~起床啊~死肥宅~起床啦~要上班啦!今天是 + strings_txt APPID = 9***3**8 APIKey = QC*****UK*****nP***b SecretKey = e8***6******25*****56 aipSpeech = AipSpeech(APPID,APIKey,SecretKey) result = aipSpeech.synthesis(strings_txt,zh,1, {vol:8, per:4, spd:5}) if not isinstance(result,dict): with open(test_tmp.mp3,wb) as f: f.write(result) 執行的主函數def main(): url = http://www.weather.com.cn/weather/101190201.shtml html=getHtmlText(url) stringToMp3(makeSoup(html)) if __name__ == __main__: main()

去創建新應用,看開發文檔,查看key,複製進去,就可以使用百度語音api了。

百度語音合成-開發文檔

天氣網選擇你的城市,把main函數下的url改了,如果html結構都是一樣的,那就都可以執行,如果不一樣需要更改makeSoup函數了。

最後設置定時運行

首先看時區(中國的是CST)、時間對不對

date

時區不對:

sudo dpkg-reconfigure tzdata#選擇亞洲-上海就可以了

時間不對:

sudo ntpd -s -d

定時

crontab -e

第一次運行需要指定您的編輯器(隨意選)

在最後添加

50,53,55 7 * * * /home/pi/naozhong/naoz/bin/python3 /home/pi/naozhong/LEDShining.py45 7 * * * /home/pi/naozhong/naoz/bin/python3 /home/pi/naozhong/wulala.py > /home/pi/naozhong/wulala.log 2>&150,53,55 7 * * * `mplayer /home/pi/naozhong/tmp.mp3`

前面的python3,就是virtualenv下的python

後面的文件也需要使用絕對路徑

mpalyer命令有』`』這個符合不要忘記加上


推薦閱讀:

ChinaJoy最觸動電競玩家的IP是什麼?
打破存儲壁壘,華棲雲牽手阿里雲獻上NASPlus智能緩存型文件存儲
智能產品AI服務智商的權重研究

TAG:智能硬體 | 智能設備 | 嵌入式開發計算機arm | 樹莓派RaspberryPi |