MIB for programmable HVAC controller, not sure how to approach as cmk plugin

Hey all,

I’m in the process of writing my third cmk plugin for monitoring SNMP devices, but I’m not sure how to deal with this one… I’m hoping someone here will have a suggestion, or a workaround for how to monitor the equipment.

The device in question is a Reliable Controls Mach-PRO controller, and the MIBS are:


Someone over in the librenms world was requesting support for this device, but I don’t see much other than the initial request… and the MIBs are posted there

The problem I’m facing is, that the MIB has three tables, inputs, outputs and variables… but since it’s a programmable controller each one could have different sensors depending on how it’s been setup… For example, OID 1 could be temperature on one controllers variable table, and a water flow sensor on another controller… so assigning units in the check function becomes difficult, if not impossible

The equipment was previously monitored with another tool that allowed manual assignment of an OID on a device to a specific unit type (for charting), and description… Does anybody have a suggestion on how the OIDs can be monitored with Checkmk? Other thoughts?


This looks like a bad SNMP specification.
There is only a Name attribute in the tables that contains a string configurable by the operator of the device.
The Type attribute only distinguishes between analog and digital.

You would have to use the Name and try to map that to the checks which can be very difficult.

I had my experience in the past with BACnet and they were not good from an SNMP check plugin developer’s perspective. We finally decided that it’s easier to tell the customer to use check_snmp to query the values as the configuration of these devices cannot be used to automatically create correct service checks.

At the moment I am facing a similar issue. The data I get back only contains a uid and the value, not even a name :frown: . I am using a discovery rule where the user has to assign the uids to a channel type and add a name to each channel. In your case, you can use the discovery rule to have the user associate a sensor type with each name. In my case it looks like this

Thanks Robert, appreciate your response

You’ve confirmed what I was thinking, and in this case I’ll tell the customer (myself) the same thing. I haven’t yet used check_snmp I did a bit of searching and it looks like this can be done directly through the web interface using: Integrate Nagios plugins… but I haven’t been able to find any examples yet though, if you’re aware of any online I would be grateful to know where to find such a thing.


Thanks @thl-cmk for the response,

It always seems someone out there has an even worse problem! haha, I don’t envy what you’re dealing with… I have a question though, the way you’re applying the channel types and service names manually in the web interface, how’re you doing this? I don’t recognize this from anywhere in CheckMK, which seems to have a wealth of options I don’t yet know about


Robert, please disregard my question!

I just found the plugin below, and I think you may know the author


1 Like

Found an example in this thread, by @Yggy

1 Like

It’s basically like in the WATO rule for the check function but for the discovery function of the check plugin. In the CMK documentation you will find the very basics of how to write your one WATO rules here.

In CMK you can have a look at the interface check for excample. The also use a discovery rule. Look for Network interface an switch port discovery.

Or you can have a look at my BGP peer plugin.

Ah! ,ok I didn’t realize that’s what I was looking at in your screenshot. I made a simple WATO rule for one of my previous plugins, but decided to leave it out, because I discovered the MIB had the value set by the user (on the device itself), and it didn’t want to introduce confusion

Your BGP plugin is excellent! I just tested it on our test server, and will be adding it to our production soon which will make our network team happy

1 Like