#-------------------------------------------
#  This is the configuration account for @BearStoneHA - My Home's automated twitter account.
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
#-------------------------------------------
# homeassistant:
#   customize_glob:
#     "input_select.log_*":
#       icon: mdi:bug
#
#       hidden: False

#Random number - https://www.random.org/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new

notify:
  - name: BearStoneHA
    platform: twitter
    consumer_key: !secret twitter_consumer_key
    consumer_secret: !secret twitter_consumer_secret
    access_token: !secret twitter_access_token
    access_token_secret: !secret twitter_access_token_secret

### Building out some Historical stats for tweeting. #####################
sensor:

  # - platform: sql
  #   db_url: sqlite:///home-assistant_v2.db
  #   queries:
  #     - name: "Solar 24h"
  #       column: 'solar_kwh'
  #       unit_of_measurement: 'kWh'
  #       query: >-
  #         SELECT ROUND(SUM(solar_kwh), 2) AS solar_kwh
  #         FROM (
  #           SELECT AVG(state) AS solar_kwh
  #           FROM states
  #           WHERE entity_id = 'sensor.solar_now'
  #           AND state != 'unknown'
  #           AND last_updated >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 24 HOUR)
  #           GROUP BY HOUR(last_updated)
  #         ) AS total_kwh;

  - platform: history_stats
    name: Doorbell Presses
    entity_id: binary_sensor.skybell_stone_door_button
    state: 'on'
    type: count
    end: '{{ now() }}'
    duration:
      hours: 24

  - platform: history_stats
    name: Speech time
    entity_id: media_player.livingroomCC
    state: 'playing'
    type: time
    end: '{{ now() }}'
    duration:
      hours: 24

  - platform: history_stats
    name: TV time
    entity_id: media_player.living_room_ultra
    state: 'playing'
    type: time
    end: '{{ now() }}'
    duration:
      hours: 24

  - platform: history_stats
    name: Landscaping Light time
    entity_id: group.landscaping
    state: 'on'
    type: time
    end: '{{ now() }}'
    duration:
      hours: 24

  - platform: history_stats
    name: Bolt Charging time
    entity_id: sensor.carlojuice_charging_status
    state: 'charging'
    type: time
    end: '{{ now() }}'
    duration:
      days: 7

### Building some interesting stats for tweeting. ###
  - platform: template
    sensors:
      sensor_count:
        friendly_name: 'Number of Sensors'
        value_template: >
          {%- set domains = ['sensor'] -%}
          {%- for domain in domains -%}
            {%- for item in states[domain] -%}
              {% if loop.first %}
                {{loop.length}}
              {% endif %}
            {%- endfor -%}
          {%- endfor -%}
      automation_count:
        friendly_name: 'Number of Automations'
        value_template: >
          {%- set domains = ['automation'] -%}
          {%- for domain in domains -%}
            {%- for item in states[domain] -%}
              {% if loop.first %}
                {{loop.length}}
              {% endif %}
            {%- endfor -%}
          {%- endfor -%}
      script_count:
        friendly_name: 'Number of Scripts'
        value_template: >
          {%- set domains = ['script'] -%}
          {%- for domain in domains -%}
            {%- for item in states[domain] -%}
              {% if loop.first %}
                {{loop.length}}
              {% endif %}
            {%- endfor -%}
          {%- endfor -%}
      binary_sensor_count:
        friendly_name: 'Number of Binary Sensors'
        value_template: >
          {%- set domains = ['binary_sensor'] -%}
          {%- for domain in domains -%}
            {%- for item in states[domain] -%}
              {% if loop.first %}
                {{loop.length}}
              {% endif %}
            {%- endfor -%}
          {%- endfor -%}
      tracker_count:
        friendly_name: 'Number of Devices'
        value_template: >
          {%- set domains = ['device_tracker'] -%}
          {%- for domain in domains -%}
            {%- for item in states[domain] -%}
              {% if loop.first %}
                {{loop.length}}
              {% endif %}
            {%- endfor -%}
          {%- endfor -%}
      lights_count:
        friendly_name: 'Number of Lights'
        value_template: >
          {%- set domains = ['light'] -%}
          {%- for domain in domains -%}
            {%- for item in states[domain] -%}
              {% if loop.first %}
                {{loop.length}}
              {% endif %}
            {%- endfor -%}
          {%- endfor -%}
      protect_count:
        friendly_name: 'Number of Smoke Detectors'
        value_template: >
          {% if states('group.protects') == 'on' %}
          {% for e in states.group.protects.attributes.entity_id if states(e) == 'on'  %}
          {% if loop.last %}
          {{ loop.index }}
          {% endif %}
          {%- endfor -%}
          {% else %}
          0
          {% endif %}

group:
  tweet_stats:
    entities:
      - sensor.doorbell_presses
      - sensor.landscaping_light_time
      - sensor.hvac_time
      - sensor.speech_time
      - sensor.tv_time
      - sensor.bolt_charging_time
      - sensor.sensor_count
      - sensor.script_count
      - sensor.binary_sensor_count
      - sensor.automation_count
      - sensor.lights_count
      - sensor.tracker_count
      - sensor.protect_count

#############################################################

automation:
  - alias: 'New Twitter follower!'
    hide_entity: True
    trigger:
      - platform: event
        event_type: new_follower

    condition:
      - condition: state
        entity_id: group.bed
        state: 'off'
    action:
      - service: media_player.play_media
        data_template:
          entity_id:
            - media_player.livingroomCC
            - media_player.bedroom_alarm_panel
          media_content_id: "https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/sounds/twitter-chirp.mp3"
          media_content_type: audio/mp4

  - alias: 'Closed Github Issue'
    hide_entity: True
    trigger:
      - platform: event
        event_type: closed_github

    action:
      - service: script.tweet_engine_image
        data_template:
          tweet: >-
            {% set repo = trigger.event.data.repo %}
            {% set issue = trigger.event.data.issue %}
            {% set issueurl = trigger.event.data.issueurl %}
            {% set phrases = [
              "New Code: " ~ issue ~ " " ~ issueurl
            ] %}
            {% set hashtags = [
              "#Github",
              "#SmartHomeCode"
            ] %}
            {{ phrases|random ~ " " ~ hashtags|random }}
          image: >-
            {% set pictures = [
              "/config/www/custom_ui/floorplan/images/branding/repo_ad.png",
              "/config/www/custom_ui/floorplan/images/branding/repo_ad2.png",
              "/config/www/custom_ui/floorplan/images/branding/repo_ad3.png",
              "/config/www/custom_ui/floorplan/images/branding/repo_ad4.png"
            ] %}
            {{ pictures|random }}

  - alias: 'Random House stats'
    hide_entity: True
    trigger:
      - platform: time
        hours: '/2'
        minutes: 45
        seconds: 00
    condition:
      - condition: template
        value_template: >
          {%- if states.automation.random_house_stats.attributes.last_triggered -%}
            {{ (as_timestamp(now()) - as_timestamp(states.automation.random_house_stats.attributes.last_triggered)) > 10000 }}
          {%- else -%}
            true
          {%- endif -%}
    action:
      - delay: '0{{ range(0,2) | random | int }}:{{ range(10,59) | random | int }}:00'
      - service: script.tweet_engine_setup
        data_template:
          pick: >-
            {% set pick = [
              "minecraft",
              "solar", "solar", "solar",
              "robot", "robot", "robot", "robot", "robot", "robot", "robot", "robot", "robot","robot","robot","robot",
              "door", "door", "door",
              "weather", "weather", "weather", "weather", "weather",
              "cloud",
              "internet", "internet", "internet", "internet", "internet",
              "stocks", "stocks", "stocks",
              "night", "night",
              "tv", "tv", "tv"
            ] %}
            {{ pick|random }}
