前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有IT9朋友前陣子用Raspberry pi自製了一台electric mouse trap ,用pi的超聲波雷達放在鞋盒裡,鞋盒裡有一堆食物,底部佈了鐵網,偵測到有老鼠進去以後立即關門通9V電,通個1分鐘再放牠離開,大推我自己也造一台 (Youtube片搜尋一大堆,人類真變態啊,朋友好變態啊)。可是我覺得這樣又好像有點太殘忍,不如先偵測牠們什麼時候來,嚇嚇牠們看看有沒有效果再說吧。 目的: 用Raspberry pi及手上有的感測器弄一隻放陽台用來偵測和嚇嚇老鼠的東西,並把紀錄圖像化到雲端給老爸使用。 邏輯及設計: 當老鼠進入偵測範圍,Motion Sensor偵測到生物活動Raspberry pi 處理來自Motion Sensor的訊號,如果夠強的話開始準備作出回應 Raspberry pi在Angry cats sounds中隨機選出叫聲,再經由Speaker輸出貓叫聲 Raspberry pi指示強光元件發出強光束照射目標 把偵測計數上傳到雲端圖表 材料: Sensor 在網路上看了一些Raspberry pi wild animal camera ,很多也是用Motion Sensor先偵測動物再來,我用的是PIR Motion Sensor被動式紅外線感測器,有低耗電成本便宜的好處。[1],而且可手動調整靈敏度及反應時間。 PIR Motion Sensor就是下面這個 圖片來源: learn.adafruit.com 可手動調整敏感度還有反應時間,這個有點不好調,要試好多遍才找到最佳位置。 可以在Raspbian中輸入pinout查詢GPIO避免插錯 圖片來源: learn.adafruit.com . 一台Raspberry pi 這次使用較舊的Raspberry pi model B+ 萬一老鼠生氣被咬爛錢包也不太痛 . 一張
什麼是ASP.NET Web API [1]
JSON或自定義XML.
- ASP.NET Web API是一個可以簡化建立HTTP服務的框架.
- 前身為WCF WebAPI, 協助WCF服務支援RESTful介面.
- RESTful: 簡單來說就是以 URL 定位資源,根據 HTTP 內容指示操作動作與回應訊息。一個符合上述實作方式的網路服務,就稱之為 RESTful web service 。 [2]
- 支援利用HTTP協定.
- HTTP服務類似Web Service, 可以提供應用程式執行時需要的功能
- 取回XML格式或JSON格式的結果.
- JSON(Javascript Object Notation)是一種輕量級的資料交換語言,以文字為基礎,且易於讓人閱讀。[3]
- 輕巧的資料交換結構, 佔頻寬比較少.
- 許多知名的大網站皆支援Web API Model, 如Facebook, Twitter, LinkedIn, Google, etc.
優點:
- 使同一系統元件能被不同形式的用戶端重覆使用, 如瀏覽器, Windows form, 手機程式/平板(android, IOS, windows phone), 減少重覆開發所浪費的時間.
- 元件在不同系統之間可共同使用(ex:讀取人事資料)
- 利用HTTP協定, 使得簡單靈活且無處不在.
- 基本上現在所有設備已經支援HTTP, 不需要另外安裝套件.
缺點:
- 資料結構較不嚴謹, 不適合用來實作系統與系統之間的資料交換.
名詞解釋:
Model:
- 官方解釋: A model is an object that represents the data in your application. ASP.NET Web API can automatically serialize your model to JSON, XML, or some other format, and then write the serialized data into the body of the HTTP response message. As long as a client can read the serialization format, it can deserialize the object. Most clients can parse either XML or JSON. Moreover, the client can indicate which format it wants by setting the Accept header in the HTTP request message.
- 網路上的解釋: 是在應用程式中使用物件(object)方式來表現資料。ASP.NET Web API 能自己序列化(serialize) 你的 Model 成為 JSON、XML 或其他資料格式,然後寫入這些已序列化資料到 HTTP 回應訊息 (response message) 的主體 (body) 中。只要用戶端 (client) 能讀取序列化格式,它就能反解析序列化成為物件。[5]
Controller:
- 官方解釋: A controller is an object that handles HTTP requestst. The New Project wizard created two controllers for you when it created the project. To see them, expand the Controllers folder in Solution Explorer. [6]
- 網路上的解釋: controller 是在處理從用戶端來的 HTTP 請求的物件。預設 ASP.NET Web API 專案會建置兩個 controller。[5]
- HomeController 是傳統 ASP.NET MVC 的 controller。它與我們 Web API 服務沒有直接關係。
- ValuesController 是一個 Web API controller 範例。本身包含Get, Post, Put, Delete. 其中Get可傳回特定資料或全部資料. 下表定義了每個HTTP方法的含意: [7]
再簡單一點的解釋如下.1 2 3 4
Create -> Post Read -> Get Update -> Put Delete -> Delete
JSON或自定義XML.
下一節會詳細介紹Web API的簡單實作方法.
參考資料:
[1] ASP.NET 4.5 Web API開發實務- YouTube: http://www.youtube.com/watch?v=GfQrAQp5RW8
[2] RESTful 介面實作示範: http://blog.roodo.com/rocksaying/archives/10568163.html
[3] JSON wiki: http://zh.wikipedia.org/wiki/JSON
[4] Introduction to the ASP.NET Web API: http://stephenwalther.com/archive/2012/03/05/introduction-to-the-asp-net-web-api.aspx
[5] ASP.NET WEB API 心得筆記 (1) http://blog.kkbruce.net/2012/03/aspnet-web-api-1.html#.T_EExRf9ONA
[6] http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api
[7]ASP.NET MVC4中調用WEB API的四個方法 http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml
Comments
Post a Comment