본문 바로가기

Tasker

Tasker 집에 있을 때 폰 환경 설정 2 - 더 강한 wifi AP로 자동 연결(roaming)하기

이전 글에서 집에 오면 와이파이를 자동으로 켜고 연결하는 하는 profile을 소개하였다.


이전글 보기


이번에는 서로 다른 두 개의 AP (SSID) 중 신호 세기에 따라 더 강한 신호로 자동으로 갈아타는 (roaming) profile을 소개하고자 한다.

우리 집은 거실과 내 방에 서로 다른 기가 와이파이가 존재한다. 그래서 방에 있을 때나 거실에 있을 때 각 지역에 맞는 AP로 자동으로 갈아타야 할 필요가 있다.



주기적으로 신호 세기를 측정해야 하는데 몇 가지 방법이 있다.

가장 흔한 방법으로는 정기적으로 (2분 정도) %WIFII를 이용하여 와이파이 신호를 체크하는 방법이 있고, 내가 쓴 방법은 신호 세기가 변경될 때 자동으로 발생하는 RSSI_CHANGED 이벤트를 이용하는 방법이 있다. 이 이벤트 역시 휴대폰이 켜 있을 경우 2분 정도 주기로 이벤트가 발생한다.



Profile에서 Event/System/Intent Received를 선택하여 profile을 생성한다.




profile의 상세는 아래와 같다.

이 profile을 만들고 이벤트가 발생하지 않을 수 있다. 그런 경우 tasker를 강제 종료 후 재시작하면 이벤트를 제대로 받을 수 있을 것이다.

이벤트에서 받은 RSSI 값은 %newrssi 변수에 자동으로 저장된다.

RSSI는 신호 세기를 dBm으로 표시한 값인데 일반적으로 0~-55 사이는 와이파이 시그널 9에 해당된다.




이 profile이 호출하는 RSSI task는 아래와 같다.

집이 아니라면 이 profile을 처리하지 않아도 되므로 제일 앞에는 집인지 아닌지  [집 once] profile 활성화 여부로 체크한다.

그래서 신호 세기 6이하에 해당되는 -65 미만일 경우 와이파이 AP를 다른 AP로 전환하도록 하였다.

Variable Search Replace 사용법은 나의 다른 tasker 정규식 관련 글을 참조하자.




Variable Search Replace는 아래와 같이 설정하였다.

아래 정규식의 의미는 Sig: 뒤에 오는 숫자를 찾는데 "Sig: "라는 문자열은 버리겠다는 의미이다. (잘 모르겠다면 정규식 lookbehind 구글 검색해보자)

(?<=Sig: )\d

찾은 결과를 %OLLEH 변수에 넣으라는 것인데 정규식 결과는 한 개만 찾게 되어도 배열 형태로 입력되므로 나중에 %OLLEH 변수에서 값을 꺼낼 때에는 %OLLEH1 이런 식으로 사용해야 한다.


이 profile이 완벽한 것은 아니다. 왜냐면 집안에 화장실같이 두 AP의 신호가 -65 미만이면서 signal로 환산시 3이상인 지점이 꼭 있기 때문이다. 그런 지점에 위치할 경우 계속 AP가 변경되는 상황에 빠지게 된다.