Ignition as Digital Signage?

I have 3 existing digital signs with things like time/temp, pictures, and general data for our employees. These are displayed in common office areas. I’ve been reaching some limitations with the software and don’t know if we can make the investment in something like tightrope.

So I got to thinking - why not use ignition. I own it and tt already has some of the data I need to display and has plenty of scripting abilities to make the screens change. Here’s some thoughts:

Scrolling Marquee - found some code on the forum that does the trick
Switching windows on a timer - did some tinkering - can be done
Auto Launch full screen - works (except a real fine border line around the window)
Auto launch on boot - there is a script that will do that on the forum (replace the explorer shell)

One final issue I can’t nail: how can I force the client to update when I publish an update to the project? I don’t want the banner up on public screens.

Has anyone this for something that auto launches and is displayed in a public area? What issues did you run into?

Discuss!

Tom

I found an answer to the update issue: Project Properties, Client, General: Update Mode to Push.

When you save and publish it immediately updates the client with no user intervention.

Glad to see you’re coming along! :smiley:

I have three Signage installs here in the plant. Only issue I’ve really had so far is keeping bulbs in stock, since the powers that be decided that projectors running in an industrial environment 24x7 is a really good idea… :unamused:

Projectors? How are you using them in an industrial environment if you don’t mind me asking?

I’ve made more headway and have it looking like my existing screens, but noticed two things:

  1. There is a border around the outside of the window that is kind of annoying. I’m running in full screen mode, no menubar. The Window if not resizeable, starts maximized, and never displays the border or titlebar. The root container has no border also. You can see in the attached image that there is about a 2px line all the way around - I’ve pointed to it an arrows. How can I get rid of this?

  2. When inserting an image, I am putting in the size and position to match the existing screen. However, in some cases the size doesn’t match the image and I screw up the aspect ratio. I see I can change the strech mode, but in this case, I want to stretch the height to 100%, but make the width whatever it needs to be to maintain the aspect ratio of the original image.

Also, does anyone have any suggestions on how to switch the windows in a timed fashion? I’m thinking of keeping a list of windows in the database so it will contain the windows name, order, and the amount of time a slide should be displayed. There will be a client script that checks that every so often, and selects the next one if the time is up.

Thoughts or suggestions?

Tom

If you are launching the client in fullscreen mode and the windows are not showing the border or titlebars you shouldn’t get any borders. Can you post an actual screenshot of the problem?

Every component has a layout mode. There are two layout modes: relative and anchored. Relative tries to keep the width and height at the same ratio it was saved in the designer according the to width and height of the window. With relative you can either maintain the aspect ratio or not. If you don’t maintain aspect ratio the component can stretch.

Anchored mode allows you to anchor the component to various sides of the window. When you anchor it Ignition maintains the distance from the component to the side of the window at all times. So if you anchor it to top, left, and bottom the component will only stretch in the height. Take a look at this page in the user manual:

http://www.inductiveautomation.com/support/usermanuals/ignition/component_layout.htm

Yes, you can make a client timer event script that runs every 20 seconds (or whatever time you want) that can switch between different windows. You can store the windows in the database if you want. Here is an example script:[code]windows = [“Path/To/Window1”, “Path/To/Window2”, “Path/To/Window3”]
currentWindow = system.tag.getTagValue("[System]Client/User/CurrentWindow")

try:
idx = windows.index(currentWindow)
except:
idx = 0

if idx == (len(windows) - 1):
idx = 0
else:
idx += 1

nextWindow = windows[idx]
system.nav.swapTo(nextWindow)
[/code]This assumes you are using the basic navigation strategy where you only have one main (maximized) window at any given time.

We use them as PM status boards and as production counters. The example here is projected onto a 120" screen.

You may say “Hey, Jordan, I can’t read the numbers for the yellow ones!” Oddly enough they really are visible on the projected screen. The colors come out a shade or two darker and the numbers pop out then. :wink:


Travis, I get the same sort of thing, Border Daisplay and Titlebar Display set to “Never”

Here’s a blown up version of the upper left corner (5x)

You are right. There is a small border for the entire frame. I will add a ticket in to remove it. In the meantime you can add this code to the client startup script to remove the border:def doLater(): import system window = system.gui.getWindow("Main Window") window.parent.parent.parent.setBorder(None) system.util.invokeLater(doLater)Just replace “Main Window” with whatever maximized window you have open on startup.

Cool! Thanks, Travis.

Thanks, Travis. That worked.

I needed to be able to make the monitors sleep and wake up based on a schedule. I came up with this.

I used http://www.autohotkey.com/ (my favorite swiss army knife of windows scripting) for a couple of one liners:

Sleep:

SendMessage 0x112, 0xF170, 2,,Program Manager ; send the monitor into off mode

Wake up:

MouseMove, 1, 0, 1, R

(This Moves the mouse 1 pixel)

These scripts compile into an EXE that is put on the client. I intend on using that based on a schedule to turn the monitors on and off. For testing, I have a master “Sleep” tag that the client monitors for change - based on that I can put all the monitors with the project running to sleep and wake them up.

I had a Wyse C90LE laying around that I put Java on, put a shortcut to the project in the startup folder, and I have my player for the sign. It isn’t fast by any means, but once the project is loaded and cached, you can’t tell the difference from a more powerful PC.

My next steps are to design a database to drive the whole works (screens, playlists, players, schedules, etc) and make it so anyone could add a slide to the screens with minimal effort.

I hope the sleep/wakeup trick proves useful for someone

Tom

Yep! Along with autoIt (It’s what I used to write the Windows shell), you have a couple of great tools!