aboutsummaryrefslogtreecommitdiff
path: root/nixos
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2022-12-14 15:20:26 +0100
committerKarel Kočí <cynerd@email.cz>2022-12-14 15:20:26 +0100
commitc8fce8af5101064ea3dcfcb9d2bc39f1b9b83755 (patch)
tree842dac179e580aafe02526a24ba8982e7ccd713f /nixos
parentc4c0b2a9bfb98250e620c92ac6e173a5946464f7 (diff)
downloadnixos-personal-c8fce8af5101064ea3dcfcb9d2bc39f1b9b83755.tar.gz
nixos-personal-c8fce8af5101064ea3dcfcb9d2bc39f1b9b83755.tar.bz2
nixos-personal-c8fce8af5101064ea3dcfcb9d2bc39f1b9b83755.zip
Add Home Assistant
Now running on Errol as the cross compilation for python cryptography does not work correctly.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/machine/errol.nix28
-rw-r--r--nixos/machine/hass/light.nix13
-rw-r--r--nixos/machine/hass/sensors.nix19
-rw-r--r--nixos/machine/spt-mox.nix46
4 files changed, 106 insertions, 0 deletions
diff --git a/nixos/machine/errol.nix b/nixos/machine/errol.nix
index 06e2446..835999a 100644
--- a/nixos/machine/errol.nix
+++ b/nixos/machine/errol.nix
@@ -60,6 +60,34 @@ with lib;
configDir = "/home/cynerd/.config/syncthing";
};
+ services.home-assistant = {
+ enable = true;
+ openFirewall = true;
+ configDir = "/var/lib/hass";
+ config = {
+ homeassistant = {
+ name = "SPT";
+ latitude = "!secret latitude";
+ longitude = "!secret longitude";
+ elevation = "!secret elevation";
+ time_zone = "Europe/Prague";
+ country = "CZ";
+ };
+ http.server_port = 8808;
+ mqtt = {
+ broker = config.cynerd.hosts.spt.mox;
+ port = 1883;
+ username = "homeassistant";
+ password = "!secret mqtt_password";
+ sensor = import ./hass/sensors.nix;
+ light = import ./hass/light.nix;
+ };
+ met = {};
+ default_config = {};
+ };
+ extraComponents = [];
+ };
+
};
}
diff --git a/nixos/machine/hass/light.nix b/nixos/machine/hass/light.nix
new file mode 100644
index 0000000..a9d158b
--- /dev/null
+++ b/nixos/machine/hass/light.nix
@@ -0,0 +1,13 @@
+[
+ {
+ name = "RGB Osvětlení";
+ command_topic = "homeassistant/led-strip";
+ brightness_scale = 100;
+ brightness_command_topic = "bigclown/node/power-controller:0/led-strip/-/brightness/set";
+ #brightness_state_topic = "bigclown/node/power-controller:0/led-strip/-/brightness/set";
+ rgb_command_template = ''"#{{"%02x" % red}}{{"%02x" % green}}{{"%02x" % blue}}"'';
+ rgb_command_topic = "bigclown/node/power-controller:0/led-strip/-/color/set";
+ #rgb_value_template = ''{{int(value[2:4],16)}},{{int(value[5:7],16)}},{{int(value[8:10],16)}}'';
+ #rgb_state_topic = "bigclown/node/power-controller:0/led-strip/-/color/set";
+ }
+]
diff --git a/nixos/machine/hass/sensors.nix b/nixos/machine/hass/sensors.nix
new file mode 100644
index 0000000..fadd4eb
--- /dev/null
+++ b/nixos/machine/hass/sensors.nix
@@ -0,0 +1,19 @@
+[
+ {
+ name = "Teplota";
+ state_class = "measurement";
+ state_topic = "bigclown/node/climate-monitor:0/thermometer/0:0/temperature";
+ unit_of_measurement = "°C";
+ }
+ {
+ name = "Vlhkost";
+ state_class = "measurement";
+ state_topic = "bigclown/node/climate-monitor:0/hygrometer/0:4/relative-humidity";
+ unit_of_measurement = "%";
+ }
+ {
+ name = "Osvětlení";
+ state_class = "measurement";
+ state_topic = "bigclown/node/climate-monitor:0/lux-meter/0:0/illuminance";
+ }
+]
diff --git a/nixos/machine/spt-mox.nix b/nixos/machine/spt-mox.nix
index b01c48a..acca74c 100644
--- a/nixos/machine/spt-mox.nix
+++ b/nixos/machine/spt-mox.nix
@@ -75,6 +75,13 @@ with lib;
acl = ["readwrite bigclown/#"];
passwordFile = "/run/secrets/mosquitto.bigclown.pass";
};
+ homeassistant = {
+ acl = [
+ "readwrite bigclown/#"
+ "readwrite homeassistant/#"
+ ];
+ passwordFile = "/run/secrets/mosquitto.homeassistant.pass";
+ };
};
}
];
@@ -170,6 +177,45 @@ with lib;
serviceConfig.ExecStart = "${pkgs.bigclown-leds}/bin/bigclown-leds /run/secrets/bigclown-leds.ini";
};
+ services.home-assistant = {
+ enable = false;
+ openFirewall = true;
+ configDir = "/var/lib/hass";
+ config = {
+ homeassistant = {
+ name = "SPT";
+ latitude = "!secret latitude";
+ longitude = "!secret longitude";
+ elevation = "!secret elevation";
+ time_zone = "Europe/Prague";
+ country = "CZ";
+ };
+ http.server_port = 8808;
+ mqtt = {
+ broker = config.cynerd.hosts.spt.mox;
+ port = 1883;
+ username = "homeassistant";
+ password = "!secret mqtt_password";
+ sensor = import ./hass/sensors.nix;
+ light = import ./hass/light.nix;
+ };
+ met = {};
+ default_config = {};
+ };
+ extraComponents = [];
+ package = pkgs.home-assistant.override {
+ packageOverrides = (self: super: {
+ scapy = super.scapy.override {
+ withPlottingSupport = false;
+ };
+ s3transfer = super.s3transfer.overridePythonAttrs (oldAttrs: {
+ dontUsePytestCheck = true;
+ dontUseSetuptoolsCheck = true;
+ });
+ });
+ };
+ };
+
};
}