Answer Skybell Automatically on Android Using Tasker

Skybell App Opening

Skybell and other video doorbells ring your phone and allow you to see who’s at the door. But they require you to click on the notification and by the time you do that a minute or two may have gone by. In addition you may want to hang a tablet from a wall to act as an electronic peephole, allowing you to see at a glance who’s at the door and to communicate with them.

If you have a Skybell you can do this with Tasker.

Install Skybell, Takser, and Notification Listener Apps

  1. Make sure you have installed your Skybell app.
  2. Android Skybell HD App Install Page

  3. Go to the Google Play store and purchase and install Tasker. Tasker allows you to automate tasks on Android devices. Tasker’s currently $3 and well worth the price.
  4. Google Play Tasker Page

  5. Also from the Google Play store install “Notification Listener” a free plugin for Tasker.
  6. Google Play Notification Listener App Page

    Configure Tasker App To Ring A Bell

  7. In Tasker, click on Profiles tab, then the + sign, and add an Event, Tap “Plugin”, then “Notification Listener”, then “Notification Listener” again:
  8. Notification Listener App Screenshot

  9. Click “Configuration”, and change the event to “Notification to Any”, Click on the App button to select the Skybell App, and change the “Text” option to “You have a visitor at your door.”, settings should look like this:
  10. Tasker Configuration Page - Any Notification Event

  11. Save by clicking on the Checkmark and exiting out.
  12. Back at the Profiles screen, click on “New Task” on the dialog that pops up, name it as “Open Skybell On Ring”, Tap “+”, select “Plugin”, “Notification Listener”, and then “Gestures”:

    Takser Action Plugin

  13. Fill out the Gestures screen by adding “%nlkey” to “Notification Key” and toggle on the “Click on notification”:

    Takser Notification Key Screenshot

  14. Click the checkmark and make sure Tasker and the new profile is enabled. You are done. Your profile tab should have an entry that looks something like this:

    Notification Listener Event

    Now whenever your Skybell rings, tasker will automatically “Tap” on the Skybell notification, and the tablet should automatically open to the live streaming view of your door.

    Troubleshooting: If you are getting notifications but the Skybell app is not opening automatically, make sure you have Tasker and the event/task profile you created above is enabled, and you have permitted Tasker and Notification Listener to have access to the Android notification services (you should have allowed this during setup). If Skybell notifications are not occurring at all, try changing the tablet’s WIFI IP to a static one and use Google’s 8.8.8.8 and 8.8.4.4 DNS as described in my previous post, or uninstalling and reinstalling the Skybell app.

Control Almost Any Infrared Device By Voice

TV Photo by Creedi Zhong on Unsplash

Want to control almost any TV, DVD or other infrared device by voice ? If your device is not a newer model that offers voice assistance, you can add voice control by use of a univeral remote like the Broadlink Mini3 IR Control Hub.

These devices operate like your normal wand remotes with two key differences:

  1. Rather than having a directed beam of infrared which you must point at your device, they flood the room with infrared light so they reach all of the devices in the room that are within a reasonable distance and angle from the universal remote.
  2. They are Wifi enabled and respond to commands you issue over your network.

The simplest way of using the universal remote is to simply follow the manufacturer’s instructions and use the mobile software offered by the manufacturer. However, this will involve using the manufacturer’s cloud account which can expose your home network to vulnerabilities.

The more secure but more complicated approach which I have done is to ditch the manufacturer’s mobile app and cloud account and use Home Assistant installed on a Raspberry Pi (model 3 or higher). The steps are too long to list here, but in short, they involve using an IF This Then That (IFTTT) Google Assistant or Alexa applet to issue a command through Home Assistant to trigger a URL call to your Broadlink universal remote using the Home Assistant broadlink plugin. You will also need to setup a DuckDNS account and a secure SSL connection to your Raspberry Pi. The Home Assistant will allow you to setup the broadlink plugin to issue either one command (e.g., to turn the TV on), or several in a series (e.g., turn the TV on and switch to a particular channel).

Below are two YouTube videos explaining most of the steps other than the IFTTT setup (Note that you only need to listen to the first 11 minutes for the first video for the infrared setup, the remainder is not relevant):

To set up voice commands using IFTTT, use the Google Home Assistant applet to cause a voice command “E.g., Turn on TV” to fetch the DuckDNS URL containing your Home Assistant broadlink command.

Lastly do you have a Roku or Roku enabled TV like the TCL Roku series but it’s not voice enabled ? You can ditch the Univeral Remote entirely as well as the Home Assistant setup and just have the IFTTT Google Assistant applet recipe issue the Roku API url command directly to the Roku device’s API. Much simpler and more reliable!

NOTE: The above advice on the Roku is outdated at least for Google’s Home Assistant. With some limitations, Google Home will now automatically detect Roku and setup voice controls, allowing you to turn on and off, switch apps, etc. See How do I use the Google Assistant with my Roku streaming device? on the Roku support pages.

Updating an Old Music & Sound Intercom System with Skybell HD (Part 2 of 2) (or How to Have Skybell Ring a Virtual Doorbell Using Skybell Sniffer)

Introduction

In the first part of this two part post, I described how I used an old Music & Sound intercom system to power a Skybell HD without having to install a special adapter or a new transformer. This second part will describe how to have the Skybell ring a “virtual doorbell” by causing the Skybell button push to play a doorbell sound over speakers. This is an alternative to hard wiring the Skybell to an analog or electronic doorbell as intended by Skybell or using a service like IFTTT which results in a rather long delay between button push and response.

As background, when the button is pressed on the Skybell or when motion is detected, Skybell sends a message over Wifi through your router to the Skybell computers outside of your home network. While the messages can’t be read as they are encrypted, routers that allow ssh logins can run a tcpdump command to monitor network traffic and detect the button press. Once the button press is detected, a script can be triggered to play a sound file or perform any other action. This method results in a much quicker response time than monitoring Skybell’s cloud servers or using IFTTT.

Pre-Requisites

You will need the following to setup a virtual doorbell with Skybell:

  • A linux server running on your home network ( I use a Raspberry Pi)
  • A router which permits ssh logins (I have a router running dd-wrt firmware which permits ssh)

Installation

  1. Install Skybell Sniffer

  2. Install the Simple Skybell Sniffer following these instructions. This is a slight modification I made to a portion of a Skybell plugin to Homebridge which was developed by Thoukydides. My modification doesn’t require Homebridge and simply is intended to run as a service on a linux systemd based server (e.g., debian stretch). The Skybell Sniffer is a systemd service which runs a tcpdump on your router through an ssh command. The service monitors the tcpdump output and then runs the command you specify when it detects a message indicating that the Skybell button has been pressed. Since the message is detected before it leaves your network, the response time is much quicker (1 to 2 seconds) then having to rely on IFTTT or having to monitor Skybell’s cloud service.

    Once Skybell Sniffer is setup and running, we need to set up the action part of the process. The simplest action would be to play an MP3 file of a doorbell ringing and play that over a speaker connected to your Raspberry Pi through the 3.5 mm jack or through blue tooth. However, I have a number of Google Assistant minis and a few Chromecast audio devices throughout my house and I wanted to cast the doorbell sound over those devices. After some research I discovered harperreed’s Google Home Notifier Webservice. This service allows one to cast an mp3 file on any Google Assistant or Chromecast Audio device on your network. It also allows you to have Google Asssistant say any text you want, e.g., “You have a visitor at the door”, however I have found this service to be unreliable at times so I haven’t included it in this write-up but it is explained in the Google Home Notifier readme.

     

  3. Install Google Home Notifier

  4. [NOTE/UPDATE: I no longer use the Google Home Notifier as it was unreliable. I now use skybell-sniff to run a script that publishes an mqtt topic to Home Assistant. See this revised github post (geekvisit/simple-skybell sniffer) here as well as further instructions in this skybell-actions.sh file on github – this method is much recommended over the below which seems to break every few days. I’m leaving the below only for those who want to try an alternative method or don’t want to install Home Assistant. ]

    I downloaded Google Home Notifier Webservice, renamed “main.py” to “gnotify.py”, edited gnotify.py to specify the name of the Google Assistant device I wanted the doorbell to play on (e.g., “Living Room Mini”), downloaded a doorbell.mp3 sound file that I found on the web and placed it in the “static” subfolder, and then followed the “getting started” instructions to install:

    To have the Google Notifier start up each time the Raspberry Pi boots, I added the following to my crontab:

     

  5. Specify Doorbell Action

  6. I then edited the Skybell Sniffer “skybell-actions.sh” script (path is contained in the last line of /etc/default/skybell-sniff) to add the action I wanted to perform on the press of the door bell – playing the doorbell mp3 file I downloaded:

That was it. The system works fairly well and I have been using it for several months.

There are several advantages and disadvantages to this setup over a hard wired connection to a real doorbell as set forth in the Skybell documentation:

Advantages:

  • No separate analog or electronic doorbell required
  • Infinite actions, sounds, and notifications be triggered

Disadvantages:

  • Requires a full time Raspberry Pi to be running ( I don’t find this to be a problem as the pi is low in electricity usage and I already use one for HomeAssistant, I do recommend the Raspberry Pi 3 on up as the prior versions are less stable. I have found the 3 to be rock solid.)
  •  

  • Relatively complicated – several things can go wrong – wifi could fail, the Pi could fail, the PI could be unplugged, the software programs could stop, someone could turn off or down the speaker and/or Google Assistant/Chromecast Audio device

Despite the disadvantages, I have found this system to work relatively well over the course of several months. The biggest issue has been some instability in the google notifier but I believe I have ironed those out in the scripts. If the doorbell does appear to fail,then simply restart your google notifier by executing the following commands:

TIP: Configure your router so that the Google Home or Chromecast Device you are casting to is assigned a static IP based on the mac address shown in the Google Home app. This will solve an issue where the device may intermittently go offline.