There are 2 NFC stickers in my house (so far). I could have buily a button then connected and powered it. This was easier for now.
The first is on the alarm panel. Pressing my phone to this sets the alarm, turns off lights, heaters, espresso machine - and then tells me over Pushover that it succeeded (or not).
The second is stuck beside the bed. This is a toggle. Touching my phone to this moves the house from sleep mode to morning mode.
Sleep mode is lights off, heatpump off, and most heaters off (unless it's winter and we have the oil heaters on low).
Morning mode is lights on in the path from bedroom to kitchen - and the espresso on to warm up.
I don't yet have a robot to make the coffee and deliver it to me. I'm grumpy about that because it's twenty fifteen already!
My first attempt at this, i bought some likely looking candidate NFC stickers from DX.com. They didn't work. My Samsung S5 reports this:
I tried again with these from trademe:
Now i get that the difference is mostly a case of frequency, but also some other factors. Alas most stickers are just sold as "NFC stickers" and a list of phone models. Not really a whole lot of details, so it's a bit hit and miss.
It's worth mentioning RFID here. RFID is just an ID. you read it, you get back the id. You don't write to them. With NFC I can write the command (essentially it's a URL) that maps to a command within an application in my phone.
Here's the trader i got this set of sticker from. This seller has HEAPS of info on the NFC stickers, so A++ recommended.
Next you'll be wondering how i hooked it up to these commands? I didn't need to build this. OpenHAB already has writing to NFC in the android app. I longpress on a command in openhab, and it will let me write it to a sticker.
I add scenes to an items file like this
Group Scenes Switch Scene_Departing (Scenes) Switch Scene_Morning (Scenes)
And create a rule to run on scene change
rule "Scenes Sleeptime" when Item Scene_Sleeptime received command then Heater_DiningRoom.SendCommand("OFF") Lights_All.SendCommand("OFF") end