Read the statement by Michael Teeuw here.
Simple(?) module to send a notification every x minutes?
-
@sdetweil
You truly are amazing!Am I right in thinking that if I change this:
} else if(topic==this.config.notification){
to this:
} else if(topic==this.config.resetNotification){
and put this in the config:
resetNotification: "DIFF_NOTIF",
in addition to the notification: setting, then I can have it reset when a different notification is received? And I’m assuming all modules get all the notifications?
This would be so that if someone comes up and pushed the button to switch to the info display close to the end of the timer, it will reset it so they have time to look at what they want.
-
@sdetweil
I made that change and it does indeed work as I’d hoped. This is totally awesome!Thank you!
-
@UncleRoger yes, make sure to add a default value in the defaults section
one could consider a list of notifications that cause reset, then you can search the list w includes()
as it’s a list, you could pre or postpend the notification to send to that list too
this stops the code from growing with other else clauses
resetNotifications:[]
in start maybe,
this.config.resetNotifications.unshift(this.config.notification)that puts the actual notification of the front of the list
the in notificationReceived
if(this.config.resetNotifications.includes(notification)
resetTimer()only one test
-
@UncleRoger said in Simple(?) module to send a notification every x minutes?:
And I’m assuming all modules get all the notifications?
yes, sendNotifications are broadcast to all modules
-
@sdetweil
Do modules each have their own timer or does resetting the timer in one module affect another?I ask because I have MMM-BackgroundSlideshow set to change pictures each hour and MMM-SendNotification set to send a notification to MMM-Pages to switch to page 1 every 5 minutes. But in this setup, the picture never changes. My hypothesis is that when SendNotification resets the timer after 5 minutes, that affects BGSS which then never gets to 1 hour to switch to the next picture.
If I change BGSS to change pictures every 1 minute (or less than 5 minutes), the picture does change as expected.
Mind you, it’s probably something I’ve done that’s screwed it up, but I figured I’d ask about this first just to eliminate it as the source of the issue.
-
@UncleRoger
Unfortunately, BGSS is implementingsuspend
method to stop it’s timer. So when you page rotator hides BGSS, it’s timer doesn’t work.
If you have some knowledge of JS, you can make monkey-patch with MMM-ModuleMonkeyPatch tosuspend
method not to stop its timer. -
@MMRIZE
Hmmm… That’s actually a good behaviour, in my case. If it’s not being shown, there’s no need to be changing the picture.But even when it’s not suspended, i.e., the picture is shown, it doesn’t change if its interval is greater than the SendNotification interval.
If i disable SendNotification and manually switch to the picture (i.e., unsuspend BGSS), it will happily switch pictures every hour.
-
@UncleRoger
The module also implements “resume” method to reset timer, so if the module get shown, it may be reset.
But I’m not sure unless examining all three modules related. -
@MMRIZE the sendnotification module implements both suspend and resume
-
So a little more testing…
If the interval for BGSS is >= the interval for SN, BGSS never changes the image. That is, SN causes BGSS to be active so its timer should start and (assuming nothing else changes) it should switch pictures according to the set interval but it doesn’t.
If the interval for BGSS < the interval for SN, and BGSS is active, it changes the image as it should.
Suspending and resuming BGSS does reset its timer, but if it’s not suspended, and its interval is >= SN’s, then it doesn’t change the image.