NFC Tag Automation Ideas: How to Setup!

Thanks for watching my new video with NFC tag ideas! If you haven’t seen it yet, here’s the link.

In this article, I’m going to dive into the specifics of how I set up each idea. Some are more simple, while others are advanced.

I set up these ideas on Android, using Home Assistant. But whether you’re using iOS or Android, hopefully this helps you get started with the logic for setting these up. Feel free to use the links to jump around.

NFC Tag Automations

Affiliate Disclosure: This page has affiliate links, which earn us commission at no cost to you. 

Here are links to the NFC tags we use:

Also, I show specifics on how to get started with NFC tags in iOS, Android, and Home Assistant in an older video you can watch here.

All right let’s get into the ideas!


Recycling Bin Reminder

I put an NFC tag onto my recycling bin. If I haven’t scanned it, then it will repeatedly remind me to take out the recycling on a certain day.

For the reminder I just have the automation triggered every hour. The conditions are if I am home and I haven’t scanned the tag on the bin yet. To keep track if the bin has been scanned, I created an input boolean helper in Home Assistant (virtual switch) that if it’s turned off, then remind me.

alias: Trash Taken Out Reminder
description: ''
trigger:
  - platform: time
    at: '20:00:00'
  - platform: time
    at: '21:00:00'
  - platform: time
    at: '22:00:00'
  - platform: time
    at: '23:00:00'
condition:
  - condition: time
    before: '00:00:00'
    weekday:
      - tue
    after: '00:00:00'
  - condition: state
    entity_id: input_boolean.trash_taken_out
    state: 'off'
  - condition: state
    entity_id: device_tracker.pixel_6_pro
    state: home
action:
  - service: script.android_notification_basic
    data:
      title: Take out the trash
      message: stop being lazy and wheel the trash out
mode: single

Then once I scan it, the input boolean turns on so it will stop reminding me. The great thing about this is if I end up taking the trash can out early, I won’t be notified either.

alias: Trash Can Scanned
description: ''
trigger:
  - platform: tag
    tag_id: 73e21846-7a87-4802-9605-b12c63294e57
condition: []
action:
  - service: input_boolean.turn_on
    data: {}
    target:
      entity_id: input_boolean.trash_taken_out
mode: single

NFCs in the car?!

NFC tags also work great in the car! I put one in the middle console and I scan it if I’m about to head home after being gone for awhile. It tells my thermostats to begin cooling the house so it’s not too hot when I get home.

I am using Ecobee thermostats and I just set it to resume schedule and it takes them out of Away mode.

alias: Tesla Console Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: 6ab843c1-a46a-4da7-9a0b-c13fd3166e36
condition: []
action:
  - service: script.android_notification_basic
    data:
      title: Car going home scanned
      message: Thermostats resuming schedule
  - service: script.thermostats_resume_schedule
    data: {}
mode: single

I also put an NFC tag behind the visor to help me open the garage quicker. I’m using MyQ integrated into Home Assistant.

alias: Tesla Visor Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: 39090c11-55d4-44f2-9ab3-c6cf36631f6b
condition: []
action:
  - service: cover.open_cover
    data: {}
    target:
      entity_id: cover.garage_door_main
mode: single

One other quick idea that I’ve shown previously: put one on your dash and scan it when you’re headed home from work. It will text your spouse and let them know that you’re on the way, plus pull up traffic information on your app. See more info at this link.


Washer and dryer timer

When I scan the NFC tag on my washer or dryer, it sets a timer on my phone so that I remember to switch the laundry over.

I had to create a Timer Helper in Home Assistant. This allows me to start the timer when the tag is scanned and the timer is not running. Or cancel it if it’s scanned again and the timer is running.

alias: Washer Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: f8ae45d7-b11c-4fce-b6e6-11d32ed518a9
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: timer.washer
            state: idle
        sequence:
          - service: timer.start
            data: {}
            target:
              entity_id: timer.washer
    default:
      - service: timer.cancel
        data: {}
        target:
          entity_id: timer.washer
      - service: script.android_notification_basic
        data:
          title: Washer timer canceled
          message: Scan the tag again to start the timer
      - service: script.alexa_routine_washer_finished
        data: {}
mode: single

Toilet paper announcement

This one is simple but effective: when I scan the NFC tag, it announces to the whole house that someone in the bathroom needs toilet paper.

I am using the Alexa Media Player integration you can install using HACs in Home Assistant to call an Alexa Routine to announce it on all the devices. I could do this just using Home Assistant, but I find it easier to manage using an Alexa Routine.

alias: Toilet Paper Out Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: b585d709-49fc-4bdc-97a1-fd5daa6e5a9f
condition: []
action:
  - service: media_player.play_media
    data:
      media_content_type: routine
      media_content_id: toiletpaperout
    target:
      entity_id: media_player.reed_s_echo
mode: single

Away mode

Put an NFC tag by your garage door. When you scan it on your way out the door, it can put your home in away mode: thermostats turn up, robot vacuum starts, the alarm is armed, etc.

alias: Away scanned
description: ''
trigger:
  - platform: tag
    tag_id: 635d64c4-f2cb-46cc-afeb-b5c033cb51cc
condition: []
action:
  - service: script.android_notification_basic
    data:
      title: Everyone is away
      message: thermostats in away mode
  - service: script.thermostats_in_away_mode
    data: {}
  - service: script.alexa_routine_start_robot_vacuum
    data: {}
mode: single

Night stand automations

On my wife’s night stand, the NFC tag turns off all of the lights in the house.

I probably should have a script to do this and call that, but I was lazy when I originally set it up. I will get around to it… actually I probably won’t.

alias: Aly nfc night stand scanned
description: ''
trigger:
  - platform: event
    event_type: aly_nightstand_tag
condition: []
action:
  - service: script.main_lights_fade_off
    data: {}
  - type: turn_off
    device_id: 4ae67b033c329e29aa7f547c3958be4e
    entity_id: light.sengled_candle_hallway
    domain: light
  - type: turn_off
    device_id: 14288e4b2e38704bf053ad782a62eff5
    entity_id: light.hallway_hallway_light_2
    domain: light
  - type: turn_off
    device_id: ec79ee00289f7dd60a8438d44f79bce9
    entity_id: switch.hallway_dropzone_light
    domain: switch
  - type: turn_off
    device_id: 141a3b0f3cd56552f6f522c2c4f95677
    entity_id: light.hallway_master_bed_hall_lights
    domain: light
  - type: turn_off
    device_id: 17e8198d1a22d5ddf2f27845209a5d50
    entity_id: switch.master_bath_middle_lights_led
    domain: switch
  - type: turn_off
    device_id: d7b9dbd283f7e37284f48c4c9d840f09
    entity_id: light.hue_bed_right
    domain: light
  - type: turn_off
    device_id: f87760dc3ae9a9c0256a351b34805264
    entity_id: light.master_bedroom_main_lights
    domain: light
  - type: turn_off
    device_id: b919f352b133de9c91b6f827bfceb8b0
    entity_id: light.gledopto_gl_c_008_ca95a523_level_light_color_on_off
    domain: light
  - type: turn_off
    device_id: 91167d3aa74bb2eb2eb946d33b343bad
    entity_id: light.hue_left_light
    domain: light
mode: single

On my night stand, the NFC tag triggers a morning routine in the morning, or turns the lights dim in the evening.

Just use Time Conditions for this. I did a whole video on Conditions you can check out here for more info.


Hidden tags in the family room

I hid an NFC tag behind a canvas artwork in my family room. When scanned, this will set the family room in “movie mode” so that we can watch a movie without triggering motion lights.

I’m using Input Booleans to disable the motion sensors. So if the Input Boolean is on, then the motion automation will not run using a Condition. But when I scan the canvas, this is the automation.

alias: Family Room Picture Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: 147508ae-770e-4631-9e03-341469074ef5
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.movie_mode
            state: 'off'
        sequence:
          - service: script.android_notification_basic
            data:
              title: Movie mode enabled
              message: motion sensors temporarily disabled
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id:
                - input_boolean.temp_disable_family_motion
                - input_boolean.temp_disable_kitchen_motion
          - service: scene.turn_on
            data: {}
            target:
              entity_id: scene.living_room_off_ha
          - type: turn_on
            device_id: bd6ca35edd01c962fb4b199357055e75
            entity_id: light.wiz_led_strip
            domain: light
            brightness_pct: 10
      - conditions:
          - condition: state
            entity_id: input_boolean.movie_mode
            state: 'on'
        sequence:
          - service: script.android_notification_basic
            data:
              title: Movie mode off
              message: Motion sensors working again
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id:
                - input_boolean.temp_disable_family_motion
                - input_boolean.temp_disable_kitchen_motion
          - service: scene.turn_on
            data: {}
            target:
              entity_id: scene.evening_living_room_lights_ha
    default: []
  - service: input_boolean.toggle
    data: {}
    target:
      entity_id:
        - input_boolean.movie_mode
mode: single

You could also hide them in a book, under coasters, or anywhere around your house.


Wall plate ideas

I’ve also hidden NFC tags behind the light switch plates on my wall. This is a great place to scan and turn on the lights. Or here’s an idea from one of you: have it pull up documentation about the light switch: what automations it runs, which electrical breaker will turn it on/off, and more.


Bedtime routine

I hid the tag behind the light switch plate again, and whenever I scan it, a bedtime routine kicks off. This dims the lights and plays lullabies for the kids.

alias: Kids Room Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: c30821e2-71db-4bd9-b67f-33c307a5e440
condition: []
action:
  - service: media_player.play_media
    data:
      media_content_type: routine
      media_content_id: kidsbedtime
    target:
      entity_id: media_player.reed_s_echo
  - service: light.turn_off
    data:
      transition: 10
    target:
      entity_id: light.kids_bedroom_main_lights
mode: single

Chore tracking

You can track any chores with an NFC tag. After a week of not cleaning out my robot vacuum water tank, my smart home alerts me that it’s time to clean it again. When I do, I scan the tag and it’s marked complete for another week.

For this I created a “Counter” Helper in Home Assistant. That way I can have an automation run everyday to add to this Counter. Then an automation gets triggered if the Counter is over 6, I’m home, and it’s 8pm so it’s a good time for me to clean it.

alias: Clean Robot Dock
description: ''
trigger:
  - platform: time
    at: '20:00:00'
condition:
  - condition: numeric_state
    entity_id: counter.clean_vacuum_dock_counter
    above: '6'
  - condition: state
    entity_id: device_tracker.pixel_6_pro
    state: home
action:
  - service: script.android_notification_basic
    data:
      title: Time to clean the vacuum dock
      message: Scan the NFC tag after it is cleaned
mode: single

Then when I scan the tag on the robot vacuum dock it resets the counter.

alias: Robot Dock Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: 8a5b9efb-3420-47a0-9a60-344a81a936ef
condition: []
action:
  - service: counter.reset
    data: {}
    target:
      entity_id: counter.clean_vacuum_dock_counter
mode: single

Storage bins

Our garage storage bins can be kind of a mess, but with an NFC tag you can easily organize a list of what’s in each bin. Then when I scan it, I can see at a glance everything that’s inside.

To keep this more streamlined, I made all the storage bins use one automation. Then on each trigger for scanning the NFC tag, I added a trigger-id. That way I can know which action to run because I know what NFC tag was scanned. That way I don’t have 10+ automations for all the storage bins.

alias: Storage Bin Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: b0c8229b-052b-42cf-b2fc-098d3c045ca2
    id: bin1-scanned
  - platform: tag
    tag_id: 687df94d-242f-4f2c-a1c6-6dcebf3076fc
    id: bin2-scanned
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: bin1-scanned
        sequence:
          - service: script.android_notification_basic
            data:
              title: In bin 1
              message: Christmas lights, oriments, stockings
      - conditions:
          - condition: trigger
            id: bin2-scanned
        sequence:
          - service: script.android_notification_basic
            data:
              title: In bin 2
              message: Halloween decorations, Fall colors
    default:
      - service: script.android_notification_basic
        data:
          title: In this bin
          message: Not set yet
mode: single

Override motion lights

My garage lights turn off after 10 minutes of no motion, but I can override this easily. When I scan an NFC tag on my workbench, it will keep the garage lights on.

For this I created another Input Boolean to keep track if this Override is active or not. Then when I scan the tag it gives me a notification letting me know if it’s on/off. Lastly I put a condition before the lights turn off to not run if this Input Boolean is On.

alias: Garage Lights Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: 5618a3f0-3b3b-4d97-901c-273044236417
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.garage_lights_override
            state: 'off'
        sequence:
          - service: script.android_notification_basic
            data:
              title: Garage lights will stay on
              message: The lights will not turn off automatically
      - conditions:
          - condition: state
            entity_id: input_boolean.garage_lights_override
            state: 'on'
        sequence:
          - service: script.android_notification_basic
            data:
              title: Override off
              message: The lights will turn off after a fixed time
    default: []
  - service: input_boolean.toggle
    data: {}
    target:
      entity_id: input_boolean.garage_lights_override
mode: single

Pass off music

By scanning an NFC tag near my smart speaker, I can have the music playing on my phone change Spotify source and start playing on the speaker.

I’m just using Home Assistant to change the Spotify source to the Echo dot the NFC tag is next to and then start playing.

alias: Studio NFC Echo Scanned
description: ''
trigger:
  - platform: tag
    tag_id: 537fb3d3-9b1c-456c-b632-855cddd024db
condition: []
action:
  - service: script.spotify_source_studio
    data: {}
  - service: media_player.media_play
    data: {}
    target:
      entity_id: media_player.spotify_kleinman_family
mode: single

Pause doorbell alerts

Whenever we are pulling weeds or cleaning the front porch, we get nonstop motion alerts from our doorbell, and it can be annoying. I added an NFC tag near my front door. When I scan it, doorbell motion alerts are paused.

Similar to the previous ones above, I’m using an Input Boolean to keep track of this being enabled/disabled. Once I scan it I give myself a notification if they are paused or not.

alias: Front Door Light Tag Scanned
description: ''
trigger:
  - platform: tag
    tag_id: a8cc1479-9e90-4e48-8800-6e594ab2030f
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.doorbell_notification_override
            state: 'off'
        sequence:
          - service: script.android_notification_basic
            data:
              title: Motion notifications disabled
              message: Scan again to re-enable
      - conditions:
          - condition: state
            entity_id: input_boolean.doorbell_notification_override
            state: 'on'
        sequence:
          - service: script.android_notification_basic
            data:
              title: Override off
              message: Motion notifications enabled again
    default: []
  - service: input_boolean.toggle
    data: {}
    target:
      entity_id:
        - input_boolean.doorbell_notification_override
mode: single

Then on my doorbell automation, I just have an automation to skip the notification if that Input Boolean is on. There is also some other things going on like not being notified too often or if I just opened the front door that I’ve explained in previous videos.

alias: Front Doorbell Motion
description: ''
trigger:
  - platform: state
    entity_id: sensor.g4_doorbell_2_detected_object
    to: person
condition:
  - condition: device
    type: is_off
    device_id: 3810804cff52ec7e2778850796633c62
    entity_id: switch.virtual_front_door
    domain: switch
    for:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - condition: template
    value_template: >
      {% if states.automation.front_doorbell_motion.last_triggered is not none
      %}
                {% if as_timestamp(now()) | int - as_timestamp(states.automation.front_doorbell_motion.attributes.last_triggered) | int > 60 %} true {% else %} false
                {% endif %}
              {% else %}
              false
              {% endif %}
  - condition: state
    entity_id: input_boolean.doorbell_notification_override
    state: 'off'
action:
  - service: script.android_notification_basic
    data:
      title: Someone is at the front door
      message: the doorbell detected a person
  - service: script.alys_phone_push_notification
    data:
      title: Someone is at the front door
      message: the doorbell detected a person
  - service: camera.snapshot
    target:
      entity_id:
        - camera.g4_doorbell_2_high
    data:
      filename: /config/www/tmp/doorbell_snap.jpg
  - delay:
      hours: 0
      minutes: 0
      seconds: 1
      milliseconds: 0
  - service: notify.firestick_4k_living_room
    data:
      data:
        fontsize: large
        position: bottom-right
        duration: 10
        transparency: 0%
        color: blue
        interrupt: 0
        file:
          path: /config/www/tmp/doorbell_snap.jpg
      title: Front door motion
      message: Someone is at the door
mode: single

Lastly, I’m using lots of Input Booleans to keep track of overrides to make sure to reset those everyday to make sure they don’t accidentally get left on making the automation stop working. I have this run everyday at 5am to reset all my booleans.

alias: Override Booleans Disable Daily
description: ''
trigger:
  - platform: time
    at: '05:00:00'
condition: []
action:
  - service: input_boolean.turn_off
    target:
      entity_id:
        - input_boolean.babysitter_override
        - input_boolean.guest_override
        - input_boolean.away_package_notification
        - input_boolean.play_music_paused
        - input_boolean.temp_disable_family_motion
        - input_boolean.kid_vitamins
        - input_boolean.trash_taken_out
        - input_boolean.car_going_home
        - input_boolean.garage_lights_override
        - input_boolean.doorbell_notification_override
        - input_boolean.temp_disable_kitchen_motion
    data: {}
  - service: counter.increment
    data: {}
    target:
      entity_id: counter.clean_vacuum_dock_counter
  - service: unifiprotect.set_doorbell_lcd_message
    data:
      entity_id: camera.g4_doorbell_2
      message: Hello!
mode: single

Thanks for checking out my NFC tag ideas! Hopefully this was helpful for you. Please consider subscribing on YouTube so you don’t miss future videos and articles like this!