The sticker does not know who is there — the calendar does
The request was an e-ink display with a rotating QR code. What was built is a sticker with no power. Why that answers the same question better.
Contents
- First, straighten out the expectation
- The trick: the sticker does not need to know who is there
- And the interesting case is the one with no appointment
- Cross-checked, not assumed
- Why no rotating code
- Honestly: it is not fully solved
- The sign, and why the wording counts
- The NFC sticker sits in the middle of the QR code
- That the code survives this is measured
- The hardware, with the commonest trap
- What actually disappears
- So what?
The question at stake is mundane: has the chimney sweep been yet?
In a house where nobody is permanently present, tradespeople, gardeners or the sweep turn up, find nobody in, and leave again. Sometimes you find out, sometimes you do not.
The request for this was a small e-ink display at the gate with a QR code that keeps changing and reads from the calendar. What was built is a sticker on wood. No display, no power, no rotating code.
Here is why that is not cutting the wrong corner but the better answer to the same question.
First, straighten out the expectation
It is a guest book, not access control.
Anyone who does not scan leaves no trace. That is not a shortcoming of the implementation but the nature of the thing: a sticker on a gate cannot compel anyone.
It helps with “has the chimney sweep been?”. It does not help with a forgetful gardener.
That belongs at the start, because otherwise the expectation is wrong — and a wrong expectation turns a working solution into a disappointing one.
The trick: the sticker does not need to know who is there
This is the core. The sticker only reports: “somebody scanned at 10:04”. That is all it can do, and all it needs to do.
Who that was is in the calendar. The automation reads the title of the currently running appointment and writes it into the entry.
That has a consequence I only realised while building it: there is no list of trades to maintain. The calendar takes free text. Gardener, chimney sweep, cleaner, delivery — whatever you enter appears later in the visit entry. No dropdown, no upkeep, no exception for the case nobody foresaw.
And the interesting case is the one with no appointment
If no calendar entry is running, the visit is still recorded — as UNANNOUNCED.
That is the entry that actually matters. That the announced gardener came at the announced time is a confirmation. That somebody nobody knew about scanned at 10:04 is information.
Cross-checked, not assumed
Both paths were played through:
| Calendar | Result |
|---|---|
| no appointment | entry: UNANNOUNCED, with timestamp |
| appointment “Gardener” running | entry: Gardener |
Afterwards the test data was removed — list entries deleted, counter reset, test appointment taken out of the calendar. A test whose traces remain falsifies the first real week.
Why no rotating code
The reason behind wanting rotation was a good one: a fixed code can be photographed and called later from home. Then the visitor log says somebody was at the gate while they were on the sofa.
An NFC sticker solves the same problem — without a display, without power, without Wi-Fi at the scan point and without weatherproofing. You have to stand in front of it. An NFC tag cannot be photographed from three metres away.
That removes in one stroke: a power supply at the gate, a device that fails in frost, a Wi-Fi link out there, an enclosure against rain, and the question of what happens when the display stops refreshing.
Honestly: it is not fully solved
The address that gets opened still lands in the visitor’s browser history and can be called again later.
For a guest book that is acceptable — anyone who goes to the trouble of faking a visit will not be stopped by a rotating code either. For access control it would not be acceptable. See above.
The sign, and why the wording counts
The laminated sign reads:
You did not find us in person Please scan briefly — then we know you were here.
That is better than a blank “Please scan”, because it supplies the reason. Somebody standing at a gate seeing an unexplained code will, in case of doubt, not scan it. Somebody who reads what it is for will.
Two sentences of text are worth more here than any technical improvement.
The NFC sticker sits in the middle of the QR code
One target for both routes: whoever uses NFC holds the phone to the centre. Whoever prefers the camera scans the same code. A dashed circle marks the spot — on a 25 mm sticker the hit area is small, and without a marking the visitor searches.
That the code survives this is measured
A hole in the middle costs modules. The highest error-correction level tolerates around 30 per cent loss according to the standard.
Instead of believing that, it was tried through — every variant read back with a decoder:
| Hole diameter | Area share | decoded |
|---|---|---|
| 30 % | 7.1 % | yes |
| 38 % | 11.3 % | yes |
| 42 % | 13.9 % | yes |
| 46 % | 16.6 % | no |
It is built at 34 per cent — clear margin to the limit. And scaled down to 320 pixels the finished code still decodes.
That is the difference between “the standard says this works” and “I have read it”. The limit lies between 42 and 46 per cent, and it does not lie where the 30 per cent from the standard would suggest.
The hardware, with the commonest trap
The sticker goes on wood, so an ordinary tag is enough:
- NTAG213 or NTAG215 — iPhone and Android read these without an extra app. An iPhone does not read Mifare Classic. That is the difference between “the visitor briefly holds up their phone” and “the visitor installs something first”.
- At least 29 to 30 mm. Bigger antenna, bigger range, less “I cannot find the spot”.
- Weatherproof, so PVC or epoxy. Not paper.
And the commonest buying mistake: on metal an ordinary tag does not work. There you need an “on-metal” tag with a ferrite layer. Not needed here because the gate is wood — but anyone sticking their tag to a metal gate and wondering why nothing happens has made exactly this mistake.
What actually disappears
The question. Not the work — it was never work, it was uncertainty.
Before: “I think the sweep was here, there was a note in the letterbox.” Or not, and then you ring up.
Now: a list with timestamps and, where an appointment was running, with names.
And the side effect that has come to matter more to me than the main purpose: you see when somebody was there who was not announced. For a house you do not live in, that is a different kind of information.
So what?
Three things that reach beyond this project:
- Ask what problem the requested feature solves. The wish was a rotating code; the problem was “a photo is enough”. NFC solves the problem without building the feature.
- Let something else do the identification. The scan point does not need to know who is standing there. A calendar you keep anyway knows better and needs no upkeep.
- Measure instead of believing the standard. 30 per cent is in the spec, the limit was at 42. Knowing both cost half an hour.
And the uncomfortable truth at the end: the best decision in this project was to install one device fewer. Any display at the gate would be a device that fails in winter, needs power and eventually wants updating. The sticker does not.
If you want to follow this: use RSS
No newsletter. You give me no address, I keep no list, and nobody has to agree to anything to learn that an article is finished. RSS is the older and, for both sides, the more honest solution.
How it works, and why no newsletter
- 1Get a feed reader. No account needed with an app on your phone or a browser extension; use a hosted service if you prefer.
- 2Add the address above to it.
- 3Done. New articles turn up in your reader by themselves — unread stays unread, and nothing lands between invoices and ads in your inbox.
Why that is better: your reader fetches the file. I get no address and cannot see who reads or whether anyone opened it. Unsubscribing means deleting the entry — no link, no confirmation mail, no me.