zmcontrol.pl(8)
π zmcontrol.pl(8) β the ZoneMinder control script, bestie edition β¨
okay so this is zmcontrol.pl, straight out of the zoneminder manual, and it's literally the remote-control for your cameras π₯β¨
πΈ NAME πΈ
zmcontrol.pl β the ZoneMinder control script. that's it, that's the whole name, and honestly? iconic.
π SYNOPSIS π
here's how you call her, exactly like this, no cap:
zmcontrol.pl --id {monitor_id} [--command={command}] [various options]
zmcontrol.pl --protocol {module} --address {addr} [--device {dev}] --command {cmd}
β¨ DESCRIPTION β¨
bestie. this is the ZoneMinder camera control script, and she's got two whole modes, like two personalities, both valid π
π¦ Monitor mode (--id)
so in monitor mode you pass --id and she connects to the control daemon for that monitor π«Ά β or, plot twist, she starts the daemon for you if you run her without --command. main character energy fr.
heads up though: this mode requires a running ZoneMinder instance with database access. no database, no vibes. π
π Direct protocol mode (--protocol)
this one's the lowkey fave for testing ngl β she loads a ZoneMinder::Control module directly and runs one single command, and she does not need database access or a running ZoneMinder instance at all. so useful for testing control modules π§β¨
π OPTIONS π
one bullet per flag, all fifteen of them, no skipping, we don't do that here:
--id [ monitor_id ]β the monitor ID, used in monitor mode π--protocol [ name ]β the control module name, likeONVIF, used in direct mode π--address [ addr ]β the ControlAddress, formatted likeuser:pass@host:port, direct mode only π--device [ dev ]β the ControlDevice / profile token, direct mode only π--command [ cmd ]β the command you wanna execute, e.g.moveConUporget_configπ₯--autostopβ the manualpage gives no description for this one, so I'm not gonna invent one π (no argument shown, just the flag)--xcoord [ arg ]β X-coord π--ycoord [ arg ]β Y-coord π--speed [ arg ]β speed β¨--step [ arg ]β description not given in the original, but she takes an argument π¦--panspeed [ arg ]β description not given, takes an argument πΈ--panstep [ arg ]β description not given, takes an argument πΈ--tiltspeed [ arg ]β description not given, takes an argument π--tiltstep [ arg ]β description not given, takes an argument π--preset [ arg ]β description not given, takes an argument β
ok real talk: several of these are listed with just a dash in the original, so I'm telling you exactly that β they exist, they take an argument, and the page doesn't spell out what they do. no guessing, that's the rule π
π₯ EXAMPLES π₯
these are verbatim, copy them exactly, do not touch the syntax:
direct protocol testing, no database needed at all π
zmcontrol.pl --protocol ONVIF --address admin:pass@192.168.1.100 --command get_config
with a profile token π
zmcontrol.pl --protocol ONVIF --address admin:pass@cam:8080 --device prof0 --command get_config
send a command to a running monitor daemon π
zmcontrol.pl --id 1 --command moveConUp
and that's the whole page, bestie π«Ά β this version is zmcontrol.pl(8) from zoneminder, and the footer stamp on the original was --stderr, dated 2026-03-04 πβ¨ go forth and control some cameras, periodt.
π¦ where this page comes from
- alpine 3.24: zoneminder-doc 1.38.1-r0 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms