本來是想直接在 Arduino Yun 上安裝dropbox 的API 上傳Webcam 拍到的照片, 可是怎麼安裝就是裝不起來, 所以就用另一個方式:系統架構為
由arduino Yun 接上 PIR 感測器 偵測到物體經過 就用 webcam 拍照 然後由上機介面把存在Yun的SD card的照片抓回本機上傳到 dropbox!!
感謝從網路參考的這篇文章
仙草奶綠的程式筆記本, 了解 Dropbox API 的使用方式
Yun 上的code主要是 PIR的 input pin 偵測事件
判斷有物體後 下拍照指令
p.runShellCommand("fswebcam /mnt/sda1/test.png");
上機介面用 c#所寫用到的dll有
using Renci.SshNet;
using Dropbox.Api;
抓取 Yun SD Card上的圖片
string remoteDirectory = "/mnt/sda1";
using (var sftp = new SftpClient(yun._host, yun._username, yun._password))
{
sftp.Connect();
var files = sftp.ListDirectory(remoteDirectory);
using (Stream fileStream = File.Create(@"D:\temp\test.png"))
{
sftp.DownloadFile("/mnt/sda1/test.png", fileStream);
}
}
上傳到 Dropbox 用到的API 為
var task = Task.Run((Func
)UploadDoc);
task.Wait();
public async Task UploadDoc()
{
string uploadname = "yun.jpg";
using (var dbx = new DropboxClient(this.AccessToken))
{
var full = await dbx.Users.GetCurrentAccountAsync();
await Upload(dbx, "/software", "test1.txt", @"D:\Test\test.txt");
}
}
private async Task Upload(DropboxClient dbx, string folder, string file, string fileToUpload)
{
using (var mem = new MemoryStream(File.ReadAllBytes(fileToUpload)))
{
var updated = await dbx.Files.UploadAsync(
folder + "/" + file,
Dropbox.Api.Files.WriteMode.Overwrite.Instance,
body: mem);
Console.WriteLine("Saved {0}/{1} rev {2}", folder, file, updated.Rev);
}
}
這樣就完成初步的照片上傳了!! 後續可以做一些 IoT 的應用.