Flasher stopped working / Notifications not adhering to current mode

I’ve been using a (much) simplified version of the Flasher app to flash a light when my doorbell rings. However, this last couple of days both this app and the original Flasher app stopped working. It would turn on the light once, but never turn it off. I have seen a couple of flashes on the light, minutes after the event triggered.

I suspect it’s an issue with the scheduling of the delayed actions.

I’m not sure if it’s related, but I’ve also had a couple of notifications when the mode was not correct. E.g. I have the system set to give me motion / door open push notifications and texts when mode is “Away”, but we have been getting these notifications when mode is “Home”. Similarly, the photo burst app are set to take photos when mode is away on motion / door triggers in mode “Away”, but it has been triggered recently in mode “Home”.

Has anyone else experienced any of these issues? Was there a hub or platform update recently?

I am having a related issue where things are triggering in incorrect modes. Please let support know.

Same thing just happened to me. I’m using a stripped version of Flasher that was running well as of a week(ish) ago. Updated my hub three days ago, and just found out tonight that Flasher’s now on the fritz. When the app is triggered, the light just turns off and on once, pause for 45-60 seconds, and the fire off the remaining flashes machine gun quick.

Certainly seems to be related to the delay - it seems to accumulate. If you set the on/off duration really low, that erroneous pause is much shorter. I’d guess the handling/assumed syntax of delayed actions has changed? I’ve been trying to goof around either a few hard-coded (non-parametric) flashes with the runIn command, but I’m all thumbs over here. Might be something awry with logging as well, but I’m still poking there as well. Meaty (and unmodified) part of the code below:

private flashLights() {
def doFlash = true
def onFor = onFor ?: 1000
def offFor = offFor ?: 1000
def numFlashes = numFlashes ?: 6

log.debug "LAST ACTIVATED IS: ${state.lastActivated}"
if (state.lastActivated) {
    def elapsed = now() - state.lastActivated
    def sequenceTime = (numFlashes + 1) * (onFor + offFor)
    doFlash = elapsed > sequenceTime
    log.debug "DO FLASH: $doFlash, ELAPSED: $elapsed, LAST ACTIVATED: ${state.lastActivated}"
}
if (doFlash) {
    log.debug "FLASHING $numFlashes times"
    state.lastActivated = now()
    log.debug "LAST ACTIVATED SET TO: ${state.lastActivated}"
    def initialActionOn = switches.collect{it.currentSwitch != "on"}
    def delay = 1L
    numFlashes.times {
        log.trace "Switch on after  $delay msec"
        switches.eachWithIndex {s, i ->
            if (initialActionOn[i]) {
                s.on(delay: delay)
            }
            else {
                s.off(delay:delay)
            }
        }
        delay += onFor
        log.trace "Switch off after $delay msec"
        switches.eachWithIndex {s, i ->
            if (initialActionOn[i]) {
                s.off(delay: delay)
            }
            else {
                s.on(delay:delay)
            }
        }
        delay += offFor
    }
}

}

I mentioned this in a recent support ticket and was informed that the problem can be reproduced in-house at SmartThings. As with other issues, support recommended folks to open tickets with Support. This helps to prioritize fixes.

So if you are experiencing the issue with The Flasher or similar app, please open a support ticket.

Thanks!