summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--makefu/1systems/wbob/config.nix1
-rw-r--r--makefu/2configs/deployment/bureautomation/hass.nix158
-rw-r--r--makefu/2configs/deployment/bureautomation/home.nix67
-rw-r--r--makefu/2configs/deployment/events-publisher/default.nix4
-rw-r--r--makefu/source.nix3
5 files changed, 175 insertions, 58 deletions
diff --git a/makefu/1systems/wbob/config.nix b/makefu/1systems/wbob/config.nix
index c7301e52b..9d8a91e6d 100644
--- a/makefu/1systems/wbob/config.nix
+++ b/makefu/1systems/wbob/config.nix
@@ -50,6 +50,7 @@ in {
<stockholm/makefu/2configs/deployment/bureautomation>
+ <stockholm/makefu/2configs/deployment/bureautomation/hass.nix>
(let
collectd-port = 25826;
influx-port = 8086;
diff --git a/makefu/2configs/deployment/bureautomation/hass.nix b/makefu/2configs/deployment/bureautomation/hass.nix
index b62f37bdb..d5793f886 100644
--- a/makefu/2configs/deployment/bureautomation/hass.nix
+++ b/makefu/2configs/deployment/bureautomation/hass.nix
@@ -1,75 +1,125 @@
{ pkgs, lib, ... }:
let
- firetv = "192.168.1.238";
+ tasmota_plug = name: topic: {
+ platform = "mqtt";
+ inherit name;
+ state_topic = "/bam/${topic}/stat/POWER";
+ command_topic = "/bam/${topic}/cmnd/POWER";
+ availability_topic = "/bam/${topic}/tele/LWT";
+ qos = 1;
+ payload_on= "ON";
+ payload_off= "OFF";
+ payload_available= "Online";
+ payload_not_available= "Offline";
+ retain= false;
+ };
+ espeasy_dht22 = name: [
+ {
+ platform = "mqtt";
+ device_class = "temperature";
+ state_topic = "/bam/${name}/dht22/Temperature";
+ availability_topic = "/bam/${name}/status/LWT";
+ payload_available = "Connected";
+ payload_not_available = "Connection Lost";
+ }
+ {
+ platform = "mqtt";
+ device_class = "humidity";
+ state_topic = "/bam/${name}/dht22/Temperature";
+ unit_of_measurement = "C";
+ availability_topic = "/bam/${name}/status/LWT";
+ payload_available = "Connected";
+ payload_not_available = "Connection Lost";
+ }];
+ espeasy_ds18 = name: [
+ {
+ platform = "mqtt";
+ device_class = "temperature";
+ state_topic = "/bam/${name}/ds18/Temperature";
+ availability_topic = "/bam/${name}/status/LWT";
+ payload_available = "Connected";
+ payload_not_available = "Connection Lost";
+ }
+ ];
in {
- imports = [
- <nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
+
+ nixpkgs.config.permittedInsecurePackages = [
+ "homeassistant-0.65.5"
];
- systemd.services.firetv = {
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- User = "nobody";
- ExecStart = "${pkgs.python-firetv}/bin/firetv-server -d ${firetv}:5555";
- };
- };
- nixpkgs.config.packageOverrides = oldpkgs: {
- home-assistant = (import <nixpkgs-unstable> {}).home-assistant;
- };
- ids.uids.hass = 286;
- ids.gids.hass = 286;
+
services.home-assistant = {
- #panel_iframe:
- #configurator:
- # title: Configurator
- # icon: mdi:wrench
- # url: http://hassio.local:3218
- # sensor:
- # - platform: random
enable = true;
config = {
homeassistant = {
name = "Bureautomation";
time_zone = "Europe/Berlin";
};
- panel_iframe = {
- euer_blog = {
- title = "Euer Blog";
- icon = "mdi:wrench";
- url = "https://euer.krebsco.de";
+
+ mqtt = {
+ broker = "localhost";
+ port = 1883;
+ client_id = "home-assistant";
+ keepalive = 60;
+ protocol = 3.1;
+ birth_message = {
+ topic = "/bam/hass/tele/LWT";
+ payload = "Online";
+ qos = 1;
+ retain = true;
+ };
+ will_message = {
+ topic = "/bam/hass/tele/LWT";
+ payload = "Offline";
+ qos = 1;
+ retain = true;
};
};
- media_player = [
- { platform = "kodi";
- host = firetv;
- }
- { platform = "firetv";
- # assumes python-firetv running
- }
+ switch = [
+ (tasmota_plug "Bauarbeiterlampe" "plug")
+ (tasmota_plug "Blitzdings" "plug2")
+ (tasmota_plug "Fernseher" "plug3")
+ (tasmota_plug "Pluggy" "plug4")
];
- sensor = [
- {
- platform = "luftdaten";
- name = "Shack 1";
- sensorid = "50";
- monitored_conditions = [ "P1" "P2" ];
- }
- {
- platform = "luftdaten";
- name = "Shack 2";
- sensorid = "658";
- monitored_conditions = [ "P1" "P2" ];
- }
- {
- platform = "luftdaten";
- name = "Ditzingen";
- sensorid = "5341";
- monitored_conditions = [ "P1" "P2" ];
+ binary_sensor = [
+ { # esp_easy
+ platform = "mqtt";
+ device_class = "motion";
+ state_topic = "/bam/easy2/movement/Switch";
+ payload_on = "1";
+ payload_off = "0";
+ availability_topic = "/bam/easy2/status/LWT";
+ payload_available = "Connected";
+ payload_not_available = "Connection Lost";
}
- { platform = "random"; }
];
+ sensor =
+ (espeasy_dht22 "easy2") ++
+ [ (espeasy_ds18 "easy3" )
+ { platform = "luftdaten";
+ name = "Ditzingen";
+ sensorid = "5341";
+ monitored_conditions = [ "P1" "P2" ];
+ }
+ { platform = "influxdb";
+ queries = [
+ { name = "mean value of feinstaub P1";
+ where = '' "node" = 'esp8266-1355142' '';
+ measurement = "feinstaub";
+ database = "telegraf";
+ field = "P1";
+ }
+ { name = "mean value of feinstaub P2";
+ where = '' "node" = 'esp8266-1355142' '';
+ measurement = "feinstaub";
+ database = "telegraf";
+ field = "P2";
+ }
+ ];
+ }
+ ];
frontend = { };
http = { };
- feedreader.urls = [ "https://nixos.org/blogs.xml" ];
+ feedreader.urls = [ "http://www.heise.de/security/rss/news-atom.xml" ];
};
};
}
diff --git a/makefu/2configs/deployment/bureautomation/home.nix b/makefu/2configs/deployment/bureautomation/home.nix
new file mode 100644
index 000000000..28edb6af2
--- /dev/null
+++ b/makefu/2configs/deployment/bureautomation/home.nix
@@ -0,0 +1,67 @@
+{ pkgs, lib, ... }:
+let
+ firetv = "192.168.1.238";
+in {
+ systemd.services.firetv = {
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ User = "nobody";
+ ExecStart = "${pkgs.python-firetv}/bin/firetv-server -d ${firetv}:5555";
+ };
+ };
+ services.home-assistant = {
+ #panel_iframe:
+ #configurator:
+ # title: Configurator
+ # icon: mdi:wrench
+ # url: http://hassio.local:3218
+ # sensor:
+ # - platform: random
+ enable = true;
+ config = {
+ homeassistant = {
+ name = "Bureautomation";
+ time_zone = "Europe/Berlin";
+ };
+ panel_iframe = {
+ euer_blog = {
+ title = "Euer Blog";
+ icon = "mdi:wrench";
+ url = "https://euer.krebsco.de";
+ };
+ };
+ media_player = [
+ { platform = "kodi";
+ host = firetv;
+ }
+ { platform = "firetv";
+ # assumes python-firetv running
+ }
+ ];
+ sensor = [
+ {
+ platform = "luftdaten";
+ name = "Shack 1";
+ sensorid = "50";
+ monitored_conditions = [ "P1" "P2" ];
+ }
+ {
+ platform = "luftdaten";
+ name = "Shack 2";
+ sensorid = "658";
+ monitored_conditions = [ "P1" "P2" ];
+ }
+ {
+ platform = "luftdaten";
+ name = "Ditzingen";
+ sensorid = "5341";
+ monitored_conditions = [ "P1" "P2" ];
+ }
+ { platform = "random"; }
+ ];
+ frontend = { };
+ http = { };
+ feedreader.urls = [ "https://nixos.org/blogs.xml" ];
+ };
+ };
+}
diff --git a/makefu/2configs/deployment/events-publisher/default.nix b/makefu/2configs/deployment/events-publisher/default.nix
index db8502c6e..c671b1a0b 100644
--- a/makefu/2configs/deployment/events-publisher/default.nix
+++ b/makefu/2configs/deployment/events-publisher/default.nix
@@ -2,8 +2,8 @@
with import <stockholm/lib>;
let
shack-announce = pkgs.callPackage (builtins.fetchTarball {
- url = "https://github.com/makefu/events-publisher/archive/15fbe5cc6ac9617a08a042870795f9e879d9952a.tar.gz";
- sha256 = "1bqp1qdnwx5q1w468zbm57hmpjz3x8if3j29qrqcia0vzks1s37a";
+ url = "https://github.com/makefu/events-publisher/archive/5e7b083c63f25182a02c1fddb3d32cb9534fbc50.tar.gz";
+ sha256 = "1zzlhyj8fr6y3a3b6qlyrm474xxxs1ydqjpkd2jva3g1lnzlmvkp";
}) {} ;
home = "/var/lib/shackannounce";
user = "shackannounce";
diff --git a/makefu/source.nix b/makefu/source.nix
index fac1c0282..82a41886b 100644
--- a/makefu/source.nix
+++ b/makefu/source.nix
@@ -24,11 +24,10 @@ let
];
};
# TODO: automate updating of this ref + cherry-picks
- ref = "14946ec63a1"; # nixos-18.03 @ 2018-05-31
+ ref = "8f991294288"; # nixos-18.03 @ 2018-08-06
# + do_sqlite3 ruby: 55a952be5b5
# + exfat-nofuse bump: ee6a5296a35
# + uhub/sqlite: 5dd7610401747
- # + forecastio: f27584df02337
in
evalSource (toString _file) [