πŸš— VehicleChargingReminder

:red_car: Vehicle Charging Reminder – Home Assistant Blueprint

Keep your EV or hybrid topped up without worrying about forgetting to plug it in! :zap:

This Home Assistant blueprint sends a friendly mobile app notification if your vehicle is at home :house:, the battery drops below your chosen threshold, and it isn’t plugged in. You can snooze the reminder :alarm_clock: or ignore it completely :x: β€” all from your phone!


Features :sparkles:

  • :white_check_mark: Trigger reminders only when your vehicle is home
  • :white_check_mark: Works with any battery sensor
  • :white_check_mark: Stop reminders automatically if the car is plugged in
  • :white_check_mark: Mobile app notification includes current battery %
  • :white_check_mark: Actionable buttons:
    • Remind me later - Snooze reminder for a set amount of minutes
    • Ignore - dismiss notifications
  • :white_check_mark: Configurable battery threshold, snooze time, and reminder time
  • :white_check_mark: Perfect for Home Assistant Companion App on iOS & Android

Installation :rocket:

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

or manually:

:link: GitHub Repo

  1. Download the blueprint YAML file from this repo
  2. Place it in your Home Assistant folder:
  3. Go to Settings β†’ Automations & Scenes β†’ Blueprints β†’ Import Blueprint in Home Assistant
  4. Select the blueprint and create your automation using your sensors and mobile device

Inputs :memo:

  • Car Battery Sensor: Your vehicle’s battery percentage sensor
  • Vehicle Tracker: Track when your car is at home
  • Home Zone: The zone where the reminder should trigger
  • Charger Status Sensor: Detect if the car is plugged in
  • Charger Connected State: The value that indicates β€œplugged in”
  • Battery Threshold: Battery % at which to notify you
  • Reminder Time: Daily time for the notification
  • Notify Device: Mobile app device that receives the reminder
  • Reminder Text: Optional custom message
  • Snooze Minutes: Time to wait before reminding again if snoozed

How it Works :zap:

  1. At the configured reminder time, the blueprint checks:
  • Is the vehicle home? :house:
  • Is the battery below the threshold? :battery:
  • Is the car not plugged in? :electric_plug:
  1. If all conditions are met, a notification is sent to your mobile device.
  2. Notification includes buttons:
  • Remind me later β†’ notification comes back after the snooze period
  • Ignore β†’ stops further notifications for the day

Example Default Message :speech_balloon:

Vehicle battery is below 80% (currently at 65%). Please plug the vehicle in.


Notes :warning:

  • Make sure you have the Home Assistant Companion App installed and notifications allowed.
  • Actionable buttons may require a restart of the app after importing the blueprint.
  • Works with any EV, hybrid, or car battery sensor compatible with Home Assistant.

Contribute / Feedback :raised_hands:

Found a bug? Want to suggest features? Open an issue or submit a pull request.


Keep your EV happy and avoid low-battery panic! :battery::red_car:

blueprint:
  name: πŸš— Vehicle Charging Reminder
  description: >
    Sends a mobile app notification to remind you to plug in your vehicle if:
    - The vehicle is at home (within the selected zone)
    - The battery is below a set threshold
    - The vehicle is not plugged in

    The notification includes actionable buttons:
    - "Remind me later" (resends after a configurable snooze)
    - "Ignore" (stops further notifications)

    Default message includes the current battery percentage.  

  domain: automation
  source_url: https://github.com/stumiles86/VehicleChargingReminder

  input:
    battery_sensor:
      name: Car Battery Sensor
      description: Sensor entity that reports the vehicle's battery percentage.
      selector:
        entity:
          domain: sensor
          device_class: battery

    vehicle_tracker:
      name: Vehicle Location Tracker
      description: Tracker entity that reports the vehicle's location.
      selector:
        entity:
          domain: device_tracker

    home_zone:
      name: Zone Required For Reminder
      description: The vehicle must be in this zone for notifications to trigger.
      default: zone.home
      selector:
        entity:
          domain: zone

    charger_sensor:
      name: Charger Status Sensor
      description: Sensor indicating if the vehicle is plugged in.
      selector:
        entity: {}

    charger_connected_state:
      name: Charger Connected State
      description: State value representing the vehicle being plugged in.
      default: "on"
      selector:
        text:

    battery_threshold:
      name: Battery Percentage Set Point
      description: Notify if battery is below this level.
      default: 80
      selector:
        number:
          min: 1
          max: 100
          unit_of_measurement: "%"
          mode: slider

    reminder_time:
      name: Reminder Time
      description: Time of day to check and send the reminder.
      selector:
        time: {}

    notify_device:
      name: Device to notify
      description: Device must have the Home Assistant Companion App to receive actionable notifications.
      selector:
        device:
          integration: mobile_app

    reminder_text:
      name: Reminder Text
      description: >
        Custom reminder message.
        Leave blank to use the default: 
        "Vehicle battery is below <set point>% (currently at <current battery>%). Please plug the vehicle in."
      default: ""
      selector:
        text:

    snooze_minutes:
      name: Snooze Time
      description: Minutes before sending another reminder after "Remind me later" is pressed.
      default: 30
      selector:
        number:
          min: 1
          max: 240
          unit_of_measurement: minutes
          mode: slider

mode: restart

trigger:
  - platform: time
    at: !input reminder_time

variables:
  battery_sensor: !input battery_sensor
  tracker: !input vehicle_tracker
  zone_required: !input home_zone
  charger: !input charger_sensor
  charger_state: !input charger_connected_state
  threshold: !input battery_threshold
  custom_message: !input reminder_text
  device: !input notify_device

condition:
  - condition: template
    value_template: "{{ states(battery_sensor) | float(0) < threshold }}"
  - condition: template
    value_template: "{{ is_state(tracker, zone_required.split('.')[-1]) }}"
  - condition: template
    value_template: "{{ states(charger) != charger_state }}"

action:
  - alias: "Send initial actionable notification"
    domain: mobile_app
    type: notify
    device_id: !input notify_device
    title: "Vehicle Charging Reminder"
    message: >
      {% set current_batt = states(battery_sensor) | float(0) %}
      {% if custom_message | length > 0 %}
        {{ custom_message }}
      {% else %}
        Vehicle battery is below {{ threshold }}% (currently at {{ current_batt }}%). Please plug the vehicle in.
      {% endif %}
    data:
      tag: vehicle_charging_reminder
      actions:
        - action: REMIND_LATER
          title: "Remind me later"
        - action: IGNORE
          title: "Ignore"
          destructive: true

  - repeat:
      while:
        - condition: template
          value_template: "{{ states(battery_sensor) | float(0) < threshold }}"
        - condition: template
          value_template: "{{ is_state(tracker, zone_required.split('.')[-1]) }}"
        - condition: template
          value_template: "{{ states(charger) != charger_state }}"

      sequence:
        - wait_for_trigger:
            - platform: event
              event_type: mobile_app_notification_action
              event_data:
                action: REMIND_LATER
            - platform: event
              event_type: mobile_app_notification_action
              event_data:
                action: IGNORE
            - platform: state
              entity_id: !input charger_sensor

        - choose:
            - conditions:
                - condition: template
                  value_template: "{{ wait.trigger.event.data.action == 'REMIND_LATER' }}"
              sequence:
                - delay:
                    minutes: !input snooze_minutes
                - alias: "Send snoozed actionable notification"
                  domain: mobile_app
                  type: notify
                  device_id: !input notify_device
                  title: "Vehicle Charging Reminder"
                  message: >
                    {% set current_batt = states(battery_sensor) | float(0) %}
                    {% if custom_message | length > 0 %}
                      {{ custom_message }}
                    {% else %}
                      Vehicle battery is below {{ threshold }}% (currently at {{ current_batt }}%). Please plug the vehicle in.
                    {% endif %}
                  data:
                    tag: vehicle_charging_reminder
                    actions:
                      - action: REMIND_LATER
                        title: "Remind me later"
                      - action: IGNORE
                        title: "Ignore"

            - conditions:
                - condition: template
                  value_template: "{{ wait.trigger.event.data.action == 'IGNORE' }}"
              sequence:
                - stop: "User ignored reminder"

            - conditions:
                - condition: template
                  value_template: "{{ is_state(charger, charger_state) }}"
              sequence:
                - stop: "Vehicle plugged in"