#-------------------------------------------
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# JuiceBox 40 Support - https://amzn.to/3eA95dV
# https://www.vcloudinfo.com/2018/06/using-home-assistant-to-fix-my-juicebox.html
#-------------------------------------------

juicenet:
    access_token: !secret juicenet_access_token

switch:
  - platform: command_line
    switches:
      juicebox_restart:
        command_on: "/usr/bin/curl -k 'http://192.168.10.91/command/reboot'"
        friendly_name: Restart Juicebox

#############################################################################
###  Automations - Alerts related to the JuiceBox (https://amzn.to/2AZVQ37)
##############################################################################
automation:
  - alias: 'Car Charging Alerts'
    id: fa805e4a-08fa-4626-870f-e3df98ca3d84
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.carlojuice_charging_status

    action:
      - service: script.notify_engine
        data_template:
          value1: "The Garage charger is now in {{ states('sensor.carlojuice_charging_status') }} mode."
          who: 'parents'
          apns_id: 'information'

  - alias: 'Juicebox Self-Heal'
    id: e693f117-c75d-4bb9-a8f3-c104b226d0c5
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.carlojuice_charging_status
        to: 'disconnect'
        for:
          minutes: 6
      - platform: time_pattern
        hours: '/4'

    condition:
      - condition: state
        entity_id: sensor.carlojuice_charging_status
        state: 'disconnect'
        for:
          minutes: 5

      - condition: numeric_state
        entity_id: automation.juicebox_selfheal
        attribute: last_triggered
        above: 10000

      # - condition: template
      #   value_template: >
      #     {%- if states.automation.juicebox_selfheal.attributes.last_triggered -%}
      #       {{ (as_timestamp(now()) - as_timestamp(states.automation.juicebox_selfheal.attributes.last_triggered)) > 10000 }}
      #     {%- else -%}
      #       true
      #     {%- endif -%}

    action:
      - service: homeassistant.turn_on
        entity_id: switch.juicebox_restart

      - service: script.tweet_engine_image
        data_template:
          tweet: >
            {{ [
            "The #JuiceBox Pro had to be restarted. It was unable to connect back to @emotorwerks servers.",
            "Unfortunately, the Juicebox Pro sometimes can no longer connect to @emotorwerks servers.  Fortunately, #HomeAssistant can fix that with a restart!"
            ] | random + " (https://www.vcloudinfo.com/2018/06/using-home-assistant-to-fix-my-juicebox.html) #SelfHeal #EV #BoltEV "}}
          image: >-
            {{ [
            "/config/www/custom_ui/floorplan/images/branding/car.png",
            "/config/www/custom_ui/floorplan/images/branding/bearstone_car.png",
            "/config/www/custom_ui/floorplan/images/branding/batteries.png",
            "/config/www/custom_ui/floorplan/images/branding/charge.png"
            ] | random }}

  - alias: 'JuiceBox AMP Alert!'
    id: b805f213-a938-4d90-8d18-e88ff4d41776
    initial_state: 'on'
    trigger:
      - platform: numeric_state
        entity_id: sensor.carlojuice_amps
        above: 24
        for:
          minutes: 2
      - platform: event
        event_type: event_did_someone_help_juicebox_AMPS

    condition:
      - condition: state
        entity_id: sensor.carlojuice_charging_status
        state: 'charging'

    action:
      - service: input_boolean.turn_on
        entity_id: input_boolean.alert_mode

      - service: script.notify_engine
        data_template:
          value1: "The Juice Box Charger is pulling {{ states('sensor.carlojuice_amps') }} AMPs.  This is above the safety mark of 30.  Please unplug charger immediately."
          who: 'parents'
          apns_id: 'JuiceBox'

      - service: script.speech_engine
        data_template:
          value1: "The Juice Box Charger is pulling {{ states('sensor.carlojuice_amps') }} AMPs.  This is above the safety mark of 30.  Please unplug charger immediately."

      - delay: 00:02:00
      - event: event_did_someone_help_juicebox_AMPS

  - alias: 'JuiceBox Temp Alert!'
    id: ddb36236-6ee1-4ba4-8839-661db3658401
    initial_state: 'on'
    trigger:
      - platform: numeric_state
        entity_id: sensor.carlojuice_temperature
        above: 139
        for:
          minutes: 2
      - platform: event
        event_type: event_did_someone_help_juicebox_TEMP

    condition:
      - condition: state
        entity_id: sensor.carlojuice_charging_status
        state: 'charging'

    action:
      - service: input_boolean.turn_on
        entity_id: input_boolean.alert_mode

      - service: script.notify_engine
        data_template:
          value1: "The Juice Box Charger is running very Hot.  Temperature is around {{ states('sensor.carlojuice_temperature') }} degrees.  This is above the safety mark of 140.  Please unplug the car immediately."
          who: 'parents'
          apns_id: 'JuiceBox'

      - service: script.speech_engine
        data_template:
          value1: "The Juice Box Charger is running very Hot.  Temperature is around {{ states('sensor.carlojuice_temperature') }} degrees.  This is above the safety mark of 140.  Please unplug the car immediately."

      - delay: 00:02:00
      - event: event_did_someone_help_juicebox_TEMP

  - alias: 'JuiceBox Tweet Stat!'
    id: ed7d21d5-0ff7-40e3-9492-213c23a8b964
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.carlojuice_charging_status
        from: 'charging'
    action:
      - delay: '0{{ range(0,3) | random | int }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00'
      - service: script.tweet_engine_image
        data_template:
          tweet: >
            {{ [
            "The #Chevy Bolt Charged for {{(states.sensor.carlojuice_charge_time.state  | int /60) | round() }} minutes and Juiced up {{states.sensor.carlojuice_energy_added.state |int /1000}} KwHs.",
            "The last charging session was {{(states.sensor.carlojuice_charge_time.state  | int /60) | round() }} minutes. Added {{states.sensor.carlojuice_energy_added.state |int /1000}} KwHs ",
            "The Juice Box Pro added {{states.sensor.carlojuice_energy_added.state |int /1000}} KwHs to the #Chevy #BoltEV in {{(states.sensor.carlojuice_charge_time.state  | int /60) | round() }} minutes."
            ] | random + " (https://github.com/CCOSTAN/Home-AssistantConfig#garage) #Electric #Solar"}}
          image: >-
            {{ [
            "/config/www/custom_ui/floorplan/images/branding/car.png",
            "/config/www/custom_ui/floorplan/images/branding/bearstone_car.png",
            "/config/www/custom_ui/floorplan/images/branding/batteries.png",
            "/config/www/custom_ui/floorplan/images/branding/charge.png"
            ] | random }}