Doorbird integration

Any news here? I think the Axis component uses endpoints to get notified of events from the binary sensors. Maybe you can check there?

I just pushed new code that registers HA with the device, which then creates an event when the doorbell rings. Iā€™m not sure how to make this useful in the frontend, but any changes needed there should be minimal.

At the moment the Axis component uses RTSP protocol to receive subscribed events. There is work by another community member to add a web endpoint to give support mainly to older devices that doesnā€™t support the RTSP events.

The last images are not visible anymore (probably due to an firmware upgrade in doorbird?) Did something change here?

Although the api manual states that the history.cgi event param is not mandatory, it however seems like it is!

Test without event param:

āžœ  ~ curl -u user0001:passwd -v http://192.168.1.9/bha-api/history.cgi\?index\=1
*   Trying 192.168.1.9...
* TCP_NODELAY set
* Connected to 192.168.1.9 (192.168.1.9) port 80 (#0)
* Server auth using Basic with user 'user0001'
> GET /bha-api/history.cgi?index=1 HTTP/1.1
> Host: 192.168.1.9
> Authorization: Basic #hash
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 204 No Content
< Content-Type: text/plain
< Date: Thu, 28 Dec 2017 19:27:31 GMT
< Server: lighttpd/1.4.45
<
* Curl_http_done: called premature == 0
* Connection #0 to host 192.168.1.9 left intact

Test with event param:

āžœ  ~ curl -u user0001:passwd -v http://192.168.1.9/bha-api/history.cgi\?index\=1\&event\=doorbell
*   Trying 192.168.1.9...
* TCP_NODELAY set
* Connected to 192.168.1.9 (192.168.1.9) port 80 (#0)
* Server auth using Basic with user 'user0001'
> GET /bha-api/history.cgi?index=1&event=doorbell HTTP/1.1
> Host: 192.168.1.9
> Authorization: Basic #hash
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: image/jpeg
< Content-Length: 30867
< X-Timestamp: 1514398891
< X-Count: 35
< Date: Thu, 28 Dec 2017 19:33:06 GMT
< Server: lighttpd/1.4.45
<
* Curl_http_done: called premature == 0
* Connection #0 to host 192.168.1.9 left intact

I think DoorBird broke this with a firmware upgradeā€¦
I submitted a issue: https://github.com/Klikini/doorbirdpy/issues/3

With version 0.61 your code is now live. Any thoughts on how to use the doorbell_events? I donā€™t ā€œget itā€ yet.

1 Like

What I understand from the code is that when doorbell_events are activated, Home Assistant is opening a API endpoint for the DoorBird and will configure the DoorBird API (on startup) with notifications to call the Home Assistant API.

I will leave some feedback when itā€™s working, but I still need to upgrade Home Assistant. :stuck_out_tongue:

2 Likes

You can use it in automations, like this one that will add entries to the logbook:

- alias: Doorbell
  trigger:
  - platform: event
    event_type: doorbird_doorbell
  action:
  - service: logbook.log
    data:
      name: Doorbell
      message: rang

More helpful examples of automations are welcome in the component documentation :slight_smile:

1 Like

Curious if you got this working yet and what you think

Iā€™ve tried this automation and get this error:

2018-01-24 14:42:40 WARNING (MainThread) [homeassistant.components.http.ban] Login attempt or request with invalid authentication from ā€œdoorbird ipā€

Iā€™ve double checked the Doorbird logon details in config.yaml and itā€™s right, sounds like Doorbird is not auth to HA? Any ideas?

I realize now that Iā€™m an idiotā€¦

My test instance of HA doesnā€™t have an API/HTTP password, so it worked and I didnā€™t think to authenticate API calls. I will work on a fix ASAP.

1 Like

Not an idiot at all, easily over looked! Let me know when you a chance to correct it and Iā€™ll test.
Many thanks!

1 Like

I have pushed a fix and created a pull request, so now itā€™s up to the HA devs to accept it.

1 Like

While I havenā€™t moved over to this APIā€™s ring notification (still using the proxy version), I have tied this into TTS using Bluetooth speakers with my RPi. I have my Pi connect to my Echos, and they will let me know when someone is ringing the door. There are a few known issues connecting to some Echo devices using RPis, but my Echo dot seems to consistently work. Other ideas may be to flash some lights, send some push notifications, etc.

Hereā€™s my automation converted to use the trigger (but untested). Probably doesnā€™t make sense to put it in the documentation as Iā€™m using multiple unofficial components to do this.

- id: NotifyDoorbell
  alias: 'Notify of ringing doorbell'
  initial_state: 'on'
  trigger:
    platform: event
    event_type: doorbird_doorbell
  action:
    service: tts.google_say
    data:
      entity_id: media_player.tts_bluetooth_speaker
      message: 'Ding Dong! Someone is at the front door!'
2 Likes

doorbird_doorbell event now works as of 0.63 - thanks @Klikini!
hereā€™s my working config for playing the doorbell on Sonos if anyone needs it:

an automation:

- alias: Doorbell
  trigger:
  - platform: event
    event_type: doorbird_doorbell
  action:
    - service: script.turn_on
      data:
        entity_id: script.doorbell

calls this script:

doorbell:
  alias: Ring Doorbell
  sequence:
    - service: media_player.sonos_snapshot
      data:
        entity_id: media_player.kitchen
    - service: media_player.volume_set
      data:
        entity_id: media_player.kitchen
        volume_level: 0.60
    - service: media_player.play_media
      data:
        entity_id: media_player.kitchen
        media_content_id: http://10.0.26.20/sounds/doorbell.mp3
        media_content_type: music
    - delay:
        seconds: 4
    - service: media_player.sonos_restore
      data:
        entity_id: media_player.kitchen
4 Likes

Thank you @reynos, this works perfectly. The sonos_snapshot and sonos_restore services where new to me, but this is brilliant to be able to save and restore the state of the speaker.

My issue was that the event was never triggered. I found that when I went in to the Doorbird APP under Administration and HTTP Calls the address of my HomeAssistant server was set to localhost - when changing this to the internal IP of the server the Event was now triggered when pressing the Doorbird Button.

2 Likes

Hey @Klikini I just enabled SSL and the doorbell event seems to have broken, can you check please? Thanks.

I think this would happen because the DoorBird is still connecting to HA using the local IP and not using HTTPS.

Iā€™m not sure of how to get the actual hostname, Iā€™ll look into it.

I can connect locally to my HA instance using https://10.x.x.x (albeit after a browser warning that the URL does not match the cert) if thatā€™s any helpā€¦

Did you installed a valid certificate on your HA instance? Maybe the DoorBird can only deal with valid certificates. If so, the DoorBird must connect by hostname, not by ip. Please review the DoorBird notification parameters first by making a request to your DoorBird api, something like:

http://<deviceip>/bha-api/info.cgi