자동차 모니터링을 위한 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 을 참조하였다.

 

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