用Python實時追蹤你家的電量使用情況

peku發表於2012-02-22

現在的電錶(附在你家房子外面的玩意)在每瓦時電量被使用後就會發出一下紅外閃光,穿過電錶頂部的埠。事實證明,你可以很容易地監測這一閃光,把它解碼變成“實時的”電量使用情況,然後做成像這樣酷的圖表:電量使用情況表

Y軸表示實時功率,單位是KW,X軸表示時間。

這閃光燈,好像有很高的瞬間準確度,至少我家的是這樣,這意味著當1瓦時電量被使用時,它會很精確地閃了。這實在太棒了,因為它使得顯示精確、實時的電量使用情況可以實現。比如,當我開啟我家辦公室裡的電燈時,我很快可以看到功率上跳了~65W,然後當我把燈關掉時功率又下降了。

這是一種可以追蹤哪些電器或者瘋狂電腦又或者寄生耗電在大量地吃你家的電的有趣的方式!

這些年我為這個已經做了幾個設計。我上一次的嘗試被摧毀了,因為閃電擊中了我的房子(不過,總是會有一絲光明的!),所以,我決定這次嘗試一些新的東西,且因為新的方法更加簡單以及把脈衝監測轉用Python實現,所以我很哈皮!

我用一個很普通的類比電路來監測紅外脈衝。這個電路由2個串聯起來的100K的電阻和一個與其中一個電阻並聯起來的紅外光電二極體組成。確保把光電二極體的極性搞對,否則它是不會為你工作的!把你的光電二極體裝到你的電錶上去,將它保持跟閃光燈平行使其可以“看到”紅外脈衝。我又在那個電阻上並聯了一個小小(0.01μF)的陶瓷電容,用來抑制瞬時電磁場,不然就用較長的電線吸收到我的電錶去。

終於,我使用這個簡單的USB音訊介面卡將難題轉化為數字領域的難題,把那2個串聯電阻的兩端接到介面卡上的麥插口從而實現模數轉換。這個USB音訊介面卡使用~4.0V偏置電壓驅動麥插口,這很棒因為不然你就需要一個外部電源了。

當沒有脈衝時,光電二極體就像是一個斷開的開關,這意味著在麥插口上接有固定值為200K的阻性負載。當有脈衝產生(我的看起來持續了大約10毫秒),光電二極體就像是一個閉合的開關,突然間把串聯電阻的阻值降到了100K。阻值的下降在麥插口的電壓上引起了一個可以很好地被監測到的脈衝(先為很大的負值然後變為很大的正值)。我覺得有點可疑因為偏置電壓的後面有一個電容(但:我不是類比電路工程師,所以這算是一種猜測!)。

你可以把這個USB音訊介面卡插到任何電腦上去;我使用了一個Sheeva 插頭電腦(討人喜歡的小玩意,非常低耗——我有三個!)。我記錄了數字抽樣值(arecord在2KHz的頻率下工作得很好)然後用Python進行解碼,從而每當值降到-1000以下就監測一個脈衝。你可以很容易地計算基於兩個相鄰脈衝之間的時間的實時功率,把它存進資料庫,然後使用Google的visualization API製成上文那種圖表(我使用dygraphs)。

我上一次的方法沒有很高的瞬時精確度(例如:它隨時間的變化很平滑),這樣就看不到有趣東西了。舉個例子,現在我能夠分辨阻性負載(咖啡機,微波爐,crockpot電鍋)和感性負載(電冰箱的壓縮機,吸塵器)之間的區別了,因為感性負載在開始時會有一個大幅的上升,比如電機,因為為了轉起來電機要消耗大量的電量。

原文:Track your home's live electricity usage with Python

歡迎參加iTran樂譯4期!

相關文章