JSPM

@schmupu/doorbot

5.4.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q16680F
  • License BSD-3-Clause

Ring.com Doorbell API

Package Exports

  • @schmupu/doorbot

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@schmupu/doorbot) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Ring.com Doorbell API Build Status

This is a copy of the source code from https://github.com/davglass/doorbot . I made this copy only, because the npm version is not actual.

I built this because of this tweet.

I have nothing to do with Ring.com, they just annoyed me with that tweet, so I figured out their api..

doorbot 2.x has an API change

usage

npm i @schmupu/doorbot --save

const RingAPI = require('doorbot');

const ring = RingAPI({
    email: 'your@email.com',
    password: '12345',
    retries: 10, //authentication retries, optional, defaults to 0
    userAgent: 'My User Agent', //optional, defaults to @android:com.ringapp:2.0.67(423)
    api_version: 11, //optional in case you need to change it from the default of 9
    timeout: (10 * 60 * 1000) //Defaults to 5 minutes
});

ring.devices((e, devices) => {
    console.log(e, devices);
    ring.history((e, history) => {
        console.log(e, history);
        ring.recording(history[0].id, (e, recording) => {
            console.log(e, recording);
            const check = () => {
                console.log('Checking for ring activity..');
                ring.dings((e, json) => {
                    console.log(e, json);
                });
            };
            setInterval(check, 30 * 1000);
            check();
        });
    });

    //floodlights are under the stickups_cams prop
    if (devices.hasOwnProperty('stickup_cams') && 
        Array.isArray(devices.stickup_cams) &&
        devices.stickup_cams.length > 0) {
        
        ring.lightToggle(devices.stickup_cams[0], (e) => {
            //Light state has been toggled
        });
    }
});

api

Get a list of your devices:

ring.devices(callback) => (error, array)

Device Health: ring.health(device, callback) => (error, json)

Get your ring history:

ring.history(callback) => (error, array) ring.history(limit, callback) => (error, array) - limit - The Number of items to return from the history. ring.history(limit, older_than, callback) => (error, array) - limit - The Number of items to return from the history. older_than - The ID of the latest history item to start with when going backward.

Get a URL to a recording:

ring.recording(id, callback) => (error, url)

Get information for video on demand:

ring.vod(device, callback) => (error, json)

Turn on floodlights

ring.lightOn(device, callback) => (error)

Turn off floodlights

ring.lightOff(device, callback) => (error)

Toggle floodlights

ring.lightToggle(device, callback) => (error)

Set Chime Do Not Disturb

ring.set_chime_dnd(device, minutes, callback) => (error, json)

  • on: ring.set_chime_dnd(device, 15, callback) => (error, json)
  • off: ring.set_chime_dnd(device, 0, callback) => (error, json)

Get Chime Do Not Disturb

ring.get_chime_dnd(device, callback) => (error, json)

Set Doorbot Do Not Disturb (motion snooze)

ring.set_doorbot_dnd(device, minutes, callback) => (error, json)

  • on: ring.set_doorbot_dnd(device, 60, callback) => (error, json)
  • off: ring.set_doorbot_dnd(device, 0, callback) => (error, json)

The Get API call for the doorbot DND returned a 404, not sure how to get the current time

debugging

I've added the debug module, so you can run this with export DEBUG=doorbot and it will print some helpful logs.