python用电预测_用Python实时追踪你家的电量使用情况

现在的电表(附在你家房子外面的玩意)在每瓦时电量被使用后就会发出一下红外闪光,穿过电表顶部的端口。事实证明,你可以很容易地监测这一闪光,把它解码变成“实时的”电量使用情况,然后做成像这样酷的图表:

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电锅)和感性负载(电冰箱的压缩机,吸尘器)之间的区别了,因为感性负载在开始时会有一个大幅的上升,比如电机,因为为了转起来电机要消耗大量的电量。

欢迎参加iTran乐译4期!

你可能感兴趣的:(python用电预测)