2017-10-31 18 views
0

에너지 소비를위한 그래프 시스템을 개발 중입니다. 스크립트는 에너지 계량기의 현재 Kwh를 당긴 후 DS 카운터가있는 rrd 데이터베이스로 푸시됩니다. 나는 DEF의 합계를 계산하기 위해 VDEF를 사용하려고 시도했지만이 방법으로 "단계"를 만드는 좋은 방법을 찾지 못하는 것 같습니다.RRDtool을 사용하여 총 값을 기록하는 가장 좋은 방법은 무엇입니까?

저의 목표는 데이터베이스에서 일주일 동안 데이터를 가져 와서 매일 계산하는 것입니다. 나는 이것을 할 수있는 최선의 방법을 찾을 수없는 것 같습니다. RRDtool이이를 수행하는 주요 방법입니까? 그렇다면 올바른 접근 방식은 무엇입니까?

감사합니다.

답변

0

RRDTool은 속도를 기록 할 때 가장 잘 작동합니다. 따라서 COUNTER DS 유형을 사용하면 데이터베이스의 특정 시점 W 값으로주기적인 kWh 합계를 변경할 수 있습니다.

예를 들어 1 분마다 샘플링하는 경우 kWh에 3600000을 곱하고 (와트 초 또는 줄을 사용하려면) RRDTool에서 COUNTER 유형을 사용하여 초당 비율로 변환하거나 와트 (명확성과 단순성을 위해 SI 단위로 데이터를 저장하는 것이 항상 좋습니다).

그러면 단계 크기를 곱하여이를 표시하거나 계산할 수 있습니다.

예를 들어 하루에 kWh의 그래프를 보려면 1 일 단위로 RRA를 정의해야합니다. 그런 다음 특정 데이터 세분화도를 사용하여 rrdtool fetch 또는 rrdtool graph을 사용하여 데이터를 가져올 수 있으며 평균 와트에 간격을 곱한 다음 3600000으로 나누어 kWh를 얻음으로써 계산 된 값을 얻을 수 있습니다.

이렇게하면 와트를 저장하기 위해 1 분 샘플 속도의 RRD 파일이 만들어집니다.

rrdtool create power.rrd --step 60 \ 
    DS:watts:COUNTER:120:0: \ 
    RRA:AVERAGE:0.5:1:86400 \ 
    RRA:AVERAGE:0.5:1440:400 

이는 RRD를 업데이트는 달, 이것은 kWh의에서 매일 사용, 그래프 것이다

JOULES=`expr $KWH \* 3600000` 
rrdtool update power.rrd N:$JOULES 

킬로와트의 최신 샘플을 제공

rrdtool graph graph.png \ 
    --end now --start "end-1month" --step 86400 \ 
    --title "Power usage per day" --vertical-label "kWh" \ 
    --units-exponent 0 \ 
    DEF:watts=power.rrd:watts:AVERAGE:step=86400 \ 
    CDEF:kwh=watts,STEPWIDTH,*,3600,/,1000,/ \ 
    VDEF:totkwh=watts,TOTAL,3600000,/ \ 
    GRPINT:totkwh:"Total kWh this month: %.0lf kWh" 

당신이 할 수있는,의 물론, 필요에 맞게 수정하십시오. 다른 RRA 또는 그래프 작성 단계 또는 요약을 원할 수 있습니다.