我有一个PIR和一个声音传感器在我的圆周率上工作。 我还有一个python脚本,它打开一个监听套接字并处理“声音”或“运动”中断。对于每个声音/运动事件,它会增加一个可以通过套接字连接读取的值,并在成功读取后重置为零。在
我已经创建了2个集合python插件'运动.py'和'声音.py'他们正在CGP(collectedgraph panel)中创建rrd数据和图形,但它们是两个独立的插件。我真正想要的是:
并且让它们每分钟更新一次(而不是每10秒更新一次)。在
目前我所掌握的情况如下:
我在~/collectd中定义了一个“职业”类型/本地数据库类型在~/cgp/inc/类型.db在
...
occupation motion:GAUGE:0:U, sound:GAUGE:0:U
motion value:GAUGE:0:U
sound value:GAUGE:0:U
...
在~/cgp/plugin中占领.json在
^{pr2}$还有我的职业.py插件如下:
/usr/share/pi/占用/bin/职业.py在
import collectd
import socket
import sys
server_name = 'localhost'
server_port = 10000
def config_func(config):
collectd.info('config called')
def read_occupation():
collectd.info('read_occupation called')
# Read raw value
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
global server_name
global server_port
server_address = (server_name, server_port)
sock.connect(server_address)
sock.sendall('MOVEMENT')
motion = sock.recv(16)
sock.sendall('SOUND')
sound = sock.recv(16)
sock.close()
# Dispatch value to collectd
val1 = collectd.Values()
val1.plugin = 'occupation'
val1.type = 'occupation'
val1.values = [motion, sound]
val1.dispatch()
collectd.info('read_motion %s read_sound %s' % (motion, sound))
def init_func():
collectd.info('init called')
collectd.register_config(config_func)
collectd.register_init(init_func)
collectd.register_read(read_occupation, 60)
使用这个配置我得到一个错误:没有名为'value'的DS'(它来自Base.class.php)因为我的rrd只有'motion'和'sound'值,没有'value'值。在
我觉得我已经很接近了,但我只是在猜测,因为我并不真正理解Python插件的有限文档,也没有找到更好的东西。在
我发现了这个链接https://www.programcreek.com/python/example/106897/collectd.register_read,这让我觉得我在python插件上做得不对。在
我假设我写的rrd文件是正确的,但是我似乎不能让cgp中的绘图部分正常工作。谁能告诉我哪里出错了吗?在
提前谢谢!在
目前没有回答
相关问题 更多 >
编程相关推荐