ChannelWatch: Real-Time Alerts for Your Channels DVR

:rocket: ChannelWatch v0.5 RELEASED - Recording Events Alert!

I'm excited to announce that ChannelWatch v0.5 is now available! Based on community feedback, this release adds comprehensive monitoring for your DVR recording activities with rich, detailed notifications.

:new: NEW: Recording-Events Alert

Now you can track the entire lifecycle of your recordings with real-time alerts! This highly-requested feature provides:

  • :date: Scheduled notifications when new recordings are added to your DVR
  • :red_circle: Started alerts when a recording begins capturing content
  • :white_check_mark: Completed notifications when recordings finish successfully
  • :no_entry_sign: Cancelled alerts if scheduled recordings are removed before starting
  • :stop_button: Stopped notifications when recordings are manually ended early

Each alert includes rich metadata with program details, channel information, precise timing, and duration statistics.

Example of Recording Scheduled Alert:

Example of Recording Started Alert:


Example of Recording Stopped Alert:

Example of Recording Cancelled Alert:

Example of Recording Completed Alert:

Never miss a DVR activity again - whether recordings are scheduled in advance, start capturing, complete successfully, or get cancelled!

:muscle: Enhanced Features

  • Total Streams Integration - Recording activity is now included in stream counts
  • Robust Status Handling - Intelligently handles delays in recording processing
  • Fine-Grained Control - Enable/disable specific recording event types
  • Improved Time Formatting - User-friendly time display with "Today/Tomorrow" labels
  • Enhanced API Integration - More reliable channel and program information

As always, upgrade to the latest version with coderluii/channelwatch:latest. Your feedback helps shape future releases - please keep it coming!

Cheers,
CoderLuii
203967356

This is amazing, thanks so much for your work on this! Is there an alert to tell you if a scheduled recording failed for some reason?

@augie0041 Thanks for the kind words!

Yes, ChannelWatch will alert you if a scheduled recording fails. When a recording doesn't complete properly, it will show up as ":white_check_mark: Completed (Interrupted)" in the notification.

You'll get the same detailed notification format as other recording events, including the channel information, program details, and duration, so you'll know exactly which recording had issues.

Here are examples of what both interrupted and delayed recording notifications would look like:

For an Interrupted Recording:

📺 NBC
Channel: 5
Status: ✅ Completed (Interrupted)
Program: The Tonight Show
-----------------------
Duration: 15 minutes
Total Streams: 1

Jimmy Fallon interviews celebrity guests and features musical performances.

For a Delayed Recording:

📺 ESPN
Channel: 206
Status: ✅ Completed (Delayed)
Program: Monday Night Football
-----------------------
Duration: 3 hours 15 minutes
Total Streams: 1

Live coverage of NFL Monday Night Football featuring postgame analysis and highlights.

Have you been having any specific issues with your recordings?
Is there any suggestions you'd like to see in the upcoming release of ChannelWatch v0.6?

Cheers,
CoderLuii
203967356

Yes, an example is when I'm in a blackout region for an MLB game or one of the custom channels I've programmed such as m0ngr31's ESPNTV docker app that I need to go in and re validate my TVE or MLBTV credentials as quick as possible to not miss the game I'm recording.
Finally, is there a way to suppress some notifications, because I extend almost all of my live game recordings by 2-3 hours in case of overtime, rain delays, etc, and Channels provides a confusing message next to every recording that it was recorded but was interrupted. It works fine so I never said anything, but I certainly don't need a notification telling me this every day.


@CoderLuii I edited this post to include a screenshot of the error that Channels provides

@augie0041 - Regarding the TVE/MLBTV credential validation issue - I'd need more details about exactly what happens during these credential failures to better understand if there's a way ChannelWatch could help. Since each provider handles authentication differently, this would be helpful to know for improving error handling.

For suppressing notifications - you have a few options:

  1. You can completely disable specific alert types in your docker-compose.yml by setting:

    ALERT_RECORDING_EVENTS: FALSE
    
  2. For more granular control, you can disable just completed recording alerts while keeping scheduled/started notifications:

    RD_ALERT_COMPLETED: FALSE
    
  3. If you only want to suppress notifications during certain times, most notification providers (like Pushover) have quiet hours or temporary muting options.

I recommend checking the main configuration post for all available options:

Nice @CoderLuii! v0.5 now integrated into OliveTin-for-Channels via bnhf/olivetin:latest (aka bnhf/olivetin:2025.04.03), with the usual support for multiple DVRs. Tailscale MagicDNS and other hostnames also supported -- as they are throughout OliveTin. There's a DNS override option as well.

All the upside of the OliveTin-for-Channels approach to the multitude of scripts and tricks available for Channels DVR with centralized management, a common user interface, and leveraging of a single set of variables representing your CDVR installation:

EDIT: Also, with this update, you only need to kill your background versions of Channelwatch in the OliveTin interface -- followed by updating OliveTin-for-Channels. This will automatically bring Channelwatch to v0.5.

1 Like

Error Detection Module

@augie0041 Thanks for adding the screenshots! I didn't get notified when you updated your post, so I just saw these now.

I see the issues you're encountering - those M3U/playlist errors are actually part of Channels DVR's core functionality rather than something ChannelWatch currently monitors. This would require a completely new module focused on error detection and reporting, which isn't part of the current recording alert system.

To build something like this properly, I'd need to:

  1. Catalog the various error types that Channels DVR produces
  2. Create patterns to detect and classify them
  3. Build a new alert module specifically for these failures

If you'd be interested in helping with development, would you mind sending me a list of the common errors you encounter (either via private message or just a list)? I'm going to scrape the community forums as well to identify the most common issues users face.

For your specific blackout/credential validation issues, this would be particularly valuable information since I don't have a TVE setup to test with.

This will take a few iterations to get right, but I think it could be very useful for many users!

Cheers,
CoderLuii
203967356

:fire:ChannelWatch v0.6: Modern Web UI Coming Soon! :rocket:

Hey everyone!

I've been working on something really exciting for ChannelWatch, and I wanted to give you all a preview of what's coming in version 0.6! This update completely transforms the user experience with a modern web interface and dramatically simplifies setup.

:star2: What's Coming in v0.6

  • Beautiful Dashboard - Real-time monitoring of system status, disk space, active streams, and upcoming recordings
  • One-Command Setup - Just one Docker command and a volume mount - that's it!
  • Mobile Compatibility - Fully responsive design that works great on phones and tablets
  • Built-in Diagnostics - Troubleshooting tools accessible directly from the UI

:muscle: Super Simple Setup

Installation will be as simple as:

version: '3.0'
services:
  ChannelWatch:
    image: coderluii/channelwatch:latest
    container_name: channelwatch
    network_mode: host
    volumes:
      - /your/local/path:/config
    restart: unless-stopped

That's it! Just access http://your-server-ip:8501 to configure everything through the web UI.

All the notification features you love (channel watching, VOD tracking, recording events, disk space monitoring) will still be there, but now with an interface that makes everything infinitely easier to set up and monitor.

I'm putting the finishing touches on it now and will share the full release soon!

Special thanks to @Matthew_Crommert, @Jean0987654321, @augie0041, @mjitkop, @TerryD, @Edwin_Perez, and @chDVRuser for all your feedback and support on previous versions - your input has been invaluable in shaping ChannelWatch's evolution!

What do you think about the new design? Let me know in the comments below!

Cheers,
CoderLuii
203967356

2 Likes

@CoderLuii Looks like I pretty much wasted my time front-ending ChannelWatch, eh? :slight_smile: Looks great though. I'll likely move it from an OliveTin-for-Channels Action, to a Project One-Click deployment.

BTW, I don't believe I'm seeing any art in notifications when channels are tuned via ah4c, cc4c or ADBTuner. Any fix for that coming in this release?

1 Like

@bnhf - Thanks for the feedback on the v0.6 teaser, I appreciate you taking a look! About your front-end work - definitely not wasted at all! Your One-Click deployment idea sounds solid.

Regarding the channel art issue with ah4c, cc4c, or ADBTuner sources – this is the first I'm hearing about it specifically with those methods. Channel art should generally work, so I'd love to dig into why it might not be showing up in your notifications.

To help troubleshoot, could you possibly share a few things when you get a chance?

  1. Event Stream Logs: Capture the log output when you tune one of these channels. You can get this by running one of the following commands in your terminal:

    • Windows:
      curl.exe -H "Accept: text/event-stream" http://your-server-ip:8089/dvr/events/subscribe
      
    • Linux/macOS:
      curl -H "Accept: text/event-stream" http://your-server-ip:8089/dvr/events/subscribe
      

    Let it run while you tune the channel, then copy the relevant lines related to the channel tuning event.

  2. Channel Information: Could you grab the relevant section for the specific channel being tuned from this API endpoint? Just the relevant part about the channel in question.
    http://your-server-ip:8089/api/v1/channels

  3. Program Information: Could you grab the program information for the specific show being tuned on that channel from this guide data endpoint? Just the relevant <programme> block for that specific airing is needed.
    http://your-server-ip:8089/devices/ANY/guide/xmltv?duration=3600

  4. Notification Screenshot: A screenshot of the notification you receive (e.g., from Pushover or another Apprise service) showing the missing art.

  5. ChannelWatch Configuration: Could you share your ChannelWatch configuration?

Thanks a bunch for reporting this and for your willingness to help track it down! With that info, I should be able to figure out what's going on.

Cheers,
CoderLuii
203967356

Hey, Luii, looks great.

Have the developers of the Channels DVR software ever approached you with some offer to include this natively in their software? It seems like a natural fit.

@Kryptonyte - Thank you so much!

I truly appreciate the enthusiasm about the new interface! It's always energizing to see the community excited about these updates.

No, the Channels team hasn't approached me about native integration, though it would certainly make for an interesting conversation. Their excellent API makes independent projects like this possible, which is one of the reasons I enjoy building within this ecosystem.

Cheers,
CoderLuii
203967356

I am getting this

What should this variable be ?CHANNELS_DVR_HOST

[2025-04-20 01:54:18] Starting ChannelWatch v0.5

[2025-04-20 01:54:18] ERROR: CHANNELS_DVR_HOST environment variable not set

[2025-04-20 01:55:22] Log file: /config/channelwatch.log (keeping 7 days)

[2025-04-20 01:55:22] Log level: 1 (Standard)

[2025-04-20 01:55:22] Starting ChannelWatch v0.5

[2025-04-20 01:55:22] ERROR: CHANNELS_DVR_HOST environment variable not set

[2025-04-20 01:56:27] Log file: /config/channelwatch.log (keeping 7 days)

[2025-04-20 01:56:27] Log level: 1 (Standard)

[2025-04-20 01:56:27] Starting ChannelWatch v0.5

[2025-04-20 01:56:27] ERROR: CHANNELS_DVR_HOST environment variable not set

[2025-04-20 01:57:31] Log file: /config/channelwatch.log (keeping 7 days)

[2025-04-20 01:57:31] Log level: 1 (Standard)

[2025-04-20 01:57:31] Starting ChannelWatch v0.5

[2025-04-20 01:57:31] ERROR: CHANNELS_DVR_HOST environment variable not set

[2025-04-20 01:58:36] Log file: /config/channelwatch.log (keeping 7 days)

[2025-04-20 01:58:36] Log level: 1 (Standard)

[2025-04-20 01:58:36] Starting ChannelWatch v0.5

[2025-04-20 01:58:36] ERROR: CHANNELS_DVR_HOST environment variable not set
1 Like

The IP of your Channels DVR Server
https://github.com/CoderLuii/ChannelWatch?tab=readme-ov-file#-quick-setup

1 Like

He hasn't released the new version yet

@CoderLuii
Looks really nice!

Couple questions;

  1. Why does this have to run network_mode: host instead of network_mode: bridge (using bridge mode and it seems to work fine it doesn't send notifications)

  2. I checked your future roadmap https://github.com/CoderLuii/ChannelWatch?tab=readme-ov-file#-future-roadmap and didn't see this on there. Any plans to support multiple Channels DVR Servers?
    Would be great to see all servers, or even to be able to switch between your multiple servers.

Something I noticed is that the connection to the server (/dvr/events/subscribe) times out if no data was received after 5 minutes. Assume you set a 5 minute timeout, because I can keep the connection opened forever with my curl/jq script.

Looking back at my notifications with missing art, this was particularly happening when I was working on the latest cc4c containers (both Docker and Promox LXC versions). Does it take a bit before art is available when sources are added/deleted and otherwise modified?

I think I'll wait to see if this happens once my sources stabilize again. Also, with your new version soon to be released, I should probably see how it goes after I move to that. If this issue reappears, I'll capture the data requested above.

@CoderLuii

If it disconnects from the server, right before a recording starts, it doesn't notify the recording started since it reconnected 29 seconds after it started.

[2025-04-20 18:54:29] Event: {"Type":"hello", "Version":"2025.04.17.1651"}
[2025-04-20 18:57:44] Connection healthy: 612 consecutive successful pings
[2025-04-20 18:59:03] Status update: Connected to 192.168.1.4:8189, processed 1068 events (0 alerts, 514 filtered, 0 errors) [0.4 events/min]
[2025-04-20 18:59:29] Network error: HTTPConnectionPool(host='192.168.1.4', port=8189): Read timed out.
[2025-04-20 18:59:29] Connection closed
[2025-04-20 18:59:29] Reconnecting in 60s
[2025-04-20 19:00:29] Event: {"Type":"hello", "Version":"2025.04.17.1651"}
[2025-04-20 19:00:30] Event: {"Type":"activities.set","Name":"0-job-1745200800-834","Value":"Recording ch713 for Tracker until 8:01PM: strength=97% quality=100% symbol=100% rate=5.7Mb/sec buf=0% drop=0%"}
[2025-04-20 19:00:30] Checking event: activities.set - Value: Recording ch713 for Tracker until 8:01PM: strength...

An example from multiple notifications this morning with no art:

This is from the ChannelWatch log:

[2025-04-21 09:09:36] Watching Willow (Ch7037) - Device: firestick-travel3, Source: cc4c, IP: 100.x.x.x
[2025-04-21 09:09:36] Total Streams: 1
[2025-04-21 09:09:36] Notification sent via Pushover: Channels DVR - Watching TV
{"id":"WLLOHD","name":"Willow","number":"7037","hd":true,"source_name":"cc4c","source_id":"M3U-cc4c","station_id":"80621"}
<channel id="7037">
<lcn>7037</lcn>
<display-name>WLLOHD</display-name>
<display-name>Willow</display-name>
<icon src="https://tmsimg.fancybits.co/assets/s80621_ll_h15_aa.png?w=360&h=270"/>
</channel>
<programme start="20250421140000 +0000" stop="20250421172000 +0000" channel="7037">
<title>IPL Cricket</title>
<sub-title>Kolkata Knight Riders vs. Gujarat Titans</sub-title>
<desc>From Eden Gardens in Kolkata, West Bengal, India.</desc>
<category>Sports</category>
<category>Sports event</category>
<category>Cricket</category>
<icon src="https://tmsimg.fancybits.co/assets/GNLZZGG001LJ6L8.jpg?w=720&h=540"/>
<series-id system="tms">3606596</series-id>
<episode-num system="tms">EP011386071050</episode-num>
<new/>
<live/>
</programme>
"CHANNELS_DVR_HOST=192.168.110.66",
"Alerts_Recording-Events=true",
"VOD_DURATION=true",
"VOD_CAST=true",
"VOD_DEVICE_NAME=true",
"Alerts_Channel-Watching=true",
"RD_ALERT_STARTED=true",
"PROGRAM_NAME=true",
"VOD_GENRES=true",
"CHANNEL_CACHE_TTL=86400",
"DEVICE_IP_ADDRESS=true",
"VOD_IMAGE=true",
"PUSHOVER_USER_KEY=[Redacted]",
"PUSHOVER_API_TOKEN=[Redacted]",
"TZ=US/Mountain",
"DEVICE_NAME=true",
"PROGRAM_CACHE_TTL=86400",
"VOD_DEVICE_IP=true",
"CHANNELS_DVR_PORT=8089",
"LOG_LEVEL=1",
"Alerts_VOD-Watching=true",
"Alerts_Disk-Space=true",
"RD_ALERT_COMPLETED=true",
"CHANNEL_NUMBER=true",
"VOD_SUMMARY=true",
"STREAM_COUNT=true",
"CHANNEL_NAME=true",
"STREAM_SOURCE=true",
"VOD_EPISODE_TITLE=true",
"VOD_PROGRESS=true",
"VOD_CACHE_TTL=86400",
"JOB_CACHE_TTL=3600",
"VOD_TITLE=true",
"VOD_RATING=true",
"RD_ALERT_SCHEDULED=true",
"RD_ALERT_CANCELLED=true",

Last night, when I was watching basketball on TNT via tve, the channel logo came through. This morning watching the Tennis Channel and Willow via cc4c, there was no art.

EDIT: Here's your requested curl command JSON from another tune with no art:

{"Type":"activities.set","Name":"6-stream-M3U-cc4c-7047-100.x.x.x","Value":"Watching ch7047 BBC News from firestick-travel3: buf=0% drop=0%"}

And he hasn't posted here since 3 days ago.
Maybe you have to be a developer and post on his github account to get his attention?
I'm not a developer. I don't have a github account. I'm just a CDVR user.

And this post

and his reply causes some concern. Anyone else?

I'm not fluent in Python, but why hide the source code?

For these reasons I have uninstalled his container.