2017-10-31 20 views
0

私はエネルギー消費のグラフシステムを開発しています。このスクリプトは、現在のエネルギー計のKwhを引き出し、DSカウンターでrrdデータベースにプッシュします。私は平均でDEFの合計をカウントするためにVDEFを使用しようとしましたが、私はこの方法で "ステップ"を作るための良い方法を見つけるようです。RRDtoolで合計値を記録する最良の方法は?

私の目標は、データベースから1週間のデータを取得して、各日の合計を計算できるようにすることです。私はこれを行う最善の方法を見つけることができないようです。 RRDtoolはこれを推進する方法ですか?もしそうなら、正しいアプローチは何ですか?

ありがとうございました。

答えて

0

RRDToolはレートを記録するときに最も効果的です。したがって、COUNTER DSタイプを使用すると、定期的なkWhの合計をデータベースのポイントインタイムW値に変更できます。

たとえば、1分ごとにサンプリングする場合は、kWhに3600000を掛けて(ワット秒またはジュールにする)、RRDToolでCOUNTER型を使用して秒単位のレートに変換するか、ワット(わかりやすくシンプルにするために、SI単位でデータを格納する方が常に良い)。

これで、ステップサイズを掛けて表示または計算することができます。

たとえば、1日に使用されるkWhのグラフを表示するには、RRAを1日単位で定義する必要があります。次に、特定のデータ精度で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を更新するには、月の上に、これはキロワット時で、毎日の使用状況を、グラフ化します

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やグラフ作成ステップ、または集計が必要な場合があります。

関連する問題