자동차 모니터링을 위한 TorquePro 로그 서버 구축

자동차를 관리하다보면 궁금한 것이 자꾸 생긴다. 예를들어 내가 이번 년도에 몇 키로나 운행했지? 내가 낸 최고 속도는? 자동차의 오일 변화는? 내가 자주 운행하는 곳은?

이러한 궁금증이 쌓이다보니 이전부터 안드로이드나 OBD2를 가지고 차량 상태를 모니터링 하는 방법을 고심하기도 했었다.

아무튼 현재 상태는 넥서스7 2세대 WiFi + OBD2 + TorquePro(App) + Advanced PID for Hyundai(App)의 조합으로 현 상태를 모니터링 할 수 있게 되었다. 넥서스7 2세대의 경우 일부 개조를 통해 자동차 시동이 걸리면 자동 부팅되고, 후방 카메라와 연결되어 화면을 출력해주는 등 여러가지 기능을 수행한다. 뭐, 이건 다음에 시간이 되면 따로 다루도록 하겠다.

이 구조에서 현재 상태 모니터링은 아무 문제 없었다. 현재 제네시스 쿠페 380에서 가장 큰 문제는 냉각 문제였는데… TorquePro를 사용하면 왠만한 정보는 다 읽을 수 있고, 심지어 오류코드 삭제까지 되니 충분했다. 하지만… 로그를 남길 수가 없었다.

물론 인터넷에 연결되었을 때 메일로 로그를 자동으로 보낼 수 있게하는 기능이 있긴하지만… 메일로 받아서 그걸 정리하고 데이터 추출하고… 귀찮은 일이 너무 많아지게 된다. 그래서 옵션을 좀 뒤지다보니… WebServerURL을 입력하는 곳이 있다! 그래서 조금 더 구글을 열심히 뒤져보니 TorquePro에서 인터넷이 연결되어 있을 경우, 주기적으로(최소 1초 단위) 모니터링하고자 하는 값들을 웹서버로 보내는 기능이 들어 있었다.

실제로 해당 기능을 바탕으로 TorquePro 공식 홈페이지에서 로그를 저장하고 볼 수 있는 기능을 제공하고 있고, 심지어 개인 서버에서 돌릴 수 있도록 PHP 등으로 구현된 서버 프로그램도 있었다.

그런데… 그래도 역시… 삽질은 해야 재미아니겠는가? 그래서 해당 내용들을 조사하고 정리하여 아래와 같은 구조로 동작한다는 것을 확인했다.

위의 그림을 보면 1단계는 TorquePro 어플리케이션에서 사용자가 설정한 URL로 GET 방식으로 Request 하는 것으로 시작한다. 가끔 인터넷 서핑할 때 http://……./…..?some=thing&all=about 같은 형태를 본적이 있을텐데 이게 GET 방식으로 데이터를 전달 하는 것이다.

해당 데이터를 JSON 형태로 보면

{
        "eml" : [EMAIL Address],
        "time" : [UNIX TIMESTAMP],
        "kff1001" : ....,
        .
        .
        .
        [KEY] : [VALUE]
}

위의 형태로 표현할 수 있다. 이게 GET 방식으로 전달되면

http://[URL]?eml=[EMAIL Address]&time=[UNIX TIMESTAMP]&kff1001=.....&[KEY]=[VALUE]

와 같이 데이터 전달을 수행한다. 일단 그럼 데이터는 서버로 전달된다. 그럼 서버에서는 해당 데이터를 파싱하고 저장하면 된다. 몰론 이걸로 끝은 아니다. 서버에서는 해당 데이터를 잘 받았다고 “OK!” 문자열을 응답으로 보내면 된다.

현재 해당 내용을 바탕으로 Flask + Apache2 를 이용하여 서버를 구축해보았다. 실제 데이터베이스에 저장된 내용은 아래와 같았다.

6320|[email]|1551670913242|kff1007|96.9
6321|[email]|1551670913242|GPSLongitude|000.000000
6322|[email]|1551670913242|kff1001|4.5
6323|[email]|1551670913242|GPSAccuracy|10.0
6324|[email]|1551670913242|GPSSatellites|8.0
6325|[email]|1551670913242|EngineRPM|635.0
6326|[email]|1551670913242|GPSAltitude|00.000000
6327|[email]|1551670913242|GPSLatitude|00.000000
6328|[email]|1551670913242|k-2149|56.0
6329|[email]|1551670913242|Bank1CatalystTemp|680.0
6330|[email]|1551670913242|TransmissionTemp|86.0
6331|[email]|1551670913242|v|8.0

실제 저장된 데이터를 보면 정상적으로 데이터가 들어오는 것을 알 수 있다. 아, GPS 정보도 정확하게 들어온다. 0으로 매워둔 것은 아무래도 개인 정보다 보니 가렸다. 아무튼, 지금 저장된 데이터의 이름은 KEY 값을 사람이 알아볼 수 있는 값으로 저장한 것이다. 현재까지 사용한 KEY 값은 다음과 같다.

k3c = "Bank1CatalystTemp"
k3d = "Bank2CatalystTemp"
k2f = "FuelLevel"
kff1001 = "GPSSpeed"
kff1006 = "GPSLatitude"
kff1005 = "GPSLongitude"
kff1007 = "GPSBearing"
kff1010 = "GPSAltitude"
kff123a = "GPSSatellites"
kff1239 = "GPSAccuracy"
kc = "EngineRPM"
k5 = "EngineCoolantTemp"
kfe1805 = "TransmissionTemp"
kf = "IntakeAirTemp"

일부값은 코드가 노출이 안되는 것들이 있었다. 특히 Advanced PID for Hyundai 같은 유료 PID 어플 같은 경우에는 PID가 나타나지 않아 조금 더 모니터링이 필요할 것으로 보여진다.

이번 작업은 대략적으로 어떻게 데이터를 받아들일지에 대한 고민을 해보고 해결을 하기 위해 작업한 것으로 정리할 곳이 많다. 그래서 코드나 웹을 공개하긴 조…금… 부끄럽다. 뭐, 계속해서 업데이트 해서 최종판을 공개하는게 목표긴하지만… 허허허 앞으로 지속적인 업데이트를 수행할 예정이다.

[Torque Pro] Torque Pro 스킨 개발 일지 -1-

Torque Pro 라는 어플의 스킨을 개발하기 위한 준비 과정을 적어본다.

 

1차로 전체 배경화면 사이즈, 넥서스7 2세대 WiFi 기준으로 1920 * 1200 이었다.

실제 캡쳐 후 측정 과정을 거쳐야겠지만 우선은 해당 값을 기준으로 고민해야 할듯하다.

 

스킨 개발을 위해서 Theme 제작법을 찾아보니 Property 파일을 사용해야한다.

자세한 내용은 https://torque-bhp.com/wiki/Themes 을 참조하였다.

 

우선 위의 두 가지 정보로 시작을 할 예정이며, 시뮬레이터가 있는지는 검색을 해보아야 할듯하다.

 

 

핸드폰 교체, 블랙베리 키원 블랙 에디션 4G/64GB

이번 iOS11 업데이트 이후… 정말 정말 짜증을 내다가 이번 기회에 핸드폰을 다시 블랙베리로 기변했다.

사실 아이폰이 쓰기 편하긴 하지만…. iOS 11 이후에

간헐적 프리징 현상 ( 특히 시리의 앱 추천이 떠 있을 때 )

하단 패널에서 와이파이 끄기가 안됨

때문에 정말 정이 뚝 떨어져 버렸다.

 

그래서 다른 핸드폰을 쓰고 싶었는데 결국은 블랙베리로 돌아왔다.

이번 키원 ( KeyOne ) 의 경우, 엄청나게 좋은 성능을 가진 폰은 아니지만

물론 가격은… 왠만한 플래그 쉽 가격…

이전 프리브에 비해서 카메라나 발열등의 문제가 없었기에 바로 직구를 했다. 따로 배대지를 이용하면 좀 더 저렴할 수 있었겠으나 신뢰 문제도 있고 해서 그냥 체리폰에서 정가 주고 구입했다.

 

 

구입한 후기는 뭐… 그냥 블랙베리다. 사실 안드로이드랑 별 차이 없다. 물론 특화된 앱, 블랙베리 허브 라던가, 블랙베리 런처라던가는 좀 다른긴 해도… 다른 안드로이드 폰에 설치도 가능하니까 말이다.

그냥 키보드 + 안드로이드 + 이름값 정도의 설명이면 될 듯하다.

물론 보안 기능이나 이런건 다른 안드로이드보다 뛰어나다고 한다.

그런데 개인적인 용도에서 얼마나 그런게 필요할까?

아무튼… 써본 소감은,

생각보다는 빠르다. 물론 주변의 조언 중에 가장 중요한게 있었다.

블랙 에디션 4기가 메모리 / 64기가 용량을 사라

위의 조언은 꼭 지켜야 한다. 3기가랑 4기가 사실 1기가 차이가 뭐 그리 크냐? 라고 할지도 모르지만 크다. 반드시 블랙 에디션 4기가 / 64기가를 사는 것이 좋다. 조언 주신분께 감사의 마음을!

 

일단 키감도 나쁘지 않고 안돌아가는 어플도 없고, 한 동안은 여기에 정착할 듯 하다.

[LG U+ LTE Router] USIM 을 Trek2에 사용하기

다시 돌아온 LG U+ LTE Router USIM 테스트!!

이전 글에서 언급한 충동 구매로 손에 들어온 Trek2에 해당 USIM을 삽입하였다.

결론부터 이야기 하자면

ZTE Trek2 HD K88 : LG U+ Router USIM 동작 확인

너무 허무할 정도로 잘 된다. 하지만 해줘야 할 작업이 있다. 바로 APN 세팅.

 

인터넷에 LG U+ APN 이라고 검샋하면 엄청나게 많은 결과가 나오지만 이 블로그의 목적 자체가 기록이므로

Setting -> Mobile networks -> Access Point Names

로 이동하여 오른쪽 상단에 +를 눌러주고 아래 값들을 채운다. 적혀 있지 않은 값은 그냥 그대로 두면 된다.

Name : LG #아무거나 적어도 된다.

MMSC : http://omammsc.uplus.co.kr:9084

MMS Port : 9084

MCC : 450

MNC : 06

을 입력하고 오른쪽 상단 메뉴를 열어 저장하고 나온뒤 해당 값을 선택하고 재부팅한다.

 

 

위와 같이 LG U+ 가 잡히고 4G로 통신하고 우측에 안테나가 동작한다.

여기서 하나 저 4G 마크가 귀엽다.

이렇게 세팅하고 성능 테스트를 해보았다.

 

 

37.3Mbps, 그럭저럭 잘 나오는 것을 확인하였다.

 

 

[사용기] ZTE Trek2 HD K88 간략 사용기

이번에 LTE Router 관련 테스트를 진행하기 위해 디바이스를 알아보던 중…

요즘 핫한 ZTE Trek2 HD K88 ( 이후 Trek2 ) 를 알게 되었다. 그리고 열심히 조사하던 중에…

 

“이건 사야해!”

 

맞다 충동구매다. 하지만 가격이 10만원이기 때문에 부담없이 질러보았… ( 통장 잔고야 미안… )

 

아무튼 4일전 그러니까, 월요일날 해외 구매를 진행했고 오늘 도착하여서 간략하게 장단점을 써보고자 한다.

 

일단 장점

싸다, 이건 정말 반박불가

싼거에 비해 성능이 좋다

싼거에 비해 화면이 좋다

싼거에 비해 소리가 좋다

LTE 지원된다

그리고 단점은

장점에 나온거 전부

뭔가 결론이 아리까리 하지만 10만원이라는 가격을 생각한다면…. 좋다. 너무 좋다. 하지만 사실 고급 기계에 길들여져 있는 IT인간이라면 조금 아쉬울 수도 있을 것이다. 하지만…. 다른 탭을 써본 나로서는…

 

현재 내가 가지고 있는 탭은

레노버 요가탭3 프로 ( 빔 프로젝스 내장 )

넥서스 7 3g 1세대

위와 같다. 그런데 위에 두대보다… 훨씬 빠르다… 요가탭3 프로는 살 때 당시 50 가까이 줬는데…..

갑자기 슬퍼졌다…. 아무튼 앞으로 주 사용 태블릿은 Trek2가 될 것 같아 보인다.

 

 

 

LTE 관련은 다음 글에 작성할 예정이다.

자동차 모니터링을 위한 안드로이드 설정 2

자동차 모니터링을 위한 안드로이드 설정, 1

이전 글에 이어서 자동차 모니터링을 위한 안드로이드 설정을 수행한다.

일단 이 글의 기준은 겔럭시 S (KT 용) 기준으로 작성되었다. 또한 rooting 은 되어 있다고 가정하고 진행한다.

 

가장 먼저 한 것은 바로 Charging Mode 제거이다.

 

Charging Mode

전원이 꺼진 상태에서 충전 케이블을 연결 하였을 때, 핸드폰이 바로 켜지지 않고 베터리 충전하는 모양이 뜨는 상태를 Charging Mode 라고 한다.

아주 오래전… 초창기 안드로이드에서는 없었는데 어느 순간 생겼다.

즉, Charging Mode를 제거하고 전원 연결시 바로 부팅으로 가도록 하는 작업이 필요하다. 제거하는 방법은 두가지 정도의 방법이 있다.

 

  1. 핸드폰 개발사에서 제공하는 Hidden Mode 로 접속 설정을 변경한다.
  2. adb, fastboot을 이용하여 명령어 전달
  3. playlpm 혹은 lpm 파일 변경

위의 방법 중에서 2는 컴퓨터를 이용해야 하니 귀찮았…. 아니다 밖에서 시간 남을 때 진행했기 때문에 컴퓨터를 쓸 수가 없었고 겔럭시 s의 경우 Hidden Mode에 해당 기능이 없었다.

그래서 3번을 선택했다. 사용한 툴은

 

Root Explorer : 구글 플레이

Notepad for Android : 구글 플레이

 

위의 두 툴을 사용하였다. 아래와 같은 순서를 따른다.

 

  1. Root Explorer를 이용하여 파일 시스템에 접근한다.
  2. /system 디렉토리로 이동한다.
  3. /system 디렉토리를 r/w 모드로 변경한다.
  4. /system/bin 디렉토리로 이동한다.
  5. playlpm 혹은 lpm 파일을 찾아서 playlpm.bak 또는 lpm.bak 으로 이름을 변경한다.
  6. Notepad for Android를 연다.
  7. 아래 명령어를 입력한다.

    #!/system/bin/sh
    /system/bin/reboot

  8. 저장한다.
  9. Root Explorer를 열어 SD 카드 디렉토리로 이동한다.
  10. 저장한 파일의 이름을 playlpm 혹은 lpm으로 변경한다.
  11. 해당 파일을 잘라서 /system/bin 디렉토리에 붙여넣는다.
  12. 권한과 소유주 설정을 백업해둔 파일과 동일하게 변경한다.

글로 써두면 굉장히 길어보이는 과정이지만 핸드폰으로 뚝딱 뚝딱 할 수 있다. 아무튼… 만약 위의 방법이 힘들거 같다고 한다면 쉽게 할 수 있는 방법으로 2번을 추천한다.

 

adb, fastboot을 이용하기

 

이렇게 하면 핸드폰 전원을 딱! 연결하자마자 안드로이드가 부팅되는 것을 확인할 수 있을것이다.

다음은 아마도 Tasker 사용법을 정리할듯 하다. 사실 이미 이 세팅은 완료한 상태고 심지어 배선도 완료한 상태라… 기억에 의존해서 쓰다보니 틀린 것도 있을 수 있지만 뭐… 대략적인 틀은 위와 같다고 할 수 있다.

자동차 모니터링을 위한 안드로이드 설정, 1

이번에 차량을 구매하면서 어떻게 차량을 모니터링 할까 다시 고민하게 되었다.

이전에도 이런 고민을 한 적이 있었는데, 그 당시에는 미션 오일 온도가 너무 높아서 고민에 고민을 거듭하다가 OBD2를 이용해서 정보를 긁어와서 보여주는 방식으로 진행했었다.

그래서 이번에도 OBD2를 이용하기로 결정하고 아래와 같은 원칙을 세웠다.

 

  1. 안드로이드 구형을 사용한다. ( 집에 굴러다니는 겔럭시s 사용 )
  2. 자동차 시동시 자동으로 전원을 켜지게 한다.
  3. 전원이 켜지면 자동으로 OBD 어플을 실행한다.
  4. 자동차 시동 종료시 자동으로 전원을 꺼지게 한다.
  5. 운전석 좌측편 대쉬보드에 장착한다.

 

위와 같은 기준으로 여러 설정을 진행하려고 한다.

 

일단, 부품 주문

다섯번째 항목 운전석 좌측편 대쉬보드에 장착한다.

때문에 부품을 주문하기로 한다. 사실 전선을 보기 싫게 대쉬보드 위로 길게 이어서 작업할 수도 있지만… 그러면 너무 지저분하게 보일것이 분명하다. 그래서 케이블과 모듈을 결합하여 운전석쪽 퓨즈 박스에서 바로 뽑아오기로 하고 아래와 같은 고려 사항을 생각했다.

최대한 깔끔할 것 + 12V를 5V로 변환할 수 있는 회로를 추가할 것

그래서 아래와 같은 부품을 주문했다.

강압회로, 전선묶음, 수축 튜브 ( 강압회로를 감쌀것과 전선 정리 )

강압회로 같은 경우에 굉장히 낯설어 보이지만 인터넷 쇼핑몰을 조금만 뒤져보면 ( 옥x라던지 G 마x 라던지 ) 금방 찾을 수 있다. 일단 하나의 선처럼 만들기 위해서 제일 작은 사이즈로 주문하고, 아차! 라는 생각이 든다. 일단 판매하는 대부분의 강압회로가 전압을 조절할 수 있도록 나오기 때문에 정확히 5v를 맞추기 위해서 테스터기도 하나 사야한다.

테스터기 구입

그러고 보니… 인두는 최근에 구입하게 있는데… 납이 없다. 납도 구입하자.

납 구입

위와 같이 부품을 주문하고 아래와 같은 모양으로 구상하였다.

12V 자동차 전원 —> 강압회로 —> 마이크로 5핀 (안드로이드 충전 케이블 )

일단 기본 부품은 주문했고 다음은 안드로이드 세팅에 대해서 이야기를 해보자한다.

[Nexus7 2012 3g ( tilapia )] TWRP 설치 리커버리 진입 불가 문제

해당 문제의 경우 대부분의 경우 설명을 자세히 읽지 않아서 발생하는 것 같다.

…. 사실 읽었는지 안 읽었는지 기억은 안나지만 다른데서 발견하고는 적혀 있었다고 믿고 싶다.

아무튼

 

fastboot.exe flash recovery [twrp file name]

fastboot.exe reboot

 

위와 같이 설치를 진행하게 되는데 마지막 명령어 reboot을 내리고 난 직후에 볼륨 다운키 혹은 업키를 눌러서 바로 리커버리 모드로 진입하면 아무 문제 없이 진행된다.

실제 찾은 내용도 참고해보면 reboot시 원래 recovery로 돌려버리는 문제가 있고 이 와중에 문제가 발생할 수 있다는 것이었다.