LoutreOS: replace zha with zigbee2mqtt

This commit is contained in:
nyanloutre 2023-06-22 18:40:32 +02:00
parent 1a525bb29a
commit 0c8a0c3854
2 changed files with 70 additions and 292 deletions

View File

@ -182,6 +182,66 @@ in
enable = true;
};
mosquitto = {
enable = true;
listeners = [
{
acl = [ "pattern readwrite #" ];
omitPasswordAuth = true;
address = "127.0.0.1";
settings.allow_anonymous = true;
}
];
};
zigbee2mqtt = {
enable = true;
settings = {
mqtt = {
server = "mqtt://${(head config.services.mosquitto.listeners).address}:${toString (head config.services.mosquitto.listeners).port}";
};
frontend = {
port = 8080;
host = "127.0.0.1";
url = "https://zigbee.nyanlout.re";
};
groups = {
"101" = {
friendly_name = "salon";
devices = [
"0x94deb8fffe760f3d"
];
};
"102" = {
friendly_name = "cuisine";
devices = [
"0x003c84fffe6d9ee6"
];
};
"103" = {
friendly_name = "entrée";
devices = [
"0x84ba20fffe5ec243"
];
};
"104" = {
friendly_name = "tout";
devices = [
"0x94deb8fffe760f3d"
"0x003c84fffe6d9ee6"
"0x84ba20fffe5ec243"
];
};
"107" = {
friendly_name = "chambre";
devices = [
"0x84ba20fffe5eb120"
];
};
};
};
};
home-assistant = {
enable = true;
extraComponents = [
@ -192,37 +252,26 @@ in
config = {
default_config = {};
homeassistant = {
country = "FR";
latitude = 48.60038;
longitude = 7.74063;
elevation = 146;
};
meteo_france = null;
#influxdb = null;
#config = null;
#dhcp = null;
#frontend = null;
#history = null;
http = {
use_x_forwarded_for = true;
trusted_proxies = [ "127.0.0.1" ];
};
#logbook = null;
#map = null;
#mobile_app = null;
#person = null;
#script = null;
#sun = null;
#system_health = null;
zha = null;
mqtt = null;
esphome = null;
light = [
{
platform = "group";
name = "Salon";
entities = [
"light.ikea_of_sweden_tradfri_bulb_e27_cws_806lm_e69e6dfe_level_light_color_on_off"
"light.ikea_of_sweden_tradfri_bulb_e27_cws_806lm_43c25efe_level_light_color_on_off"
"light.ikea_of_sweden_tradfri_bulb_e27_cws_806lm_3d0f76fe_level_light_color_on_off"
"light.salon_light"
"light.cuisine_light"
"light.entree_light"
];
}
];
@ -267,282 +316,6 @@ in
# };
# }
#];
#switch = [
# {
# platform = "wake_on_lan";
# name = "PC Fixe";
# mac = "b4:2e:99:ed:24:26";
# host = "10.30.135.71";
# broadcast_address = "10.30.255.255";
# }
#];
#device_tracker = [
# {
# platform = "ping";
# hosts = { telephone_paul = "10.30.50.2"; };
# }
#];
#scene = [
# {
# name = "Movie";
# icon = "mdi:movie-open";
# entities = {
# "light.salon" = {
# state = "on";
# xy_color = [0.299 0.115];
# brightness = 50;
# };
# "light.bande_led_tv" = {
# state = "on";
# effect = "Movie";
# brightness = 180;
# };
# "light.bande_led_bureau" = {
# state = "on";
# xy_color = [0.299 0.115];
# brightness = 130;
# };
# };
# }
# {
# name = "Home";
# icon = "mdi:home";
# entities = {
# "light.salon" = {
# state = "on";
# kelvin = 2700;
# brightness = 255;
# };
# };
# }
# {
# name = "Night";
# icon = "mdi:weather-night";
# entities = {
# "light.salon" = {
# state = "off";
# };
# "light.bande_led_tv" = {
# state = "off";
# };
# "light.bande_led_bureau" = {
# state = "off";
# };
# "light.chambre" = {
# state = "on";
# kelvin = 1900;
# brightness = 50;
# };
# };
# }
#];
#automation = let
# min_sun_elevation = 4;
# switch_chambre = {
# domain = "zha";
# platform = "device";
# device_id = "3329ecdcad244e5e8fc0f4b96d52ffe1";
# };
# switch_entree = {
# domain = "zha";
# platform = "device";
# device_id = "7cd814190ec543dba76a7aa7e7996c41";
# };
# remote = {
# domain = "zha";
# platform = "device";
# device_id = "d1230b76264e483388a8fdaad4f44143";
# };
#in [
# # ENTREE
# {
# alias = "Aziz lumière";
# trigger = [
# {
# platform = "numeric_state";
# entity_id = "sun.sun";
# value_template = "{{ state.attributes.elevation }}";
# below = min_sun_elevation;
# }
# ];
# condition = [
# {
# condition = "state";
# entity_id = "person.paul";
# state = "home";
# }
# # Sun below max elevation
# {
# condition = "template";
# value_template = "{{ state_attr('sun.sun', 'elevation') < ${toString min_sun_elevation} }}";
# }
# ];
# action = {
# scene = "scene.home";
# };
# }
# {
# alias = "Aziz lumière switch";
# trigger = {
# type = "remote_button_short_press";
# subtype = "turn_on";
# } // switch_entree;
# action = {
# scene = "scene.home";
# };
# }
# {
# alias = "Adios";
# trigger = [
# {
# platform = "state";
# entity_id = "person.paul";
# to = "not_home";
# }
# ({
# type = "remote_button_short_press";
# subtype = "turn_off";
# } // switch_entree)
# ];
# action = [
# {
# service = "light.turn_off";
# entity_id = "all";
# }
# {
# service = "media_player.turn_off";
# entity_id = "all";
# }
# ];
# }
# # REMOTE
# {
# alias = "Button toggle";
# trigger = {
# type = "remote_button_short_press";
# subtype = "turn_on";
# } // remote;
# action = {
# choose = {
# conditions = {
# condition = "template";
# value_template = ''
# {% set domain = 'light' %}
# {% set state = 'off' %}
# {{ states[domain] | count == states[domain] | selectattr('state','eq',state) | list | count }}
# '';
# };
# sequence = {
# scene = "scene.home";
# };
# };
# default = {
# service = "light.turn_off";
# entity_id = "all";
# };
# };
# }
# {
# alias = "Button scene movie";
# trigger = {
# type = "remote_button_short_press";
# subtype = "right";
# } // remote;
# action = {
# scene = "scene.movie";
# };
# }
# {
# alias = "Button scene home";
# trigger = {
# type = "remote_button_short_press";
# subtype = "left";
# } // remote;
# action = {
# scene = "scene.home";
# };
# }
# {
# alias = "Button light up";
# trigger = {
# type = "remote_button_short_press";
# subtype = "dim_up";
# } // remote;
# action = {
# service = "light.turn_on";
# entity_id = "light.salon";
# data = {
# brightness_step = 25;
# };
# };
# }
# {
# alias = "Button light down";
# trigger = {
# type = "remote_button_short_press";
# subtype = "dim_down";
# } // remote;
# action = {
# service = "light.turn_on";
# entity_id = "light.salon";
# data = {
# brightness_step = -25;
# };
# };
# }
# # CHAMBRE
# {
# alias = "Button scene night";
# trigger = {
# type = "remote_button_short_press";
# subtype = "turn_on";
# } // switch_chambre;
# action = {
# scene = "scene.night";
# };
# }
# {
# alias = "Button scene dodo";
# trigger = {
# type = "remote_button_short_press";
# subtype = "turn_off";
# } // switch_chambre;
# action = {
# service = "light.turn_off";
# entity_id = "all";
# };
# }
# {
# alias = "Button scene lumière chambre ON";
# trigger = {
# type = "remote_button_long_press";
# subtype = "dim_up";
# } // switch_chambre;
# action = {
# service = "light.turn_on";
# entity_id = "light.chambre";
# };
# }
# {
# alias = "Button scene lumière chambre OFF";
# trigger = {
# type = "remote_button_long_press";
# subtype = "dim_down";
# } // switch_chambre;
# action = {
# service = "light.turn_off";
# entity_id = "light.chambre";
# };
# }
#];
};
};

View File

@ -269,6 +269,11 @@ in
proxyWebsockets = true;
};
};
"zigbee.nyanlout.re" = recursiveUpdate (authReverse config.services.zigbee2mqtt.settings.frontend.port) {
locations."/" = {
proxyWebsockets = true;
};
};
"apart.nyanlout.re" = recursiveUpdate (simpleReverse config.services.home-assistant.config.http.server_port) {
locations."/" = {
proxyWebsockets = true;