# Device Diagnostics Page

**URL:** <https://forum.inductiveautomation.com/t/device-diagnostics-page/116468>\
**Category:** Ignition\
**Tags:** perspective, ignition81\
**Created:** [July 20, 2026, 7:49pm UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468 "2026-07-20T19:49:25Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 20, 2026, 7:49pm UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/1 "2026-07-20T19:49:25Z")

</div>

For those that might be interested, I took the Device Diagnostics project on the exchange and turned it into something more. It now displays PLC offline events in a day and the minutes along with battery status plus summarizes the types of older Rockwell PLC's to the current Logix types. This can be modified to your PLC types. I also created a couple of UDT's that generate the data you see on the page and it no longer just relies on the gateway info but much more. I was able to tie all my plants to one project and read the tags from each to display all my PLC status in one location. Not bragging, just offering if someone wants it.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/1/f131191b243e44280970c21dd3149eb15cfa2b1a.png)

---

<div class="post-metadata">

**Author:** ![Lynn\_Martineau](https://avatars.discourse-cdn.com/v4/letter/l/f1d935/32.png) [@Lynn\_Martineau](https://forum.inductiveautomation.com/u/Lynn_Martineau)\
**Post date:** [July 20, 2026, 9:10pm UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/2 "2026-07-20T21:10:50Z")

</div>

Will you be posting this on the Exchange?

---

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 20, 2026, 9:35pm UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/3 "2026-07-20T21:35:33Z")

</div>

I would like to send it to someone and have them go through it using the UDT's I made. It's not a complete project in itself like a lot of stuff in the exchange. You have to build your tags out to make it work. However, I can modify the code to automatically create the tags needed, you would just have to provide the tag provider name.

---

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 20, 2026, 9:41pm UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/4 "2026-07-20T21:41:15Z")

</div>

I also have code that will create your PLC gateway devices from a spreadsheet.

---

<div class="post-metadata">

**Author:** ![Lynn\_Martineau](https://avatars.discourse-cdn.com/v4/letter/l/f1d935/32.png) [@Lynn\_Martineau](https://forum.inductiveautomation.com/u/Lynn_Martineau)\
**Post date:** [July 20, 2026, 10:04pm UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/5 "2026-07-20T22:04:14Z")

</div>

That would be fun project. I think this will be a great utility where it can be used.

At my last job, I replaced Kepware with Ignition and I got a lot of utility from listDevices  
My current job, all devices are Kepware. I get 0 rows from:

```python
deviceList = system.device.listDevices()
print deviceList.rowCount

```

I can get some details from Kepware 'connected' tags but nothing as useful as what you have built.

---

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 21, 2026, 1:30am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/6 "2026-07-21T01:30:07Z")

</div>

I will share my global script I use to extract the info tomorrow.

---

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 21, 2026, 3:20am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/7 "2026-07-21T03:20:28Z")

</div>

```python
def getDevicesDrivers():
    deviceDS = system.device.listDevices()
    data = []

    for row in range(deviceDS.getRowCount()):
        name = deviceDS.getValueAt(row, "Name")

        data.append({
            "Name": name,
            "Driver": deviceDS.getValueAt(row, "Driver"),
            "IPAddress": system.device.getDeviceHostname(name)
        })

    return data
``
You can take this and use some code to do what you want with the results for each device connection.

```

---

<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:** [July 21, 2026, 4:00am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/8 "2026-07-21T04:00:51Z")

</div>

Just note that this will only work when run on a backend gateway (i.e. a gateway that has the device connections). If you have a split architecture, then you'll need to be running this via gw message handlers.

Also note, if you do need more info than the system.device.\* functions can collect, such as driver-specific configuration, you can read this from the device json configuration files directly stored on the gateway. This can let you set this info as well

e.g.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/5/35e3869d0a00796cd04028701d91baf54ca93b66.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/8/48dac1249c81d4e6490c7031233be113966682f0.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/3/d303f71c7f264730a7ae152093d333dbb40b3b9c.png)

---

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 21, 2026, 4:16am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/9 "2026-07-21T04:16:01Z")

</div>

Yes, I run that on all my gateways then put it in instances of a UDT that I use to store all the info for each device then use MQTT to transfer the instance data to a central gateway that I then turn into another Perspecitve view to display all sites. By doing it this way I can see real time data about my statuses, battery dispositions, key positions on the PLC's and how often they drop off network and for how long each day which is also historized and graphed when troubleshooting is required.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/7/d7153388929484507fcc38cb013b7492007b2964.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/e/4e924391138888ade7b61c3efe03d275b318e97e.png)

---

<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:** [July 21, 2026, 4:22am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/10 "2026-07-21T04:22:25Z")

</div>

Don't forget that device connection status and ip address tags are already there under the managed System tag provider which holds Ignition's connection status

---

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 21, 2026, 4:26am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/11 "2026-07-21T04:26:51Z")

</div>

Yep, that's where I get my status from and decide if it is connected or not and if an email alert is required. I also have something built in for when the PLC shows connected but is no longer browsing the tags and getting updated values. SLC and Micrologix PLC's have that issue especially after a disconnect and reconnect. IP addresses don't show in the system tags, at least not 8.1.53 that I am using.  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/9/2977ef6d793b45e5c3821f80c23494e216faac4e.png)

---

<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:** [July 21, 2026, 7:23am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/12 "2026-07-21T07:23:45Z")

</div>

Ah, for IP address I might have been thinking of the diagnostics tags from the opc ua server..

---

<div class="post-metadata">

**Author:** ![CTrenkamp](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ctrenkamp/32/38440_2.png) [@CTrenkamp](https://forum.inductiveautomation.com/u/CTrenkamp)\
**Post date:** [July 22, 2026, 1:04am UTC](https://forum.inductiveautomation.com/t/device-diagnostics-page/116468/13 "2026-07-22T01:04:36Z")

</div>

Import the UDT to the default tag provider, add the new project and launch once saved. It will get the devices from the gateway and create the tags using the UDT. The project was uploaded to the exchange. Not sure when it will show up to download.

[gateway\_monitor.1.0.0.zip](https://forum.inductiveautomation.com/uploads/short-url/iLaXHaWhueH0lixckMysERMoQpk.zip) (674.4 KB)

[PLC UDT.json](https://forum.inductiveautomation.com/uploads/short-url/nAKgcrljwguM0GMp9IelZpRXV2k.json) (13.3 KB)
