製作raspberry pi上傳自動分享與備份
TRANSCRIPT
製作 RaspberryPi上傳自動分享與備份
首先我們去了解了我們的服務需要使用到的平台與網站,最後我們決定是使用 imgur 與 Dropbox 還有 Facebook 來做服務的串流。
一開始我們先做的事情就是去申辦帳號,我們先申請了一個 Dropbox 用的帳號,至於 Imgur 是可以直接上傳不用註冊的,Facebook 的帳號則是使用我們自己的。
實作所需材料
RaspberryPi、Webcam。
教學文件
一開始先去查閱相關的軟體是否有提供套件,我們就查詢到了有 Dropbox-
Uploader 的套件。下載套件:
git clone https://github.com/andreafabrizi/Dropbox-Uploader/
之後必須將下載下來的檔案,給予執行權限,不然無法執行:
$chmod +x dropbox_uploader.sh
給予權限後執行.sh
$./dropbox_uploader.sh
執行格式./dropbox_uploader.sh COMMAND [PARAMETERS]
DROPBOX-UPLOADER COMMAND
upload [LOCAL_FILE/DIR] <REMOTE_FILE/DIR>
上傳本地檔案到 Dropbox 中的資料夾目錄 download [REMOTE_FILE/DIR] <LOCAL_FILE/DIR>
下載檔案從 Dropbox 的資料夾/目錄到本地端的資料夾/目錄 delete [REMOTE_FILE/DIR]
刪除 Dropbox 中的資料夾或是目錄 move [REMOTE_FILE/DIR] [REMOTE_FILE/DIR]
對資料夾/目錄做移動或是改名 copy [REMOTE_FILE/DIR] [REMOTE_FILE/DIR]
複製遠端資料夾或是目錄
mkdir [REMOTE_DIR]
在 Dropbox 中製作目錄 list <REMOTE_DIR>
將 Dropbox 文件夾的內容列出來 share [REMOTE_FILE]
拿到要分享的檔案與資料夾的連結(LINK)。 info
把你帳號下的資訊列印出來 unlink
斷開帳號與 Dropbox 的連結
Optional parameters:
-f [FILENAME]
Load the configuration file from a specific file
-s
在上傳與下載時,自動跳開已經存在的檔案 Default: Overwrite
-d
Enable DEBUG mode
-q
Quiet mode. Don't show progress meter or messages
-p
Show cURL progress meter
-k
Doesn't check for SSL certificates (insecure)
然後我們想去看看 imgur 的運作機制,於是我們去找了相關的文件來觀看,發現 imgur 做上傳後,會自動丟回網址到畫面中。那麼這邊要分兩個部分來說,第一個部分為如何使用指令,另一個部分為如何抓取網址。
Imgur Bash Script 語法
Imgurbash.sh <filename>
之後我們第一次想要嘗試利用 E-mail 的方式,將訊息藉由 Facebook 臉書專用的發訊息電子郵件,所以我們要做的事情有兩個,一個是找出發訊息用的郵件,另一個是開通 RaspberryPi 的 postfix。所以一開始我們需要安裝幫房轉發以及寄送郵件的 Postfix
sudo apt-get install postfix
之後選擇第二項的 Internet,然後輸入自己的 DomainName,如果沒有的話,BlueT 有提供他自己的 hostName.domainName(ex:如果是爽名@BlueT.org 就寫 爽名.BlueT.org )(沒有自己的 domain name 就用這個)
當然也可以自己去申辦一個。然後是發信件的格式vim 任意名稱.mail //新增郵件(郵件內容如下)
Subject:
From:<e-mail>
To:<e-mail> (自己的 E-mail)
內文
這個格式,不過使用這個格式會遇到的問題就是,你還沒有你的 Facebook 的專屬發文信箱,以及你根本不知道格式是怎麼寫。所以下面是來教學有關於 FB
的 EMAIL 申請以及發文格式。
首先登入 Facebook 點選帳號設定,或是進入 http://facebook.com/mobile 這個網址來開通。
之後點進手機板綁定手機
他會透過手機的簡訊來認證你的認證碼,輸入認證碼後就可以得到你專屬的發布貼文用的電子郵件(以下簡稱 mFacebook)
之後就可以開始寫電子郵件實際測試目的:就是要從電子郵件送到 Facebook 塗鴉牆Subject:要傳上去的內容(測試後,這就是顯示在 Facebook 塗鴉牆的內容了)
From: <自己的 e-mail>To: mFacebook
內容:任意(可以不打,測試後,發現不顯示)
但是如果將圖片的網址貼在 Subject 的話,縮圖並不會被顯示。所以我們尋求更好的解法。聽聞有 FB CommandLine 之後,我們又朝向這個目標前進。這時候我們要先解決用 Webcam拍照的問題,因為這畢竟是我們一開始的出發點,於是我們研究了 fswebcam。首先要確認 webcam 是否有安裝上,我們可以用下列指令來搜尋Lsusb,他就會有類似下面的畫面pi@raspberrypi ~ $ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0ac8:332d Z-Star Microelectronics Corp. Vega USB
2.0 Camer
找到自己的 webcam 後就可以開始了。首先安裝 fsewbcam
sudo apt-get install fswebcam
最後指令只需要 Key
sudo fswebcam -r 960x720 -d /dev/video0 -p YUYV -s save
/home/pi/upload_pic/檔名他就會自動切成我們要的大小,如果超過格式,他就會以他能做到的最大輸出來拍攝。那麼相關的指令解釋如下-r 000X000:解析度,如果超過 webcam 的預設值會自動調整-d /dev/video:選擇 device,選擇你要使用的 webcam,預設為/dev/video0
-p colour formats:選擇顏色格式-s save 路徑: 設定截圖完的檔案儲存路徑當這些指令都確認過後,接下來就是寫入自動腳本,讓這些服務流可以自動串接起來,我們在這邊遭遇到了一些困難,因為我們不知道如何將 imgur 的網址抓取出來建立檔案以供讀取,所以我們一開始想更改 imgur 提供的 bash 檔案內的程式碼,可是在他的程式還沒有跑完之前他的 URL 並不會被生成,於是我們利用他會吐出資料的方法抓取值,指令如下
~/shell/upload.sh |grep ‘http’ >> out.txt
之後我們可以抓取值之後就是寫個腳本讓他可以自動執行。
execute.sh
之後我們使用另一個 Script 來呼叫之前的 Script。
upload.sh
再來是 Facebook 的 commandline
https://apps.facebook.com/cmdline/
請照他的指示去做
Step 0: install fbcmd
Step 1: grant basic access:
[fbcmd go access]
Step 2: generate AUTH code:
[fbcmd go auth]
Step 3: enter auth code:
[fbcmd auth XXXXX]
Step 4: grant extended permissions:
[fbcmd addperm]
Step 5: test your installation:
[fbcmd test]
Step 6: have fun
安裝後記得回你的 facebook 點確認這個程式對你的個人資料做存取。接下來他上面有 wiki裡面有更詳盡的解釋,我只取我們有用到的部分。POST
描述:
分享 故事,圖片,MP3 或是 Flash 動畫到你的塗鴉牆Parameters
POST
1 (必填) Text Post Message. 輸入像是狀態更新的文字。所以可以撐家動態文字 For example "is loving this POST command". (see below)
2 (選擇性填空)
Text Post Name.如果是填入 URL 的話,那麼他就會變成一個連結 (see below)
3 (選擇性填空)
URL Post Link. 放置URL 的連結 (see below)
4 (選擇性填空)
Text Post Caption. The Caption appears below the Name. (see below)
5 (選擇性填空)
Text Post Description. The Description appears below the Caption. (see
below)
POST
POST IMG
1 (必填)
Text Post Message.
2 (必填)
Image
URL Image Source. 你想分享的圖片的 URL。
3 (必填)
URL Image Link. 讓你可以造訪圖片的來源網址。
4..7 Post Name, Link, Caption, Description (see 2..5 above)
POST IMG
POST MP3
1 (必填) Text Post Message.
2 (必填) MP3
URL
Song Source. This is a URL that points to the mp3 you want
to share.
3 (選擇性填空)
Text Song Title.
4 (選擇性填空)
Text Song Artist.
5 (選擇性填空)
Text Song Album.
6..9 Post Name, Link, Caption, Description (see 2..5 above)
我們使用了第一個 POST 指令,但是也是不會出現縮圖。但是我們發現下面有一個 POST IMG 的指令,使用後就可以 POST 出縮圖了。
指令為
fbcmd POST IMG "check out this photo!"
"http://example.com/image.jpg" "http://example.com/link.html"
也可以寫成:fbcmd POST IMG 0 "http://example.com/image.jpg" 0
省下一堆廢話的空間。
最後就是執行我們的指令碼
~/shell/execute.sh
遇到困難fswebcam:截圖出來是一片黑,經過詢問 陳尚瑋學長 後發現,是 Logitech
C170 的問題,需要鍵入 –p YUYV ,設定他的 color format ,如此便能正常產出圖像