summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/bureautomation/default.nix
blob: 56c845744bb83ff93262323cb30d3631b963f7a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{ pkgs, lib, ... }:

with lib;
let
  port = 3001;
  runit = pkgs.writeDash "runit" ''
    set -xeuf
    PATH=${pkgs.mosquitto}/bin:${pkgs.coreutils}/bin
    name=''${1?must provide name as first arg}
    state=''${2?must provide state as second arg}
    # val=''${3?must provide val as third arg}

    # we ignore non-alerting events
    test $state = alerting || exit 0

    echo $name - $state
    topic=plug
    mosquitto_pub -t /bam/$topic/cmnd/POWER -m ON
    sleep 5
    mosquitto_pub -t /bam/$topic/cmnd/POWER -m OFF
  '';
in {
  imports = [
    ./ota.nix
  ];
  services.logstash = {
    package = pkgs.logstash7;
    plugins =  [ pkgs.logstash-output-exec ];
    enable = true;
    inputConfig = ''
       http {
        port => ${toString port}
        host => "127.0.0.1"
        type => "schlechteluft"
      }
    '';
    outputConfig = ''
      if [type] == "schlechteluft" {
        exec { command => "${runit} '%{ruleName}' '%{state}'" }
      }
    '';
  };
}