Index: html/ajax/widget.php
===================================================================
--- html/ajax/widget.php	(revision 9699)
+++ html/ajax/widget.php	(working copy)
@@ -195,6 +195,12 @@
       echo '</div>';
       break;
 
+    case "weathermap":
+      echo '  <div class="box box-solid" style="overflow: hidden; height: auto; max-height: 100%">';
+      include($config['html_dir'] . "/includes/weathermap_core.inc.php");
+      echo '  </div>';
+      break;
+
     default:
       echo '<div class="grid-stack-item-content box box-solid" style="overflow: hidden; justify-content: center; align-items: center;">';
       echo '  <div class="box-content" style="overflow: hidden;">';
Index: html/includes/graphs/multi-port/bits_duo_separate.inc.php
===================================================================
--- html/includes/graphs/multi-port/bits_duo_separate.inc.php	(revision 9699)
+++ html/includes/graphs/multi-port/bits_duo_separate.inc.php	(working copy)
@@ -16,14 +16,14 @@
 
 $i = 0;
 
+$groups[1]['ports']       = $vars['idb'];
+$groups[1]['colours_in']  = 'oranges';
+$groups[1]['colours_out'] = 'red2';
+
 $groups[0]['ports']       =  $vars['id'];
-$groups[0]['colours_in']  = 'oranges';
-$groups[0]['colours_out'] = 'red2';
+$groups[0]['colours_in']  = 'greens';
+$groups[0]['colours_out'] = 'blues';
 
-$groups[1]['ports']       = $vars['idb'];
-$groups[1]['colours_in']  = 'greens';
-$groups[1]['colours_out'] = 'blues';
-
 foreach ($groups as $group_id => $group)
 {
   $iter=0;
Index: includes/definitions/os.inc.php
===================================================================
--- includes/definitions/os.inc.php	(revision 9699)
+++ includes/definitions/os.inc.php	(working copy)
@@ -6099,6 +6099,28 @@
 );
 $config['os'][$os]['mibs'][]                = "NSCRTV-ROOT";
 
+$os = "lxd_edfa";
+$config['os'][$os]['text']                  = "LXD Erbium Dotted Fibre Amplifier";
+$config['os'][$os]['type']                  = "network";
+$config['os'][$os]['icon']                  = "lxd";
+$config['os'][$os]['discovery'][]           = array(
+  'NSCRTV-ROOT::commonDeviceName.1'         => '/EDFA/',
+  'NSCRTV-ROOT::commonDeviceVendorInfo.1'   => '/ /',
+  'NSCRTV-ROOT::commonDeviceModelNumber.1'  => '/HA..../',
+);
+$config['os'][$os]['mibs'][]                = "NSCRTV-ROOT";
+
+$os = "lxd_emtx";
+$config['os'][$os]['text']                  = "LXD Externally Modulated Optic Transmitter";
+$config['os'][$os]['type']                  = "network";
+$config['os'][$os]['icon']                  = "lxd";
+$config['os'][$os]['discovery'][]           = array(
+  'NSCRTV-ROOT::commonDeviceName.1'         => '/EMTX/',
+  'NSCRTV-ROOT::commonDeviceVendorInfo.1'   => '/ /',
+  'NSCRTV-ROOT::commonDeviceModelNumber.1'  => '/HT....T/',
+);
+$config['os'][$os]['mibs'][]                = "NSCRTV-ROOT";
+
 $os = "symbol";
 $config['os'][$os]['text']                  = "Symbol Wireless";
 $config['os'][$os]['type']                  = "network";
Index: includes/discovery/sensors/nscrtv-root.inc.php
===================================================================
--- includes/discovery/sensors/nscrtv-root.inc.php	(revision 9699)
+++ includes/discovery/sensors/nscrtv-root.inc.php	(working copy)
@@ -64,7 +64,9 @@
     if (is_numeric($value) && $value != 0)
     {
       $descr = "Pump Bias $index";
-      discover_sensor('current', $device, $oid, $index, 'jdsu-edfa-pump-bias', $descr, $scale, $value);
+      $limits = array();
+      if ($os == 'lxd_edfa' || $os == 'lxd_emtx') { $limits = array('limit_auto' => FALSE); }
+      discover_sensor('current', $device, $oid, $index, 'jdsu-edfa-pump-bias', $descr, $scale, $value, $limits);
     }
   }
 }
@@ -87,7 +89,9 @@
     if (is_numeric($value) && $value != 0)
     {
       $descr = "Pump TEC $index";
-      discover_sensor('current', $device, $oid, $index, 'jdsu-edfa-pump-tec', $descr, $scale, $value);
+      $limits = array();
+      if ($os == 'lxd_edfa' || $os == 'lxd_emtx') { $limits = array('limit_auto' => FALSE); }
+      discover_sensor('current', $device, $oid, $index, 'jdsu-edfa-pump-tec', $descr, $scale, $value, $limits);
     }
   }
 }
@@ -116,6 +120,14 @@
 }
 
 // dBm sensors
+$oid     = ".1.3.6.1.4.1.17409.1.3.3.2.2.1.4.1";
+$product = snmp_get($device, $oid, "-Oqv", "NSCRTV-ROOT");
+$is_twoport_lxd_edfa = FALSE;
+
+if (strpos($product, 'P-2x') !== false && $os == 'lxd_edfa') {
+  $is_twoport_lxd_edfa = TRUE;
+}
+
 $oid   = ".1.3.6.1.4.1.17409.1.11.2.0";
 $value = snmp_get($device, $oid, "-Oqv", "NSCRTV-ROOT");
 
@@ -122,6 +134,7 @@
 if (is_numeric($value))
 {
   $limits = array('limit_high' => 16, 'limit_low' => 9, 'limit_high_warn' => 15, 'limit_low_warn' => 10);
+  if ($os == 'lxd_edfa' || $os == 'lxd_emtx') { $limits = array(); }
   discover_sensor('dbm', $device, $oid, 0, 'jdsu-edfa-tx', 'Optical Output Power', $scale, $value, $limits);
 }
 
@@ -131,9 +144,49 @@
 if (is_numeric($value))
 {
   $limits = array('limit_high' => -9, 'limit_low' => -18, 'limit_high_warn' => -10, 'limit_low_warn' => -14);
-  discover_sensor('dbm', $device, $oid, 0, 'jdsu-edfa-rx', 'Optical Input Power', $scale, $value, $limits);
+  if ($os == 'lxd_edfa' || $os == 'lxd_emtx') { $limits = array(); }
+  if (! $is_twoport_lxd_edfa) // Don't report the same value twice for 2 port devices
+  {
+    discover_sensor('dbm', $device, $oid, 0, 'jdsu-edfa-rx', 'Optical Input Power', $scale, $value, $limits);
+  }
 }
 
+$oid   = ".1.3.6.1.4.1.17409.1.11.9.0";
+$value = snmp_get($device, $oid, "-Oqv", "NSCRTV-ROOT");
+
+if (is_numeric($value))
+{
+  $limits = array();
+  discover_sensor('dbm', $device, $oid, 0, 'nscrtv-input-a-amplifier', 'Input on Optical Amplifier Input A', $scale, $value, $limits);
+}
+
+$oid   = ".1.3.6.1.4.1.17409.1.11.10.0";
+$value = snmp_get($device, $oid, "-Oqv", "NSCRTV-ROOT");
+
+if (is_numeric($value))
+{
+  $limits = array();
+  discover_sensor('dbm', $device, $oid, 0, 'nscrtv-input-b-amplifier', 'Input on Optical Amplifier Input B', $scale, $value, $limits);
+}
+
+$oid   = ".1.3.6.1.4.1.17409.1.7.3.1.12.1";
+$value = snmp_get($device, $oid, "-Oqv", "NSCRTV-ROOT");
+
+if (is_numeric($value))
+{
+  $limits = array();
+  discover_sensor('dbm', $device, $oid, 0, 'nscrtv-input-transmitter', 'Input on Optical Transmitter', $scale, $value, $limits);
+}
+
+$oid   = ".1.3.6.1.4.1.17409.1.7.3.1.15.1";
+$value = snmp_get($device, $oid, "-Oqv", "NSCRTV-ROOT");
+
+if (is_numeric($value))
+{
+  $limits = array();
+  discover_sensor('dbm', $device, $oid, 0, 'nscrtv-output-transmitter', 'Output on Optical Transmitter', $scale, $value, $limits);
+}
+
 // Temperature sensors
 $oid   = ".1.3.6.1.4.1.17409.1.3.1.13.0";
 $value = snmp_get($device, $oid, "-Oqv", "NSCRTV-ROOT");
