   //set current effect index
   pos = req.indexOf("FX=");
   if (pos > 0) {
-    if (effectCurrent != req.substring(pos + 3).toInt())
-    {
-      effectCurrent = req.substring(pos + 3).toInt();
-    }
+    effectCurrent = getNumVal(&req, pos);
   }
   //set effect speed
   pos = req.indexOf("SX=");
   if (pos > 0) {
-    if (effectSpeed != req.substring(pos + 3).toInt())
-    {
-      effectSpeed = req.substring(pos + 3).toInt();
-    }
+    effectSpeed = getNumVal(&req, pos);
   }
   //set effect intensity
   pos = req.indexOf("IX=");
   if (pos > 0) {
-    if (effectIntensity != req.substring(pos + 3).toInt())
-    {
-      effectIntensity = req.substring(pos + 3).toInt();
-    }
+    effectIntensity = req.substring(pos + 3).toInt();
   }
   //set effect palette (only for FastLED effects)
   pos = req.indexOf("FP=");
   if (pos > 0) {
-    if (effectPalette != req.substring(pos + 3).toInt())
-    {
-      effectPalette = req.substring(pos + 3).toInt();
-    }
+    effectPalette = req.substring(pos + 3).toInt();
   }
 
   //set hue polling light: 0 -off
   pos = req.indexOf("HP=");
   if (pos > 0) {
-    int id = req.substring(pos + 3).toInt();
+    int id = getNumVal(&req, pos);
     if (id > 0)
     {
       if (id < 100) huePollLightId = id;

  //toggle general purpose output
  pos = req.indexOf("AX=");
  if (pos > 0) {
    auxTime = req.substring(pos + 3).toInt();
    auxActive = true;
    if (auxTime == 0) auxActive = false;
  }
  pos = req.indexOf("TT=");
  if (pos > 0) {
    transitionDelay = req.substring(pos + 3).toInt();
  }
   
  //main toggle on/off
  pos = req.indexOf("&T=");
  if (pos > 0) {
    nightlightActive = false; //always disable nightlight when toggling
    switch (req.substring(pos + 3).toInt())
    {
      case 0: if (bri != 0){briLast = bri; bri = 0;} break; //off
      case 1: bri = briLast; break; //on

  //apply macro
  pos = req.indexOf("&M=");
  if (pos > 0) {
    applyMacro(getNumVal(&req, pos));
  }
  //toggle send UDP direct notifications
  if (req.indexOf("SN=") > 0)
