12.03.2017, 22:25
Hi,
As it is not possible to have a graph with more than one variable, I decided to make my own graphs with rrdtool.
At first I was going to use another server that would collect data with remote xlm service, create the graph, put it on a webpage and display that graph in an iframe in LM.
I had progressed up to the point of moving the graph to the web server when it occurred to me that the rrdtool package is available in LM!
The new plan was then to create an rrd archive in LM, put the graph in the img directory and then use that image in my visualisation.
What I did (this is in LM4 firmware 20160714):
-create a directory /data/storage/rrd
-create a rrd archive as follows:
-update the rrd with data:
-verify that data was being written with rrdtool first and rrdtool last
All this went well. I then wanted to create a graph as follows:
This fails, with the os.execute statement returning 256. Obviously no graph is created.
The manual states that the return code of os.execute is system dependent. I have no idea what values to expect on LM...
On the other machine this worked without any problems. The only difference is the version of rrdtool: on LM this is 1.4.7 whereas on the other machine it is 1.6
What is going wrong here?
Thanks.
As it is not possible to have a graph with more than one variable, I decided to make my own graphs with rrdtool.
At first I was going to use another server that would collect data with remote xlm service, create the graph, put it on a webpage and display that graph in an iframe in LM.
I had progressed up to the point of moving the graph to the web server when it occurred to me that the rrdtool package is available in LM!
The new plan was then to create an rrd archive in LM, put the graph in the img directory and then use that image in my visualisation.
What I did (this is in LM4 firmware 20160714):
-create a directory /data/storage/rrd
-create a rrd archive as follows:
Code:
create_rrd = "rrdtool create /data/storage/rrd/ventilatie.rrd --start N --step 300" ..
" DS:T_intake:GAUGE:600:-20:50" ..
" DS:T_supply:GAUGE:600:-20:50" ..
" DS:T_discharge:GAUGE:600:-20:50" ..
" DS:T_exhaust:GAUGE:600:-20:50" ..
" RRA:MIN:0.5:12:1440" ..
" RRA:MAX:0.5:12:1440" ..
" RRA:AVERAGE:0.5:1:1440"
result = os.execute(create_rrd)
-update the rrd with data:
Code:
-- get data
T_intake = grp.getvalue('4/1/11')
T_supply = grp.getvalue('4/1/12')
T_discharge = grp.getvalue('4/1/14')
T_exhaust = grp.getvalue('4/1/13')
log(T_intake ..":" ..T_supply..":" ..T_discharge..":" ..T_exhaust)
rrdupdate = "rrdtool update /data/storage/rrd/ventilatie.rrd N:" ..T_intake ..":" ..T_supply ..":" ..T_discharge ..":" ..T_exhaust
result = io.readproc(rrdupdate)
All this went well. I then wanted to create a graph as follows:
Code:
rrdgraph = "rrdtool graph /data/storage/img/ventilatie.png DEF:T_i=/data/storage/rrd/ventilatie.rrd:T_intake:AVERAGE LINE1:T_i#ff0000:Invoer"
log(rrdgraph)
result = os.execute(rrdgraph)
This fails, with the os.execute statement returning 256. Obviously no graph is created.
The manual states that the return code of os.execute is system dependent. I have no idea what values to expect on LM...
On the other machine this worked without any problems. The only difference is the version of rrdtool: on LM this is 1.4.7 whereas on the other machine it is 1.6
What is going wrong here?
Thanks.