Skip to content
Homebridge plugin that displays a Website as virtual camera (intended for Google Maps Traffic)
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Set theme jekyll-theme-cayman Jun 27, 2018
CameraAccessory.js initial commit Jun 27, 2018
CameraSource.js #7 added renderTimeout Mar 18, 2019
LICENSE initial commit Jun 27, 2018 #7 added renderTimeout Mar 18, 2019
ScreenshotHelper.js #7 added renderTimeout Mar 18, 2019
config.example.json #9 updated config.example.json May 27, 2019
index.js initial commit Jun 27, 2018
package-lock.json #6 Locked Puppeteer to 1.11.0 since later versions seem to hang somet… Feb 22, 2019
package.json #9 updated config.example.json May 27, 2019


Homebridge plugin for displaying a Website (intended for Google Maps-->Traffic) as Camera

NPM version Dependency Status PRs Welcome Downloads


Make sure you have homebridge installed.

  1. Download the latest Chromium sudo apt-get install chromium-browser
  2. Verify the Chromium installation by running chromium-browser, output should be similar to (chromium-browser:30533): Gtk-WARNING **: cannot open display
  3. Install this plugin using: sudo npm install -g homebridge-website-to-camera
  4. Update your Homebridge config.json using the sample below (append in the block 'platforms' not 'accessories')


Update your config similar to this:

 "platforms": [
         "platform": "website-camera",
         "cameras": [
               "name": "Website 1",
               "url": "",
               "chromiumPath": "/usr/bin/chromium-browser"

You can add multiple cameras!

Config file

Take a look at the example config.json


  • name name of the camera (required)
  • url the URL of the website that is to be captured (required)
  • scale HomeApp requests an (probably device dependent) size for the preview-image. With e.g. scale set to 2 (default) the virtual browser window is set to this size. Best is to skip this field.
  • OR width / height the width/height of the virtual browser window. This is optional and overrides scale.
  • chromiumPath path to chromium-executable (defaults to "/usr/bin/chromium-browser")
  • timeout timeout in ms for waiting until the page has no more pending requests. resembles to puppeteer.goto() (defaults to 10000 --> 10s)
  • renderTimeout timeout in ms for waiting AFTER the page has loaded before taking the screenshot. userful for PWAs. (defaults to 1ms)


In some cases, the camera is not visible in Home-App:

  • Press + on top right corner in Home-App
  • Press Add device
  • Press Code missing
  • Select Camera


The plugin uses Puppeteer/Chrome headless to capture the screenshots. The Browser instance stays open all the time for better performance and less CPU/Mem consumption.


  • Live-Video not working. As far as I understood HomeKit requires an RTSP-stream where it can connect to. So this feature might not come at all.
You can’t perform that action at this time.