wireless signal-strength

I’m trying to get the signal strength using the leds

I have this - and it’s nice but I can’t know tell what are the steps

/system leds
add interface=wlan1 leds=led1,led2,led3,led4,led5 type=\
    wireless-signal-strength

so I have try to write my own script

:global MySignal [/interface wireless registration-table get [find interface=wlan1] signal-strength];

:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-50) do={/led led1=yes led2=yes led3=yes led4=yes led5=yes;/log warning "Wireless is - $MySignal";} else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-60) do={/led led1=no led2=yes led3=yes led4=yes led5=yes;/log warning "Wireless is - $MySignal";}; else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-70) do={/led led1=no led2=no led3=yes led4=yes led5=yes;/log warning "Wireless is - $MySignal";}; else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-80) do={/led led1=no led2=no led3=no led4=yes led5=yes;/log warning "Wireless is - $MySignal";};else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-90) do={/led led1=no led2=yes led3=no led4=no led5=yes;/log warning "Wireless is - $MySignal";};}}}}

but I get error
can you help me find my mistake ?
I guess I have a writing error or something like this


Thanks ,

First of all, do not write the script all on one line… Is unreadable.

:global MySignal [/interface wireless registration-table get [find interface=wlan1] signal-strength];

:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-50) do={/led led1=yes led2=yes led3=yes led4=yes led5=yes;
/log warning "Wireless is - $MySignal";
} else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-60) do={/led led1=no led2=yes led3=yes led4=yes led5=yes;
/log warning "Wireless is - $MySignal";
};
 else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-70) do={/led led1=no led2=no led3=yes led4=yes led5=yes;
/log warning "Wireless is - $MySignal";
};
 else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-80) do={/led led1=no led2=no led3=no led4=yes led5=yes;
/log warning "Wireless is - $MySignal";
};
else={:if ([:pick $MySignal 0 [:find $MySignal dBm]] >-90) do={/led led1=no led2=yes led3=no led4=no led5=yes;
/log warning "Wireless is - $MySignal";
};
}}}}

You must specify also MAC address if more than one item on registration-table are present.
If on script you need to do same thing more time, do only one time…

:global signalStrength value=[/interface wireless registration-table get [find where interface=wlan1 and mac-address=00:00:00:00:00:00] value-name=signal-strength];
:global absoluteSignal value=[:tonum [:pick $signalStrength ([:find $signalStrength "-" -1] + 1) [:find $signalStrength "dBm" -1]]];

/led led1=no led2=no led3=no led4=no led5=no;

/log warning message=("Wireless is ".$signalStrength);

:if ($absoluteSignal < 50) do={
 /led led1=yes led3=yes led5=yes;
} else={
 :if ($absoluteSignal < 60) do={
  /led led1=yes led2=yes led3=yes led4=yes led5=yes;
 } else={
  :if ($absoluteSignal < 70) do={
   /led led1=yes led2=yes led3=yes led4=yes;
  } else={
   :if ($absoluteSignal < 75) do={
    /led led1=yes led2=yes led3=yes;
   } else={
    :if ($absoluteSignal < 80) do={
     /led led1=yes led2=yes;
    } else={
     :if ($absoluteSignal < 90) do={
      /led led1=yes;
     };
    };
   };
  };
 };
};

o.k.
the problem now is - when nothing is connected the leds still working as they where the last time

so I have added this part but again I get en error
can you see why?

if ([/interface wireless get wlan1 running]=true) do={log error message="connected"; 
       :global signalStrength value=[/interface wireless registration-table get [find where interface=wlan1] value-name=signal-strength];
       :global absoluteSignal value=[:tonum [:pick $signalStrength ([:find $signalStrength "-" -1] + 1) [:find $signalStrength "dBm" -1]]];
       /log warning message=("Wireless is ".$signalStrength);
       :if ($absoluteSignal < 50) do={
        /led led1=yes led3=yes led5=yes;
       } else={
        :if ($absoluteSignal < 60) do={
         /led led1=yes led2=yes led3=yes led4=yes led5=yes;
        } else={
         :if ($absoluteSignal < 70) do={
          /led led1=yes led2=yes led3=yes led4=yes;
         } else={
          :if ($absoluteSignal < 75) do={
           /led led1=yes led2=yes led3=yes;
          } else={
           :if ($absoluteSignal < 80) do={
            /led led1=yes led2=yes;
           } else={
            :if ($absoluteSignal < 90) do={
             /led led1=yes;
             };
            };
           };
          };
         };
        };
       };
       else={log warning "nothing conneted";/led led1=no led2=no led3=no led4=no led5=no;};

Thanks ,

This?
I have also added other things… :wink:

/led led1=no led2=no led3=no led4=no led5=no;

:if ([:len [/interface wireless registration-table find]] > 0) do={

:global signalStrength value=[/interface wireless registration-table get [find where interface=wlan1] value-name=signal-strength];
:global absoluteSignal value=[:tonum [:pick $signalStrength ([:find $signalStrength "-" -1] + 1) [:find $signalStrength "dBm" -1]]];

/log warning message=("Wireless is ".$signalStrength);

:if ($absoluteSignal < 50) do={ /led led1=yes led3=yes led5=yes;
 /log error message=("ERROR: TOO STRONG SIGNAL");
} else={
 :if ($absoluteSignal < 60) do={ /led led1=yes led2=yes led3=yes led4=yes led5=yes;
 } else={
  :if ($absoluteSignal < 70) do={ /led led1=yes led2=yes led3=yes led4=yes;
  } else={
   :if ($absoluteSignal < 75) do={ /led led1=yes led2=yes led3=yes;
   } else={
    :if ($absoluteSignal < 80) do={ /led led1=yes led2=yes;
    } else={
     :if ($absoluteSignal < 86) do={ /led led1=yes;
     } else={ /led led5=yes;
       /log error message=("ERROR: TOO WEAK SIGNAL");
     };
    };
   };
  };
 };
};

} else={
/log error message=("Wireless is unregistered");
};

Thanks,
I have made some change according to what I need ,
but thanks for your help

Hello Everyone,
Is possible to know how on version 6.27 get command in right way to print signal-strength

[volga629@testap] > /interface wireless registration-table get [find interface=wlan1] signal-strength  
invalid internal item number