stockholm/lass/2configs/hass/zigbee.nix

77 lines
2.4 KiB
Nix

{config, pkgs, lib, ...}: let
unstable-pkgs = import <nixpkgs-unstable> {};
in {
# symlink the zigbee controller
services.udev.extraRules = ''
SUBSYSTEM=="tty", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a8", SYMLINK+="cc2531", MODE="0660", GROUP="dialout"
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="cc2652", MODE="0660", GROUP="dialout"
'';
# needed to use unstable package
systemd.services.zigbee2mqtt.environment.ZIGBEE2MQTT_DATA = "/var/lib/zigbee2mqtt";
services.zigbee2mqtt = {
enable = true;
package = unstable-pkgs.zigbee2mqtt;
settings = {
homeassistant = true;
frontend.port = 1337;
experimental.new_api = true;
permit_join = false;
mqtt = {
discovery = true;
base_topic = "zigbee";
server = "mqtt://10.42.0.1";
user = "gg23";
password = "gg23-mqtt";
};
serial = {
port = "/dev/cc2652";
# disable_led = true;
};
advanced = {
pan_id = 4222;
};
devices = let
set_device = id: name:
lib.nameValuePair id {
};
in {
# lights https://www.zigbee2mqtt.io/devices/9290022166.html#philips-9290022166
"0x0017880106ed3bd8".friendly_name = "l_bett";
"0x0017880108327622".friendly_name = "l_essen";
"0x0017880106ee2865".friendly_name = "l_arbeit";
"0x00178801082e9f2f".friendly_name = "l_nass";
# switches https://www.zigbee2mqtt.io/devices/324131092621.html#philips-324131092621
"0x00178801086ac38c".friendly_name = "i_bett";
"0x00178801086ad1fb".friendly_name = "i_essen";
"0x00178801086ac373".friendly_name = "i_nass";
# sensors https://www.zigbee2mqtt.io/devices/9290012607.html#philips-9290012607
"0x0017880106f772f2".friendly_name = "s_essen";
"0x0017880106f77f30".friendly_name = "s_nass";
# heat https://www.zigbee2mqtt.io/devices/701721.html#popp-701721
"0x842e14fffe27109a".friendly_name = "t_bett";
"0x842e14fffe269a73".friendly_name = "t_nass";
"0x842e14fffe269a56".friendly_name = "t_arbeit";
# rotation https://www.zigbee2mqtt.io/devices/E1744.html
"0x8cf681fffe065493" = {
friendly_name = "r_test";
device_id = "r_test";
simulated_brightness = {
delta = 2;
interval = 100;
};
};
};
};
};
}