RaspberryPi、collectd python插件、rrd、基于CGP的占用率记录/感知(PIR&;Sound)
我有一个PIR和一个声音传感器在我的PIZerow上工作。 我还有一个python脚本,可以打开监听套接字并处理“声音”或“运动”中断。对于每个声音/运动事件,它增加一个可通过套接字连接读取的值,并在成功读取后重置为零 我已经创建了两个collectd python插件“motion.py”和“sound.py”,它们正在CGP(collectd graph panel)中创建rrd数据和图形,但它们是两个独立的插件。我真正想要的是:RaspberryPi、collectd python插件、rrd、基于CGP的占用率记录/感知(PIR&;Sound),python,plugins,collectd,Python,Plugins,Collectd,我有一个PIR和一个声音传感器在我的PIZerow上工作。 我还有一个python脚本,可以打开监听套接字并处理“声音”或“运动”中断。对于每个声音/运动事件,它增加一个可通过套接字连接读取的值,并在成功读取后重置为零 我已经创建了两个collectd python插件“motion.py”和“sound.py”,它们正在CGP(collectd graph panel)中创建rrd数据和图形,但它们是两个独立的插件。我真正想要的是: 显示两个变量相加的叠加图(内存使用方式) 显示两个变量但未求
...
occupation motion:GAUGE:0:U, sound:GAUGE:0:U
motion value:GAUGE:0:U
sound value:GAUGE:0:U
...
在~/cgp/plugin中,我有occulation.json
{
"occupation": {
"title": "Occupancy on {{HOST}}",
"vertical": "Events",
"type": "stacked",
"legend": {
"motion": {
"name": "Motion",
"color": "0000f0"
},
"sound": {
"name": "Sound",
"color": "ff00f0"
}
},
"legend_format": "%.1lf"
}
}
我的occulation.py插件如下:
/usr/share/pi/occulation/bin/occulation.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插件的有限文档,也没有找到更好的东西
我发现了这个链接,这让我觉得我对python插件的理解是错的
我假设我正确地编写了rrd文件,但我似乎无法使cgp中的绘图部分正常工作。谁能告诉我哪里出了问题
提前谢谢