npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

homebridge-cognitive-identification

v0.1.0

Published

Homebridge plugin for Cognitive Services Face identification

Downloads

6

Readme

homebridge-cognitive-identification

This plugin for homebridge uses Microsoft Cognitive Services to identify people by their faces which were detected on a snapped picture. It uses MotionDetected characteristic for notifying when a known person has been identified.

Configuring Microsoft Cognitive Services

The plugin will only work with an existing and properly configure Cognitive Service account. Before you install this plugin, make sure you have properly configured your Microsoft Cognitive Services account, provisioned it with at least a single person group and added some people to it. Also make sure persons in group have enough photos and that group is successfully trained.

NOTE: please review your Microsoft Cognitive Services subscription as some limitation may be set on free subscriptions and if using paid subscription, be aware of your subscription costs!!!

Plugin installation

  1. Make sure you have homebridge installed. If not, install it using npm install -g homebridge.
  2. Install this plugin using npm install -g homebridge-cognitive-identification.
  3. Update homebridge configuration file. See below for a sample.

How it works

  1. When plugin is started, it will query Microsoft Cognitive Services for a configured person group to get back the names of persons that are part of that group.
  2. A motion sensor accessory will be created for each of those persons. The names are formed as "<person's name> on <sensor's name>", e.g. "Andrej on Intercom".
  3. A HTTP server endpoint is created for each sensor, e.g. /intercom, /camerawest, /cameraeast, ...
  4. When any of HTTP server endpoints is hit, the plugin calls a configured URL to take a camera snapshot.
  5. Plugin sends the snapshot to Microsoft Cognitive Services for face detection.
  6. If any faces are detected, plugin again queries Cognitive Services for face identification against a configured person group, e.g. "Family".
  7. If any person is identified, a motion sensor for that person is triggered.

How I use it

I'm monitoring my front yard IP intercom for identifying members of my family. When intercom detects motion, it pings this plugin. Plugins calls intercom's snapshot url to retrieve current photo and send it to Cognitive Service for face detection and identification. If any member of my family is identified, a motion sensor for that member is triggered, allowing further automation based on that sensor.

Planned features

  • Allow more sensors to be configured (currently only one)
  • Add a "Face detected, but not identified" accessory
  • Option to take more snapshots at a specified interval when HTTP server endpoint is hit instead of just one

Configuration

"platforms": [
    {
      "platform": "CognitiveIdentification",
      "port": <port for HTTP server to listen on>, // e.g. 8088
      "cognitiveFaceApiKey": "<your Microsoft Cognitive Services *FACE* API key>",
      "sensors": [
        {
          "name": "<sensor name>", // e.g. "Intercom"
          "listenUrl": "<HTTP server url endpoint>", // e.g. intercom, HTTP endpoint in this case would be http://<homebridgeIP>:<8088>/intercom
          "personGroupId": "Microsoft Cognitive Service person group ID", // e.g. "family"
          "snapshotUrl": "<URL to your camera's snapshot endpoint>" // e.g.  "http://<cameraIP>/camera/snapshot"
        }
      ]
    }
  ]

Notes

This is my first homebridge plugin and first ever node.js module as I come from a different part of developer world :) Code may contain errors and unusual practices, for which I'll try to fix as soon as I get more familiar with node.js development.