summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/ham/multi/zigbee2mqtt.nix
blob: 947eb551733d57411dd89470df678b34c35cb07f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# 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";
      hide_entity = "true";
      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";
      hide_entity = "true";
      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;
  };
}