ユーザーがGUIを使用してコミットする間隔と間隔に基づいてrrdデータベースを作成しようとしています。私は毎分更新機能を呼び出すタイマーを作成しました。測定の後、私はfetch-methodを使って収集したデータを調べようとしますが、 "none"値しか表示されません。更新中のRRDデータベースが空です
def update(self):
t=getTemperature()
h=getHumidity()
if self.status==11:
rrdtool.update(self.path,"N:"+t+":"+h)
elif self.status==10:
rrdtool.update(self.path,"N:"+t)
elif self.status==01:
rrdtool.update(self.path,"N:"+h)
センサーの値は正しいですか、プリントアウトで確認しました。 rrdtool.create-methodも完全に正常に動作しますが、データベースが作成されますが、実際に正しく更新されていないと言われています。ここで
rrdtool.createの使用():
def __init__(self,term,temEnabled,humEnabled,mins,hrs,fre):
self.path="/home/pi/Wetterstation/Speicherort/"+term+".rrd"
if os.path.exists(self.path)==False:
totalEntries=int((mins+hrs*60)/fre)
totalEntries=str(totalEntries)
if temEnabled==True and humEnabled==True:
rrdtool.create(self.path,
"DS:temperature:GAUGE:900:0:50",
"DS:humidity:GAUGE:"+str(fre)+":0:100",
"RRA:AVERAGE:0.5:1:"+totalEntries, "RRA:MIN:0.5:12:2400",
"RRA:MAX:0.5:"+totalEntries+":1",
"RRA:MIN:0.5:"+totalEntries+":1")
self.status=11
elif temEnabled==True:
rrdtool.create(self.path,
"DS:temperature:GAUGE:"+str(fre)+":0:50",
"RRA:AVERAGE:0.5:1:"+totalEntries,
"RRA:MIN:0.5:"+totalEntries+":1",
"RRA:MAX:0.5:"+totalEntries+":1")
self.status=10
elif humEnabled==True:
rrdtool.create(self.path,
"DS:hum:GAUGE:"+str(fre)+":0:100",
"RRA:AVERAGE:0.5:1:"+totalEntries,
"RRA:MIN:0.5:"+totalEntries+":1",
"RRA:MAX:0.5:"+totalEntries+":1")
self.status=01
self.success=True
else:
self.success=False
'fre'の値は何ですか?これはあなたの湿度の鼓動です。 totalEntriesとは何ですか?これはあなたのRRAsのサイズです。最後に、update()を呼び出す頻度と、データを表示する前に保存するサンプルの数はどれくらいですか?おそらく、あなたはRRAエントリーを得るために十分長い時間(45分以上)データを提出していませんか?保存されたデータのリストと、抽出に使用したコマンドを表示できますか?保存されたデータと異なる時間ウィンドウを照会している可能性がありますか? –
また、両方のDSが存在する場合、ハートビートが900にハードコードされているようですが、それ以外の場合は 'fre'を使用します。別のハートビートが期待どおりになっている場合、これは問題を引き起こしている可能性があります。ステップを指定していないので、おそらくデフォルトとして300を取得していますが、RRAの計算は、ステップ上にあるときのハートビートに基づいています。 –
@SteveShipway "fre"は、 totalEntries "は値を保存する回数を計算します。私はメソッド更新を-fre-分ごとに呼びます。短時間(テスト中)のデータのみを提出します。一分。 900私は今もfreを定義するので、私は "fre"と置き換えることを忘れました。 – byteshark17