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?
BUMP please!
Also have a skybell hd and would like to see integration with home assistantā¦
Done! Itāll be out in 0.56!
Nice work thanks!!!
Awesome Work! Most excited Iāve been for a new component in a while!
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:
- Cloud polling which happens once every ~30 seconds.
- 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.
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.
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
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 !
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!
-
It seems that your curl command misses the last line with PB API url, i.e. https://api.pushbullet.com/v2/ephemerals
-
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.
-
Besides, watch out not to publish your API key on web.