APC UPS Data Center & Enterprise Solutions Forum
Schneider, APC support forum to share knowledge about installation and configuration for Data Center and Business Power UPSs, Accessories, Software, Services.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2021-07-01 01:38 AM . Last Modified: 2024-03-06 01:30 AM
I have a need to embed UPS control and monitoring inside a body of C-language code, a large test application. I have about a dozen SmartUPS units scattered around a large test site. There will be a GUI, one of many GUI panels dealing with the test, which displays UPS status and numeric values. (I have at least one other kind of device on the etwork that will require SNMP control and monitoring, an NTI IPDU, so I need to learn how to do this.)
Having never done anything before using SNMP, I'd like some advice on the least painful way to approach this. I have thought about including Net_SNMP libraries in the application, and developing control and monitor function calls in that manner. From this forum I ran across the Solarwind website, with the very nice MIB tree and MIB list for the APC products, so that aspect looks very straight-forward.
So advice, and if anyone has any code examples, I'd greatly appreciate it. I hate reinventing the wheel.
(20 years ago I thought C looked like a typewritter had barfed. Then I came across MIB files.)
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2021-07-01 01:38 AM . Last Modified: 2024-03-06 01:30 AM
Thank you voidstar. I walked the whole UPS branch and there are something like 250 returns. I'll find that one. The course current returns 0, while powereing my HP desktop and monitor. I figure the measurement must round down rather than up. Getting the current in 10ths will help a lot.
I started working with Net-SNMP and have pretty much run into a brick wall. Net-SNMP is incredibly complicated, I imagine because it is trying to be the SNMP swiss army knife -- all things to all OS's and all IDE's. Unfortunately, that means to tailor the many, MANY header files, to something simple like XP and C99, isn't even remotely straight-forward. And when I compile, there are things missing. Still slogging through it.
And still looking for other solutions and/or C example code.
I found SNMP Source, which looks fairly simple, but the code examples are C# and VB. Not very helpful.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2021-07-01 01:38 AM . Last Modified: 2024-03-06 01:30 AM
>
(20 years ago I thought C looked like a typewritter had barfed. Then I came across MIB files.)
>
:-)
>
Having never done anything before using SNMP, I'd like some advice on the least painful way to approach this.
>
I think it helps to be able to play around with an SNMP GUI to figure out what you want the code to do. Grab [GetIF here|http://www.wtcs.org/snmp4tpc/getif.htm] and the latest [PowerNet MIB here|http://www.apc.com/resource/include/techspec_index.cfm?base_sku=SFPMIB405&tab=software] (scroll down or search the page). Then walk the device you intend to monitor and see what OIDs are supported.
All of my SNMP code is all in python. The net-snmp C API [looks fairly straightforward|http://www.net-snmp.org/wiki/index.php/TUT:Simple_Application].
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2021-07-01 01:38 AM . Last Modified: 2024-03-06 01:30 AM
I installed Getif as suggested. Very cool little app. I browsed the various commands for the SmartUPS1000 that I have connected to my network. Almost everytihng works and makes sense. I'm surprised that measurements are returned as integers only, such as output current, which returns a 0 or 1 only, when the actual current is like 1.4 Amps according to the UPS front panel.
.iso.org.dod.internet.private.enterprises.apc.products.hardware.ups.upsOutput.upsAdvOutput.upsAdvOutputCurrent
I'm still looking for someone out there who has some example code.
Over the next few days I'll investigate incorporating Net-SNMP and learning how to send queries from C function calls.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2021-07-01 01:38 AM . Last Modified: 2024-03-06 01:30 AM
>
I'm surprised that measurements are returned as integers only, such as output current, which returns a 0 or 1 only, when the actual current is like 1.4 Amps according to the UPS front panel.
.iso.org.dod.internet.private.enterprises.apc.products.hardware.ups.upsOutput.upsAdvOutput.upsAdvOutputCurrent
>
SNMP's number formats are all various forms of integers. So what we do is leave upsAdvOutputCurrent as-is for code that relies on it, and also include higher precision OIDs that report in tenths:
.iso.org.dod.internet.private.enterprises.apc.products.hardware.ups.upsOutput.upsHighPrecOutput.upsHighPrecOutputCurrent
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2021-07-01 01:38 AM . Last Modified: 2024-03-06 01:30 AM
Thank you voidstar. I walked the whole UPS branch and there are something like 250 returns. I'll find that one. The course current returns 0, while powereing my HP desktop and monitor. I figure the measurement must round down rather than up. Getting the current in 10ths will help a lot.
I started working with Net-SNMP and have pretty much run into a brick wall. Net-SNMP is incredibly complicated, I imagine because it is trying to be the SNMP swiss army knife -- all things to all OS's and all IDE's. Unfortunately, that means to tailor the many, MANY header files, to something simple like XP and C99, isn't even remotely straight-forward. And when I compile, there are things missing. Still slogging through it.
And still looking for other solutions and/or C example code.
I found SNMP Source, which looks fairly simple, but the code examples are C# and VB. Not very helpful.
Link copied. Please paste this link to share this article on your social media post.
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.