###############################################################################
#   @author         :   Jeffrey Stone 
#   @date           :   02/19/2019
#   @package        :   Space
#   @description    :   Tracking space. Inspiration and code taking from https://github.com/CCOSTAN/Home-AssistantConfig#logo
#   @original       :   https://github.com/CCOSTAN/Home-AssistantConfig/blob/master/config/packages/space.yaml 
###############################################################################

homeassistant:
  customize:
    binary_sensor.iss:
      icon: mdi:satellite-variant
      friendly_name: ISS Visibility

      hidden: False
      homebridge_hidden: true
    sensor.launch_window:
      hidden: False
      icon: mdi:rocket
      friendly_name: Rocket Launch Window

binary_sensor:
  - platform: iss
    show_on_map: false

sensor:
  - platform: moon
  - platform: launch_library

  - platform: rest
    scan_interval: 1800
    resource: https://launchlibrary.net/1.2.2/launch/next/10
    # resource: https://raw.githubusercontent.com/cribbstechnologies/ha_config/master/www/test_launch.json
    name: launch window
    # if the current timestamp is in the launch window
    # this sensor will return the UTC timestamp of the launch
    value_template: >-
      {%- for launch in value_json.launches %}
        {% if launch.location.id == 16 or launch.location.id == 17 %}
          {% if strptime(launch.isostart, '%Y%m%dT%H%M%SZ').strftime('%Y-%m-%d') == now().strftime('%Y-%m-%d') %}
            {% set utc_offset_string = now().strftime('%z') %}
            {% set utc_offset_direction = utc_offset_string[:1] %}
            {% set utc_offset_hours = now().strftime('%z')[-4:] %}
            {% set utc_offset_seconds = (utc_offset_hours| int /100) * 60 * 60 %}
            {% if utc_offset_direction == '-' %}
             {{ launch.wsstamp - utc_offset_seconds}}
            {% else %}
              {{ launch.wsstamp + utc_offset_seconds}}
            {% endif %}
          {% endif %}
        {% endif %}
      {% endfor %}

automation:

  - id: iss_tweet
    initial_state: true
    alias: 'ISS Tweet'
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.iss
        to: 'on'
        from: 'off'
    action:
      - service: script.twitter_notify_image
        data_template:
          tweet: >-
            {{ [
            "The #ISS is passing over. Wave. #Space #theycanseeourhouse ",
            "The #ISS just flew by with there are {{states.binary_sensor.iss.attributes.number_of_people_in_space}} people doing cool stuff. #Space #theycanseeourhouse",
            "The #ISS just flew by with {{states.binary_sensor.iss.attributes.number_of_people_in_space}} people in it. #Space #theycanseeourhouse"
            ] | random }}
          image: >-
            {{ [ "/config/www/tweet_images/iss.jpg",
                 "/config/www/tweet_images/iss2.jpg"] | random }}  

  # - id: iss_notification
  #   initial_state: true
  #   alias: 'ISS Notification'
  #   trigger:
  #     - platform: state
  #       entity_id:
  #         - binary_sensor.iss
  #       to: 'on'
  #       from: 'off'
  #   action:
  #     - service: script.ah_report
  #       data:
  #         call_interuption: 1
  #         call_iss: 1
            
  - id: full_moon_tweet
    initial_state: true
    alias: 'Full Moon -Tweet'
    trigger:
      - platform: state
        entity_id: sensor.moon
        to: 'full_moon'
    action:
      - delay: '0{{ (range(1, 5)|random|int) }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00'
      - service: script.twitter_notify_image
        data_template:
          tweet: >-
            {{ [
            "There is a Full Moon out tonight, and this time it's the actual moon and not the neighbor. ",
            "Hey look kids, There's the full moon. ",
            "The moon is huge! And full. "] | random + "#Space #fullmoon"}}
          image: >-
            "/config/www/tweet_images/full_moon.jpg"