$entry) { $oid_name = "internal-tempc"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.1.1.2.$index"; //$type = $mib."-".$oid_name; $descr = "Internal Temperature"; $value = $entry['internal-tempc']; discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "internal-humidity"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.1.2.1.$index"; //$type = $mib."-".$oid_name; $descr = "Internal Humidity"; $value = $entry['internal-humidity']; discover_sensor_ng($device, 'humidity', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "internal-heat-indexC"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.1.4.2.$index"; //$type = $mib."-".$oid_name; $descr = "Internal Heat Index"; $value = $entry['internal-heat-indexC']; discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "internal-dew-point-c"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.1.7.1.$index"; //$type = $mib."-".$oid_name; $descr = "Internal Dew Point"; $value = $entry['internal-dew-point-c']; discover_sensor_ng($device, 'dewpoint', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "internal-power"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.1.3.1.$index"; $type = $oid_name; $descr = "Internal Power Source"; $value = $entry['internal-power']; discover_status_ng($device, $mib, $oid_name, $oid_num, $index, $type, $descr, $value); } /**** * * // Digital sensors -- ARGH, why not digital-sen.1.1.0 instead of digital-sen1-1.0 ! * // "Monitor for Temperature, Humidity, Heat Index (Feels Like), Power, Flood/Water, Smoke/Fire, Room Entry, Air Flow, Network Cameras and more." * // Great, now how do I see what sensor is connected over SNMP? Right... No OID for that. * // * // So we'll go by this table: * // * // | Temp sensor | Temp/Humidity sensor | Power Sensor * // --------+--------------------+--------------------------+----------------- * // sen1-1: | Temp in Celsius | Temp in Celsius | Amperes * // sen1-2: | Temp in Fahrenheit | Temp in Fahrenheit | Watts * // sen1-3: | N/A | Humidity | Volts * // sen1-4: | N/A | Heat index in Fahrenheit | Reference Volts * // sen1-5: | N/A | Heat index in Celsius | N/A * // * // You can name the sensors in the web interface, but the descriptions are not exported through SNMP :( * // ROOMALERT32E-MIB::digital-sen1-1.0 = INTEGER: 3606 * // ROOMALERT32E-MIB::digital-sen1-2.0 = INTEGER: 9690 * // ROOMALERT32E-MIB::digital-sen2-1.0 = INTEGER: 2912 * // ROOMALERT32E-MIB::digital-sen2-2.0 = INTEGER: 8441 ****/ $oids = snmpwalk_cache_oid($device, "digital", [], "ROOMALERT32E-MIB"); $index = 0; for ($i = 1; $i <= 8; $i++) { if (isset($oids[$index]["digital-sen$i-1"])) { // Sensor is present. if (!isset($oids[$index]["digital-sen$i-3"])) { // Only Temp sensor // ROOMALERT32E-MIB::digital-sen8-1.0 = INTEGER: 2125 // ROOMALERT32E-MIB::digital-sen8-2.0 = INTEGER: 7025 $oid_name = "digital-sen$i-1"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.1.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Temperature"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); } elseif (isset($oids[$index]["digital-sen$i-5"])) { // Don't hav any of these sensors, unable to test // ROOMALERT32E-MIB::digital-sen1-1.0 = INTEGER: 2100 // ROOMALERT32E-MIB::digital-sen1-2.0 = INTEGER: 6980 // ROOMALERT32E-MIB::digital-sen1-3.0 = INTEGER: 3454 // ROOMALERT32E-MIB::digital-sen1-4.0 = INTEGER: 6980 // ROOMALERT32E-MIB::digital-sen1-5.0 = INTEGER: 2100 // Temp/Humidity sensor $oid_name = "digital-sen$i-1"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.1.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Temperature"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "digital-sen$i-3"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.3.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Humidity"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'humidity', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "digital-sen$i-5"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.5.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Heat Index"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); } else { // Don't have any of these sensors, unable to test // Power sensor $oid_name = "digital-sen$i-1"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.1.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Current"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'current', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "digital-sen$i-2"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.2.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Power"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'power', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "digital-sen$i-3"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.3.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Voltage"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'voltage', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); $oid_name = "digital-sen$i-4"; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.2.$i.4.$index"; $descr = "External Digital Sensor " . str_pad($i, 2, '0', STR_PAD_LEFT) . ": Reference Voltage"; $value = $oids[$index][$oid_name]; discover_sensor_ng($device, 'voltage', $mib, $oid_name, $oid_num, $index, $descr, $scale, $value); } } } // Switch Sensors // ROOMALERT32E-MIB::switch-sen1.0 = INTEGER: 1 // ROOMALERT32E-MIB::switch-sen2.0 = INTEGER: 0 $oids = snmpwalk_cache_oid($device, "switch", [], "ROOMALERT32E-MIB"); $l = 0; foreach ($oids as $index => $entry) { foreach ($entry as $k => $value) { //switches start counting from 1; $l++; $oid_name = $k; $oid_num = ".1.3.6.1.4.1.20916.1.8.1.3.$l.$index"; $descr = "External Switch Sensor " . str_pad($l, 2, '0', STR_PAD_LEFT); discover_status_ng($device, $mib, $oid_name, $oid_num, $index, "switch-sen", $descr, $value); } } // EOF