안녕하세요.
이전에 썼던 mp686이라는 기기를 통해 어설픈 스마트키 제작관련 글의 후속작입니다
https://www.clien.net/service/board/use/18157937
1년 넘게 쓰면서 불편한 사항이 있었습니다.
1. 와이프 폰에서 오토 락이 작동 안함(오토 언락은 작동)
2. 이 앱이 과연 안전할까?라는 의구심
3. 앱 디자인이 별로
위의 불편함(1번, 3번)을 판매자에게 문의했을 때, 친절하게 응대 해주었지만 해결해 주지는 않았습니다. 앱 업데이트도 없었고요.
그래서 직접 앱을 수정해 보기로 했습니다.
1. 오토 락이 안되는 문제
이 문제는 하드웨어 문제가 아니라고 판단되었습니다. 제 폰(아이폰 XR)과 이전에 쓰던 갤럭시A6에서는 오토 락/언락이 잘 작동했기 때문입니다. 와이프 폰(갤럭시 노트10) 혹은 앱에 문제가 있을 확률이 높았죠. 결론적부터 말하자면 둘의 궁합이 안 맞았던 것입니다.
이런 애프터마켓 스마트키는 기기 본체와 사용자 스마트폰 사이에 블루투스 RSSI(Received Signal Strength Indicator)를 기반으로 거리를 계산하여 오토 락/언락이 작동하는 것으로 알고 있습니다.
간단히 말하면 와이파이 신호세기처럼 공유기에서 멀어지면 안테나가 1개로 작아지고 가까워지면 안테나가 3개로 늘어나는 그런 원리죠.
하지만 RSSI는 문제가 있습니다.
1) 거리에 따라 신호가 리니어 하지 않고,
2) 오차가 크며,
3) 기기에 따라 거리에 따른 신호세기가 다르다는 거죠.
위 세 가지 문제 중 1)와 2)는 RSSI 자체 문제이니 제쳐두고, 3)인 ’기기에 따라 신호 세기가 다르다‘ 가 오토 락이 안되는 문제의 원인이라고 생각했습니다 . 보통 RSSI는 0 ~ 100으로 정해져 있지만(원래는 멀어질수록 -100인 음수지만 가독성을 위해 절댓값으로 이야기하겠습니다), 10미터 거리에서 어떤 기기는 60, 어떤 기기는 80으로 나온다는 거죠.
그리고 이 앱에는 사용자가 락/언락 되는 기준이 되는 RSSI 값을 수정할 수가 없었습니다. 단순히 far/mid/near 3가지 모드만 있는 간단한 형태였습니다.
실제로 앱을 뜯어보니 3가지 거리모드 모두 80 ~ 88을 기준으로 오토 락을 하거나 오토 언락을 하게 되어 있었습니다.
즉, RSSI 값이 계속 80보다 작게 나오면, 오토 언락만 작동하고 오토 락은 작동 안 할 것이라고 예상됩니다(와이프 폰 증상)
그래서 와이프폰의 실제 RSSI 값을 측정해보니(이건 다른 어플을 통해 모니터링 할 수 있어요) 역시나 블루투스가 끊어지기 직전까지 80 정도를 유지하고 있었습니다.
거리를 좁혀가며 측정해 보니 와이프 폰의 RSSI 값은 65~75 사이에서 락/언락 기준으로 잡는 것이 좋다고 판단되었고, 그렇게 앱을 수정했을 때 오토 락/언락이 잘 작동하였습니다.
안정성을 확보하기 위해서는 앞으로 더 사용하면서 미세 튜닝을 하게 될 거 같아요.
이렇게 1번 문제 해결.
2. 앱의 안정성 문제
사용한 기기 mp686이 중국 회사 제품이다 보니 앱이 과연 안전할까? 라는 불안감이 있었습니다. 실사용자들의 후기가 있었기에 믿고 쓰고는 있었지만, 기왕 앱을 뜯어본 김에 어설프게나마 안전한지 체크를 해보기로 했습니다.
일단 가장 기본으로 바이러스토탈(VirusTotal)에 apk를 올려보았습니다.
점수가 1/60이면 기본적인 검사에서는 합격이라고 판단됩니다.(3~4개 정도 나오는 건 오진 가능성이 높다고 하네요). 모든 코드를 보기에는 시간도 능력도 안되어 눈에 띄는 몇 부분만 추가적으로 수정했습니다.
– 인터넷 퍼미션 삭제: 업데이트 메뉴는 있지만 언제나 no update이기에 그냥 삭제
– 바이러스토탈에서 나온 웹주소 형태의 구문들을 모두 더미 웹주소로 교체: 개발자 웹주소와 GPS 관련으로 예상되는데…모체가 된 앱의 찌꺼기 같아서 삭제
완벽하진 않지만, 조금이라도 의심되는 문자열은 앱에서 제거했습니다.
2번 문제 해결까지는 아니고, 약간의 불안감을 덜어낸 것으로 완료.
3. 디자인 문제
뭔가 쓸데없이 지저분한 거 같아서 이미지 파일만 교체했습니다.
하지만 와이프는 그게 그거 같다고(별로라고) 하는 군요 ㅠㅠ
코딩이라고는 학부시절 교양으로 C언어 수강했던 게 전부이었기에 거의 맨땅에 헤딩이었습니다. 자바가 굉장히 친인간(?)적이고 chatgpt가 도와준 덕에 겨우 된 거 같아요. 물론 실행은 되지만 무언가 문제를 내포 중일 수도 있을 것 같습니다.
다음과 같은 의식의 흐름으로 여기까지 삽질을 했네요
1) 핸드폰으로 차 키 대신 하고 싶다
2) 애프터 마켓 제품들이 생각보다 비싸다
3) mp686 + 릴레이로 직접 만들자
4) 앱이 이상하네 앱도 수정하자
5) 내가 지금 뭐 하는 거지…
실제로 와이프는 비상용으로만 쓰고 차 키 들고 다닙니다. 그리고 앱 수정하는 동안 와이프 폰을 제가 붙잡고 있다 보니 눈치 보였습니다. 앱 수정해서 오토 락/언락 되는거 신나서 자랑했는데, 어차피 안 쓴다고 합니다. 내가 지금 뭐를 한 거지…
결론: 그냥 애프터 마켓 제품 사서 쓰자
결론이 핵심입니다.
두서없는 글 봐주셔서 감사합니다.
출처 :https://www.clien.net/service/board/use/18546621?od=T31&po=0&category=0&groupCd=#comment-point