天天看點

樹莓派吃灰記——Flask搭建web服務安裝播放器使用Flask架構用戶端接口調用

将樹莓派打造成一個智能終端,就需要能通過手機控制樹莓派。要達到這個目的,最容易的方式就是搭建一個web服務,通過接口完成操作請求。下面,我們用Flask架構搭建一個web服務,并通過iPhone控制樹莓派播放BBC網際網路廣播。

安裝播放器

為了能播放網際網路廣播,我們需要一個播放器。通過ssh登入,調用apt指令安裝mplayer:

apt-get install mplayer
           

完成後我們試驗一下,輸入:

mplayer http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-einws
           

有沒有聽到道地的英國倫敦腔?

使用Flask架構

web架構的選擇有很多,Flask是相對來說非常簡便的。

關于flask教程,可以通過官方文檔檢視。本地建立main.py,最小的flask程式長得是這樣的:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()
           

修飾符route指定了路徑,下面方法是入口方法。通過python指令運作,然後打開浏覽器通路http://127.0.0.1:5000/

如果能看到熟悉的'Hello World!',恭喜你成功了。

下面我們需要定義兩個接口,用于控制播放與停止:

@app.route('/radio/play')
def radio_play():
    //TODO
    return 'play'

@app.route('/radio/stop')
def radio_stop():
    //TODO
    return 'stop'
           

接下來要做的就是通過python調用mplayer完成播放廣播任務,可以封裝一個Radio子產品處理相關任務:

class Radio:
    def play(self):
        self.process = subprocess.Popen(['mplayer','http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-einws'],stdin=subprocess.PIPE)
    def stop(self):
            self.process.communicate(input=b'q')
           

切回main.py,建立一個全局對象myRadio

myRadio = Radio()
           

在//TODO處分别調用myRadio的play,stop方法,就可以通過接口控制播放停止了。

最後,部署到樹莓派上,需要指定host為'0.0.0.0',否則其他機器無法通路:

app.run(host='0.0.0.0',port=80)
           

用戶端接口調用

接口代碼完成後,用戶端展示就可以随意發揮了,隻是需要注意因為沒有部署到外網,請求路徑應該是這種形式,後面的xxx是樹莓派的内網ip位址:

http://192.168.xxx,xxx/radio/play
http://192.168.xxx,xxx/radio/stop
           

工程源碼在

這裡