0

screensaver when no GPIO inputs for set period of time

So I am using an XT244 and I've created a menu screen that is navigated by using GPIO inputs. The momentary buttons on the kiosk allow users to navigate through a series of images using the "image list" component found in the other tab. I initially set a timeout of 3 minutes on the "image list" component thinking it would wait 3 minutes since the last GPIO event but I have discovered the 3 minutes begins counting as soon as the user enters the "image list" component. Since this slideshow is of important documents and quotes the user needs time to read each one of the slides and currently the screensaver just interrupts. BTW the screen saver is just a timout event that triggers a video to play in a loop until another GPIO event is sensed.

So....I need to know if I can setup a timeout event that starts counting down after any GPIO event and resets as long as GPIO events keep occuring. This may sound complicated but it would work just like a windows screensaver where it is based off of input from mouse or keyboard.

I am not a bright author guru....I am a video editor who has to occasionally setup and tweak brightsigns for some level of interactivity and selection of videos.

Thanks in advance. Hopefully there is a real easy way to do this. The only thing I found on the forums was someone trying to do the same thing but with a touchscreen and there were some answers but they do not apply to GPIO.

12 comments

  • 0
    Avatar
    Monica Knutson

    Hi Marty,

    I'd recommend setting up a "listener" zone (use an Audio zone) and a variable.  In the listener zone put an event handler with the timeout.  You can do the jump on a conditional (Advanced Tab > Set Conditional Targets button at the bottom left).

    Then on the listener zone you can still wait for GPIO inputs and reset the variable as part of the command actions.  It's much the same as using the Inactivity Timeout example found here:

    https://brightsign.zendesk.com/hc/en-us/community/posts/209958667-Inactivity-timeout 

    On the Timeout behavior in the listener zone, make it only change the Image List/Screensaver Zone to goto the Screensaver if the variable doesn't match the "zero".  Does that make sense?  I'll see if I can work up a quick example.

    Cheers,

    Monica

  • 0
    Avatar
    Marty

    Monica,

    I appreciate the help but it's all a little greek to me! I don't really recognize a lot of the items you are referencing in the first place. I generally create projects with 7-8 videos and just link them to dedicated buttons. They ultimately go back to a main menu like screen that is a video in the first place so it acts like a screen saver.

    Anyway....if you could be more specific or explain it like I'm a noob that would be great. I am currently trying to figure it out. I don't even know what a listener zone is so I'm stuck at step 1.....LOL.

    Thanks for any help.

  • 0
    Avatar
    Lyndon

     

    This video walks through adding a background zone, and using a timer. The timer resets each time a gpio is pressed. Once the timer is allowed to expire, it sends a zone message to the main zone that ransitions from the imagelist to the initial start state. 

    https://www.brightsignnetwork.com/download/Videos/background%20timeout%20gpio.mp4

     

  • 0
    Avatar
    Marty

    Lyndon,

    Thanks for the detailed video. Did you create that tutorial just for my question? If so....great. I haven't seen that video anywhere else so I appreciate it. I will give this a try later or in the morning. I have used a similar technique using the sync commands to get one brightsign to send remote commands to others over ethernet. Didn't realize that the listener was something similar.

    Thanks again. I will update when I have it working!

    Marty 

  • 0
    Avatar
    Lyndon

    Yes, I created the video because it was the easiest way to explain what you should do. I don't believe we have a faq on this specific use of BrightAuthor. 

  • 0
    Avatar
    Marty

    So....it appears to be working for the most part. I'd like for this to work for an overall screensaver for everything....main menus and image lists. Currently I have it set for 30 seconds....just for testing. When it kicks in I have it playing a 60 second video as a screen saver. When this 60 second video is over the Media End event dumps it back onto the main menu screen. At this point it just sits there and will never kick on again unless someone interacts with the unit. 

    So...using my newfound understanding of zone messaging....I set my main menu to send a zone message called "timer_start" upon entry. Then I set the "reset_timer" in zone 2 to listen for "timer_start". I figured this would reset the timer immediately rather than it waiting for a GPIO event that may never come....this is in a common area of a religious center and may be left on all night. 

    Is my theory sound? Because it doesn't seem to be working to reset the timer. Not really sure what the term entry command means exactly....does it perform this when the program loads as this is the initial state we are talking about. 

    To be clear I was hoping to create a loop when idle that would alternate between the screensaver and the main menu...

    thanks for everything.

  • 0
    Avatar
    Lyndon

     

    I don't know what's in your project.

    The example I sent restarted the timer on any gpio press. You can send another zone message from anywhere else to also restart the timer.  You just have to add a zone message event to the state that the timer is attached to to listen. 

     

     

    Above is what it looked like with just gpios restarting the timer. Below shows a zone message event added so that you can send messages from elsewhere...

     

     

    Now I just have to send that zone message as an advanced command any time I want the timer to restart.  Please send screenshots of the command you're sending to reset the timer, and the event you're listening for. 

  • 0
    Avatar
    Marty

    Here is the first menu state when the project loads.

    And here is what I have in zone two on the reset timer component.

    So to me it looks like my main menu should be sending the proper zone message to start the timer. It's labeled as entry commands but it doesn't seem to work form a clean boot and it doesn't work when the screensaver video finishes and it's media end event  directs it back to the main menu. Am I missing something? 

  • 0
    Avatar
    Marty

    FYI. I also tried sending the same command using the media end state from the screensaver video. So as it links back to the main menu it also sends the start_timer command via zone message and it doesn't seem to restart the timer. So I have to be doing something wrong....and I thought I was starting to get it! :)

  • 0
    Avatar
    Lyndon

    IN my example, it still takes gpio input to get to the reset time state. Did you add a zone message to the first state as sell like this...

     

  • 0
    Avatar
    Marty

    I have an idea for a work around since this only happens on the main menu.....which is the only menu you can arrive at without having pressed a GPIO button to get there. But I prefer to learn how to do it the right way before resorting to workarounds.

  • 0
    Avatar
    Marty

    That last one seems to have fixed it for me. Didn't realize I needed the listener on the top event handler. Still learning as I go. Thanks. Hopefully that will be all for this but don't be surprised if I run into other issues.

Please sign in to leave a comment.