[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