#-------------------------------------------
#  ALarm Related Packages
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
#-------------------------------------------
homeassistant:
  customize_glob:
    "device_tracker.nodemcu*":
      icon: mdi:chip

      hidden: False
    "binary_sensor.mcu?_gpio*":
      icon: mdi:security-home

      hidden: False

  customize:
    binary_sensor.MCU1_GPIO4:
      friendly_name: 'Paige Window'
    binary_sensor.MCU1_GPIO5:
      friendly_name: 'Front Door'
    binary_sensor.MCU1_GPIO10:
      friendly_name: 'Dining Room Windows'
    binary_sensor.MCU1_GPIO12:
      friendly_name: 'Interior Garage Door'
    binary_sensor.MCU1_GPIO13:
      friendly_name: 'Front Den Windows'
    binary_sensor.MCU1_GPIO14:
      friendly_name: 'Office Window'


    binary_sensor.MCU2_GPIO4:
      friendly_name: 'Dinette Windows'
    binary_sensor.MCU2_GPIO5:
      friendly_name: 'Back Door'
    binary_sensor.MCU2_GPIO9:
      friendly_name: 'Master Slider'
    binary_sensor.MCU2_GPIO10:
      friendly_name: 'Master Bathroom Window'
    binary_sensor.MCU2_GPIO12:
      friendly_name: 'Main Slider'
    binary_sensor.MCU2_GPIO13:
      friendly_name: 'Upstairs Bedroom Window'
    binary_sensor.MCU2_GPIO14:
      friendly_name: 'Justin Window'

    binary_sensor.MCU3_GPIO4:
      friendly_name: 'Stacey Bedroom Window'
    binary_sensor.MCU3_GPIO5:
      friendly_name: 'Carlo Bedroom Window'
    binary_sensor.MCU3_GPIO10:
      friendly_name: 'Master Bedroom Window'
    binary_sensor.MCU3_GPIO14:
      friendly_name: 'Upstairs Windows'
    binary_sensor.MCU3_Light:
      friendly_name: 'Panel Door'

    group.entry_points:
      friendly_name: Alarm Entry Points
      homebridge_hidden: true
    group.interior_door:
      friendly_name: Interior doors
      homebridge_hidden: true
#-------------------------------------------
binary_sensor:
  - platform: mqtt
    state_topic: "NodeMCU1/GPIO4/Status"
    name: "MCU1_GPIO4"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU1/GPIO5/Status"
    name: "MCU1_GPIO5"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU1/GPIO10/Status"
    name: "MCU1_GPIO10"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU1/GPIO12/Status"
    name: "MCU1_GPIO12"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU1/GPIO13/Status"
    name: "MCU1_GPIO13"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU1/GPIO14/Status"
    name: "MCU1_GPIO14"
    payload_on: 1
    payload_off: 0
    device_class: opening

  - platform: mqtt
    state_topic: "NodeMCU2/GPIO4/Status"
    name: "MCU2_GPIO4"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU2/GPIO5/Status"
    name: "MCU2_GPIO5"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU2/GPIO9/Status"
    name: "MCU2_GPIO9"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU2/GPIO10/Status"
    name: "MCU2_GPIO10"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU2/GPIO12/Status"
    name: "MCU2_GPIO12"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU2/GPIO13/Status"
    name: "MCU2_GPIO13"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU2/GPIO14/Status"
    name: "MCU2_GPIO14"
    payload_on: 1
    payload_off: 0
    device_class: opening

  - platform: mqtt
    state_topic: "NodeMCU3/GPIO4/Status"
    name: "MCU3_GPIO4"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU3/GPIO5/Status"
    name: "MCU3_GPIO5"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU3/GPIO10/Status"
    name: "MCU3_GPIO10"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU3/GPIO14/Status"
    name: "MCU3_GPIO14"
    payload_on: 1
    payload_off: 0
    device_class: opening
  - platform: mqtt
    state_topic: "NodeMCU3/Light/Status"
    name: "MCU3_Light"
    payload_on: 1
    payload_off: 0
    device_class: opening

# input_boolean:
#   elephant:
#     name: Elephant
#     initial: off
#-------------------------------------------
group:
  entry_points:
    entities:
      - binary_sensor.MCU1_GPIO4
      - binary_sensor.MCU1_GPIO5
      - binary_sensor.MCU1_GPIO10
      - binary_sensor.MCU1_GPIO12
      - binary_sensor.MCU1_GPIO13
      - binary_sensor.MCU1_GPIO14
      - binary_sensor.MCU2_GPIO4
      - binary_sensor.MCU2_GPIO5
      - binary_sensor.MCU2_GPIO9
      - binary_sensor.MCU2_GPIO10
      - binary_sensor.MCU2_GPIO12
      - binary_sensor.MCU2_GPIO13
      - binary_sensor.MCU2_GPIO14
      - binary_sensor.MCU2_GPIO15
      - binary_sensor.MCU3_GPIO4
      - binary_sensor.MCU3_GPIO5
      - binary_sensor.MCU3_GPIO10
      - binary_sensor.MCU3_GPIO14
  # interior_door: - Moved out to Doors Group.
  #   entities:
  #     - binary_sensor.kitchen_door_opened
  #     - binary_sensor.MCU3_Light
#-------------------------------------------#-------------------------------------------
automation:
  - alias: 'Turn off HVAC in window/door is opened'
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.MCU1_GPIO4
          - binary_sensor.MCU1_GPIO5
          - binary_sensor.MCU1_GPIO10
          - binary_sensor.MCU1_GPIO12
          - binary_sensor.MCU1_GPIO13
          - binary_sensor.MCU1_GPIO14
          - binary_sensor.MCU2_GPIO4
          - binary_sensor.MCU2_GPIO5
          - binary_sensor.MCU2_GPIO9
          - binary_sensor.MCU2_GPIO10
          - binary_sensor.MCU2_GPIO12
          - binary_sensor.MCU2_GPIO13
          - binary_sensor.MCU2_GPIO14
          - binary_sensor.MCU3_GPIO4
          - binary_sensor.MCU3_GPIO5
          - binary_sensor.MCU3_GPIO10
          - binary_sensor.MCU3_GPIO14
        to: 'on'
        from: 'off'
        for:
          minutes: 5

    condition:
      - condition: template
        value_template: "{{ states('climate.downstairs') != 'off' }}"

    action:
      - service: climate.set_operation_mode
        data:
          entity_id: climate.downstairs
          operation_mode: 'off'
      - service: script.speech_engine
        data_template:
          value1: "The {{ trigger.to_state.attributes.friendly_name }} has been opened for about 5 minutes.  I will shut down the Air Conditioner so you can enjoy the fresh air."
          call_outside_weather: 1
          call_inside_weather: 1
#-------------------------------------------#-------------------------------------------
  - alias: 'Turn HVAC back on when all doors/windows are closed.'
    trigger:
      - platform: state
        entity_id:
          - group.entry_points
        to: 'off'
        from: 'on'
        for:
          minutes: 5

    condition:
      - condition: template
        value_template: "{{ states('climate.downstairs') == 'off' }}"

    action:
      - service: climate.set_operation_mode
        data:
          entity_id: climate.downstairs
          operation_mode: 'auto'

#-------------------------------------------#-------------------------------------------
  - alias: 'Alarm lights in Living room'
    trigger:
      - platform: state
        entity_id:
          - group.entry_points
      - platform: state
        entity_id: group.all_covers

    condition:
      condition: and
      conditions:
        - condition: state
          entity_id: sun.sun
          state: 'below_horizon'
        - condition: state
          entity_id: group.bed
          state: 'off'

    action:
      - service: light.turn_on
        entity_id:
          - group.living_room_accents
        data_template:
          color_name: >
            {% if states.group.entry_points.state == 'on' or states.group.all_covers.state != 'closed' -%}
            red
            {% else %}
            gold
            {% endif %}

#-------------------------------------------#---
  - alias: "Panel Door opened"
    hide_entity: True
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.MCU3_Light
        to: 'off'
        from: 'on'

    action:
      - service: script.notify_engine
        data_template:
          value1: 'Someone has opened up the Alarm Panel Door!'
