About
AoT는 센서로 환경을 관측하고 장치를 원격 제어하는 오픈소스 모니터링·제어 시스템입니다. 특정 용도나 장소에 매이지 않습니다 — 온실·축사·노지는 물론 공원·시설물·교통처럼 관측할 대상이 공간에 놓여 있는 곳이면 어디에나 적용할 수 있습니다.
라즈베리 파이 같은 단일 보드 컴퓨터에 직접 설치하거나, 일반 서버·PC에서 Docker로 실행할 수 있습니다.
AoT를 규정하는 것은 두 가지입니다.
- GIS 디지털 트윈 — 모든 장치·센서·구조물이 지도 위 실제 위치를 갖고, 수치 목록이 아니라 지도가 기본 화면입니다.
- MCP(Model Context Protocol) 기반 AI — 그 지도를 읽고 진단하고, 장비를 움직이는 동작은 사용자 승인을 받아 실행하는 어시스턴트입니다.
이 둘 아래에는 검증된 입력·출력·함수 제어 모델이 있습니다. AoT가 출발점으로 삼은 Mycodo 프로젝트에서 이어받은 부분입니다(유래 참고).
GIS — 지도·시설·정보~
지도는 장치 목록에 덧붙인 뷰어가 아니라, 장치가 실제로 놓이는 자리입니다.
- 공간 계층 — 사이트 > 구역 > 시설 > 식생 구획이 실제 계층을 이룹니다. "동쪽 하우스 상황이 어떤가" 같은 질문에 정해진 답이 나옵니다.
- 3D 시설 — 온실·축사 외형을 폴리곤으로 정의해 3D로 시각화하고, 창호·커튼 등 구성 요소를 형상에 연결해 그 자리에서 제어합니다.
- GIS 데이터 소스 — 날씨·위성·토양 레이어를 입력으로 등록하므로, 외부 지도 데이터가 센서와 같은 시계열 데이터베이스로 들어옵니다.
- 지도 위의 장치 — 센서 입력과 출력 장치(밸브, 릴레이, 커튼, 환기창)를 지도에 배치하고 지도·시설 화면에서 직접 조작합니다.
- 형상이 제어를 결정합니다 — 시설 단위 환경 제어가 개구부 면적·방위각·풍향 같은 형상 정보를 그대로 활용해 여러 액추에이터를 하나의 피드백 루프로 조율합니다(예: 풍향에 따른 차등 환기).
AI와 MCP~
AoT는 장치·측정값·공간 트리·함수·일정·노트 등 시스템 전체를 MCP 도구로 노출합니다. 두 경로가 같은 도구 레지스트리를 쓰므로 목록이 서로 어긋나지 않습니다.
- 인앱 어시스턴트 — 대시보드의 채팅 어시스턴트. 단일 에이전트 루프가 전체 도구 카탈로그를 보고 스스로 도구를 선택·실행합니다.
- 외부 MCP 서버 —
aot/aot_mcp_server.py가 표준 MCP 프로토콜(stdio/HTTP)로 동작해, Claude Desktop 같은 외부 클라이언트가 AoT 도구를 직접 호출할 수 있습니다.
AI가 할 수 있는 일:
- 관측·진단 — 센서 이력을 읽고, 구역 상태를 요약하고, 이상을 찾아냅니다. 일반론이 아니라 실제 시설 데이터에 근거해 답합니다.
- 조작 — 출력 전환, 장치 제어 예약, 설정값 조정. 상태를 바꾸는 모든 동작은 승인 게이트를 거칩니다 — 인앱에서는 채팅의 승인 카드로, 외부 MCP 클라이언트에서는 대기열로 처리됩니다.
- 생성·편집 — 요청에 따라 입력·출력·함수·GIS 도형·식생 구획을 만들고 고칩니다.
모델은 사용자가 고릅니다. Claude·Gemini·GPT·Mistral·Groq와 로컬 Ollama 모델을 지원하며, AoT는 특정 제공자를 요구하거나 기본값으로 두지 않습니다.
제어 모델: 입력·출력·함수~
위의 모든 것은 세 가지 컨트롤러 유형 위에 놓입니다.
- 입력(Input) — 측정값을 수집해 InfluxDB 시계열 데이터베이스에 저장합니다. 측정값은 보통 센서에서 오지만, 리눅스 Bash·Python 명령의 반환값, 수식, GIS 데이터 소스일 수도 있습니다.
- 출력(Output) — 변화를 만들어냅니다: GPIO 핀 스위칭(HIGH/LOW), PWM 신호 생성, 펌프 구동, MQTT 발행, 명령 실행 등.
- 함수(Function) — 입력과 출력을 결합해 상위 동작을 만듭니다: PID 피드백 루프, 시퀀스, 타이머, 조건부, 그리고 시간에 따라 변하는 설정값(메서드).
다양한 센서·릴레이·컨트롤러를 기본으로 지원합니다 — 지원 입력과 지원 출력을 참고하세요.
연결~
- LoRaWAN — ChirpStack 연동, 사이트 단위 Class A/C 스케줄러, 다운링크 페이싱으로 밸브 명령 신뢰성 확보.
- Modbus TCP·MQTT·HTTP — 네트워크로 붙는 장치는 직접 설치와 Docker 설치에서 동일하게 동작합니다.
- GPIO·I2C·1-Wire — 라즈베리 파이 핀에 직접 연결하는 경우는 직접 설치에서 사용합니다.
사용자 인터페이스~
- 탭 시스템 — 입력·출력·함수 페이지와 대시보드가 탭으로 구성되어, 장치 목록이 많거나 화면이 여러 개여도 관리하기 쉽습니다.
- 사용자 색상·스타일 — 브랜드 색상, 차트 팔레트, 라이트/다크 테마를 사용자가 설정할 수 있으며 위젯과 페이지 전반에 일관되게 적용됩니다.
라즈베리 파이와 Docker에서 작동~
AoT는 라즈베리 파이 OS나 Debian에 네이티브로 설치하거나, 다른 플랫폼에서는 Docker로 실행할 수 있습니다 — 하드웨어에 맞는 방식을 고르면 동일한 애플리케이션이 동작합니다.
유래~
AoT는 Kyle T. Gabriel의 오픈소스 Mycodo 프로젝트를 기반으로 개발을 시작했습니다. Mycodo는 센서 입력과 장치 출력을 결합해 환경을 감지·제어하며, 인터페이스는 텍스트 수치와 그래프 위주입니다.
AoT는 그 제어 모델을 유지한 채 나머지를 새로 세웠습니다 — 장치 목록 대신 GIS 디지털 트윈, MCP 기반 AI, 시설 규모의 환경 제어, LoRaWAN 장치 관리, 그리고 개편된 UI. 입력·출력·함수 계층의 토대는 지금도 Mycodo이며, 그 기여에 감사드립니다.