Hello everyone, had this working and don’t know what I did. I am probably over thinking it.
I have a script to auto logout users. logout@1,000ms. script located in timer script section. timer is located on nav and has tags for certain values. here is the time script:
# Log user out once timer runs out
TimerValue = system.tag.read("System1/BadgeSystem/LogoutTimerValue")
if TimerValue.value == 180:
system.nav.swapTo('Logged Off')
system.security.switchUser("Testuser", "Testuser")
system.tag.writeToTag("System2/BadgeSystem/DisplayCountdown", 0)
system.tag.writeToTag("System2/BadgeSystem/LogoutTimerRunning", 0)
I can see the tag cycle and hit the value of 180, not sure why it is not executing.
Thank you in advance for any help.
I got it to work, by switching from delay to fixed rate.
What is System1/BadgeSystem/LogoutTimerValue
, I assume a expression tag you made that counts up?
One thing I would note - TimerValue.value == 180
if the tag value of 180 for some reason gets skipped, this then script will never work again, so perhaps TimerValue.value >= 180
is more appropriate.
However, instead of making your own timer expression tag, you can also use system.util.getInactivitySeconds - Ignition User Manual 8.0 - Ignition Documentation to directly get the number of seconds since the user last touched the keyboard or mouse. So then you could do
inactiveSeconds = system.util.getInactivitySeconds()
if inactiveSeconds > 180:
# Logout
Assuming you are working in vision.
I did not make an expression that counts up. I just monitor a value of a timer
I don’t like the inactivity because it resets every time someone touches the screen
Oh so are you saying you want to log them out no matter what after 3 minutes? Ok then yes don't use my method.
I did not make an expression that counts up. I just monitor a value of a timer
Ok, I don't see that tag on my projects, so I assume it must have been created. Can you check the tag definition to see if its an expression of some sort?
Again though the major problem as I see it is with TimerValue.value == 180
you are relying on your Timer Script which is running every 1 second to run through and reads the tag at the same exact moment your tag hits 180 - there is no guarantee of that. What happens if you do TimerValue.value >= 180
? Does that fix the problem?