How are the Virtual Inputs defined in BVMS and how do they work?
Question
How are the Virtual Inputs defined in BVMS and how do they work?
Answer
A Virtual Input does not behave like a typical “open = ON / close = OFF” signal.
Instead, it works like this, the Virtual Input having 2 states:
SwitchOn → Virtual Input becomes Closed (in BVMS Operator Client: Input closed) → Event state ON
SwitchOff → Virtual Input becomes Opened (in BVMS Operator Client: Input opened) → Event state OFF
In the Operator Client, you will see:
Closed = ON
Opened = OFF
What does happen in your configuration?
If your setup is:
Input Open → Start Script 1 → SwitchOn (activate Virtual Input)
Input Close → Start Script 2 → SwitchOff (deactivate Virtual Input)
Then internally BVMS does this:
When the physical input opens → Virtual Input is set to Closed (ON)
When the physical input closes → Virtual Input is set to Opened (OFF)
Why does it look like it’s wrong?
From a user perspective, you may expect:
Input Open → Virtual Input “Open” alarm
Input Close → Virtual Input “Close” alarm
But BVMS does the opposite in terms of naming:
SwitchOn does NOT mean “open” - it means “closed”
SwitchOff does NOT mean “close” - it means “opened”
Note:
If the same command is executed twice (for example, SwitchOff when the Virtual Input is already opened), no new event will be shown in the Operator Client.
This is because BVMS only logs state changes, not repeated states.