Nest accessory developed with HAP-NodeJS to allow devices into HomeKit

Overview

Nest_accfactory

This is a HAP-NodeJS accessory I have developed to allow Nest devices to be used with HomeKit including having support for HomeKit Secure Video on doorbells and camera devices

HomeKit Secure Video Support is disabled by default and needs to be explicitly enabled by the user

Supported Devices

The following Nest devices are supported

  • Nest Thermostats (Gen 1, Gen 2, Gen 3, E)
  • Nest Protects (Gen 1, Gen 2)
  • Nest Temp Sensors
  • Nest Cameras (Cam Indoor, IQ Indoor, Outdoor, IQ Outdoor)
  • Nest Hello (Wired Gen 1)

The accessory supports connection to Nest using a Nest account OR a Google (migrated Nest account) account.

Configuration

Nest_config.json is the configuration file where various options can be. An example of a basic configuration is below

{
    "SessionToken" : "<nest session token>",
    "HKSV" : true,
    "H264Encoder" : "copy"
}

An advanced configuration example is below

{
    "SessionToken" : "<nest session token>",
    "HKSV" : false,
    "H264Encoder" : "copy",
    "SERIAL1" : {
        "Exclude" : true
    },
    "SERIAL2" : {
        "HKSV" : true,
        "MotionCoolDown" : 2
    },
}

The options available are within the configuration file are listed below. Some of these options can also be on specific devices only

Option Values Description Global/Local
RefreshToken Google account refresh token global
SessionToken Nest session token. Obtain from home.nest.com/session global
Debug true, false Turns debugging on or off. Default is off global
mDNS avahi, bonjour, ciao mDNS advertiser library to use. Default is ciao global
HKSV true, false Turns HomeKit Secure Video on or off for doorbells and/cameras. Default is off. global/local
HKSVPreBuffer seconds or milliseconds Amount of time the pre-buffer for HomeKit Secure Video holds data. Default is 15 seconds global/local
H264Encoder copy, libx264, h264_omx H264 encoder ffmpeg used for streaming and recording. Default is copy global
MotionCooldown seconds or milliseconds Ignore motion detection for this time once triggered. Default is 1 minute global/local
PersonCooldown seconds or milliseconds Ignore person detection for this time once triggered (Non HKSV only) Default is 2 minutes global/local
DoorbellCooldown seconds or milliseconds Ignore doorbeel button pressed for this time once triggered Default is 1 minute global/local
Exclude true, false Exclude a device local

Docker Image

If you would like to try this in a containerised version, please check out the docker hub repository for this project

Caveats

Nest_accfactory is a hobby project of mine, provided as-is, with no warranty whatsoever. I've been running it successfully at my home, but your mileage might vary.

Comments
  • 'No Response' when viewing live feed

    'No Response' when viewing live feed

    After a few hours of running, the video stops working.

    The snapshot shows "Now" with the last retrieved image which in this case is from a few hours ago, however, clicking on the thumbnail to view live feed, it's shows 'No Response'. image Note - covered the images with white boxes. The point is to highlight "Now"

    image

    From the logs, all I can see:

    [HDS ::ffff:192.168.1.192] Delegate yielded fragment after stream 1 was already closed!
    [HDS ::ffff:192.168.1.192] Delegate finished recording stream 1 without sending anything out.       Controller will CANCEL.
    
    opened by krehman 11
  • Selected RTP Stream Configuration' on the accessory 'Nest Doorbell D567' was slow to respond

    Selected RTP Stream Configuration' on the accessory 'Nest Doorbell D567' was slow to respond

    Hi, I have installed the Docker for this, added my cameras (Nest Hello and Home Hub Max) however when I enter the camera in Home, the stream freezes after 10 seconds. Docker log shows the following:

    [Nest Doorbell D567@Selected RTP Stream Configuration] The write handler for the characteristic 'Selected RTP Stream Configuration' on the accessory 'Nest Doorbell D567' was slow to respond!
    

    my config file is: CA4BEF35-15E6-4A95-8903-214A92BE8840

    I previously had HomeBridge running with the cameras in the HomeBridge Nest Cam plugin working ok in a Docker on another Proxmox LXC. I have shutdown that LXC, restarted this Docker and tried again but get the same error. I have also tried all 3 config options for H264Encoder but find “copy” to be the only encoder to work.

    Any suggestions?

    Known Issue 
    opened by townsmcp 5
  • Buffering stream sometimes won't start playback after authentication

    Buffering stream sometimes won't start playback after authentication

    When stream form nexus stops for somereason, sometimes when attempting to re-autherise to requested host, don't seem to get acknowledgement from nexus to commence stream playback. This then causes any buffer streams to stop requiring restarting code/container

    bug Known Issue Testing 
    opened by n0rt0nthec4t 2
  • HomeKit Setup Code?

    HomeKit Setup Code?

    Hi, I have installed the Docker container version, updated config, and when I go to Home I can see the camera to add to HomeKit. The problem is, I don’t know where/how to get the HomeKit Setup Code to finish adding the camera to HomeKit. Where do I get that from? I’m running Portainer and can see in the loggers the setup has gone ok but I cannot attach to a terminal (assuming that would be where I see the code) or see any codes in the logs

    opened by townsmcp 1
  • Recordings randomly complete with

    Recordings randomly complete with "UNEXPECTED_FAILURE"

    HKSV recordings seem to randomly complete sometimes with an "UNEXPECTED_FAILURE" error. Usually appears to happen when something detected in the video stream by the Nest camera (coincidence??)

    Needs further investigation

    bug Known Issue 
    opened by n0rt0nthec4t 1
Releases(v0.1.0)
Owner
markh
Have an interest in developing home-made HomeKit accessories
markh
Homebridge plugin exposes to Apple's HomeKit devices

This Homebridge plugin exposes to Apple's HomeKit devices (lights, plugs, sensors, switches, ...) and virtual devices on a Crestron professor. Homebridge Crestron communicates with TCP.

null 23 Nov 21, 2022
The NEST Prize Bot is a tool for the activity of the NEST community.

NEST Prize Bot The NEST Prize Bot is a tool developed by our team for the activity of the NEST community. It can record the receipt of Prize and expor

NEST Protocol 403 Dec 20, 2022
The Homebridge August plugin allows you to access your August/Yale Locks from HomeKit with Homebridge.

Homebridge August The Homebridge August plugin allows you to access your August & Yale Lock(s) from HomeKit with Homebridge. Installation Search for "

Donavan Becker 13 Dec 12, 2022
API of my readings, developed in Nest.js, MongoDB, Nginx and Dockerized

My Readings step by step for configuration with docker OBS: required docker and docker-compose cp -r .env.sample .env docker-compose up example what t

William Koller 30 Jul 1, 2022
A simple dashboard to keep track of all your active devices/servers

Slashboard Pulsar A lightweight node js app designed to work with the Slashboard desktop client Built using Node.js Installation Clone this repository

Philippe Négrel-Jerzy 25 Dec 21, 2022
Unofficial API client for the Tidbyt API. Use this client to control Tidbyt devices and integrate with other services.

Tidbyt Client for Node.js Unofficial API client for the Tidbyt API. Use this client to control Tidbyt devices and integrate with other services. Insta

Nicholas Penree 19 Dec 17, 2022
A web panel to manage TP-Link/Kasa smart home devices.

TP-Link Web Panel A web panel to manage TP-Link/Kasa smart home devices. Prerequisites Node.js v16.13.1 or higher Yarn Installation Run git clone http

Milan M 3 Apr 1, 2022
Ios-calculator-js - Calculator made with vanilla javascript and custom css based on the design of iOS devices.

ios-calculator-js This is a practice project in which I try to replicate iOS calculator's both logic and styling. In case you spot room for improvemen

Franco 1 Nov 10, 2021
Easy responsive tabs - is a lightweight jQuery plugin which optimizes normal horizontal or vertical tabs to accordion on multi devices

Easy responsive tabs - is a lightweight jQuery plugin which optimizes normal horizontal or vertical tabs to accordion on multi devices like: web, tablets, Mobile (IPad & IPhone). This plugin adapts the screen size and changes its action accordingly.

Samson Onna 600 Dec 8, 2022
Reorderable drag-and-drop lists for modern browsers and touch devices. No jQuery or framework required.

Sortable Sortable is a JavaScript library for reorderable drag-and-drop lists. Demo: http://sortablejs.github.io/Sortable/ Features Supports touch dev

SortableJS 26.1k Jan 5, 2023
API Bate Papo UOL - A backend application developed using NodeJS and mongoDB

BatePapoUOL BackEnd My first backend project! Building an API to the most used brazillian chat app ages ago - Bate Papo UOL! Table of Contents Overvie

Lucas Azzolini Vieira 8 Apr 13, 2022
Nest multiple blocks inside lists of any kind of list (ordered, unordered, no marker, etc), or do away with list markers and use it like a repeater!

Nest multiple blocks inside lists of any kind of list (ordered, unordered, no marker, etc), or do away with list markers and use it like a repeater!

Rani 15 Dec 26, 2022
OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:

A progressive Node.js framework for building efficient and scalable server-side applications. Description OpenAPI (Swagger) module for Nest. Installat

nestjs 1.3k Jan 6, 2023
Nest.js project used it implement login page functionality.

Basic Login Backend (API) Description This project is the backend (API) portion of a basic login application. It calls a local frontend project basic-

Chad D.S 2 Mar 21, 2022
Plugin to run NestJS Apps from Nest Monorepo

Serverless Nest Monorepo Plugin Plugin that adds support to run NestJS Apps from Nest Monorepo, which is set up using Nest CLI with several microservi

Blub Blub 13 Dec 1, 2022
Hashing library for Nest.Js

A progressive Node.js framework for building efficient and scalable server-side applications. Description Hashing library for NestJS. Installation $ n

Arthur Reis 2 Mar 29, 2022
Project implements decorators for oak like Nest.js.

oak decorators Project implements decorators like implementation of Nest.js for Deno's web framework oak. Usage The following are the core files that

akihiro tanaka 5 Dec 5, 2022
A Nest rewrite of crystal, the SOS Discord bot

crystal-nest A Nest rewrite of crystal, the SOS Discord bot Explore the docs » Report Bug · Request Feature Table of Contents About The Project Built

PR1SM 5 Dec 22, 2022