Mikrotik - Wireless off at night
Studies have shown that even low level RF is not good for your health while you rest. I created this to reduce power initially. Then, I modified it to shut down RF completely. The code assumes that there was a power outage and so it constantly sets the power level and wireless status (in case it was missed last time). There is some obsolete code as a result. But, it is helpful.
# Script to turn down radio power based on a schedule # Schedule this script to run every 10-15 minutes to make # certain the changeover has occurred. # User variables are listed below ##################################### ## Set the Radio HighPower and LowPower times here ## :local RadioHighPowerTime "06:20"; :local RadioLowPowerTime "01:15"; :local LowPower 1; :local HighPower 22; :local RadioName "wlan"; :local RadioPowerCut; :local RadioPower; :local UseNTPClientStatus "yes"; # set to "no" if clock is being set manually after each reboot # # set to "yes" if clock is being set using NTP client # ##################################### #:log info "RadioHighLow Script Starting"; #:log info "Radio Name = $RadioName"; # First check if system clock has been syncronized with local time # :local NTPSyncState [/system ntp client get status]; #:log info "NTP Client Status = $NTPSyncState"; # Don't perform radio HighPower or LowPower operation, if current real time is unknown # May disable this by adjusting UseNTPClientStatus variable :if (($NTPSyncState="synchronized") or ($UseNTPClientStatus="no")) do { # :log info "NTP okay"; :local CurrentTime [/system clock get time]; # :log info "Current Time = $CurrentTime"; :set RadioPower [:put [/interface wireless get value-name=tx-power $RadioName]]; # :log info "Radio Power = $RadioPower"; :if ($RadioPower = $LowPower) do { :set RadioPowerCut true; } else { :set RadioPowerCut false; } # :log info "Radio PowerCut = $RadioPowerCut"; :log info "Current Time = $CurrentTime / Radio Power = $RadioPower / Radio PowerCut = $RadioPowerCut"; # Where the HighPower time is set earlier than the LowPower time # :if ($RadioHighPowerTime < $RadioLowPowerTime) do { # Radio should be HighPower between these times # :if (($CurrentTime > $RadioHighPowerTime) and ($CurrentTime < $RadioLowPowerTime)) do { :if ($RadioPowerCut=true) do { :log info "Radio was LowPower, now switching HighPower"; :put [/interface wireless set $RadioName tx-power=$HighPower]; :put [/interface wireless enable wlan]; } } else { :if ($RadioPowerCut=false) do { :log info "Radio was HighPower, now switching LowPower"; :put [/interface wireless set $RadioName tx-power=$LowPower]; :put [/interface wireless disable wlan]; } } } # Where the HighPower time is set later than the LowPower time # :if ($RadioHighPowerTime > $RadioLowPowerTime) do { # Radio should be LowPower between these times # :if (($CurrentTime < $RadioHighPowerTime) and ($CurrentTime > $RadioLowPowerTime)) do { :if ($RadioPowerCut=false) do { :log info "Radio was HighPower, now switching LowPower"; :put [/interface wireless set $RadioName tx-power=$LowPower]; :put [/interface wireless disable wlan]; } } else { :if ($RadioPowerCut=true) do { :log info "Radio was LowPower, now switching HighPower"; :put [/interface wireless set $RadioName tx-power=$HighPower]; :put [/interface wireless enable wlan]; } } } #} else { # :log info "System clock problem, unable to perform operation"; } #:log info "RadioHighLow Script completed";