You can use the OnClientActiveTabChanged event of the TabContainer to stop or reset your Timer when the tabs are changed manually.
Also, you might consider handling those tab changes on the client side, instead of using the Timer. Since all of the tabs are rendered and tab changes are just client side events, it's fairly inefficient to force partial postbacks every 30 seconds just to change the tab. You can use setInterval or setTimeout to achieve the same result, without requiring postbacks.