
使用 Raspberry Pi 测量我们的用电量
继续文档,介绍我们可以用 Raspberry Pi 做的好奇事情, 例如,测量我们想要的任何东西的电力消耗量是非常简单的, 在本文档中,我们将了解如何将非侵入式电流传感器连接到 Raspberry Pi 并测量我们家的成本, 因为我们要把它连接到我们家的电气面板! 我们会将指标导出到 MySQL 数据库,然后使用 Grafana 创建一个仪表板,我们可以在其中以非常直观的方式查看我们的支出和金额!
不错, 我们需要什么来继续监控或为我们的家庭提供一点家庭自动化? 就个人而言,我找到的最便宜的东西很有趣, 就是给 Raspberry 上加点 HAT, 我从制造商推荐你 豺 因为它有不同的 HAT,可以满足我们的任何需求, 因为我们可以从 1 非侵入式传感器,最高可达 8, 这取决于我们想要的 HAT, 当然,您接受的传感器越多,价格就越贵, 但我认为价格是可以承受的, 去… 如果我们想放置更多的非侵入式传感器,那么我们根据需要安装任意数量的 HAT,一个接一个! 所以:
我建议您查看此传感器列表,以便每个传感器都可以选择他们最感兴趣的传感器: http://lechacal.com/wiki/index.php/Main_Page
最便宜的, 为 3 传感器, 一些 12 磅: http://lechacal.com/wiki/index.php/RPICT7V1_v2.0. 购买时请记住, 输出为 CSV 格式, 购买时会看到, 但请记住!
然后,有必要根据需要购买尽可能多的非侵入式传感器: SCT-013-000. 我们在同一网站或 Amazon 或 eBay 上提供它们,每个价格约为 4 欧元.
然后,我们将 HAT 连接到 Raspberry Pi 以及我们拥有的传感器; 在传感器的夹子中,我们将考虑只通过一根电缆, 嘿! 什么都没有, 这样,我们将能够知道以瓦特为单位的消耗 (W) 每个 Thing 有什么作用?’ 我们已经捏住了. 我们可以测量任何电器, 以及所说的, 把它放在房子的电气面板上,然后从那里测量消耗量, 如果我们有很好的标签, 我们测量一般消耗量或照明消耗量并不难, 插头的消耗, 冰箱, 烤箱, 洗衣机, 水瓶座… 我了解什么!
有了这个命令,我们将能够 通过串联连接到 HAT 看看他吐出什么. 您将看到,根据您购买的 HAT,您将能够看到当前的, 电压或温度, 这就是这个命令会向你吐出的内容,分成逗号.
[源代码]stty -F /dev/ttyAMA0 原始速度 38400
猫 /dev/ttyAMA0[/源代码]
现在, 我们要做的是 处理这些输出 (CSV 格式), 在我的例子中,如果你看一下它,它会返回 7 非侵入式传感器, 我把它们中的每一个都连接到了我的电气面板中的电缆上, 当您看到代码时,您将看到我测量的电流 (常规, 炉塞, 洗碗机和洗衣机, 照明, 烤箱和陶瓷炉, 和插头. 然后,我将该信息导出到我之前在 MySQL 中创建的表中, 所以 我们需要有 MySQL 安装在某些机器上 (或将其安装在 Pi 本身上) 我们将在那里创建我们想要的 DB 和 Table, 我给你举个例子,每个传感器都有一列:
[源代码]CREATE TABLE '普通' (
'general' FLOAT NULL DEFAULT NULL,
'stoves' FLOAT NULL DEFAULT NULL,
'lavavajillas_lavadora' FLOAT NULL 默认 NULL,
'lighting' FLOAT NULL DEFAULT NULL,
'horno_vitro' FLOAT NULL 默认 NULL,
'plugs' FLOAT NULL DEFAULT NULL,
'date' 时间戳 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='latin1_swedish_ci’
引擎=InnoDB
;[/源代码]
什么都没有, 现在我们只需要拥有这个美妙的 script 来填充 Table '流’ 我们的数据库! 我们创建了这样一个脚本:
corriente.py
[源代码]#!/usr/bin/python
导入序列号
导入 urllib
导入 JSON
导入 MySQLdb
ser = 序列号。串行('/dev/ttyAMA0', 38400)
响应 = ser.readline()
z = 响应.split(",")
如果 Len(z)>=7:
print “常规: %s 瓦茨" % z[0]
print “炉灶: %s 瓦茨" % z[1]
print “洗碗机和洗衣机: %s 瓦茨" % z[2]
print “照明: %s 瓦茨" % z[3]
print “烤箱与体外: %s 瓦茨" % z[4]
print “插头: %s 瓦茨" % z[5]
general_valor=z[0]
estufas_valor=z[1]
lavavajillas_lavadora_valor=z[2]
alumbrado_valor=z[3]
horno_vitro_valor=z[4]
enchufes_valor=z[5]
db = MySQLdb.connect(“本地主机”,“根”,“xxxxxx”,“NOMBRE_BASE_DATOS”)
游标 = db.cursor()
cursor.execute 命令(“”“INSERT INTO 流 (常规,炉具,lavavajillas_lavadora,照明,horno_vitro,插头) 值 (%s,%s,%s,%s,%s,%s) """, (general_valor,estufas_valor,lavavajillas_lavadora_valor,alumbrado_valor,horno_vitro_valor,enchufes_valor))
db.commit 文件()[/源代码]
就是这样! 剩下的就是安排这个脚本以我们感兴趣的时间间隔运行, 跑 ‘crontab -e‘ 我们添加以下内容,以便它每分钟运行一次:
[源代码]* * * * * python /home/pi/corriente.py[/源代码]
那会是什么 这 Ginda 结束? 嗯,通常的, 由于 格拉法纳, 我们将能够以超级简单和快速的方式处理任何数据, 如本例中所示,MySQL 表. 如果您没有安装 Grafana,请查看 本文档, 在那之后, 您可以创建一个 Dashboard (控制面板),您可以在其中添加所需的任何内容. 以下是一些示例:
我们添加指标的图表,我为我们绘制了它, 在这种情况下, 插头的消耗:
[源代码]SELECT enchufes 作为值, “插头" 作为公制, UNIX_TIMESTAMP(日期) 作为 time_sec FROM corriente WHERE $__timeFilter(日期) 按 time_sec ASC 订购[/源代码]
图表,其中我们添加了 照明消耗:
[源代码]SELECT alumbrado 作为值, “照明" 作为公制, UNIX_TIMESTAMP(日期) 作为 time_sec FROM corriente WHERE $__timeFilter(日期) 按 time_sec ASC 订购[/源代码]
使用 Singlestat 插件,我们可以显示 一般性开支l:
[源代码]SELECT general FROM 当前订单按日期描述 limit 1[/源代码]
我希望你觉得它有用, 您可以根据需要自由修改和自定义它! 正如我在其他帖子中告诉你的那样, 我在那些神奇的镜子或 MagicMirror 中使用这些废话, 我早上变得帅气的地方,我有一些信息, 总有一天我会告诉你这一切, 但就目前而言, 一点一点地! 如果你已经走到了这一步,感谢你阅读我! 以及您在社交媒体上分享的每个人!