I mangled together some code changes to include a box for channel # and included that in the URL passed to the camera. As you mentioned, I just had to add each camera with channel 0 and 1. Since the dual cam doesn't have focus or zoom there were no changes to those features. It's just a handful of changes and maybe when I've tested it out more I can see if you're interested in merging the changes. It tested okay but I haven't actually used it in the real world and I'd want to see how it performs before I called it good.
EDIT: I did have to make a few adjustments:
1) I added logging so that it logs the IP
ort for each camera it's adjusting, just so I could track the specific actions (e.g. "Setting camera 10.1.1.255:80 channel 0 to Day")
2) The parallelism seems to cause trouble when trying to set both channels at the same time. I ended up disabling the parallelism (set it to a max of 1 thread) and added a 1-second delay between commands for the day/night request. Without those changes, it was trying to set both at once and typically only one channel or the other actually accepted it and the other didn't make the change.
Removing the parallelism isn't a big deal for me... I'm only doing it on the one camera body for now and even if I add in my other Dahuas that's only 3 more total. I can live with having 5 cameras set in a 5 second span rather than all at once.
Overall I'm pleased with how it's working now and I do appreciate the effort you put into it. My other option was to setup a script to send the requests with curl, but I'd still have to figure out a way to do it at dynamic times based on the sunrise/sunset. My home automation system does that but I didn't want to try tying into that unless nothing else came along. Having this run as a service on the same computer running BI is very workable.