Skybell HD Component

I have a Skybell and would love to setup some automations with it. It is supported by IFTTT and Stringify. Just curious if this is a component to be added to HA in the near future?

1 Like

BUMP please!

Also have a skybell hd and would like to see integration with home assistantā€¦

Done! Itā€™ll be out in 0.56!

3 Likes

Nice work thanks!!!

Awesome Work! Most excited Iā€™ve been for a new component in a while!

1 Like

I got this set up as a camera component but I donā€™t think this provided a live feed. I am only seeing a still image from the morning and it is now night time.

iā€™ve got this component configured and working, however, there is a noticeable delay from when the motion sensor is activated, to when an automation is firedā€¦ like 15-20 seconds. This wasnā€™t the case when i had the Skybell device integrated using the Smartthings-MQTT bridge, it was < 2 seconds at most.

I assume this is due to cloud polling plus normal internet latency. How does the Smartthings integration get around that? is there some Skybell push to Smartthings API that isnā€™t available in the ā€œunofficialā€ API that this component is built-on?

and while i do like the image capture, i am also wondering how often that gets updated? i canā€™t seem to pin down a frequency, perhaps itā€™s only when motion or button-press is detected? might be useful to have a date-time stamp on the image. is that the last_check_in attribute?

@chilman408 and @bnhhass

Yeah, as youā€™ve both noted, the camera image can be out of date. As far as I can tell the image that it is showing is the one that the Skybell automatically sends to the server once every hour or so (though it could be more random than that).

Iā€™m planning on bundling the image of the last_button or last_motion events into the platform when I get a chance.

I do know that the Smartthings Skybell integration has a way to request a new picture on demand but I do not own a Smartthings hub so I canā€™t inspect the packets to determine the command that is being used to trigger a new image.

I believe the delay you are seeing is a result of two things:

  1. Cloud polling which happens once every ~30 seconds.
  2. Iā€™m polling the server for a list of events, and the ā€œeventā€ does not appear in the event log until the video of the event is uploaded to Skybell. I suspect there is some parameter I can pass to get a list of events that arenā€™t ā€œcompleteā€ yet but after a dozen or more guesses I couldnā€™t figure it out.

If I owned a smartthings hub I might be able to figure out how to solve these shortcomings, but Iā€™m also worried that the Smartthings hub isnā€™t communicating directly to Skybell so Iā€™m not sure how well that would work either. If anyone has a Smartthings hub and is comfortable with the concept of packet sniffing then that would be a great help.

I really dislike closed APIā€™s.

@MisterWll

Thank you for your great and inspiring reverse engineering work on Skybell HD.

I understand the reasons for the delay between real doorbell button press and respective HA sensor reaction. Iā€™m afraid that no polling mechanism can sort out this problem. Instead, Skybell cloud most likely pushes the events to those few partners under their stupid proprietary partnering programmeā€¦ Maybe due to the scaling of their own infrastructure.

As I really struggled to get the Skybell HD button press events intagrated into my own home automation system, Iā€™ve tried various approaches {IFTT = totally unusable, tracking doorbell DNS requests at router level, too complicated} including Skybell HA Componentā€¦ The lag is still considerable. The fastest way (although realy crazy one, and yes not necessarily reliable ) so far was to mirror the Skybell HD Android APP client notifications upon button press or motion trigger to HA through pushbullet (app on device, HA pushbullet mirroring component) . Although depending on a Skybell APP, Pushbullet and a client device, the response is practically immediate and comparable to Skybell own push notifications.

1 Like

If you have the ability to run tcpdump on your gateway/router then you might be able to use something like the following to monitor the packet lengths of the (encrypted) CoAP packets between the SkyBell HD and its cloud services:

I developed it to generate timely HomeKit button/motion events via homebridge-skybell. However, it just runs an arbitrary command when a trigger occurs so can be used for other purposes.

3 Likes

Hi, I just found again this interesting thread as Iā€™m having now big delays with my skybell as a HA trigger, more 2 to 3 minutes than just 15s (I think this could be almost enough for me.
Thank you @MisterWil for your awesome work with the skybell integration. And thank you @thouky and @fundy to share your ideas on how to find a workaround. However, Iā€™ve never tried Pushbullet and Iā€™m not sure I could do it.
Is there any newer news on trying to reverse the Smartthings method? @did you find the time to try the method that @thoukysuggest? If you feel you could do it having a Smartthings hub, I will be glad to collaborate in buying one for you together with other interested members in your work.
Iā€™ve also read that thereā€™s a new integration of skybell hd with google home but I cannot find it. Would it be possible to get something done from Google Assistant?
Thanks again to all because of your help and shared knowledge.

Hi again, I have installed the android pushbullet app, the chrome extension and I have tested that mirroring notifications to my PC works really well. However, I have also installed ā€˜Pushbullet Mirrorsā€™ in HA with a correct API key and all, now I have 2 new sensors:

  • sensor.pushbullet_body
  • sensor.pushbullet_title
    However, when I repeat the test and send a notifiaction from my mobile, the state of the above sensors remains as ā€˜unknownā€™ and does not take the body and title of the test notification as I was expecting.
    Please, @fundy, could you please tell me what I could be doing wrong? Thanks!!

@jolaca I remember that I had the same problem in the beginning. I donā€™t exactly remember what helped finally, how but after some time or several HA restarts the pushbullet sensors just started to work as expected. Strange thing.

Yep, I have it working now. I think the issue was that in my mobile I only had activated to mirror, the Skybell app notifications. So when I tested from the pushbullet app, the pushbullet notification appeared on my PC but not on HA so that lead me to think it was not working. However, after trying with a skybell app notification, it did work.
My issue now is: as what we want is to trigger whenever a new skybell push button notification arrives, how did you manage (if you use only skybell app for pushbullet notifications as me) to trigger each time the button was pressed if the current pushbullet message is just the same as the last one, then it wonā€™t trigger, will it??
OK, my idea for getting this is: as the pushbullet notification arrives, send another notification that activates pushbullet and thus, resetting the messages for the next button pushed.
How did you manage to implement it? Thanks again.

@jolaca There is no direct way of dismissing the pushbullet mirrors from within HA. In order to dismiss the mirrored push notification from Skybell HD Android app (and thus get the HA pushbullet sensor ready to trigger new HA automation action by next mirrored push event from skybell app - that will be unfortunately exactly the same as the previous one) I use a shell script with pushbullet api call that just sends a new void message to the HA pushbullet sensor(see the pushbullet api ephemerals documentation for details). This script is registered as HA service by use of shell_command: option in HA configuration.yaml. Further in the HA automation script that waits for the state change of pushbullet sensor (i.e. waits for the mirrored pushes from skybell HD android app) and triggers the action you intend to call upon skybell button press or motion trigger, you just add an additional service call to the shell script that resets the sensor to any other state at the end.

The pushbullet api call shell script looks like:

curl --header 'Access-Token: YOUR-API-KEY-HERE' \
 --header 'Content-Type: application/json' \
 --data-binary '{"push":{"application_name": "Autodismiss","body": "Doorbell action completed","client_version": 125,"dismissable": true,"has_root": false,"icon": null,"notification_id": "99","notification_tag": null,"package_name": "com.pushbullet.android","source_device_iden": "00","source_user_iden": "00","title": "Doorbell action completed,"type": "mirror"},"type":"push"}' \
 --request POST \
 https://api.pushbullet.com/v2/ephemerals
1 Like

Thank you for your thorough answer. Iā€™ve been out for a few days but Iā€™ll try it tomorrow and let you know about it. Thanks again!

just thought iā€™d report some success and give many thanks to @thouky for his post. My previous router wireless radio started getting really flaky, so i bought a new one, flashed it with Lede/OpenWRT and installed tcpdump and perl on it. itā€™s only been running 1 day, but there is near instantaneous detection of a motion event.

iā€™ll still be keeping the component configured for the image and doorbell detection, but now the automations fire very nicely. still have too much stuff hardcoded in the perl script, but i can deal with that later.

thanks again @thouky !

1 Like

Hi again! So @fundy, Iā€™m running HA from docker in my synology. So running the following shell script that you indicated from terminal:

curl --header ā€˜Access-Token: o.u2cDKsq5XXXXXXXXmATBnd2SQFj1qULJ7ā€™ 
ā€“header ā€˜Content-Type: application/jsonā€™ 
ā€“data-binary ā€˜{ā€œpushā€:{ā€œapplication_nameā€: ā€œAutodismissā€,ā€œbodyā€: ā€œDoorbell action completedā€,ā€œclient_versionā€: 125,ā€œdismissableā€: true,ā€œhas_rootā€: false,ā€œiconā€: null,ā€œnotification_idā€: ā€œ99ā€,ā€œnotification_tagā€: null,ā€œpackage_nameā€: ā€œcom.pushbullet.androidā€,ā€œsource_device_idenā€: ā€œ00ā€,ā€œsource_user_idenā€: ā€œ00ā€,ā€œtitleā€: "Doorbell action completed,ā€œtypeā€: ā€œmirrorā€},ā€œtypeā€:ā€œpushā€}ā€™ 
ā€“request POST 

I get the following errors:
root@homeassistant-home-assistant:/config# bash doorbell_ring_pb.sh
curl: (6) Could not resolve host: o.u2cdksq5xxxxxxxmatbnd2sqfj1qulj7ā€™
curl: (3) Illegal characters found in URL
doorbell_ring_pb.sh: line 2: ā€“header: command not found
doorbell_ring_pb.sh: line 3: unexpected EOF while looking for matching `"ā€™
doorbell_ring_pb.sh: line 5: syntax error: unexpected end of file

Should I run this script like this? I guess Iā€™m doing something obvious in a wrong way, but please bear with me. Thank you for your help!

@jolaca :thinking:

  1. It seems that your curl command misses the last line with PB API url, i.e. https://api.pushbullet.com/v2/ephemerals

  2. The script shall contain one single curl command. It seems that your bash treats each line of the script as a separate command not a single one. Either put all the lines of curl onto a single line or add a backslash \ at the end of all the lines except for the last one.

  3. Besides, watch out not to publish your API key on web.