aboutsummaryrefslogtreecommitdiff
path: root/src/create_database.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/create_database.nim')
-rw-r--r--src/create_database.nim50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/create_database.nim b/src/create_database.nim
new file mode 100644
index 0000000..f210c6f
--- /dev/null
+++ b/src/create_database.nim
@@ -0,0 +1,50 @@
+import os
+import osproc
+import strformat
+import strutils
+
+# This database will store the following data
+# - 1 year worth of samples each 15 minutes
+# - average of each day for 10 years
+# - min of each day for 10 years
+# - max of each day for 10 years
+
+let
+ database = getAppDir().parentDir() / "database" / paramStr(1) & ".rrd"
+ step = 15 * 60
+ heartbeat = 20 * 60
+ secondsInDay = 24 * 60 * 60
+ samplesInDay = secondsInDay div step
+ secondsInYear = 365 * secondsInDay
+ samplesInYear = secondsInYear div step
+ daysIn10Years = 365 * 10
+
+if fileExists(database):
+ echo(&"error: database '{database}' exists")
+ quit(1)
+
+echo(&"step = {step} seconds")
+echo(&"heartbeat = {heartbeat} seconds")
+echo(&"samplesInYear = {samplesInYear}")
+echo(&"samplesInDay = {samplesInDay}")
+echo(&"daysIn10Years = {daysIn10Years}")
+
+let args = [
+ "create", database,
+ "--start", "now",
+ "--step", $step,
+ &"DS:temperature:GAUGE:{heartbeat}:-40:40",
+ &"DS:humidity:GAUGE:{heartbeat}:0:100",
+ &"DS:pressure:GAUGE:{heartbeat}:U:U",
+ &"DS:battery:GAUGE:{heartbeat}:0:4",
+ &"RRA:AVERAGE:0.5:1:{samplesInYear}",
+ &"RRA:MIN:0.5:{samplesInDay}:{daysIn10Years}",
+ &"RRA:MAX:0.5:{samplesInDay}:{daysIn10Years}",
+ &"RRA:AVERAGE:0.5:{samplesInDay}:{daysIn10Years}",
+]
+
+createDir(database.parentDir())
+
+echo("rrdtool " & args.join(" "))
+
+quit(execCmd("rrdtool " & args.join(" ")))