About
AoTは、センサーで環境を観測し、デバイスを遠隔操作するためのオープンソースシステムです。特定の用途や場所の種類に縛られません——温室・畜舎・農地はもちろん、公園・公共インフラ・交通など、観測したい対象が空間上に配置されているあらゆる場所に適用できます。
Raspberry Piのようなシングルボードコンピュータにネイティブで動作するほか、一般的なサーバーやPC上ではDockerで動作します。
AoTを定義する要素は次の2つです。
- GIS デジタルツイン — すべてのデバイス・センサー・構造物が地図上に実際の位置を持ち、数値の一覧ではなく地図そのものが主要なインターフェースになります。
- MCP(Model Context Protocol)ベースのAIレイヤー — その地図を読み取り、診断し、操作できるアシスタントです。ハードウェアを動かす操作には必ず承認を求めます。
この両方の土台には、実績のある入力(Input)・出力(Output)・機能(Function)の制御モデルがあります。AoTが出発点とした Mycodo プロジェクトから受け継いだものです(由来を参照)。
GIS — 地図・施設・情報~
地図は、デバイス一覧に後付けされたビューアーではありません。デバイスが実際に存在する場所そのものです。
- 空間階層 — サイト・ゾーン・施設・植栽エリアが実際の階層を成しているため、「東棟で何が起きているか」といった問いに明確な答えが出せます。
- 3D施設 — 温室や畜舎の外形をポリゴンとして定義して3Dで可視化し、換気窓やカーテンなどの構成要素はその形状と一体になっていて、そこから直接制御できます。
- GISデータソース — 気象・衛星・土壌のレイヤーを入力(Input)として登録するため、外部の地図データもセンサーと同じ時系列データベースに取り込まれます。
- 地図上のデバイス — センサー入力と出力デバイス(バルブ・リレー・カーテン・換気窓)を地図上に配置し、地図または施設ビューから直接操作できます。
- 形状が制御を決めます — 施設レベルの環境制御は形状そのものを利用します。開口面積・方位角・風向を組み合わせて複数のアクチュエーターを1つのフィードバックループとして連携させます(例: 風上・風下による差動換気)。
AIとMCP~
AoTはデバイス・測定値・空間ツリー・機能・スケジュール・ノートなど、システム全体をMCPツールとして公開します。2つの経路が同じツールレジストリを使うため、両者がずれることはありません。
- アプリ内アシスタント — ダッシュボードのチャットアシスタントです。単一のエージェントループがツールカタログ全体を見渡し、自ら使うツールを選びます。
- 外部MCPサーバー —
aot/aot_mcp_server.pyが標準のMCPをstdioまたはHTTP経由で話すため、Claude Desktopなどの外部クライアントがAoTのツールを直接呼び出せます。
AIにできること:
- 観測と診断 — センサーの履歴を読み取り、ゾーンの状態を要約し、異常を検知します。一般論ではなく、実際の施設データに基づいて質問に答えます。
- 操作 — 出力の切り替え、デバイス制御のスケジュール設定、設定値の調整を行います。状態を変えるすべての操作は適用前に承認ゲートを通過します — アプリ内ではチャットの承認カードとして、外部MCPクライアントでは保留キューとして扱われます。
- 構築 — 要望に応じて入力・出力・機能・GIS図形・植栽を作成・編集します。
モデルの選択は自由です。Claude・Gemini・GPT・Mistral・Groq、およびローカルのOllamaモデルにすべて対応しています。AoTは特定のプロバイダーを必須にしたり同梱したり、デフォルトにしたりすることはありません。
制御モデル: 入力・出力・機能~
ここまでのすべては、3種類のコントローラーの上に成り立っています。
- 入力(Input) — 測定値を取得し、InfluxDB時系列データベースに保存します。測定値は通常センサーから得られますが、Linuxの 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 — Raspberry Piのピンに直接接続する場合は、直接インストールで利用できます。
ユーザーインターフェース~
- タブシステム — 入力・出力・機能の各ページとダッシュボードはタブで整理されているため、デバイス数が多い場合や画面数が多いダッシュボードでも扱いやすくなっています。
- カスタムカラーとスタイル — ブランドカラー、チャートのパレット、ライト/ダークテーマはユーザーが設定でき、ウィジェットやページ全体に一貫して適用されます。
Raspberry PiとDockerで動作~
AoTはRaspberry Pi OSやDebianにネイティブでインストールすることも、他のプラットフォームではDockerで実行することもできます——お使いのハードウェアに合った方式を選んでも、動作するのは同じアプリケーションです。
由来~
AoTは、Kyle T. Gabriel氏によるオープンソースのMycodoプロジェクトをカスタマイズしたものとして始まりました。Mycodoはセンサー入力とデバイス出力を組み合わせ、テキストとグラフを中心としたインターフェースで環境を検知・調整するものです。
AoTはその制御モデルを維持したまま、それ以外のすべてを作り直しました。デバイス一覧のインターフェースに代わるGISデジタルツイン、MCPベースのAIレイヤー、施設規模の環境制御、LoRaWANデバイス管理、そして刷新されたUIです。入力・出力・機能レイヤーの土台は今もMycodoであり、その貢献に感謝いたします。