관련글: https://www.clien.net/service/board/lecture/19044907

안녕하세요.
개발은 하나도 모르는데, Mycodo 번역하고 위젯 몇 개 만들어 올렸던 '미대남'입니다.
당시 응원해 주신 분들 덕분에 용기를 얻어 꾸준히 만져오다가, 이번에 AoT 를 26 버전으로 기능을 좀 더 보탠 버전을 배포하게 되어 소식 전해봅니다. 개발자도 아닌 제가 굳이 기능을 더 넣은 이유는 역시나 제가 쓰면서 느꼈던 '답답함' 때문이었습니다.

1. 지리 정보 (GIS)
장치가 늘어나니 이름만 봐서는 모르겠더군요. 기존에는 장치를 이름으로만 관리했는데, 이게 대수가 늘어나니 정작 현장에서 뭐가 어디에 붙어 있는지 헷갈리더라고요. 그래서 지도를 넣었습니다.
사용자만 불편한 게 아니라 저도 기억력이 떨어져서... 주변 분들 농장에 무선 센서 달아드렸는데 일 이년 지나고 가보면 어디에 설치했던 건지 찾기 어려운 경우도 있고, 여기저기 지방으로 돌다 보면 여기가 뭐 하는 곳인지 잊어버리기도 합니다.

1-1. 공간 (Spatial)

이제 리스트에서 이름을 찾을 필요 없이, 지도 위에 점을 찍고 구역을 그리면 그게 곧 제어 대상이 됩니다.
이 부분에서 처음 생각과 다르게 만들면서 점점 기능을 추가하다 보니 시간이 많이 걸렸습니다. 대지와 구역, 시설과 같은 공간을 도형으로 정의하고 그 안의 물리적인 변화를 처리하고 싶었지만, 아직 모든 기능을 구현하지는 못하고 우선은 장치가 작동하는 범위만 정하는 수준까지 구현했습니다. 공간에 대한 정보는 지리정보 지도에서 사용자가 직접 도형으로 간단하게 그릴 수 있습니다.

1-2. GIS 및 오픈 API 연동
지도는 단순히 지형이나 건물 정보뿐만 아니라 인공위성이나 정부 공공 데이터를 겹쳐볼 수 있게 해서 센서가 없는 곳도 대략적인 상황을 알 수 있게 했습니다.
찾아보니 무료로 공개된 API가 몇 가지 있어서 넣어 봤습니다. vworld(정부 지도)의 지적도나 녹지구역 정보, 그리고 NASA 나 세계 토양 정보 서비스(ISRIC)에서 제공하는 기상·토양 정보를 레이어로 추가해 지도만 선택하면 범례와 측정값을 바로 출력하게 했습니다.
나중에 서비스를 쉽게 추가할 수 있게 모듈 방식으로 처리했는데, 덕분에 관리하기가 훨씬 편해졌습니다. 이 데이터는 입력 설정에서 GIS를 추가하면 원하는 정보를 DB에 기록할 수도 있습니다. 또한 각 장치마다 지도가 달려 있어 위치 설정이 가능한데, 구현 난이도와 관리 효율을 고려해 1-1의 지도에서 통합 관리하는 방향으로 정리했습니다.

1-3. 설정
지도는 Leaflet 기반입니다. 벡터 기반 지도도 고려했지만, 하드웨어 사양을 최저로 잡다 보니 저사양 기기에서도 원활한 이미지 기반을 선택했습니다. 기본 지도 시작 위치와 확대 레벨, 테마 색상 같은 설정이 가능합니다.

2. 노트 (Log & Context)


장치마다 '일기'를 쓸 수 있게 업그레이드했습니다. 기존 방식은 수치(원인)와 작동(결과)만 보여주다 보니, 정작 중간에 무슨 일이 있었는지 알기가 어려웠거든요.

공간이나 장치마다 '노트' 기능을 부여해서 기계의 성능이나 현장의 특이사항을 일기처럼 남길 수 있습니다. 이렇게 위치와 기록이 더해지니 원인과 결과 사이에 숨어있던 '과정'이 보여서 문제의 맥을 짚기가 훨씬 수월해졌습니다.
물론 사용자들은 아직 이 기능이 낯설고 귀찮을 것 같습니다. 그래서 기존 카메라 기능과 합쳐서 자동으로 사진을 찍고, 입력과 출력 데이터가 발생하는 시점의 상황을 시각적으로 기록하게끔 보완하고 있습니다.

3. 위젯 (Widget)


1, 2에서 구현한 기능을 대시보드에서 통합적으로 사용할 수 있는 지도 위젯 을 만들었습니다.
이전 버전의 위젯들이 단순히 수치나 상태를 보여주는 데 그쳤다면, 이번 지도 위젯은 시스템의 관제 센터 역할을 합니다. 위젯 안에서 실시간 위치를 확인하는 것은 물론, GIS 레이어를 껐다 켰다 하며 현장 상황을 다각도로 분석할 수 있습니다. 특히 지도 위에서 장치를 직접 선택해 제어하거나, 기록된 노트를 바로 열람할 수 있도록 설계해서 대시보드를 이리저리 옮겨 다니는 번거로움을 줄였습니다.
결국 사용자가 지도를 보며 '직관적인 판단'을 내리고, 그 자리에서 바로 '실행'까지 할 수 있는 통합 환경을 만드는 것이 이번 위젯의 핵심입니다.

마치며
사실 이 '위치'와 '노트'는 나중에 AI가 이 데이터를 학습하게 될 때를 위한 준비이기도 합니다. 단순한 숫자보다 '어디서', '어떤 상황'이었는지 맥락이 있어야 AI도 제대로 된 판단을 할 수 있을 테니까요.
전공자가 만든 게 아니라 코드가 투박하고 여전히 부끄러운 수준입니다. 하지만 저처럼 현장에서 물 주고 관리하는 게 힘드셨던 분들에게는 작은 도움이 되지 않을까 싶습니다. 여전히 무료이고 오픈소스이니 필요하신 분들은 편하게 써주시면 좋겠습니다.

26년도에 포스가 여러분과 함께 하시기를