Event Notification Server Logo
  • Breaking Changes
    • pyzmNg v2 and pyzm.serve (ES 7.x)
    • Frame Match Type Setting Moved (7.x)
    • Config Cleanup (7.x)
    • YAML Migration (current master)
  • Installation
    • Path 1: Detection + Optional Push (no ES)
      • Step 1: Run the installer
      • Step 2: OpenCV
      • Step 3: Configure
      • Step 4: Wire up ZoneMinder
      • Step 5: Test manually
      • Optional: Face recognition
      • Optional: Google Coral EdgeTPU
      • Post-install diagnostics
      • Troubleshooting
    • Path 2: Full Event Server
      • Step 1: Install ML dependencies
      • Step 2: Install the WebSocket Perl module
      • Step 3: Run the installer
      • Step 4: Set up SSL
      • Step 5: Configure
      • Step 6: Test manually
      • Step 7: Enable auto-start
      • Step 8: Set up ML hooks
      • Logging
      • Optional: MQTT
      • Troubleshooting
  • Key Principles — How Detection and Notifications Work
    • Summary
    • Path 1: From Event to Detection (+ Optional Push)
      • 1: ZoneMinder triggers the detection
      • 2: zm_detect.py runs the ML pipeline
      • 3: Results
      • 4: Optional — Direct Push Notifications
    • Path 2: From Event Detection to Notification
      • 1: How it starts
      • 2: Detecting New Events
      • 3: Deciding what to do when a new event starts
        • 3.1: Hooks (Optional)
        • 3.2: Will the ES send a notification?
      • 4: Deciding what to do when a new event ends
      • User triggers after event_start and event_end
      • 5: Actually sending the notification
        • 5.1 Notification Payload
    • Controlling the Event Server
    • How Machine Learning Works
  • Machine Learning Hooks
    • Key Features
    • Requirements
    • How it works
      • Path 1: Detection + optional push (no ES)
      • Path 2: Full Event Server
      • Manual testing
    • Post install steps
    • Test operation
    • Upgrading
    • Sidebar: Local vs. Remote Machine Learning
    • Which models should I use?
    • Understanding detection configuration
      • Per-monitor overrides
      • Per-monitor zones
      • Understanding ml_sequence
        • Leveraging same_model_sequence_strategy and frame_strategy effectively
      • Understanding stream_sequence
      • How ml_sequence and stream_sequence work together
      • Using the remote ML detection server (pyzm.serve)
    • About specific detection types
      • License plate recognition
      • Face Dection & Recognition
        • Face Detection
        • Face Detection + Face Recognition
        • Using the right face recognition modes
        • Configuring face recognition directories
        • known faces images
      • Audio Recognition (BirdNET)
    • Troubleshooting
      • zm_detect.py command-line reference
    • Questions
  • Configuration Guide
    • Secrets
    • Event Server Configuration
      • Key Sections
      • Complete Reference
        • general — app-level settings
        • network — WebSocket server
        • auth — authentication
        • fcm — Firebase Cloud Messaging
        • mqtt — MQTT messaging
        • ssl — WebSocket SSL
        • push — third-party push API
        • customize — notification and display
        • hook — ML hook configuration
    • Detection Hook Configuration
      • Key Sections
      • Complete Reference
        • general — app-level settings
        • push — direct FCM push notifications
        • remote — remote ML gateway settings
        • ml.stream_sequence — frame extraction
        • ml.ml_sequence.general — detection pipeline
        • ml.ml_sequence.<type> — per-type model settings
        • monitors — per-monitor overrides
    • Configuration Tools
  • Event Notification Server FAQ
    • Machine Learning
    • What is it?
    • Why do we need it?
    • Is this officially developed by ZM developers?
    • How can I use this with Node-Red or Home Assistant?
    • Disabling security
    • How do I safely upgrade zmeventnotificationNg to new versions?
      • STEP 1: get the latest code
      • STEP 2: stop the current ES
      • STEP 3: Make a backup of your config files
      • STEP 4: Execute the install script
      • STEP 5: Start the new updated server
    • Configuring the notification server
      • Understanding zmeventnotificationNg configuration
      • What is the hook section ?
    • Troubleshooting common situations
      • The ES randomly hangs
      • I can’t connect to the ES
      • I just added a new monitor and the ES is not sending notifications for it
      • The ES is missing events. I see them being triggered in ZM
      • LetsEncrypt certificates cannot be found when running as a web user
      • Picture notifications don’t show images
      • Secure mode just doesn’t work (WSS) - WS works
      • I’m not receiving push notifications in zmNinjaNG
      • I’m getting multiple notifications for the same event
      • How do I reduce the time of delay from an alarm occurring in ZM to the notification being sent out?
      • Push notifications are delayed by several minutes when the phone turns off (Android)
      • The server runs fine when manually executed, but fails when run in daemon mode (started by zmdc.pl)
      • When you run zmeventnotifiation.pl manually, you get an error saying ‘port already in use’ or ‘cannot bind to port’ or something like that
      • Running hooks manually detects the objects I want but fails to detect via ES (daemon mode)
      • I just upgraded ZoneMinder and I’m not getting push notifications
    • How do I disable secure (WSS) mode?
      • Logging
    • Debugging and reporting problems
    • Brickbats
  • Machine Learning Hooks FAQ
    • How do the hooks actually invoke object detection?
    • Necessary Reading - Sample Config Files
    • How To Debug Issues
    • Triaging “No Detection” Problems
    • My hooks run fine in manual mode, but don’t in daemon mode
    • It looks like when ES invokes the hooks, it misses objects, but when I run it manually, it detects it just fine
      • How do I make sure this is what is happening?
      • How do I solve this issue?
    • I am trying to use YoloV4 and I see errors in OpenCV
    • I’m having issues with accuracy of Face Recognition
    • I get ModuleNotFoundError: No module named 'pycoral' when using the Coral TPU
    • I am using a Coral TPU and while it works fine, at times it fails loading
    • I get a segment fault/core dump while trying to use opencv in detection
    • Local vs. Remote server for Machine Learning
  • Testing
    • Running all tests
    • Unit / integration tests
    • End-to-end tests
    • Test file reference
    • Test dependencies
    • Pytest markers
  • For Developers writing their own consumers
    • How do I talk to it?
      • Category: Normal messages
        • Authentication messages
        • Control messages
        • Alarm notifications
        • Push Notifications (for both iOS and Android)
      • Category: escontrol messages
        • escontrol authentication
        • escontrol commands
      • Testing from command line
  • Guidelines for contrib
    • Contribution notes for developers

Related Projects

  • pyzmNg
  • zmNinjaNG
Event Notification Server
  • Search


© Copyright 2019-2026, Pliable Pixels.

Built with Sphinx using a theme provided by Read the Docs.