Blink doorbell trigger event on press

So after searching for a doorbell camera with battery and wireless I came to the conclusion that even we are in 2025 there is no good solution that is cost efficent, can work with HA and is local.

So i took the cheapest blink doorbell and and gave it a simple hardware mod for this scenario:

  • When the doorbell is pressed I get a message on my smartphone with video.
  • When the doorbell is pressed, our stationary HA display get a pop up and plays a ringtone.

The blink doorbell have to beconfigurated that it triggers the normal chime → the relais inside gets triggered.

For that I used a ESP32-C3 Super Mini that is connected to the battery that it only is powered and starts when the button on the blink is pressed.

The ESP32-C3 Super fits on the empty part where the reset button is.
When it gets powered, it connects to the local wifi and sends a webhook request to HA.

Here is the code that have to be uploaded on the ESP32:

#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "YOUR WIFI NETWORK";
const char* password = "YOURPASS";
const char* webhook_url = "http://HOMEASSISTANTIP:8123/api/webhook/WEBHOOKID";
void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
  }
  Serial.println("Connected to WIFI");
  HTTPClient http;
  http.begin(webhook_url);
  int httpCode = http.GET(); 
  if (httpCode > 0) {
    Serial.println("Webhook triggered!");
  } else {
    Serial.println("ERROR");
  }
  http.end();  
}
void loop() {
}

I created an automation that uses a webhook as trigger. Important here: It have to be a GET webhook.
When triggered our stationary HA client gets a pop up (addon Browser Mod) and plays a ringtone (play song on mediaplayer on the client)

Conclusion: 25€ paid for the blink doorbell + 3€ for the ESP32. Now the doorbell can also ring when there is no internet (without video but it can still play a sound).

1 Like

Thanks for this. I’ve ordered a C3 and will implement this.

Hi,

I have done everything as described however when I push the doorbell I hear the relay click however the esp32 does not run, if I plug in the esp32 to a power supply using usb c it works fine, my guess is that it doesnt get enough power when the bell is pressed? Does this look correct

Hi,

do you maybe found a workaround for this? Iam at the same Problem now.

I test something. It looks like that the Ground (orange Cable) dont work. I test it with the 5v port of a usb charger.

5v USB to 5v on ESP32 and Ground from the Doorbell to Ground on the ESP32 = No response

I also test the 3v port of the ESP32 with the internal batterys of the doorbell and this works.

So the problem is, that you dont get the ground from the screw.

EDIT: I fixed it now watch my response below :slight_smile:

IMPORTANT NOTE: You need to Activate the 12v Doorbell in the App!

mine is not working? Any idea what can be wrong ? i dont have any experience with electricity but tried to build the same with the board. with USB cable connected to the board everything works fine, but not with the board connected to screws and batteries … how can i activate the 12v in the app ?

Jus to be clear, there are some things that need to be clarified:

  1. In the Blink App you need yo configure the ring to allow a Digital Chime integration. Then you configure the chime to last 5 seconds. What this actually does is to close the circuit between both screws.

  2. You connect the ESP32-C6 (this is what I used) 3V to the battery in the right positive and the ground to the screw in the right. Then you connect the screw in the left to the negative connection in the battery in the left.

  3. The actual configuration of the script needs to be a “POST” webhook intead of “GET”.

This is the actual code:

#include <WiFi.h>
#include <HTTPClient.h>

// Wi-Fi credentials
const char* ssid = "YOUR SSID";
const char* password = "YOURPASS";

// Home Assistant Webhook URL
const char* webhook_url = "http://HASSIPADDRESS:8123/api/webhook/WEBHOOKID";

void enableExternalAntenna() {
  // Set GPIO3 LOW to enable RF switch control
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);

  // Set GPIO14 HIGH to select external antenna
  pinMode(14, OUTPUT);
  digitalWrite(14, HIGH);
}

void setup() {
  Serial.begin(115200);
  delay(100); // Give Serial time to start

  enableExternalAntenna();  // Enable external antenna

  Serial.println("Connecting to Wi-Fi...");
  WiFi.begin(ssid, password);

  // Wait for connection
  int retries = 0;
  while (WiFi.status() != WL_CONNECTED && retries < 40) {
    delay(250);
    Serial.print(".");
    retries++;
  }

  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("\nâś… WiFi connected");
    Serial.println("IP address: " + WiFi.localIP().toString());
  } else {
    Serial.println("\n❌ Failed to connect to Wi-Fi");
    return;
  }

  delay(1000); // Optional delay to ensure stable connection

  // Send Webhook
  HTTPClient http;
  http.begin(webhook_url);
  http.setTimeout(5000); // 5s timeout
  http.addHeader("Content-Type", "application/json");

  // JSON payload
  String body = "{\"device\":\"esp32\",\"event\":\"ping\"}";

  int httpCode = http.POST(body);
  Serial.printf("HTTP status: %d\n", httpCode);

  if (httpCode > 0) {
    String payload = http.getString();
    Serial.println("Response: " + payload);
  } else {
    Serial.printf("Request failed: %s\n", http.errorToString(httpCode).c_str());
  }

  http.end();
}

void loop() {
  // Nothing here for now
}
  1. you get the webhook from automations in HASS where you need to create the automation script:

when WEBHOOK is received

if

then

  1. In my code I used the external antenna of the ESP32-C6 since in my case the doorbell is not that close of the acces-point, thats why I recommend this one since the ESP32-C6 support wireless antenna connector ( IPEX MHF‑1) and it’s small enough to fit inside the blink.
    If you have issues it’s probably because the integrated antenna in the ESP32 is way too small to reach the wireless access-point.

  2. If everything is ok, when the doorbell button is pressed, the relay inside the blink closes the circuit and the ESP32 gets power. It gets connect to the wireless network and immediately “POSTS” the webhook.

That’s it. It works perfectly. I use a Ring Chime that is integrated with HASS and it’s chimes inside whe the Blink doorbell button is pressed.