ma ham/zigbee2mqtt: use upstream module
This commit is contained in:
parent
ed8f5b65c8
commit
e04ae7a314
@ -1,127 +0,0 @@
|
|||||||
# provides:
|
|
||||||
# switch
|
|
||||||
# automation
|
|
||||||
# binary_sensor
|
|
||||||
# sensor
|
|
||||||
# input_select
|
|
||||||
# timer
|
|
||||||
let
|
|
||||||
inherit (import ../lib) zigbee;
|
|
||||||
prefix = zigbee.prefix;
|
|
||||||
in {
|
|
||||||
sensor =
|
|
||||||
|
|
||||||
[
|
|
||||||
# Sensor for monitoring the bridge state
|
|
||||||
{
|
|
||||||
platform = "mqtt";
|
|
||||||
name = "Zigbee2mqtt Bridge state";
|
|
||||||
state_topic = "${prefix}/bridge/state";
|
|
||||||
icon = "mdi:router-wireless";
|
|
||||||
}
|
|
||||||
# Sensor for Showing the Zigbee2mqtt Version
|
|
||||||
{
|
|
||||||
platform = "mqtt";
|
|
||||||
name = "Zigbee2mqtt Version";
|
|
||||||
state_topic = "${prefix}/bridge/config";
|
|
||||||
value_template = "{{ value_json.version }}";
|
|
||||||
icon = "mdi:zigbee";
|
|
||||||
}
|
|
||||||
# Sensor for Showing the Coordinator Version
|
|
||||||
{
|
|
||||||
platform = "mqtt";
|
|
||||||
name = "Coordinator Version";
|
|
||||||
state_topic = "${prefix}/bridge/config";
|
|
||||||
value_template = "{{ value_json.coordinator }}";
|
|
||||||
icon = "mdi:chip";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
switch = [
|
|
||||||
{
|
|
||||||
platform = "mqtt";
|
|
||||||
name = "Zigbee2mqtt Main join";
|
|
||||||
state_topic = "${prefix}/bridge/config/permit_join";
|
|
||||||
command_topic = "${prefix}/bridge/config/permit_join";
|
|
||||||
payload_on = "true";
|
|
||||||
payload_off = "false";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
automation = [
|
|
||||||
{
|
|
||||||
alias = "Zigbee2mqtt Log Level";
|
|
||||||
initial_state = "on";
|
|
||||||
trigger = {
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "input_select.zigbee2mqtt_log_level";
|
|
||||||
};
|
|
||||||
action = [
|
|
||||||
{
|
|
||||||
service = "mqtt.publish";
|
|
||||||
data = {
|
|
||||||
payload_template = "{{ states('input_select.zigbee2mqtt_log_level') }}";
|
|
||||||
topic = "${prefix}/bridge/config/log_level";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
# Automation to start timer when enable join is turned on
|
|
||||||
{
|
|
||||||
id = "zigbee_join_enabled";
|
|
||||||
alias = "Zigbee Join Enabled";
|
|
||||||
trigger =
|
|
||||||
{
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "switch.zigbee2mqtt_main_join";
|
|
||||||
to = "on";
|
|
||||||
};
|
|
||||||
action =
|
|
||||||
{
|
|
||||||
service = "timer.start";
|
|
||||||
entity_id = "timer.zigbee_permit_join";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
# # Automation to stop timer when switch turned off and turn off switch when timer finished
|
|
||||||
{
|
|
||||||
id = "zigbee_join_disabled";
|
|
||||||
alias = "Zigbee Join Disabled";
|
|
||||||
trigger = [
|
|
||||||
{
|
|
||||||
platform = "event";
|
|
||||||
event_type = "timer.finished";
|
|
||||||
event_data.entity_id = "timer.zigbee_permit_join";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "switch.zigbee2mqtt_main_join";
|
|
||||||
to = "off";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
action = [
|
|
||||||
{ service = "timer.cancel";
|
|
||||||
data.entity_id = "timer.zigbee_permit_join";
|
|
||||||
}
|
|
||||||
{ service = "switch.turn_off";
|
|
||||||
entity_id = "switch.zigbee2mqtt_main_join";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
input_select.zigbee2mqtt_log_level =
|
|
||||||
{
|
|
||||||
name = "Zigbee2mqtt Log Level";
|
|
||||||
options = [
|
|
||||||
"debug"
|
|
||||||
"info"
|
|
||||||
"warn"
|
|
||||||
"error"
|
|
||||||
];
|
|
||||||
initial = "info";
|
|
||||||
icon = "mdi:format-list-bulleted";
|
|
||||||
};
|
|
||||||
|
|
||||||
timer.zigbee_permit_join =
|
|
||||||
{
|
|
||||||
name = "Zigbee Time remaining";
|
|
||||||
duration = 120;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,21 +1,27 @@
|
|||||||
{config, pkgs, lib, ...}:
|
{config, pkgs, lib, ...}:
|
||||||
|
|
||||||
|
let
|
||||||
|
dataDir = "/var/lib/zigbee2mqtt";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# symlink the zigbee controller
|
# symlink the zigbee controller
|
||||||
services.udev.extraRules = ''
|
services.udev.extraRules = ''
|
||||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a8", SYMLINK+="cc2531", MODE="0660", GROUP="dailout"
|
SUBSYSTEM=="tty", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a8", SYMLINK+="cc2531", MODE="0660", GROUP="dialout"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
system.activationScripts.installZigbee = ''
|
services.zigbee2mqtt = {
|
||||||
install -d /var/lib/zigbee2mqtt
|
enable = true;
|
||||||
'';
|
inherit dataDir;
|
||||||
|
};
|
||||||
docker-containers.zigbee2mqtt = {
|
|
||||||
image = "koenkk/zigbee2mqtt";
|
state = [ "${dataDir}/configuration.yaml" "${dataDir}/state.json" ];
|
||||||
extraDockerOptions = [ "--device=/dev/cc2531:/dev/cc2531" ];
|
|
||||||
volumes = ["/var/lib/zigbee2mqtt:/app/data"];
|
systemd.services.zigbee2mqtt = {
|
||||||
|
serviceConfig.ExecStartPre = lib.mkForce "${pkgs.coreutils}/bin/true";
|
||||||
|
after = [
|
||||||
|
"home-assistant.service"
|
||||||
|
"mosquitto.service"
|
||||||
|
"network-online.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
state = [ "/var/lib/zigbee2mqtt/configuration.yaml" "/var/lib/zigbee2mqtt/state.json" ];
|
|
||||||
systemd.services.docker-zigbee2mqtt.after = [ "home-assistant.service" "docker.service" "network-online.target" ];
|
|
||||||
}
|
}
|
||||||
|
130
makefu/2configs/ham/zigbee2mqtt/hass.nix
Normal file
130
makefu/2configs/ham/zigbee2mqtt/hass.nix
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
# provides:
|
||||||
|
# switch
|
||||||
|
# automation
|
||||||
|
# binary_sensor
|
||||||
|
# sensor
|
||||||
|
# input_select
|
||||||
|
# timer
|
||||||
|
let
|
||||||
|
inherit (import ../lib) zigbee;
|
||||||
|
prefix = zigbee.prefix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services.home-assistant.config = {
|
||||||
|
sensor =
|
||||||
|
|
||||||
|
[
|
||||||
|
# Sensor for monitoring the bridge state
|
||||||
|
{
|
||||||
|
platform = "mqtt";
|
||||||
|
name = "Zigbee2mqtt Bridge state";
|
||||||
|
state_topic = "${prefix}/bridge/state";
|
||||||
|
icon = "mdi:router-wireless";
|
||||||
|
}
|
||||||
|
# Sensor for Showing the Zigbee2mqtt Version
|
||||||
|
{
|
||||||
|
platform = "mqtt";
|
||||||
|
name = "Zigbee2mqtt Version";
|
||||||
|
state_topic = "${prefix}/bridge/config";
|
||||||
|
value_template = "{{ value_json.version }}";
|
||||||
|
icon = "mdi:zigbee";
|
||||||
|
}
|
||||||
|
# Sensor for Showing the Coordinator Version
|
||||||
|
{
|
||||||
|
platform = "mqtt";
|
||||||
|
name = "Coordinator Version";
|
||||||
|
state_topic = "${prefix}/bridge/config";
|
||||||
|
value_template = "{{ value_json.coordinator }}";
|
||||||
|
icon = "mdi:chip";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
switch = [
|
||||||
|
{
|
||||||
|
platform = "mqtt";
|
||||||
|
name = "Zigbee2mqtt Main join";
|
||||||
|
state_topic = "${prefix}/bridge/config/permit_join";
|
||||||
|
command_topic = "${prefix}/bridge/config/permit_join";
|
||||||
|
payload_on = "true";
|
||||||
|
payload_off = "false";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
automation = [
|
||||||
|
{
|
||||||
|
alias = "Zigbee2mqtt Log Level";
|
||||||
|
initial_state = "on";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "input_select.zigbee2mqtt_log_level";
|
||||||
|
};
|
||||||
|
action = [
|
||||||
|
{
|
||||||
|
service = "mqtt.publish";
|
||||||
|
data = {
|
||||||
|
payload_template = "{{ states('input_select.zigbee2mqtt_log_level') }}";
|
||||||
|
topic = "${prefix}/bridge/config/log_level";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
# Automation to start timer when enable join is turned on
|
||||||
|
{
|
||||||
|
id = "zigbee_join_enabled";
|
||||||
|
alias = "Zigbee Join Enabled";
|
||||||
|
trigger =
|
||||||
|
{
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "switch.zigbee2mqtt_main_join";
|
||||||
|
to = "on";
|
||||||
|
};
|
||||||
|
action =
|
||||||
|
{
|
||||||
|
service = "timer.start";
|
||||||
|
entity_id = "timer.zigbee_permit_join";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# # Automation to stop timer when switch turned off and turn off switch when timer finished
|
||||||
|
{
|
||||||
|
id = "zigbee_join_disabled";
|
||||||
|
alias = "Zigbee Join Disabled";
|
||||||
|
trigger = [
|
||||||
|
{
|
||||||
|
platform = "event";
|
||||||
|
event_type = "timer.finished";
|
||||||
|
event_data.entity_id = "timer.zigbee_permit_join";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "switch.zigbee2mqtt_main_join";
|
||||||
|
to = "off";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
action = [
|
||||||
|
{ service = "timer.cancel";
|
||||||
|
data.entity_id = "timer.zigbee_permit_join";
|
||||||
|
}
|
||||||
|
{ service = "switch.turn_off";
|
||||||
|
entity_id = "switch.zigbee2mqtt_main_join";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
input_select.zigbee2mqtt_log_level =
|
||||||
|
{
|
||||||
|
name = "Zigbee2mqtt Log Level";
|
||||||
|
options = [
|
||||||
|
"debug"
|
||||||
|
"info"
|
||||||
|
"warn"
|
||||||
|
"error"
|
||||||
|
];
|
||||||
|
initial = "info";
|
||||||
|
icon = "mdi:format-list-bulleted";
|
||||||
|
};
|
||||||
|
|
||||||
|
timer.zigbee_permit_join =
|
||||||
|
{
|
||||||
|
name = "Zigbee Time remaining";
|
||||||
|
duration = 120;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user