unifi-event-monitor icon indicating copy to clipboard operation
unifi-event-monitor copied to clipboard

Monitors Unifi Controller events and push them as notifications to slack (or any other platform)

trafficstars

Unifi Event Monitor

Listens for events from Unifi controller and pushes them as notifications to apprise.

Get started

1. Apprise config

Create .apprise file with your channels, e.g.:

slack://<token1>/<token2>/<token3>
mailtos://<userid>:<pass>@<domain.com>

2. Unifi Controller credentials

Create .env file with the following:

HOST=https://<controllerIP>:8443
USERNAME=<username>
PASSWORD=<password>

Setup using docker image

1. Create docker-compose.yml file:

---
version: "3.7"
services:
  unifi-event-monitor:
    container_name: unifi-event-monitor
    image: tborychowski/unifi-event-monitor
    restart: unless-stopped
    env_file:
      - ./.env
    volumes:
      - ./.apprise:/app/.apprise
      - ./blacklist.txt:/app/blacklist.txt

2a. Run:

docker-compose up -d

2b. Alternatively, you can run:

docker run -d --rm --env-file=./.env \
  --mount "type=bind,src=/absolute/path/to/.apprise,dst=/app/.apprise" \
  --mount "type=bind,src=/absolute/path/to/blacklist.txt,dst=/app/blacklist.txt" \
  tborychowski/unifi-event-monitor:latest

Filtering events

By default the app listens to all events and forwards the messages as notifications. It is possible to filter out some of the messages.

  • Create blacklist.txt file (in the same folder as the .apprise)
  • Add text of a message that you don't want to be pushed to your selected notification platform
  • You can have multiple filters, but keep 1 filter per line, e.g.
    my laptop disconnected from
    my laptop has connected to
    
  • This file is re-read before every event, so there's no need to restart the app after changing the file.

Setup locally (with nodejs)

git clone https://github.com/tborychowski/unifi-event-monitor.git
cd unifi-event-monitor
npm ci
node index.js

Credit

I used some code from: https://github.com/oznu/unifi-events