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:
- Timeskey stickers
- Thonsen tags
- GoToTags
- or similar ones here if GoToTags are out stock
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!