Index: includes/definitions/mibs/waystream.inc.php
===================================================================
--- includes/definitions/mibs/waystream.inc.php (revision 0)
+++ includes/definitions/mibs/waystream.inc.php (working copy)
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package        observium
+ * @subpackage     definitions
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2018 Observium Limited
+ *
+ */
+
+
+$mib = 'WAYSTREAM-MIB';
+$config['mibs'][$mib]['enable'] = 1;
+$config['mibs'][$mib]['identity_num'] = '.1.3.6.1.4.1.3375.2.6';
+$config['mibs'][$mib]['mib_dir'] = 'waystream';
+$config['mibs'][$mib]['descr'] = '';
+$config['mibs'][$mib]['version'][] = array('oid' => 'wsVersionString.0'); // WAYSTREAM-MIB::wsVersionString.0 = STRING: 6.1.9-ED-R
+
+
+$config['mibs'][$mib]['sensor']['wsFantable']['tables'][] = array(
+  'table'            => 'wsFantable',
+  'class'            => 'fanspeed',
+  'descr'            => 'Fan %index%',
+  'oid'              => 'wsFanRPM',
+  'oid_num'          => '.1.3.6.1.4.1.9303.4.1.2.3.1.2',
+  'mesured'          => 'fan'
+);
+
+$config['mibs'][$mib]['sensor']['wsTempTable']['tables'][] = array(
+  'table'            => 'wsTempTable',
+  'class'            => 'temperature',
+  'descr'            => 'Temp sensor %index%',
+  'oid'              => 'wsTempMeasured',
+  'oid_num'          => '.1.3.6.1.4.1.9303.4.1.2.1.1.2',
+  'oid_limit_low'    => 'wsTempThresholdLow',
+  'oid_limit_high'   => 'wsTempThresholdHigh',
+  'scale'            => 0.01
+);
+
+$config['mibs'][$mib]['status']['wsSFPTable']['tables'][] = array(
+  'descr'            => 'Port %index% SFP status',
+  'oid'              => 'wsSFPStatus',
+  'oid_num'          => '.1.3.6.1.4.1.9303.4.1.4.1.2',
+  'measured'         => 'port',
+  'type'             => 'wsSFPStatus'
+);
+
+$type = 'wsSFPStatus';
+$config['mibs'][$mib]['states'][$type][0] = array('name' => 'ok', 'event' => 'ok');
+$config['mibs'][$mib]['states'][$type][1] = array('name' => 'missing', 'event' => 'exclude');
+$config['mibs'][$mib]['states'][$type][2] = array('name' => 'invalid', 'event' => 'alert');
+
Index: includes/definitions/os.inc.php
===================================================================
--- includes/definitions/os.inc.php     (revision 9189)
+++ includes/definitions/os.inc.php     (working copy)
@@ -3420,6 +3420,18 @@
 $config['os'][$os]['sysDescr_regex'][]      = '/(?<hardware>[\w ]+?) +(?<version>\d[\d\.]+) +\(build \S+\) +(?<hardware1>\w+)/';
 $config['os'][$os]['mibs'][]                = "PEAKFLOW-SP-MIB";

+
+// Waystream
+$os = "ibos";
+$config['os'][$os]['text']                  = "Waystream iBOS";
+$config['os'][$os]['type']                  = "network";
+$config['os'][$os]['vendor']                = "Waystream";
+$config['os'][$os]['sysObjectID'][]         = ".1.3.6.1.4.1.9303.1";
+$config['os'][$os]['icon']                  = "waystream";
+$config['os'][$os]['sysDescr_regex'][]      = '/(?<hardware>[^,]+), iBOS Version (?<version>[^\s]+)/';
+$config['os'][$os]['mibs'][]                = "WAYSTREAM-MIB";
+
+
 // Broadcom

 /*
Index: includes/discovery/sensors/waystream-mib.inc.php
===================================================================
--- includes/discovery/sensors/waystream-mib.inc.php    (revision 0)
+++ includes/discovery/sensors/waystream-mib.inc.php    (working copy)
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage discovery
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2018 Observium Limited
+ *
+ */
+
+$entity_array   = snmpwalk_cache_oid($device, 'wsSFPTable', array(), 'WAYSTREAM-MIB');
+print_debug_vars($entity_array);
+
+foreach ($entity_array as $index => $entry)
+{
+  $port    = get_port_by_index_cache($device['device_id'], $index);
+  $options = array('wsSFPIndex' => $index);
+  if (is_array($port))
+  {
+    $entry['ifDescr']            = $port['ifDescr'];
+    $options['measured_class']   = 'port';
+    $options['measured_entity']  = $port['port_id'];
+    $options['wsSFPIndex_measured'] = $port['ifIndex'];
+  } else {
+    // Skip?
+    continue;
+  }
+
+  $temperatureoid = '.1.3.6.1.4.1.9303.4.1.4.1.12.'.$index;
+  $voltageoid     = '.1.3.6.1.4.1.9303.4.1.4.1.14.'.$index;
+  $rxpoweroid     = '.1.3.6.1.4.1.9303.4.1.4.1.20.'.$index;
+  $txpoweroid     = '.1.3.6.1.4.1.9303.4.1.4.1.18.'.$index;
+
+  //Ignore optical sensors with temperature of zero or negative
+  if ($entry['wsSFPTemp'] > 1)
+  {
+    discover_sensor($valid['sensor'], 'temperature', $device, $temperatureoid, $index, 'waystream', $entry['ifDescr'] . ' Temperature',          1, $entry['wsSFPTemp'], $options);
+    discover_sensor($valid['sensor'], 'voltage',     $device, $voltageoid,     $index, 'waystream', $entry['ifDescr'] . ' Voltage',          0.001, $entry['wsSFPVolt'],     $options);
+
+    if ($entry['wsSFPRXPower'] >= 0)
+    {
+      discover_sensor($valid['sensor'], 'power', $device, $rxpoweroid, 'wsSFPRXPower.' . $index, 'waystream', $entry['ifDescr'] . ' Rx Power', 0.001, $entry['wsSFPRXPower'], $options);
+      discover_sensor($valid['sensor'], 'power', $device, $txpoweroid, 'wsSFPTXPower.' . $index, 'waystream', $entry['ifDescr'] . ' Tx Power', 0.001, $entry['wsSFPTXPower'], $options);
+    }
+  }
+
+}
+
+unset($entity_array);
+
+// EOF
+