I have been using Amazon Blink cameras around the house for quite some time. The main reason why I started this project was much less technical: at night I was regularly woken up by Blink notifications caused by spiders or insects directly in front of the camera. After a while that had to change. I wanted the cameras to wake me up when something relevant happened, not because another spider had discovered the infrared LEDs.
At first I mainly wanted to know whether there was actually a person in the recording. But even person detection is not always enough. A person delivering a letter at night is of course still a person, but I do not want that to create the same alarm as somebody staying around the entrance and doing something else.
Although Blink also offers additional features such as cloud video storage, person and vehicle detection and AI functions, I decided not to add yet another paid subscription.
Much of what I needed was already available in my Home Assistant setup: local processing, notifications, Alexa/Echo integration, AI Tasks and, most importantly, the possibility to define my own rules. That gave me much more flexibility than simple person detection and allowed Home Assistant to decide which events should actually trigger an alarm.
My Blink installation has grown over time as well. Some older cameras still use Blinkβs legacy cloud storage, while a newer camera uses local storage. From the Home Assistant side I can handle both in the same processing chain. As soon as a new recording is available, I save it locally and process it in the same way.
AI analysis and the mailbox exception
When Home Assistant detects a new Blink recording, the video is saved locally first. I then extract three frames from the clip, roughly at 1%, 35% and 75%, and send the three images together to a Home Assistant AI Task.
I currently use OpenAI for this, but the implementation uses ai_task.generate_data, so the rest of the setup is not tied to one AI provider. A local provider such as Ollama can be used as well.
The AI is asked to classify only what can actually be seen in the three images. One of the results is whether a person is present. For the entrance camera I added another rule for the mailbox, because that is a situation where simple person detection still gives the correct technical answer but the wrong alarm decision for my use case.
If the image sequence shows a person staying only briefly, interacting directly with the mailbox and then leaving the monitored area again without another relevant action, the event can be treated as a normal delivery. The actual insertion of a letter does not have to be visible in one of the three frames.
I also explicitly tell the AI not to use clothing, uniforms, bags, vehicles, appearance or an assumed profession as evidence. Somebody should not be classified as a delivery person simply because he or she looks like one. For all other cameras this mailbox exception is disabled.
Home Assistant makes the final decision from the structured AI result:
person detected AND NOT delivery detected β person alarm
That distinction is probably the part of the project I find most useful. The AI does not control the alarm system. It describes what it sees, and Home Assistant applies the rule afterwards.
The AI analysis is here:
The recording and frame processing is here:
The frame extraction is here:
Getting the recording into Home Assistant earlier
Before I started the AI part, I already had fast Blink motion notifications through Alexa. When I moved the processing into Home Assistant, I noticed that Alexa normally knew about a motion event quite a bit earlier than the new recording appeared through the Home Assistant Blink integration.
I did not want the new solution to become noticeably slower just because the analysis now happened in Home Assistant, so I reused the existing Alexa event as an early signal.
For each camera I have a small Alexa routine which activates an input_button exposed by Home Assistant. Home Assistant waits a few seconds and refreshes only the corresponding Blink camera. If last_record has not changed yet, it makes one delayed retry. There is no permanent polling loop.
The flow looks roughly like this:
Blink motion β Alexa β Home Assistant β targeted Blink refresh β new last_record
Alexa is only used to speed up the process. It does not create the alarm and it does not tell Home Assistant that a recording is valid. The actual processing only starts when the Blink camera really has a new last_record value.
This also gives the setup a useful fallback. If the Alexa routine misses an event, Home Assistant can still receive the new recording later through the normal Blink integration. The reaction is slower in that case, but the rest of the processing is unchanged.
The fast-trigger automation is here:
The Alexa routine example is here:
Alarm handling
When Home Assistant finally decides that a recording contains a relevant person, it sets a persistent alarm helper and sends a notification. A two-minute cooldown prevents several recordings belonging to the same event from immediately creating repeated alarms.
In my own installation I also use the Echo devices for spoken alarm messages. This means the existing Alexa/Echo setup is used in both directions: Blink motion can reach Home Assistant faster through Alexa, and Home Assistant can later use the Echo devices for alarm output. I left the Echo part out of the public example because speaker names, rooms and notification logic are very specific to each installation.
The example alarm logic is here:
There are some limitations, of course. Blink still depends partly on Blink infrastructure, AI analysis can fail, and my example does not automatically switch to another AI provider when that happens. If the AI result is missing or invalid, no person alarm is generated for that clip. FFmpeg/FFprobe and the local media directories also need to be configured correctly in Home Assistant.
This is not intended to replace a certified alarm system. In my case it is an additional layer around an existing Blink installation. The main benefit is that I can decide inside Home Assistant what is worth an alarm and what is not. And since putting it into operation, spiders and insects have become much less interesting to me at night, which was the original goal after all.
I have put an anonymised reference version of the complete setup on GitHub:
It contains the fast-trigger automation, recording processing, frame extraction, AI Task example, person alarm logic and an Alexa routine example. It is intended as a reference rather than a drop-in package because camera entities, AI providers, notification services and media paths will naturally be different in other installations.
If somebody here is doing something similar with Blink, I would be interested in how you handle the delay between the Blink event and the recording becoming available, and especially how you deal with person detections which are technically correct but should not create an alarm.
Disclosure: This post describes my own project and experiences. I also used ChatGPT to help me structure the article and translate my German draft into English.