/homebridge-camera-rpi

raspberry pi camera plugin for homebridge

Primary LanguageJavaScriptMIT LicenseMIT

homebridge-camera-rpi

raspberry pi camera plugin for homebridge

Note: An SD card image is available here.

Prerequisite

  • camera module activated (raspi-config)
  • module bcm2835-v4l2 loaded (add bcm2835-v4l2 to /etc/modules and reboot)
  • ffmpeg installed (sudo apt install ffmpeg)

Installation (as homebridge plugin)

npm install -g homebridge-camera-rpi

edit config.json and add platform rpi-camera

{
  ...
  "platforms": [
    ...
    {
      "platform": "rpi-camera",
      "cameras": [{"name": "Pi Camera"}]
    }
  ]
}

add homebridge to the video group: sudo adduser homebridge video

restart homebridge

add extra camera accessory in the home app (the setup code is the same as for homebridge)

Installation (standalone)

make sure git and node are installed. (Type sudo apt install git to install git and read this to install node)

optionally install in opt:

cd /opt
sudo mkdir homebridge-camera-rpi
sudo chown pi homebridge-camera-rpi

install:

git clone https://github.com/moritzmhmk/homebridge-camera-rpi
cd homebridge-camera-rpi
npm install

test:

node standalone.js

optionally create systemd service /etc/systemd/system/hap-camera-rpi.service:

[Unit]
Description=HAP Camera RPi

[Service]
ExecStart=/usr/local/bin/node /opt/homebridge-camera-rpi/standalone.js -c /etc/homebridge-camera-rpi.conf.json
WorkingDirectory=/opt/homebridge-camera-rpi
Restart=always
RestartSec=10
User=pi

[Install]
WantedBy=multi-user.target

create config file /etc/homebridge-camera-rpi.conf.json:

{
  "name": "Pi Camera",
  "id": "Pi Camera",
  "pincode": "031-45-154",
  "username": "EC:23:3D:D3:CE:CE"
}

id is used to generate the uuid and defaults to name when not defined

enable and start the service:

sudo systemctl enable hap-camera-rpi
sudo systemctl start hap-camera-rpi

Options

{
  "name": "Pi Camera",
  "id": "Pi Camera",
  "rotate": 0,
  "verticalFlip": false,
  "horizontalFlip": false,
  "debug": false
}

Note: rotate currently only works for 0 and 180 degrees.