CameraControl: add --ip for standalone control without an RMS config - #983
Open
Cybis320 wants to merge 2 commits into
Open
CameraControl: add --ip for standalone control without an RMS config#983Cybis320 wants to merge 2 commits into
Cybis320 wants to merge 2 commits into
Conversation
CameraControl currently requires a config file and drives whichever camera its device URL points at. Add a -i/--ip argument that talks to a camera directly by address, so a camera can be reached before it is in any station config -- bench bring-up, provisioning a new unit, or flashing firmware before the station is set up. The IP path reuses the existing cameraControl(ip, user, pwd, ...) entry and the existing --user/--password overrides (defaulting to admin / empty). --ip and --config are mutually exclusive. No change to the existing config-based path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Firmware-side ISP control forwards daemon arguments verbatim to isp_ctl/hisp_ctl, whose `manual`/`auto` subcommands use -a/-d/-i/-e (-i = ISP-digital gain). Giving --ip a '-i' short form lets argparse swallow the daemon's `-i <val>` as the camera IP, silently dropping it -- e.g. `Isp manual -a 1024 -i 1024 -e 30 --ip <cam>` reached the camera as `manual -a 1024 -e 30` with no ispdgain. Keep only --ip. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
markmac99
approved these changes
Sep 2, 2026
markmac99
left a comment
Contributor
There was a problem hiding this comment.
Looks good to me. Will also be useful for non-RMS situations where one is using a compatible camera for other purposes.
Cybis320
added a commit
that referenced
this pull request
Sep 3, 2026
Adds the ispControl() helper and four dvripCall handlers -- IspQuery, IspManual, IspAuto, and a generic Isp pass-through -- that talk to the isp_ctl/hisp_ctl TCP daemon on the camera's :9600 port. This reaches manual ISP exposure/gain and pipeline control that DVRIP cannot (e.g. `Isp wb unity`, `Isp gain 4096`, `Isp ae`, `Isp drc off`, `Isp status`). The daemon takes one text command per TCP connection, returns its response, then closes; ispControl() forwards the command verbatim and logs the reply. Commands target cam.ip, so they work in config mode today and pair naturally with the standalone --ip flag (#983) for bench/ad-hoc cameras without a config. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cybis320
added a commit
that referenced
this pull request
Sep 6, 2026
… an RMS config # Conflicts: # Utils/CameraControl.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
--iptoUtils/CameraControl.pyso a camera can be controlled directly by IP address, with no RMS config file:Why
Today
CameraControlrequires--configand drives whichever camera the config's device URL points at. That's right for a configured station, but awkward for a camera that isn't in a config yet — bench bring-up, provisioning a new unit, or flashing firmware before the station is set up.How
--ipargument (defaultNone).--ipis given,__main__calls the existingcameraControl(ip, user, pwd, cmd, opts)path directly instead of loading a config.--user/--passwordoverrides; they default toadmin/ empty, matching whatcameraControlV2extracts from a device URL.--ipand--configare mutually exclusive.Scope is deliberately just the entrypoint (argparse +
__main__) — no behaviour change for the existing config-based path.Testing
--ip <addr> GetDeviceInformationagainst a live GK7205V200 returns its Hardware / SoftwareVersion / Serial.--ip <addr> --config <path>is rejected with a clear message.--helplists the new argument.🤖 Generated with Claude Code