Hi Skyline team,
I’m implementing SNMP traps in a connector to reduce reliance on polling.
However, the traps returned by the device use different severity codes from those used in the parameter.
For example:
The parameter reports: 0 = Locked, 1 = Unlocked
The trap reports: 2 = Locked, 3 = Unlocked
Because of this mismatch, I can’t simply use setBindings to update the parameter directly.
Is there a way to map incoming trap values to custom values (e.g. 2→0 and 3→1) without using a QAction?
Alternatively, is there a way to achieve this using Trigger + Action (for example, to set a literal value based on a trap message)?
I considered chaining increment and copy actions, but that gets messy, and using a QAction feels overkill for such a simple conversion.
Let me know if you have any ideas that could help my use case.
Hi Wade,
Although the docs states to only use it on polled parameters (which you could argue is the case for a trap), you could use a Sequence with a modulo operation 'rest:2' or '%:2'. This will end up setting 0 for all even values and 1 for all odd values, which would work in the case you explained.
If that does not work as expected, You could also mimic the logic that you would do in a QAction by doing something like below. It is however not fullproof (see at the end)
Let's assume the original param is (A)
Make a 'fixed' (B) param with value 0 to represent the Locked value
Make a 'fixed' (C) param with value 1 to represent the Unlocked value
Make a new param to receive the value of the trap binding (D)
Create an action to 'copy' value from (B) to (A) = (Set Locked)
Create an action to 'copy' value from (C) to (A) = (Set Unlocked)
Create a trigger 'on change' for param (D) with a condition to check value in (D) for 2 or 3 and 'execute next' either action (Set Locked) or (Set Unlocked) accordingly.
The issue with the last method is that the chain will only trigger if the received value on D is different than the previous value. However, in this case you might not need to update A anyway.