Build a Doorbell Notification with Zoom Meeting

Ferry Djaja
4 min readNov 4, 2020

This is a proof-of-concept (PoC) app which we can leverage the Zoom Meeting app

I have built a prototype using Zoom Meeting app to notify me if someone rings my doorbell and I can communicate with him or her directly via a voice call from my mobile phone. I am sharing this idea to hope for others to learn, modify and enhance.

Architecture Diagram

The architecture diagram is shown in the screenshot below. It is pretty simple but is working.

NodeJS Server

This is the heart of the application that does the following:

  • Read event from the doorbell sensor.
  • Once event is detected, create a Zoom meeting request by opening the start_url in a browser and save the meeting id.
  • Push the join_url and meeting id to cell phone via email or other push notification method.
  • Server listens to the request from user to end the call. Once received, it will update the meeting id with status “end”.

Ideally, we will deploy the NodeJS server in a minicomputer like Raspberry Pi. But since, there is no Zoom client yet for Raspberry Pi, I need to use my laptop.

On the other end, which is the user (in this case is myself), I will get a push notification from the server. It could be via email or any other method, as long as I can click the link join_url and join the meeting. The default voice call is enabled, thus I can communicate with the caller directly via a voice call.

One thing I still need to find out is how to start video automatically.

Once the conversation has ended, I need to tell the server to update the meeting status to “end”. One possibility is to use Telegram Bot with certain command to tell server, “Hey, I am done. Delete the conversation”. We need to do this, otherwise it will have hanging sessions overtime if you don’t remove it.

Code Implementation

Now let’s take a look at the code implementation. I will not cover how to read the event from the doorbell sensor as it is depends on the device model and I think you can find it anywhere online.

Firstly, you need to install the required libraries:

Install those libraries with this command:

npm install jsonwebtoken opn
git clone https://github.com/zoom/zoom-api-jwt.git

Once you have clone it, update config.js with your API Key and API Secret. Refer to this link how to get the key and secret.

Okay, now we will create a NodeJS app Zoom_CreateMeeting.js to create meeting. Refer to this link for more details.

Take note that I have set approval_type to 0. This is to make sure the participant can join the meeting without need for the host to admit it.

Let’s run this app and you will get the result as shown below.

As you can see from the JSON result, we will get the start_url and join_url with other properties. We will launch the start_url in a browser so it can call the Zoom app client. And we will send the join_url to the mobile device.

Once the both parties are happy and the conversation comes to the end, we need to tell server to update the meeting status to ‘end’.

method: "PUT",
uri: "https://api.zoom.us/v2/meetings/" + meetingID + "/status",
body: {
"action": "end"
},

Run the code with this command (don’t forget to update the meeting ID):

node Update_ZoomMeeting.js

If there is no error, you will get this screen, saying the meeting has ended and we are fine. We can do the same process each time someone ringing the doorbell.

Conclusion

I have built the similar concept with Google Duo but I am not happy with that as most of the times my Duo is just hang.

Feel free to enhance it and share it to others. If you can implement it in Raspberry Pi, do let me know also. If you like it, please subscribe to my Medium channel and give me some claps :)

--

--