Your comments

I honestly don't understand what you mean with this answer.


I'm not using i3 Pro to play video, I call another application to play the video. I am not using i3 Pro to control an external application, the question was never about controlling an external application. The question is about i3 Pro being on top of all other windows/applications even though it's not running full screen and the "Always on top" option is disabled.

But when i3 is not in full screen, it also doesn't work... 

OR, AND, NOT items can be used only for Boolean variables

That is not true, in the scheme above the "From Tag" items are linked to feedbacks that return a value between 0 and 100. And that works fine because everything other than 0 in a boolean world is true. So in the scheme if any of the Tag feedbacks return a value >0, the end result "To Tag" is true. If all return 0, the To Tag is false.

Most installers have common knowledge about PLC systems and understand the "OR", "AND", "NOR", etc. logic very well. The current behavior is none of these and also strange in the context of a button. Who would want "the last state change of several feedbacks" reflected on a button? :s I honestly can't think of a scenario in which that would make sense.

Making it work like an "OR" or "AND" would make much more sense and would also be easier to explain. So if you don't want to change the functionality of the current trigger button, add another type of button "Logic button" that allows you to choose between OR/AND and that can work with multiple relations.


At this moment I've solved this by building a scheme with an OR construction for all the relations/feedbacks that is being written to a tag (see screenshot below). I've had to create more than 10 of these schemes in my project now.


Why not use the other solution?

Our projects are being worked on by multiple people, it's not easy to carry over a project (not only iRidium, but any project) that has 'dirty hacks' (because that's what I call it) in it to accomplish something. Layering buttons on top of each other is not elegant, not in any way. I want my projects to be self explanatory so that people can continue working with it, make changes and add functionality even when I'm not available to explain strange constructions that have been used. Using a scheme is also not the best solution in terms of self explanatory because you can't trace back the project tag to the scheme.

 


Answered?

I don't think this work-around is an answer. Are you going to look at how this functionality is implemented now and change it to make it more logical? So support multiple relations, or limit it to 1.....

I get it, you're right.. it not the most elegant solution.

Would rather like iRidium to change the functionality (or limit the relations to 1 if they are not planning to support multiple relations).

I do not understand what you mean.

Can you create a screen recording of how to set this up?

No, you can close this topic. tnx!

Okay, too bad we can't use a system token with AddListener.


I think I'll solve it like so:


var _timerActions = [];

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value) {
  if (name == "System.Time.Minutes") {
    for(var i = 0; i < _timerActions.length; i++) {
      _timerActions[i](value);
    }
  }
});


When a user selects a time on the panel and clicks "start" a function will be added to the _timerActions array. In those functions I can then check against IR.GetVariable("System.Time.Hour") and IR.GetVariable("System.Time.Minutes").

I just ran the emulator from Studio, but good to know this function is only available when it's downloaded from the cloud.

Thanks!