# SNMP function for Ignition version 8

**URL:** <https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167>\
**Category:** 3rd Party Modules\
**Tags:** ignition80, ignition81, ignition83\
**Created:** [May 29, 2020, 3:22pm UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167 "2020-05-29T15:22:26Z")\
**Posts on this page:** 12\
**Page:** 2

<div class="post-metadata">

**Author:** ![PatrickB](https://avatars.discourse-cdn.com/v4/letter/p/838e76/32.png) [@PatrickB](https://forum.inductiveautomation.com/u/PatrickB)\
**Post date:** [November 6, 2025, 10:11am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/21 "2025-11-06T10:11:16Z")

</div>

Thanks to both the Norcal-SNMP and Embr-SNMP teams for their efforts to make their SNMP drivers work. I have tested both successfully (read only, v2c) in the office with some of our rapid deployment field equipment where SNMP is the only monitoring we’ve got (and very limited at that). The field failure risk is relatively high (esp for power) due to the rapid, limited, compromised and temporary nature of the deployments so hopefully we can monitor, alarm and intervene before failure. It will also enable to log data on the equipment’s performance over time to optimise specs.

Best regards,  
Patrick.

---

<div class="post-metadata">

**Author:** ![Matrix\_Engineering](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/matrix_engineering/32/19781_2.png) [@Matrix\_Engineering](https://forum.inductiveautomation.com/u/Matrix_Engineering)\
**Post date:** [November 6, 2025, 10:33am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/22 "2025-11-06T10:33:43Z")

</div>

Is there a minimum required version of Ignition for this module?

---

<div class="post-metadata">

**Author:** ![joshdunstan](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/joshdunstan/32/43306_2.png) [@joshdunstan](https://forum.inductiveautomation.com/u/joshdunstan)\
**Post date:** [December 3, 2025, 4:25am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/23 "2025-12-03T04:25:39Z")

</div>

I’m using it on an 8.1.33 so can’t comment other than that.

---

<div class="post-metadata">

**Author:** ![joshdunstan](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/joshdunstan/32/43306_2.png) [@joshdunstan](https://forum.inductiveautomation.com/u/joshdunstan)\
**Post date:** [December 3, 2025, 4:26am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/24 "2025-12-03T04:26:51Z")

</div>

I’ve updated this today, it now includes an option to use a privacy key for encryption, along with many error reporting improvements, and an updated readme.

[ignition-module-snmp](https://github.com/joshrdunstan/ignition-module-snmp)

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [January 4, 2026, 10:15am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/25 "2026-01-04T10:15:14Z")

</div>

I just submitted a PR for 8.3 support on this module. No idea if you have GH notifications enabled.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [January 4, 2026, 2:13pm UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/26 "2026-01-04T14:13:35Z")

</div>

Yup, seen!  
I can’t promise when I’ll get to look at it (busy season), but I can promise that I _will_ look at it.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [January 13, 2026, 10:16pm UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/27 "2026-01-13T22:16:41Z")

</div>

Beta PR (local build posted here)

> <https://github.com/mussonindustrial/embr/pull/434>
>
> Related to #396.
> 
> Currently, this PR adds:
> \- \`system.snmp.agent.read(agent, o…ids)\`
> \- \`system.snmp.agent.write(agent, oids, values)\`
> \- \`system.snmp.agent.walk(agent, oids)\`
> 
> For the release version, I'd like to have separate blocking/async versions of these functions:
> \- \[\] \`system.snmp.agent.readAsync(agent, oids, callback)\`
> \- \[\] \`system.snmp.agent.readBlocking(agent, oids)\`
> \- \[\] \`system.snmp.agent.writeAsync(agent, oids, values, callback)\`
> \- \[\] \`system.snmp.agent.writeBlocking(agent, oids, values)\`
> \- \[\] \`system.snmp.agent.walkAsync(agent, oids, callback)\`
> \- \[\] \`system.snmp.agent.walkBlocking(agent, oids)\`

Adds scripting functions for reading, writing, and walking.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [January 16, 2026, 9:35pm UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/28 "2026-01-16T21:35:01Z")

</div>

Another beta:

Changes:

1. Add `system.snmp.agent.readTable` for reading tables as datasets.  
You are expected to provide the columns of the table, and optionally lower/upper bound indexes for the section of the table you'd like to access.

Example:

```python
system.snmp.agent.readTable('printer', columns=['1.3.6.1.2.1.2.2.1.2', '1.3.6.1.2.1.2.2.1.6'], lowerBoundIndex='0', upperBoundIndex='2')

```

Result:

```python
subindex | 1.3.6.1.2.1.2.2.1.2 | 1.3.6.1.2.1.2.2.1.6
-----------------------------------------------------
1 | NC-46004h | 00:80:77:5d:8b:f1  
2 | SoftwareLoopBack |                    

```

1. `system.snmp.agent.read` and `system.snmp.agent.walk` now return lists of `QualifiedOidValues`. You've got the standard `QualifiedValue` stuff, plus an attached `.oid/.getOid()`.
2. `system.snmp.agent.write` now returns a list of `QualityCodes`.
3. Full keyword argument support.

Next step before release is `Blocking/Async` versions.

* * *

Final-ish beta, with `async` and `blocking` methods.

- `system.snmp.agent.read (hidden, uses blocking implementation)`
- `system.snmp.agent.readAsync`
- `system.snmp.agent.readBlocking`
- `system.snmp.agent.write (hidden, uses blocking implementation)`
- `system.snmp.agent.writeAsync`
- `system.snmp.agent.writeBlocking`
- `system.snmp.agent.walk (hidden, uses blocking implementation)`
- `system.snmp.agent.walkAsync`
- `system.snmp.agent.walkBlocking`
- `system.snmp.agent.readTable (hidden, uses blocking implementation)`
- `system.snmp.agent.readTableAsync`
- `system.snmp.agent.readTableBlocking`

1. The `async` methods return `PyCompletableFutures`.
2. The `QualifiedOidValues` now use a custom `Oid` class instead of directly using SNMP4J's OID type.

* * *

### PyCompletableFuture

In order to execute asynchronously this function returns a _PyCompletableFuture_. This is wrapper around a Java `CompletableFuture` with convenience functions for interacting with Python scripting. _PyCompletableFuture_ functions very similarly to the _Promise_ objects returned from `system.net.httpClient` calls.

#### Methods

| Signature | Returns | Description |
| --- | --- | --- |
| getFuture() | _CompletableFuture_ | Returns the raw underlying `CompletableFuture`. |
| cancel() | _Boolean_ | Cancels the completion of this future. |
| isDone() | _Boolean_ | Checks if the future is complete. |
| then(_callback_) | _PyCompletableFuture_ | Return a new _PyCompletableFuture_ that wraps this one's return value in a Python callable. |
| handleException(_callback_) | _PyCompletableFuture_ | Return a new _PyCompletableFuture_ that will run the provided callback in the event of an exception, to attempt graceful error handling. |
| whenComplete(_callback_) | _None_ | Call callback, asynchronously, whenever this future completes. |

* * *

### Example:

```python
def displayValue(result, e):
	system.vision.showMessage(str(result[0].value), "Async Operation Complete")

future = system.snmp.agent.readAsync('printer', ['1.3.6.1.2.1.1.5.0'])
future.whenComplete(displayValue)

```

Any feedback would be great, especially related to the usability of `readTable`.

[Embr-SNMP-Ignition83-0.3.0.modl](https://forum.inductiveautomation.com/uploads/short-url/1nQtYpDfYRhH4ZlKPRbrJcjZRBX.modl) (866.6 KB)

---

<div class="post-metadata">

**Author:** ![joshdunstan](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/joshdunstan/32/43306_2.png) [@joshdunstan](https://forum.inductiveautomation.com/u/joshdunstan)\
**Post date:** [January 27, 2026, 12:23am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/29 "2026-01-27T00:23:01Z")

</div>

I merged your PR, but looks like Ben has off and run with it - more time than I’ve had with it!! I’ll go check his out now.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [January 27, 2026, 12:42am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/30 "2026-01-27T00:42:08Z")

</div>

My bad, I didn’t mean to derail this thread 😂 At some point I got tagged here and lost the context.

---

<div class="post-metadata">

**Author:** ![dylan.vanzant](https://avatars.discourse-cdn.com/v4/letter/d/d6d6ee/32.png) [@dylan.vanzant](https://forum.inductiveautomation.com/u/dylan.vanzant)\
**Post date:** [March 27, 2026, 7:45pm UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/31 "2026-03-27T19:45:20Z")

</div>

Is this functional for 8.3 now?

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [April 27, 2026, 4:14am UTC](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167/32 "2026-04-27T04:14:34Z")

</div>

Have you tried @bmusson 's? It lets you define tags for your snmp variables instead of needing to use script functions and then write the results into tags with tag write. Each snmp device is configured as a device as well, making it a lot more transparent

[Previous page](https://forum.inductiveautomation.com/t/snmp-function-for-ignition-version-8/35167.md?page=1)
