shack/powerraw: send stats to influx as well

This commit is contained in:
makefu 2019-07-17 13:55:33 +02:00
parent 8e0c6fc8c5
commit a450669027
No known key found for this signature in database
GPG Key ID: 36F7711F3FC0F225

View File

@ -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));
}