From e04ae7a3147c731fa3eff16721253cec4dfccdbc Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 18 Nov 2020 22:20:24 +0100 Subject: ma ham/zigbee2mqtt: use upstream module --- makefu/2configs/ham/zigbee2mqtt/default.nix | 30 ++++--- makefu/2configs/ham/zigbee2mqtt/hass.nix | 130 ++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+), 12 deletions(-) create mode 100644 makefu/2configs/ham/zigbee2mqtt/hass.nix (limited to 'makefu/2configs/ham/zigbee2mqtt') diff --git a/makefu/2configs/ham/zigbee2mqtt/default.nix b/makefu/2configs/ham/zigbee2mqtt/default.nix index 84d32c872..36d332d42 100644 --- a/makefu/2configs/ham/zigbee2mqtt/default.nix +++ b/makefu/2configs/ham/zigbee2mqtt/default.nix @@ -1,21 +1,27 @@ {config, pkgs, lib, ...}: - -{ +let + dataDir = "/var/lib/zigbee2mqtt"; +in + { # symlink the zigbee controller 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 = '' - install -d /var/lib/zigbee2mqtt - ''; + services.zigbee2mqtt = { + enable = true; + inherit dataDir; + }; + + state = [ "${dataDir}/configuration.yaml" "${dataDir}/state.json" ]; - docker-containers.zigbee2mqtt = { - image = "koenkk/zigbee2mqtt"; - 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" ]; } diff --git a/makefu/2configs/ham/zigbee2mqtt/hass.nix b/makefu/2configs/ham/zigbee2mqtt/hass.nix new file mode 100644 index 000000000..faf864ba6 --- /dev/null +++ b/makefu/2configs/ham/zigbee2mqtt/hass.nix @@ -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; + }; + }; +} -- cgit v1.2.3 From 78fc347be0a0b680bd39a72ac94418d211f5d777 Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 18 Nov 2020 22:23:33 +0100 Subject: ma ham: use new home-assistant merge function --- makefu/2configs/ham/zigbee2mqtt/osram.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 makefu/2configs/ham/zigbee2mqtt/osram.nix (limited to 'makefu/2configs/ham/zigbee2mqtt') diff --git a/makefu/2configs/ham/zigbee2mqtt/osram.nix b/makefu/2configs/ham/zigbee2mqtt/osram.nix new file mode 100644 index 000000000..d1bf2b296 --- /dev/null +++ b/makefu/2configs/ham/zigbee2mqtt/osram.nix @@ -0,0 +1,14 @@ +{ + + +availability_topic: /ham/zigbee/bridge/state +command_topic: /ham/zigbee/flur_arbeitszimmer_osram2/set + + - platform: "mqtt" + state_topic: "zigbee2mqtt/" + availability_topic: "zigbee2mqtt/bridge/state" + payload_on: true + payload_off: false + value_template: "{{ value_json.battery_low}}" + device_class: "battery" +} -- cgit v1.2.3 From 266e2ee5195587832b73806f625d4f892c13a527 Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 18 Nov 2020 22:26:41 +0100 Subject: ma zigbee2mqtt: add comment about mkForce --- makefu/2configs/ham/zigbee2mqtt/default.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'makefu/2configs/ham/zigbee2mqtt') diff --git a/makefu/2configs/ham/zigbee2mqtt/default.nix b/makefu/2configs/ham/zigbee2mqtt/default.nix index 36d332d42..a75075273 100644 --- a/makefu/2configs/ham/zigbee2mqtt/default.nix +++ b/makefu/2configs/ham/zigbee2mqtt/default.nix @@ -17,6 +17,7 @@ in state = [ "${dataDir}/configuration.yaml" "${dataDir}/state.json" ]; systemd.services.zigbee2mqtt = { + # override automatic configuration.yaml deployment serviceConfig.ExecStartPre = lib.mkForce "${pkgs.coreutils}/bin/true"; after = [ "home-assistant.service" -- cgit v1.2.3