ZMTrigger

From ZoneMinder Wiki
Jump to navigationJump to search

About

/usr/bin/zmtrigger.pl is an optional perl script for zoneminder. See the script for a brief description. One way it can be used is to overlay text information from an outside source (say a temperature sensor) onto the video feed.


Configuration

Enable it first, by going into options, config, and checking Enable Triggers.

Then

# service restart zoneminder

Verify it is running with

ps auxw | grep zmtrigger


Usage

Overlaying Text Data onto a Video Feed

After you have verified the script is running, test it is working.

Choose a monitor, say monitor 1, then add %Q to the monitors timestamp section.

The monitor must be in either modect, mocord, or nodect mode.

Open the video feed for monitor 1.

Then type in another terminal

telnet ipaddress 6082

in the telnet session type the following

1|show||||testingOSD

then press return.

Refer to Documentation for what this command means. A brief explanation for this is:

Monitor1 | Show text mode |||| text to put in.

You should immediately see testingOSD in place of the %Q you put in the timestamps section.

For more examples and scripts of ZMTrigger search the forums.

Example Script

Here is a script of connecting to an ipaddress that serves a value from a sensor. Wget is not as fast as possible, but this is simple and works quickly as a test.

#!/bin/bash
counter=1

while [$counter -le 10]
do
PRESSURE=`wget ipaddress -q -O -`
echo "1|show||||$PRESSURE" | telnet ipaddress 6802
sleep 4

#((counter++))
done


Troubleshooting

tail -f  /var/log/zm/zmtrigger.log

Enable debug on it in the logs and set to 9.


MySQL server has gone away error

After following forum recommendations to use mysqltuner (see MySQL), I added wait_timeout=300 to my.cnf.

Unfortunately, ZMTrigger will disconnect every five minutes, if this is enabled. Maybe it's a limitation of Perl's DBI module not having a 'keep-alive' function working in /usr/bin/zmtrigger.pl, although I may be mistaken. It's a common problem for Perl's DBI and there are many hits online.

This timeout error doesn't seem to adversely affect any other features of ZM so, the wait_timeout may be acceptable if you don't use ZMTrigger.

The default timeout is 8 hours. When the MySQL server has gone away, zmtrigger is out for 20 seconds, so every 8 hours your zmtrigger will be unaccessible for that long.

See Also