summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--krebs/2configs/shack/powerraw.nix37
1 files changed, 34 insertions, 3 deletions
diff --git a/krebs/2configs/shack/powerraw.nix b/krebs/2configs/shack/powerraw.nix
index 9b957b783..af3f129c1 100644
--- a/krebs/2configs/shack/powerraw.nix
+++ b/krebs/2configs/shack/powerraw.nix
@@ -4,6 +4,7 @@
# Requires mqtt available at mqtt.shack
# Requires hostname powerraw.shack
let
+ influx-url = "http://influx.shack:8086";
pkg = pkgs.python3.pkgs.callPackage (
pkgs.fetchgit {
url = "https://git.shackspace.de/rz/powermeter.git";
@@ -13,9 +14,7 @@ let
in {
# receive response from light.shack / standby.shack
networking.firewall.allowedUDPPorts = [ 11111 ];
- users.users.powermeter = {
- extraGroups = [ "dialout" ];
- };
+ users.users.powermeter.extraGroups = [ "dialout" ];
systemd.services.powermeter-serial2mqtt = {
description = "powerraw Serial -> mqtt";
@@ -38,4 +37,36 @@ in {
PrivateTmp = true;
};
};
+
+ services.telegraf = {
+ enable = true;
+ extraConfig = {
+ agent.debug = false;
+ outputs = {
+ influxdb = [{
+ urls = [ influx-url ];
+ database = "telegraf";
+ }];
+ };
+ };
+ };
+
+ services.telegraf.extraConfig.inputs.mqtt_consumer = let
+ genTopic = name: topic: tags: {
+ servers = [ "tcp://mqtt.shack:1883" ];
+ qos = 0;
+ connection_timeout = "30s";
+ topics = [ topic ];
+ inherit tags;
+ persistent_session = false;
+ name_override = name;
+ data_format = "value";
+ data_type = "float";
+ };
+ sensor = "total";
+ types = [ "Voltage" "Current" "Power" ];
+ phases = [ 1 2 3 ];
+ in
+ [ (genTopic "Power consumed" "/power/${sensor}/consumed" { inherit sensor; }) ] ++
+ (lib.flatten (map (type: (map (phase: (genTopic "Power" "/power/${sensor}/L${toString phase}/${type}" { inherit sensor phase type; }) ) phases)) types));
}