ChannelWatch: Real-Time Alerts for Your Channels DVR

Yes.

No matter how you attack this, you'll need to configure C:\ProgramData\ChannelsDVR on your Windows system as a Samba share. Then if you use the ChannelWatch container, you'll need to mount that Samba share to your Linux filesystem, so that is has a path you can use for ChannelWatch.

If you go the OliveTin-for-Channels route, you can easily mount the Samba share as a Docker Volume, and use that in OliveTin. There's some very recent detail on how to do that in the new OliveTin EZ-Start thread, as I stepped someone through that process in the last couple of days.

If you cross-reference with the client logs, you can get what device it is coming from. There are several drawbacks as you'd have to poll all of them, and you can only see local ones. However, if you are interested in going down that path, this is how I handled getting clients dynamically in Streaming Library Manager:

https://github.com/babsonnexus/stream-link-manager-for-channels/blob/main/slm.py#L4967

EDIT:
Here's a description of the front-end and functionality:

For those looking to use ChannelWatch as a standalone container, I've given the Docker Compose the Portainer treatment, and added it to A docker-compose for every Channels-related extension -- suitable for Portainer-Stacks!:

Looks pretty dope. Hopefully apprise support comes pretty soon as I don't have a pushover account and I would rather use this with discord but looks pretty good so far

Quick Update - v0.3 Coming Soon!

Just wanted to drop a quick update on ChannelWatch! I've been in a brutal 18-hour coding marathon completely rewriting the core architecture for v0.3. My eyes are barely staying open, but the results will be worth it - a completely restructured codebase that's more maintainable and ready for all the features you've been asking for.

What's coming in v0.3:

Rich Visual Notifications - Channel logos now appear directly in your alerts for instant visual recognition of what's being watched

Completely Revamped Alert System - Rebuilt from the ground up with a new formatting engine that allows for more detailed and customizable notifications

Full Device Tracking - See exactly which device is watching what, giving you complete visibility into your Channels ecosystem

Advanced Session Management - Behind-the-scenes improvements that make the system more reliable and responsive than ever

This is just the beginning - the architectural overhaul I've been hammering away at lays the groundwork for some seriously exciting features down the road. The technical debt payment wasn't fun, but it's going to make future development much smoother!

I'll respond to all your comments and suggestions very soon! The foundation work may not be visible on the surface, but it'll make everything you've requested possible.

I'm putting the finishing touches on v0.3 now and expect to release it within the next 1-2 hours. Stay tuned!

More details soon!
CoderLuii
203967356

2 Likes

ChannelWatch v0.3.0 Released! :rocket:

I'm excited to announce a major update to ChannelWatch with v0.3.0!

This release completely reimagines how ChannelWatch works with a new architecture focused on reliability and expandability.

What's New:

  • Real-time event monitoring: Connects directly to Channels DVR's event stream (no log file needed!)
  • Multi-service notifications: Added support for Discord, Slack, Telegram, Email and more through Apprise integration
  • Channel logos in notifications: Visual identification of channels
  • Session tracking: Better handling of viewing sessions with automatic cleanup
  • Enhanced error handling: Automatic reconnection and improved stability
  • Diagnostic tools: Built-in troubleshooting capabilities

Migration Guide for Existing Users

Due to the architectural changes, existing users will need to update their docker-compose configuration:

1. Remove Log File Mapping

The old configuration required mapping the Channels DVR log file:

volumes:
  - /path/to/channels-dvr.log:/channels-dvr.log:ro

This is no longer needed and should be removed.

2. Add Required Host Information

Add the CHANNELS_DVR_HOST environment variable:

environment:
  CHANNELS_DVR_HOST: 192.168.1.xxx  # Replace with your Channels DVR IP

3. Update Network Configuration

Change network mode to "host" for simplest setup:

network_mode: host

4. Consider Additional Notification Options

You can now use multiple notification services via Apprise:

# Discord example
APPRISE_DISCORD: "webhook_id/webhook_token"

# Telegram example
APPRISE_TELEGRAM: "bottoken/ChatID"

5. Example Migration

Old Configuration:

version: '3.0'
services:
  ChannelWatch:
    image: coderluii/channelwatch:latest
    container_name: channelwatch
    network_mode: bridge
    volumes:
      - /path/to/config:/config
      - /path/to/channels-dvr.log:/channels-dvr.log:ro
    environment:
      LOG_CHECK_INTERVAL: 10
      Alerts_Channel-Watching: TRUE 
      PUSHOVER_USER_KEY: your_key
      PUSHOVER_API_TOKEN: your_token
      
    restart: unless-stopped

New Configuration:

version: '3.0'
services:
  ChannelWatch:
    image: coderluii/channelwatch:latest
    container_name: channelwatch
    network_mode: host
    volumes:
      - /path/to/config:/config
    environment:
      CHANNELS_DVR_HOST: x.x.x.x
      CHANNELS_DVR_PORT: 8089
      TZ: Your/Timezone
      LOG_LEVEL: 1
      LOG_RETENTION_DAYS: 7
      Alerts_Channel-Watching: TRUE
      CHANNEL_IMAGES: TRUE
      PUSHOVER_USER_KEY: your_key
      PUSHOVER_API_TOKEN: your_token
      
    restart: unless-stopped

For the full configuration guide, detailed examples, and troubleshooting tips, check out the complete documentation on GitHub.

The README includes many more configuration options to customize ChannelWatch to your needs.

Let me know if you have any questions or feedback!

Cheers,
CoderLuii
203967356

2 Likes

Config Directory & Windows/Linux Setup

@Accustiver Two quick answers:

  1. The config directory is where ChannelWatch stores its container logs - pick any location you prefer within your Linux docker machine!
  2. With the new v0.3.0 release, you don't need to access Channels DVR log file anymore. Just set CHANNELS_DVR_HOST to your Windows PC's IP and you're set! Much simpler now! :raised_hands:

Device Information

@babsonnexus Thanks for sharing your approach to client detection!

Great news - v0.3.0 now features full device information in notifications! I built a streamlined custom implementation using the Channels DVR event stream API that delivers real-time data with minimal overhead. Your method gave me some additional perspectives to consider for future enhancements! Always enjoy seeing different approaches to these challenges!

New Features Are Live!

Hey everyone! All the features you've been asking for are now available! :tada:

@zerodayz / @Jean0987654321 Apprise integration is here! Now supporting Discord, Slack, Telegram, Email and dozens more notification services!

@Matthew_Crommert Both your requests are in - device information now appears in notifications, and the channel name detection works for all ranges including those TVE channels in the 6000s!

The biggest change? ChannelWatch now connects directly to the Channels DVR event stream instead of reading log files - making setup way easier and much more reliable!

Thanks to everyone for the amazing feedback and suggestions that helped shape this release! If you run into any issues or have ideas for improvement, please check out the GitHub Repository or Docker Hub

I'm already thinking about what's next - any other alert types or features you'd like to see in future updates?

Let me know what would make ChannelWatch even more useful for your setup!

Cheers,
CoderLuii
203967356

2 Likes

Neat....hopefully @bnhf will update olivetin with the new version of this so I could start using it :heart_eyes:

1 Like

Great work, @CoderLuii !! :clap:

I'm thinking one alert that could be useful if when the available disk space for recordings gets lower than a specified threshold.

Speaking from experience here because I don't check as often as I should. :grimacing:

1 Like

Instead of (or in addition to) this, since you're now using apprise, use the apprise approach
pover://{user_key}@{token}
pover://{user_key}@{token}/{device_id}
pover://{user_key}@{token}/{device_id1}/{device_id2}/{device_idN}
pover://{user_key}@{token}?priority={priority}
pover://{user_key}@{token}?priority=emergency&expire={expire}&retry={retry}
...
https://github.com/caronc/apprise/wiki/Notify_pushover

1 Like

Disk Space Alert Feature

@mjitkop - Thank you for this excellent suggestion! :tada: I am thrilled to confirm that I will be implementing this feature for release version 0.4!

The feature will monitor available disk space for your recordings and send proactive alerts when storage drops below your specified threshold. You'll be able to configure thresholds by either percentage or absolute GBs, ensuring you never run out of space unexpectedly. :floppy_disk:

Custom Apprise Configuration for Pushover

@chDVRuser - Thank you for highlighting this alternative configuration approach! :raised_hands: The Apprise method is indeed fully supported in the current release, providing users with flexibility in how they set up their notifications.

While the direct Pushover API implementation remains the recommended approach for most users due to its reliability and optimized handling, the Apprise method offers a valid alternative for those who prefer a unified configuration style.

Here's an example of how users can leverage Apprise for Pushover notifications:

name: channelwatch
version: '3.0'
services:
  channelwatch:
    image: coderluii/channelwatch:latest
    container_name: channelwatch
    network_mode: host
    volumes:
      - /your/local/path:/config
    environment:
      # Core settings
      CHANNELS_DVR_HOST: X.X.X.X
      CHANNELS_DVR_PORT: 8089
      TZ: Your/Timezone
      
      # Logging and alerts
      LOG_LEVEL: 1
      LOG_RETENTION_DAYS: 7
      Alerts_Channel-Watching: TRUE
      CHANNEL_IMAGES: TRUE
      
      # Apprise configuration alternative for Pushover
      APPRISE_CUSTOM: pover://your_user_key@your_token
    restart: unless-stopped

I appreciate you sharing this approach as it provides users with additional configuration options while maintaining full Pushover functionality!

Cheers,
CoderLuii
203967356

1 Like

@CoderLuii Are you still meaning for this project to be open source? Both the main.py on your GitHub home for the project, and in the attached source code zip files, are binaries.

This is absolutely great! It definitely fulfills all my needs at this point

I saw one issue that i had missed before - it wont parse hdhomerun/broadcast channels - pretty sure its because its chopping off the .x number at the end of each one - i had one person streaming 13.1 and it said they were streaming 13 and i actually have a virtual channel there

So when i stream 13.1 it looks like this in channels logs
image

And in channels admin
image

And in your notifications

Thanks for all the great work

Project Development

@bnhf - ChannelWatch is open source with a focus on reliable deployment through Docker. While some core files are compiled to ensure consistent operation, the project's architecture and interfaces remain fully accessible. I'm currently prioritizing stable user experience in these early stages of development. The project's structure and documentation remain transparent for the community.

Decimal Channel Fix

@Matthew_Crommert - Thank you for sharing your experience with ChannelWatch! I'm glad it's working well for you. I've identified the issue with decimal channels like 13.1 and will fix this in the next release(v0.4) to properly handle subchannels. That Harry Potter notification looks great!

Cheers,
CoderLuii
203967356

2 Likes

Indeed I have. Once again, thanks @CoderLuii for expanding the capabilities of this tool. I've added v0.3.0 to OliveTin-for-Channels, with support for multiple DVRs, as before:

Set log_level to 0 to kill the active instance of ChannelWatch for the selected DVR. The icon will remain green as long as there's at least one instance running. Be sure to select at least one notification method.

Also, thanks to some fine stress testing by @TerryD, @Edwin_Perez and @chDVRuser the new OliveTin EZ-Start process is better than ever. Just two env vars for initial spin-up, and there's an Action to help you determine the rest.

1 Like

@CoderLuii sorry i don't seem to find all of these at the same time

So for virtual channels in plex there doesn't seem to be a corresponding log entry

For example watching my Home Improvement channel

image

but in logs

And no notification

This one might not be fixable

1 Like

Recorded / VOD Detection

@Matthew_Crommert - Thanks for sharing these detailed logs! I see the issue now. What you're watching is video-on-demand content from Plex rather than a standard live TV channel. ChannelWatch is currently designed to detect standard channel watching that include channel numbers in the log pattern.

For VOD/recorded content that uses different activity patterns (like your Home Improvement example), I'll need to implement additional detection rules. This is a good enhancement request that I'll add to the roadmap for future development.

Cheers,
CoderLuii
203967356

1 Like

I tried using this and I get this error from channelwatch

[2025-03-25 01:13:55] Log file: /config/channelwatch.log (keeping 7 days)

[2025-03-25 01:13:55] Log level: 2 (Verbose)

[2025-03-25 01:13:55] Starting ChannelWatch v0.3

[2025-03-25 01:13:55] ERROR: CHANNELS_DVR_HOST environment variable not set

Let's move this discussion over to the OliveTin thread...

1 Like

ChannelWatch v0.4 Soon! :rocket:

I've been working around the clock on ChannelWatch v0.4, and it's packed with improvements based directly on your feedback! Here's what's coming:

Program Information

  • :tv: Program Titles - See exactly what's playing on each channel directly in notifications
  • :framed_picture: Program Images - Choose between channel logos or actual program images in alerts
  • :clapper: Enhanced Metadata - Richer program information with improved formatting

Channel Enhancements

  • :1234: Decimal Channel Support - Full support for subchannels (13.1, etc.) for broadcast/OTA channels
  • :bar_chart: Total Streams Counter - See how many concurrent streams are active across your system
  • :iphone: Stream Source Identification - Cleaner display of M3U, TVE, and Tuner sources

VOD & Recording Features

  • :vhs: VOD/Recorded Content Detection - New support for virtual channels and recorded content
  • :floppy_disk: Disk Space Monitoring - Configurable alerts when recording space runs low (by % or GB)
  • :arrows_counterclockwise: 24-hour Program Cache - Extended program data caching for better performance

System Improvements

  • :zap: Performance Optimizations - Preloaded cache at startup for faster operation
  • :gear: Expanded Configuration - Control exactly what appears in your notifications
  • :jigsaw: Cache Management - Configurable TTLs and improved validation

Last Call for Features! :mega:

I'm in the final stages of development for v0.4 - is there anything else you'd like to see included? Now's your chance to get your requests in before release! Drop a comment below with any ideas or suggestions you have.

All these changes make ChannelWatch more feature-rich, configurable and robust, while maintaining compatibility with previous versions.

Coming very soon!

Cheers,
CoderLuii
203967356