renemarc/home-assistant-config

View on GitHub
sensors/misc.yaml

Summary

Maintainability
Test Coverage
#
# Domain statistics
#
# Overview of the number of devices/scripts/sensors for some categories.
#
- platform: template
  sensors:
    count_automations:
      friendly_name: "Automations Count"
      icon_template: "mdi:arrow-decision-auto"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.automation | count }}

    count_automations_disabled:
      friendly_name: "Disabled Automations Count"
      icon_template: "mdi:arrow-decision-auto"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.automation | selectattr('state', 'eq', 'off')
                             | list
                             | count }}

    count_automations_friendly:
      friendly_name: "Automations Count"
      icon_template: "mdi:arrow-decision-auto"
      entity_id:
        - sensor.time
      value_template: >-
        {% set all = states('sensor.count_automations') | int %}
        {% set disabled = states('sensor.count_automations_disabled') | int %}
        {% set enabled = all - disabled %}

        {% if all == 0 %}
          No automation exists.
        {% elif enabled == all %}
          All {{ all }} automations enabled.
        {% elif disabled == all %}
          {{ enabled }} enabled automations, all {{ all }} disabled.
        {% else %}
          {{ enabled }} enabled automations, {{ disabled }} disabled.
        {% endif %}

    count_interfaces:
      friendly_name: "Interfaces Count"
      icon_template: "mdi:gesture-tap"
      entity_id:
        - sensor.time
      value_template: >-
        {% set buttons = states.binary_sensor | map('regex_search','\.flic_')
                                              | select('equalto', True)
                                              | list
                                              | count %}
        {% set displays = states.display | list | count %}
        {% set remotes = states.zwave | map('regex_search','mote')
                                              | select('equalto', True)
                                              | list
                                              | count %}
        {{ buttons + displays + remotes }}

    count_lights:
      friendly_name: "Lights Count"
      icon_template: "mdi:lightbulb"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.light | list | count }}

    count_lights_unavailable:
      friendly_name: "Lights Unavailable Count"
      icon_template: "mdi:lightbulb"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.light | selectattr('state', 'eq', 'unavailable')
                        | list
                        | count }}

    count_motion_sensors:
      friendly_name: "Motion Sensors Count"
      icon_template: "mdi:walk"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.binary_sensor | selectattr('attributes.device_class', 'in', ['door', 'motion'])
                                | list
                                | count }}

    count_motion_sensors_unavailable:
      friendly_name: "Motion Sensors Unavailable Count"
      icon_template: "mdi:walk"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.binary_sensor | selectattr('attributes.device_class', 'in', ['door', 'motion'])
                                | selectattr('state', 'in', ['dead', 'unavailable'])
                                | list
                                | count }}

    count_security_sensors:
      friendly_name: "Security Sensors Count"
      icon_template: "mdi:shield-home"
      entity_id:
        - sensor.time
      value_template: >-
        {% set burglar = states.sensor | map('regex_search','_burglar')
                                       | select('equalto', True)
                                       | list
                                       | count %}
        {% set classes = states.binary_sensor | selectattr('attributes.device_class', 'in', ['moisture', 'smoke'])
                                              | list
                                              | count %}
        {{ burglar + classes }}

    count_security_sensors_unavailable:
      friendly_name: "Security Sensors Count"
      icon_template: "mdi:shield-home"
      entity_id:
        - sensor.time
      value_template: >-
        {% set burglar = states.sensor | map('regex_search','_burglar')
                                       | selectattr('state', 'in', ['dead', 'unavailable'])
                                       | select('equalto', True)
                                       | list
                                       | count %}
        {% set classes = states.binary_sensor | selectattr('attributes.device_class', 'in', ['moisture', 'smoke'])
                                              | selectattr('state', 'in', ['dead', 'unavailable'])
                                              | list
                                              | count %}
        {{ burglar + classes }}

    count_switches:
      friendly_name: "Switches Count"
      icon_template: "mdi:toggle-switch"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.switch | list | count }}

    count_switches_unavailable:
      friendly_name: "Switches Unavailable Count"
      icon_template: "mdi:toggle-switch"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.switch | selectattr('state', 'eq', 'unavailable')
                         | list
                         | count }}

    count_zwave:
      friendly_name: "Z-Wave Nodes Count"
      icon_template: "mdi:z-wave"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.zwave | list | count }}

    count_zwave_unavailable:
      friendly_name: "Zwave Nodes Unavailable Count"
      icon_template: "mdi:z-wave"
      entity_id:
        - sensor.time
      value_template: >-
        {{ states.zwave | selectattr('state', 'eq', 'dead')
                        | list
                        | count }}


#
# Current modes
#
# @see /appdaemon/dashboards/Switchboard.dash
#
- platform: template
  sensors:
    modes_friendly:
      friendly_name: "Mode"
      icon_template: "mdi:emoticon-happy"
      value_template: >-
        {% set counter = 0 %}
        {% set modes = '' %}

        {% if is_state('input_boolean.nap_mode', 'on') %}
          {% set modes = modes + '+ Sleep ' %}
          {% set counter = counter + 1 %}
        {% endif %}

        {% if is_state('input_boolean.night_mode', 'on') %}
          {% set modes = modes + '+ Dark ' %}
          {% set counter = counter + 1 %}
        {% endif %}

        {% if is_state('input_boolean.quiet_mode', 'on') %}
          {% set modes = modes + '+ Quiet ' %}
          {% set counter = counter + 1 %}
        {% endif %}

        {% if is_state('input_boolean.low_mode', 'on') %}
          {% set modes = modes + '+ Eco ' %}
          {% set counter = counter + 1 %}
        {% endif %}

        {% if is_state('input_boolean.scene_mode', 'on') %}
          {% set modes = modes + '+ Scene ' %}
          {% set counter = counter + 1 %}
        {% endif %}

        {% if modes == '' %}
          {% set modes = 'Regular ' %}
          {% set counter = counter + 1 %}
        {% endif %}

        {{ modes.lstrip('+') }}mode
        {%- if counter > 1 -%}
          s
        {% endif %}


#
# Github Public Configuration Repository
#
# @see /custom_components/github_custom/sensor.py
#
# @link https://github.com/renemarc/home-assistant-config
# @link https://www.home-assistant.io/integrations/github/
#
- platform: github
  access_token: !secret github_access_token
  scan_interval: 900
  repositories:
    - path: "renemarc/balena-airthingswave"
      name: "Repo Airthings"
    - path: "renemarc/balena-flic"
      name: "Repo Flic"
    - path: "renemarc/countdoom"
      name: "Repo Countdoom"
    - path: "renemarc/home-assistant-config"
      name: "Repo Config"
    - path: "renemarc/home-assistant-doomsday-clock"
      name: "Repo Doomsday Clock"


- platform: template
  sensors:
    repo_config_clones:
      friendly_name: "Repo Config Clones"
      icon_template: "mdi:checkbox-multiple-blank-outline"
      entity_id:
        - sensor.time_quarterly
      value_template: >-
        {{ state_attr('sensor.repo_config', 'clones') }}

    repo_config_clones_unique:
      friendly_name: "Repo Config Unique Clones"
      icon_template: "mdi:check-box-multiple-outline"
      entity_id:
        - sensor.time_quarterly
      value_template: >-
        {{ state_attr('sensor.repo_config', 'clones_unique') }}

    repo_config_forks:
      friendly_name: "Repo Config Forks"
      icon_template: "mdi:source-fork"
      entity_id:
        - sensor.time_quarterly
      value_template: >-
        {{ state_attr('sensor.repo_config', 'forks') }}

    repo_config_issues:
      friendly_name: "Repo Config Issues"
      icon_template: "mdi:alert-circle-outline"
      entity_id:
        - sensor.time_quarterly
      value_template: >-
        {{ state_attr('sensor.repo_config', 'open_issues') }}

    repo_config_stargazers:
      friendly_name: "Repo Config Stargazers"
      icon_template: "mdi:star-face"
      entity_id:
        - sensor.time_quarterly
      value_template: >-
        {{ state_attr('sensor.repo_config', 'stargazers') }}

    repo_config_views:
      friendly_name: "Repo Config Views"
      icon_template: "mdi:eye-outline"
      entity_id:
        - sensor.time_quarterly
      value_template: >-
        {{ state_attr('sensor.repo_config', 'views') }}

    repo_config_views_unique:
      friendly_name: "Repo Config Unique Views"
      icon_template: "mdi:eye-check-outline"
      entity_id:
        - sensor.time_quarterly
      value_template: >-
        {{ state_attr('sensor.repo_config', 'views_unique') }}


#
# Random positive quotes, to brighten up the day!
#
# @link http://www.lifestalker.com/2017/04/four-word-quotes.html
#
- platform: template
  sensors:
    good_vibes:
      friendly_name: "Good Vibes"
      icon_template: "mdi:emoticon-happy"
      entity_id:
        - sensor.time
      value_template: >-
        {% set vibes = [
          "Be great.",
          "Be happy!",
          "Be in the now.",
          "Be the hero.",
          "Begin anywhere.",
          "Compliment someone today.",
          "Do something great.",
          "Don't worry, be happy.",
          "Dream big dreams.",
          "Enjoy life!",
          "Enjoy the little things.",
          "Everybody loves you!",
          "Follow your own star.",
          "Grab life by the balls.",
          "Hello gorgeous!",
          "It's never too late.",
          "Just go for it.",
          "Just ship it.",
          "Live with passion.",
          "Love yourself.",
          "Never doubt your instinct.",
          "People envy you.",
          "People want to be you.",
          "Pick one thing and do it.",
          "Ride like the wind.",
          "Seize the day!",
          "Start something.",
          "Think big!",
          "Think less. Feel more.",
          "Work hard, stay humble.",
          "You are a kind soul.",
          "You are a winner!",
          "You are an inspiration.",
          "You are awesome!",
          "You are fabulous!",
          "You are the best!",
          "You are the champion...",
          "You are the most awesome!",
          "You are your choices.",
          "You can do great things!",
          "You can move mountains.",
          "You live only once.",
          "You look delicious!",
          "You make people happy.",
          "Your time is now.",
        ] %}
        {% set index = range(0, vibes|length - 1) | random %}

        {{ vibes[index] }}