Difference between revisions of "ZMTrigger"

From ZoneMinder Wiki
Jump to navigationJump to search
Line 73: Line 73:




After following forum recommendations to use mysqltuner (see [[MySQL]]), I added wait_timeout=300 to my.cnf.
After following forum recommendations to use mysqltuner (see [[MySQL]]), mysqltuner told me to add 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.
Unfortunately, ZMTrigger will disconnect every five minutes, if this is enabled. It appears that ZMTrigger will "Loading monitors" every five minutes, so you can't have a wait_timeout equal or lower than that. Otherwise the MySQL server will go away. If the wait timeout is higher, then ZMTrigger will "Loading monitors" without error.


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.
This timeout error doesn't seem to adversely affect any other features of ZM so, a low 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.
The default wait timeout is 8 hours for MySQL. The solution seems to be add a wait_timeout >300, or use the default.
Reference:[https://forums.zoneminder.com/viewtopic.php?t=26316]


== See Also ==
== See Also ==

Revision as of 11:37, 15 July 2017

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), mysqltuner told me to add wait_timeout=300 to my.cnf.

Unfortunately, ZMTrigger will disconnect every five minutes, if this is enabled. It appears that ZMTrigger will "Loading monitors" every five minutes, so you can't have a wait_timeout equal or lower than that. Otherwise the MySQL server will go away. If the wait timeout is higher, then ZMTrigger will "Loading monitors" without error.

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

The default wait timeout is 8 hours for MySQL. The solution seems to be add a wait_timeout >300, or use the default. Reference:[1]

See Also