$data[0]["s{$i}1MINInt"] * $scale, 'limit_high' => $data[0]["s{$i}1MAXInt"] * $scale ]; if ($temp_unit === 'fahrenheit') { $options['sensor_unit'] = 'F'; } discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, 0, $descr, $scale, $value, $options); } if (!in_array($data[0]["s{$i}2Int"], $invalid)) { $descr = '#2 ' . $data[0]["s{$i}description"] . ' (' . $data[0]["s{$i}ID"] . ')'; $oid_num = ".1.3.6.1.4.1.38783.3.3.1.$i.2.0"; $oid_name = "s{$i}2Int"; $value = $data[0][$oid_name]; $scale = 0.001; $options = [ 'limit_low' => $data[0]["s{$i}2MINInt"] * $scale, 'limit_high' => $data[0]["s{$i}2MAXInt"] * $scale ]; if ($temp_unit === 'fahrenheit') { $options['sensor_unit'] = 'F'; } discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, 0, $descr, $scale, $value, $options); } } // Analog inputs for ($i = 1; $i <= 4; $i++) { $oids = [ "voltage{$i}description.0", "voltage{$i}Int.0", "voltage{$i}max.0", "voltage{$i}min.0", ]; $data = snmp_get_multi_oid($device, $oids, [], $mib, NULL, $flags); $descr = $data[0]["voltage{$i}description"]; switch (substr($descr, 0, 2)) { case 'I ': $type = 'current'; $descr = substr($descr, 2); break; case 'F ': $type = 'frequency'; $descr = substr($descr, 2); break; case 'H ': $type = 'humidity'; $descr = substr($descr, 2); break; default: $type = 'voltage'; } if (!in_array($data[0]["voltage{$i}Int"], $invalid)) { $oid_num = ".1.3.6.1.4.1.38783.3.3.2.$i.0"; $oid_name = "voltage{$i}Int"; $value = $data[0][$oid_name]; $scale = 0.001; $options = [ 'limit_low' => $data[0]["voltage{$i}min"] * $scale, 'limit_high' => $data[0]["voltage{$i}max"] * $scale ]; discover_sensor_ng($device, $type, $mib, $oid_name, $oid_num, 0, $descr, $scale, $value, $options); } } // Digital inputs for ($i = 1; $i <= 4; $i++) { $oids = [ "digitalInput{$i}description.0", "digitalInput{$i}State.0", ]; $data = snmp_get_multi_oid($device, $oids, [], $mib); $descr = $data[0]["digitalInput{$i}description"]; $oid_num = ".1.3.6.1.4.1.38783.3.3.3.$i.0"; $oid_name = "digitalInput{$i}State"; $value = $data[0][$oid_name]; discover_status_ng($device, $mib, $oid_name, $oid_num, 0, 'teracom-digitalin-state', $descr, $value, ['entPhysicalClass' => 'other']); } // Relay outputs for ($i = 1; $i <= 4; $i++) { $oids = [ "relay{$i}description.0", "relay{$i}State.0", ]; $data = snmp_get_multi_oid($device, $oids, [], $mib); $descr = $data[0]["relay{$i}description"]; $oid_num = ".1.3.6.1.4.1.38783.3.3.4.$i.1.0"; $oid_name = "relay{$i}State"; $value = $data[0][$oid_name]; discover_status_ng($device, $mib, $oid_name, $oid_num, 0, 'teracom-relay-state', $descr, $value, ['entPhysicalClass' => 'other']); } // EOF