[Nut-upsuser] Is a timer a file?

Roger Price roger at rogerprice.org
Tue Mar 21 18:34:52 UTC 2017


On Tue, 21 Mar 2017, Arnaud Quette wrote:

> Hi Roger,
> 
> reviving this discussion, since we have a Github ticket for 2.7.5:
> https://github.com/networkupstools/nut/issues/293
... 
> I've made some additions to clarify things on the timer, and complete the script:
> https://github.com/networkupstools/nut/compare/upssched-doc?expand=1

Hi Arnaud, Your change to the documentation clears up what I had 
mis-understood.  The new text makes it clear that the upssched timers are 
an in-memory device, and that they can only be turned on and off with 
upssched.conf declarations such as

    AT ONBATT * START-TIMER onbattwarn 30
    AT ONLINE * CANCEL-TIMER onbattwarn

>       Is there some other way of forcing routine cancel_timer from a script or a configuration file?
> 
> this is the last point to address, but I'd need to better understand prior to potentially taking action:
> theoretically, each event that triggers a timer (like ONBATT) has a counterpart to cancel it (like ONLINE).
> Ex (from the doc):
>     AT ONBATT * START-TIMER onbattwarn 30
>     AT ONLINE * CANCEL-TIMER onbattwarn
> 
> So is there any use case we're missing here?

My use case was for a UPS unit which gave transient stupid status changes 
such as "OL DISCHARG CHARG LB" when the battery was 100% charged.  It was 
an old MGE unit which has since died.

When the stupid status change occured, the LB began a system shutdown.  To 
overcome this unwanted stutdown, I wanted to start a 5 second timer, and 
when this ran out, upssched-cmd would review the situation, and decide if 
a shutdown was really needed.  If it was not needed, I had to cancel the 
system-shutdown timer.  I mistakenly assumed that such a timer was a file, 
and that it was sufficient to erase the file.

To solve the problem of cancelling an arbitrary timer from a script such 
as upssched-cmd, I submitted a proposal to nut-upsdev:

    [Nut-upsdev] Proposal for technique to stop a timer at any moment
https://lists.alioth.debian.org/pipermail/nut-upsdev/2016-July/007202.html

and a set of patches :

https://lists.alioth.debian.org/pipermail/nut-upsdev/2016-July/007203.html
https://lists.alioth.debian.org/pipermail/nut-upsdev/2016-July/007204.html

The technique is very general and is to send SIGUSR1/SIGUSR2 to the upsd 
daemon.  SIGUSR1 and SIGUSR2 are events just like ONBATT and ONLINE. The 
patch runs successfully on my opensuse 13.2 box, and solves my problem. 
In upssched.conf I now have declarations such as

    AT SIGUSR1 * CANCEL-TIMER shutdown-timer

Will my patches be included in NUT?

Roger


More information about the Nut-upsuser mailing list