用模擬 AGV / 機台資料,做出一個每秒更新的 Web 監控儀表板,再沿兩個獨立軸把它變成真的:資料源 sim → MQTT、AI 摘要 規則式 → LLM 班報,而前端與 API 一行都不用改。
這頁讓你 5 分鐘知道這是什麼、能做出什麼、真的會動。要逐行、踩雷、部署的完整版,在實戰手冊裡。
自動化、AGV、PLC、工業 IoT 工程師常卡在「我想先做出一個能展示給客戶看的 Web 監控介面,但要從哪裡開始?資料契約怎麼定?REST 跟 WebSocket 怎麼搭?接真實設備又是另一套嗎?」
這個範本分兩軌:前半段用模擬資料 + 樣板摘要做出一個會動的 dashboard,讓你看懂資料契約、REST、WebSocket、前端吃 JSON;後半段沿兩個獨立軸把它變成真的 —— 資料源從模擬器換成 MQTT 真設備、AI 摘要從規則式換成 LLM 班報,而前端與 API 一行都不用改。先用玩具看懂整條路,再逐軸接上真實資料與 AI,你會清楚知道哪些是可抽換的、哪些是你自己的責任。
需要 uv。不需要任何 API key、token 或 .env,這個 starter 全部用模擬資料,開箱即可跑。
git clone https://github.com/yazelin/industrial-ai-dashboard-starter.git
cd industrial-ai-dashboard-starter
uv sync
uv run uvicorn app.main:app --reload --port 8000
INFO: Will watch for changes in these directories: ['/.../industrial-ai-dashboard-starter']
INFO: Uvicorn running on http://127.0.0.1:8011 (Press CTRL+C to quit)
INFO: Started reloader process [1611328] using WatchFiles
INFO: Started server process [1611330]
INFO: Waiting for application startup.
INFO: Application startup complete.
curl http://127.0.0.1:8000/api/ai-summary
{"summary": "AGV 3 台在線;低電量 1 台(AGV-3);異常機台 0 台;告警 1 則。"}
/api/ai-summary 回一句 summary,瀏覽器開 http://127.0.0.1:8000/ 最下方 JSON 每秒在跳,就代表整條路通了。前半段你做出的是個玩具:資料是假的、摘要是死的。後半段沿兩個各自可獨立開關的軸把它「變成真的」,而前端與 API 一行都不用改。
| 軸 | Baseline(Part 1) | 升級(Part 2) | 切換 |
|---|---|---|---|
| 資料源 | simulated_snapshot() 假值 | MQTT 真設備餵進來 | SOURCE_BACKEND=sim|mqtt |
| AI 摘要 | 規則式班報(確定性) | LLM 班報(會講人話) | AI_SUMMARY=rule|llm |
核心一句:資料源與 AI 都是可抽換的層,但餵 LLM 的 context 與安全邊界永遠是你自己的責任。規則式班報確定、免費、可測,是 LLM 不穩或沒預算時的 fallback;預設 sim + rule 永遠零相依可跑,要哪個能力才裝哪個 extra。完整對照在 docs/08。
這頁是快速了解;下面每一章都是完整內容,在 GitHub 上點開就能讀。
這頁是快速了解。逐行讀懂、架構拆解、踩雷清單、部署、改成你的場景都在實戰手冊(PDF)裡。