Skip to content
DataMiner DoJo

More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in posts
Search in pages
Search in posts
Search in pages
Log in
Menu
  • Blog
  • Questions
  • Learning
    • E-learning Courses
    • Open Classroom Training
    • Certification
      • DataMiner Fundamentals
      • DataMiner Configurator
      • DataMiner Automation
      • Scripts & Connectors Developer: HTTP Basics
      • Scripts & Connectors Developer: SNMP Basics
      • Visual Overview – Level 1
      • Verify a certificate
    • Tutorials
    • Video Library
    • Books We Like
    • >> Go to DataMiner Docs
  • Expert Center
    • Solutions & Use Cases
      • Solutions
      • Use Case Library
    • Markets & Industries
      • Media production
      • Government & defense
      • Content distribution
      • Service providers
      • Partners
      • OSS/BSS
    • DataMiner Insights
      • Security
      • Integration Studio
      • System Architecture
      • DataMiner Releases & Updates
      • DataMiner Apps
    • Agile
      • Agile Webspace
      • Everything Agile
        • The Agile Manifesto
        • Best Practices
        • Retro Recipes
      • Methodologies
        • The Scrum Framework
        • Kanban
        • Extreme Programming
      • Roles
        • The Product Owner
        • The Agile Coach
        • The Quality & UX Coach (QX)
    • DataMiner DevOps Professional Program
  • Downloads
  • More
    • Feature Suggestions
    • Climb the leaderboard!
    • Swag Shop
    • Contact
      • General Inquiries
      • DataMiner DevOps Support
      • Commercial Requests
    • Global Feedback Survey
  • PARTNERS
    • All Partners
    • Technology Partners
    • Strategic Partner Program
    • Deal Registration
  • >> Go to dataminer.services

Standalone SNMP Write requires delayed SNMP read. Best practice?

Solved1.94K views17th November 2021delay SNMP write
2
filiep geeraert [SLC]83 15th November 2021 0 Comments

What would be the best way to implement a delay for an SNMP Get operation, when the device needs some time to process a WRITE-only SNMP Set parameter?

Example :

  • a 'Load Presets' BUTTON. (write only SNMP action)
  • the device needs some time to prepare the presets

In this particular case we cannot immediately retrieve the Presets, because the device needs some time to prepare them.

What is the best practice for delaying the SNMP Get operation after having executed the SNMP set action?

filiep geeraert [SLC] Selected answer as best 17th November 2021

4 Answers

  • Active
  • Voted
  • Newest
  • Oldest
1
Mieke Dryepondt [SLC] [DevOps Advocate]3.58K Posted 16th November 2021 2 Comments

Hi Filiep,
I have made a small test connector using the below approach. When checking the stream viewer the delay is done correctly before the GET is executed.
Approach:

  1. A write parameter with SNMP OID + options="snmpSet" triggers a QAction.
  2. This QAction will sleep for 5seconds and force the execution of a trigger (protocol.CheckTrigger method)

    System.Threading.Thread.Sleep(5000);
    protocol.CheckTrigger(50);

  3. The trigger will execute an action that will run a Group 50 containing the linked params. (execute next)

Note that the options="snmpSet" will immediately copy the write value into the corresponding read param.

I used the default snmp system contact and system name as test setup.
A timer will run a group 10 with only the contact param. As soon as I write the contact value, the qaction runs and eventually a group 50 is launched to get both the contact and name parameters.

Alternative you can use the next attribute. Important note on this is that the this attribute is applied as a delay between 2 items defined in the <Content> of the component.
For example: A Group (poll action) with 2 action

<Group id="1">
<Name>Test</Name>
<Description>Test</Description>
<Type>poll action</Type>
<Content>
<Action next="5000">1</Action>
<Action>2</Action>
</Content>
</Group>

The Action 1 will be executed as soon as the group is triggered. Then it will wait 5s before the next item = Action 2 is executed.

This could mean Action 1 needs to be dummy action that does nothing if you simply want to wait X time before something needs to happen when this group is being executed from the protocol Queue.

For your use case this would mean the following approach:

  1. A write parameter with SNMP OID + options="snmpSet" triggers a Trigger
  2. This Trigger runs an action that will run a Group. (the next attribute is not supported on triggers)
  3. This Group is of type poll action containing 2 actions as described above where the 1st action does nothing. and the 2nd action will run a group that does the polling of the required snmp parameters.
Jorge Dias [SLC] [DevOps Enabler] Posted new comment 17th November 2021
filiep geeraert [SLC] commented 16th November 2021

The second solution is indeed as we implemented it.
The first solution for some reason did not work, I would gladly retest it, but the device was not supposed to be available for doing sets anymore, and a simulation is not entirely reliable for this.

Jorge Dias [SLC] [DevOps Enabler] commented 17th November 2021

Another option, would be just to have a Trigger (on write param) > Action (sleep with your time) then Action (execute SNMP Group).

0
Wale Oguntoyinbo [SLC] [DevOps Advocate]3.35K Posted 16th November 2021 2 Comments

Not my area of expertise but recently had a similar situation where we needed to introduce a delay between a SET/GET pair. Once we understood the device behaviour we made use of the next attribute of the Protocol.Groups.Group.Content.Pair and it worked well.

filiep geeraert [SLC] Edited comment 16th November 2021
filiep geeraert [SLC] commented 16th November 2021

You mention pairs, but that is a serial connection, this protocol is SNMP, however the next attribute does exist beyond pairs as well.

Wale Oguntoyinbo [SLC] [DevOps Advocate] commented 16th November 2021

Indeed it was a serial connection…thought it would translate to SNMP also. Like I said not an expert 🙂

0
Joey Vanhalst [SLC] [DevOps Advocate]1.80K Posted 16th November 2021 2 Comments

Hi Filiep,

In this case, it also depends on a couple of things:

  • how long do you need to wait?
  • what happens if you don't wait long enough?
  • how "heavy" of an operation is retrieving this data?

Assuming it's not a very heavy operation, and you will receive "old" data or a timeout will occur, you could also poll this information each minute and not require any additional (and "complex") logic.

Joey Vanhalst [SLC] [DevOps Advocate] Posted new comment 16th November 2021
filiep geeraert [SLC] commented 16th November 2021

* From test results, in this particular case 1.5 seconds is enough.
* If we don’t wait long enough, we get old information back, but this information is important for the user.
Otherwise I could just leave it as is, because this information is polled at least once per minute.
* The information does not constitute a heavy burden for the device, I believe (1 group with 10 parameters)

Joey Vanhalst [SLC] [DevOps Advocate] commented 16th November 2021

1.5s is a very small time to wait. In that case, I would avoid any complex logic and work with a sleep to wait for this short amount of time. This would be easy to implement, and wouldn’t cause a lot of impact as it is only executed when a manual write is executed.

0
Robin Spruytte [SLC] [DevOps Advocate]637 Posted 16th November 2021 0 Comments

This is my general approach when using time windows.

When the button is pressed you can store the time in a parameter. Then, using a timer-based QAction you can check if a (perhaps user configurable) timespan has been reached since that time and the current time, after which you can either check the trigger to do the get operation, or wait for the next execution of the QAction, and check again.

Depending on how strict you want the time to be you will need a fast or a really fast timer. e.g. if your minimum timespan is 30 seconds, but the timer for the QAction is also 30 seconds, you have a worst case scenario of it taking close to 60 seconds. A 5 second timer would reduce it to maximum of 35 seconds.

Robin Spruytte [SLC] [DevOps Advocate] Answered question 16th November 2021
Please login to be able to comment or post an answer.

My DevOps rank

DevOps Members get more insights on their profile page.

My user earnings

0 Dojo credits

Spend your credits in our swag shop.

0 Reputation points

Boost your reputation, climb the leaderboard.

Promo banner DataMiner DevOps Professiona Program
DataMiner Integration Studio (DIS)
Empower Katas

Recent questions

Alarm Dashboard PDF/CSV Export 1 Answer | 0 Votes
Is the Microsoft SharePoint Connector Still Usable 0 Answers | 0 Votes
Is the Microsoft SharePoint Connector Still Usable 0 Answers | 0 Votes

Question Tags

adl2099 (115) alarm (62) Alarm Console (82) alarms (100) alarm template (83) Automation (223) automation scipt (111) Automation script (167) backup (71) Cassandra (180) Connector (108) Correlation (68) Cube (150) Dashboard (194) Dashboards (188) database (83) DataMiner Cube (57) DIS (81) DMS (71) DOM (139) driver (65) DVE (55) Elastic (83) Elasticsearch (115) elements (80) Failover (104) GQI (159) HTTP (76) IDP (74) LCA (151) low code app (166) low code apps (93) lowcodeapps (75) MySQL (53) protocol (203) QAction (83) security (88) services (51) SNMP (86) SRM (337) table (54) trending (87) upgrade (62) Visio (539) Visual Overview (345)
Privacy Policy • Terms & Conditions • Contact

© 2025 Skyline Communications. All rights reserved.

DOJO Q&A widget

Can't find what you need?

? Explore the Q&A DataMiner Docs

[ Placeholder content for popup link ] WordPress Download Manager - Best Download Management Plugin