summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/stats/telegraf/airsensor.nix
diff options
context:
space:
mode:
authorjeschli <jeschli@gmail.com>2018-01-05 21:14:15 +0100
committerjeschli <jeschli@gmail.com>2018-01-05 21:14:15 +0100
commit183b001e1aca601e420ef07ec4944a15c13a8d2c (patch)
tree9d34f79c2ee7cb073a39ab44ef2795055a42d067 /makefu/2configs/stats/telegraf/airsensor.nix
parentea85e788ae2a6ca24ccb997372542f7f2a104080 (diff)
parente083b18e34519f30bba79dfd894c3b828fd13da7 (diff)
Merge branch 'master' of prism.r:stockholm
Diffstat (limited to 'makefu/2configs/stats/telegraf/airsensor.nix')
-rw-r--r--makefu/2configs/stats/telegraf/airsensor.nix36
1 files changed, 33 insertions, 3 deletions
diff --git a/makefu/2configs/stats/telegraf/airsensor.nix b/makefu/2configs/stats/telegraf/airsensor.nix
index 09d23e7d4..9d481000f 100644
--- a/makefu/2configs/stats/telegraf/airsensor.nix
+++ b/makefu/2configs/stats/telegraf/airsensor.nix
@@ -1,11 +1,36 @@
{ pkgs, ...}:
-
-{
+let
+ genTopic = name: topic: tags: {
+ servers = [ "tcp://localhost:1883" ];
+ qos = 0;
+ connection_timeout = "30s";
+ topics = [ topic ];
+ tags = tags;
+ persistent_session = false;
+ name_override = name;
+ data_format = "value";
+ data_type = "float";
+ };
+ bamStat = stat: # Temperature or Humidity
+ host: # easy{1-4}
+ sensor: # dht11, dht22, ds18
+ (genTopic stat
+ "/bam/${host}/${sensor}/${stat}"
+ {"host" = host;
+ "scope" = "bam";
+ "sensor" = sensor;
+ } );
+ dht22 = host: [(bamStat "Temperature" host "dht22")
+ (bamStat "Humidity" host "dht22")];
+ dht11 = host: [(bamStat "Temperature" host "dht11")
+ (bamStat "Humidity" host "dht11")];
+ ds18 = host: [(bamStat "Temperature" host "ds18")];
+in {
services.udev.extraRules = ''
SUBSYSTEMS=="usb", ATTRS{product}=="iAQ Stick", GROUP="input"
'';
users.users.telegraf.extraGroups = [ "input" ];
- services.telegraf.extraConfig.inputs.exec = [
+ services.telegraf.extraConfig.inputs.exec = [
{
commands = [ "${pkgs.airsensor-py}/bin/airsensor-py"];
timeout = "10s";
@@ -16,4 +41,9 @@
tags.unit="VOC";
}
];
+ services.telegraf.extraConfig.inputs.mqtt_consumer =
+ (dht22 "easy1")
+ ++ (dht22 "easy2")
+ ++ (dht11 "easy3")
+ ++ (ds18 "easy3");
}