OPERATIONS - zero1ne-26/doc GitHub Wiki
μΌμ μ΄μμκ° μ μ μ΄μ μ€ λ§€μΌ λ°λΌμΌ ν μ μ°¨. κΈ°μ λ°°κ²½ μμ΄ λ°λΌν μ μλλ‘ κ΅¬μ²΄ λͺ λ ΉΒ·νμΈ νλͺ© μμ£Όλ‘.
| μμ | μμ | κ²μ¦ |
|---|---|---|
| 1 | UPS(Uninterruptible Power Supply, 무μ μ μ μ곡κΈμ₯μΉ)Β·μ μ νμΈ | μ λ©΄ LED μ μ |
| 2 | λ©μΈ μν¬μ€ν μ΄μ λΆν | OS λ‘κ·ΈμΈκΉμ§ μ μ |
| 3 | docker μλ μμ νμΈ |
docker compose ps β λͺ¨λ 컨ν
μ΄λ healthy
|
| 4 | HA λμ보λ μ΄κΈ° (http://localhost:8123) |
λͺ¨λ λ‘λ΄ entity online, λͺ¨λ μΉ΄λ©λΌ entity available
|
| 5 | Frigate UI μ΄κΈ° (http://localhost:5000) |
λͺ¨λ μΉ΄λ©λΌ λΌμ΄λΈ μμ νμ |
| 6 | λ‘λ΄ μ μ μΌκΈ° + λν¬μμ stand νμΈ | SPOT: μ μ μμΈ, λ°°ν°λ¦¬ > 80% |
| 7 | νλΈλ¦Ώ 3λ μΆ©μ λν¬μμ λΆλ¦¬ + νμ΄λ§ μΉ΄λ©λΌ μ ν μ€νΈ | κ° νλΈλ¦Ώμ΄ QR β νμ λ©μμ§κΉμ§ OK |
| 8 | μμ μλλ¦¬μ€ dry-run 1ν | μΉ΄ν β 곡μ β μ°¨λ β μ€λ΄ 1μΈ μ’ λ¨ |
| 9 | μ΄μ μΌμ§μ μ κ² κ²°κ³Ό κΈ°λ‘ | (체ν¬λ¦¬μ€νΈ μμ μ°Έμ‘°) |
| μ£ΌκΈ° | μμ |
|---|---|
| λ§€ μΈμ μμ | νμ΄λ§ μΉ΄λ©λΌ μ μλ΄ ("QR μΈμ μ€μ λλ€") |
| λ§€ μΈμ μ’ λ£ | νλΈλ¦Ώ νμ β λν¬ μΆ©μ + μκ°Β·μμ± μλ΄λ‘ λ€μ 체νμ νΈμΆ |
| λ§€ 30λΆ | λ‘λ΄ λ°°ν°λ¦¬ νμΈ β 25% λ―Έλ§ μ μλ λν¬ λ³΅κ· (λλ μλ κ΅λ) |
| λ§€ 1μκ° | μ΄μ μΌμ§ μ λ°μ΄νΈ (체νμ μ, μ΄μ μ΄λ²€νΈ μ 무) |
| μμ | μμ |
|---|---|
| 1 | λͺ¨λ νμ± μΈμ μ’ λ£ (HAμμ "force end" λ²νΌ) |
| 2 | λ‘λ΄μ λν¬λ‘ λ³΅κ· (robot_command capability=goto + dock_position) |
| 3 | νλΈλ¦Ώ λͺ¨λ λν¬ μΆ©μ κΈ°μ κ±°μΉ |
| 4 | 컨ν
μ΄λ μ μ μ’
λ£: docker compose stop (νμ μ) β restart: alwaysλΌ λΆν
μ μλ μ¬μμ |
| 5 | μ΄μ μΌμ§ λ§κ° + λ€μ λ μΈμμΈκ³ λ©λͺ¨ |
물리 e-stop(emergency stop, κΈ΄κΈ μ μ§) λ²νΌ λλ₯΄κΈ° (μ΄μμ μ½μ + μ μμ₯ μ ꡬ λΉμΉ).
μ΄ν μλμΌλ‘ μΌμ΄λλ μΌ:
-
safety/estop active=trueMQTT(Message Queuing Telemetry Transport, λ©μμ§ ν ν λ λ©νΈλ¦¬ μ μ‘ νλ‘ν μ½) publish (retain). - λͺ¨λ λ‘λ΄ μ¦μ μ μ§ (mcp-robot-adapter Watchdog μΈν°λ‘).
- λͺ¨λ νμ± νλΈλ¦Ώμ "μ μ μμ°μ λ©μΆμμ΅λλ€" νμ (HA μλν).
ν΄μ μ μ°¨:
- μν μμΈ μ κ±° ν μ΄μμκ° e-stop λ²νΌ release.
- HA λμ보λμμ "E-Stop Reset" λ²νΌ ν΄λ¦ β
safety/estop active=falsepublish. - λ‘λ΄μ΄ μλ stand β μ΄μμκ° μ μ λμ 1ν νμΈ.
| μ¦μ | μ΄μμ μ‘μ |
|---|---|
HAμμ binary_sensor.spot_01_online = off
|
λ‘λ΄ μ μΒ·Wi-Fi νμΈ β μ λλ©΄ λ€λ₯Έ λ‘λ΄μΌλ‘ μλλ¦¬μ€ λ체 |
sensor.spot_01_battery < 20% |
λν¬λ‘ λ³΅κ· λͺ λ Ή β μΆ©μ 30λΆ β μ¬ν¬μ |
robot.fault μλ¦Ό (severity: critical) |
λ‘λ΄ μ¦μ μ μ§ (μλ e-stop) β μ μ‘°μ¬ μ§μ μ½ |
- HA μλνμ ν΄λ°± μλλ¦¬μ€ μλ λ°λ (SERVICES.md Β§3 ν΄λ°± μΉ΄νλ‘κ·Έ μ°Έμ‘°).
- μ΄μμ μ‘μ
:
- μ΄μ μΌμ§μ μμ μκ° κΈ°λ‘.
- HA λμ보λ μλ¨ λ Έλ λ°°λ ("ν΄λ°± λͺ¨λ μ΄μ μ€") νμΈ.
- 30λΆ μ΄μ μ§μ μ: μ΄μμκ° μ²΄νμμκ² μ¬μ μν΄ + μμ° νμ΄μ€ μ‘°μ .
- 볡ꡬλλ©΄ μλ μ μ λͺ¨λ β μΆκ° μ‘μ λΆνμ.
- μ¦μ νμ΄λ§ ν ν° λ¬΄ν¨ν: HA λμ보λ β "Active Sessions" β ν΄λΉ μΈμ "Force End".
- μλΉ νλΈλ¦Ώ 1λλ₯Ό νμ΄λ§ μΉ΄λ©λΌ μμμ μ κ· νμ΄λ§.
- HAμμ
binary_sensor.<camera>_available=off. - μΈμ μΉ΄λ©λΌκ° cross-camera ReIDλ‘ μΌλΆ 보μ β zone μΆμ μ λ’°λ μ ν μλ¦Ό λ°λ.
- 30λΆ μ΄μ λ¨μ μ μμ° μΌμ μ€λ¨ β μΉ΄λ©λΌ μ¬κΈ°λ λλ μΌμ΄λΈ κ΅μ²΄.
- UPSκ° 5λΆ λ°±μ β μ΄μμκ° μλμΌλ‘ λͺ¨λ 컨ν μ΄λ μ’ λ£ ν μμ€ν μ §λ€μ΄.
- μ μ 볡ꡬ ν Β§1.1 λΆν μ μ°¨λ‘ μ¬μμ.
λ§€μΌ μ΄μ μμΒ·μ’ λ£ μ λ€μμ κΈ°λ‘ (μ€νλ λμνΈ λλ μ΄μ μΌμ§ μ± μ):
μΌμ: 2026-XX-XX
μ΄μμ: <μ΄λ¦>
[μμ μ κ² β 09:30]
β‘ UPS μ μ
β‘ docker compose ps: λͺ¨λ 컨ν
μ΄λ healthy
β‘ HA λͺ¨λ entity online
β‘ Frigate λͺ¨λ μΉ΄λ©λΌ λΌμ΄λΈ
β‘ λ‘λ΄ λ°°ν°λ¦¬ SPOT 01: ___%, SPOT 02: ___%
β‘ νλΈλ¦Ώ 3λ μ μ
β‘ Dry-run μλλ¦¬μ€ ν΅κ³Ό
[μ΄μ μ€ μ΄λ²€νΈ]
μκ° / μ΄λ²€νΈ / μ‘°μΉ
- 10:15 / SPOT-01 fault: low_battery / λν¬ λ³΅κ·, 30λΆ μΆ©μ ν μ¬ν¬μ
- 11:30 / νλΈλ¦Ώ t02 νμ΄λ§ μ€ν¨ / μ¬μμ ν μ μ
[μ’
λ£ β 18:30]
β‘ λͺ¨λ μΈμ
μ’
λ£
β‘ λ‘λ΄ λν¬ λ³΅κ·
β‘ νλΈλ¦Ώ μΆ©μ λν¬ κ±°μΉ
β‘ μ΄μ μΌμ§ λ§κ°
μ€λ 체νμ μ: ___
μ΄μ μ΄λ²€νΈ: ___
λ€μ μ΄μμμκ² μΈμμΈκ³: ___
- μ΄μ μκ°: 1ν μΆ©μ μ½ 90λΆ μ΄μ© (μμ° κ°λμ λ°λΌ 60~120λΆ).
- μΆ©μ μκ°: 0% β 100% μ½ 90λΆ, 50% β 100% μ½ 45λΆ (μ μ‘°μ¬ μ¬μ κΈ°μ€).
-
κΆμ₯ μ΄μ μ¬μ΄ν΄: 60λΆ μμ° β 30
45λΆ μΆ©μ (battery 3080% μλ νμ©).
HA μλνλ‘ μκ³κ° λλ¬ μ μλ:
automation:
- alias: "SPOT-01 low battery β dock"
trigger:
- platform: numeric_state
entity_id: sensor.spot_01_battery
below: 25
condition:
- condition: state
entity_id: binary_sensor.orchestrator_alive
state: 'on'
action:
- service: mqtt.publish
data:
topic: "robot/spot-01/command"
payload_template: >
{
"command_id": "auto-dock-{{ now().timestamp() | int }}",
"robot_id": "spot-01",
"capability": "goto",
"params": {"x": <DOCK_X>, "y": <DOCK_Y>, "yaw": <DOCK_YAW>},
"priority": "operator",
"source": {"service": "home-assistant", "trace_id": "auto-dock"},
"expires_at": null
}2λ λ‘λ΄ λ³΄μ μ ν λ μΆ©μ μ€ λ€λ₯Έ λκ° μμ° β orchestratorμ μμ€ν ν둬ννΈμ κ°μ© λ‘λ΄ νμ΄ μλ λ°μ(Β§7.3 λμμ± μ μ± ).
μ΄μμ μ‘μ :
- HA λμ보λμμ "Battery" μΉ΄λ νμΈ β μ΄λ λ‘λ΄μ΄ μΆ©μ μ€μΈμ§ μκ°.
- μμ° λμ€ κ΅λ νμ μ "Manual Dock" λ²νΌ β λ€λ₯Έ λ‘λ΄μ΄ μΈκ³.
- orchestratorμ
attached_sessionμ΄ μλμΌλ‘ κ°±μ λμ΄ μ κ· μ¬μ©μλ κ°μ© λ‘λ΄μΌλ‘ λΌμ°ν .
- λν¬λ zone polygon μΈλΆ λλ λ³λ zone(
dock_zone)μΌλ‘ μ μ β guardrailμ΄dock_zoneμ μΌλ° zoneμΌλ‘ μ€μΈνμ§ μλλ‘. - λν¬ μ’νλ
config/calibration/robots.yamlμdock_positionμ λͺ μ (μΊλ¦¬λΈλ μ΄μ κ³Ό ν¨κ» κ°±μ ).
- μμ° μ€ λͺ¨λ λ‘λ΄μ΄ λμ μ λ°°ν°λ¦¬ β μΌλΆ zone μλ리μ€λ₯Ό "νλΈλ¦Ώ λ¨λ " λͺ¨λλ‘ μ ν (Β§ν΄λ°± μΉ΄νλ‘κ·Έ vehicle zoneκ³Ό λμΌ ν¨ν΄).
- μ΄μμμκ² μλ¦Ό: HA μλνλ‘ "All robots low battery" μΉ΄λ λΉ¨κ°μ νμ.
| μ£ΌκΈ° | μμ |
|---|---|
| λ§€μΌ | μ΄μ μμΒ·μ’ λ£ μ κ² (μ Β§1) |
| λ§€μ£Ό | 컨ν
μ΄λ λ‘κ·Έ size νμΈ (docker compose logs --tail=100 <svc>) |
| λ§€μ£Ό | Frigate μΉ΄λ©λΌ νκ°Β·μ΄μ μ κ², zone polygon μκ° νμΈ |
| λ§€μ | docker image 보μ ν¨μΉ κ²ν (Trivy μ€μΊ κ²°κ³Ό) |
| λ§€μ | UPS λ°°ν°λ¦¬ μκ°μ§λ¨ |
| λΆκΈ° | λΉλ°λ²νΈΒ·ν ν° νμ (DEPLOYMENT.md Β§9.2) |
| λΆκΈ° | λ°±μ β 볡ꡬ dry-run (DEPLOYMENT.md Β§12.5) |
| λΆκΈ° | μΊλ¦¬λΈλ μ΄μ κ²μ¦ β μΉ΄λ©λΌκ° μλν μ’νλ₯Ό μ νν μΈμνλ |
| 6κ°μ | SPOT μΆ©μ μΌμ΄λΈΒ·λν¬ μ κ², λ‘λ΄ OS μ λ°μ΄νΈ κ²ν |
| μν© | λ΄λΉ |
|---|---|
| μμ€ν SW μ΄μ (컨ν μ΄λΒ·LLM(Large Language Model, λκ·λͺ¨ μΈμ΄ λͺ¨λΈ)Β·MQTT) | κ°λ°ν β Slack #zerone-dev
|
| λ‘λ΄ HW μ΄μ | Boston Dynamics μ§μ λλ ν΄λΉ λ‘λ΄ λ²€λ |
| μΉ΄λ©λΌΒ·λ€νΈμν¬ | μμ€ν |
| μ μ μ΄μ μμ¬κ²°μ (μμ° μ€λ¨Β·μ°μ₯) | μ μ μ± μμ |
(μ€μ μ΄μ μ λ΄λΉμ μ΄λ¦Β·μ νλ²νΈλ‘ μ±μΈ κ²)
Q: 컨ν
μ΄λ 1κ°κ° unhealthyλ‘ λ΄μ΄μ.
A: docker compose restart <name> β μ체 볡ꡬ μ λλ©΄ docker compose logs --tail=200 <name>λ‘ μμΈ νμΈ ν κ°λ°ν νΈμΆ.
Q: 체νμκ° "λ‘λ΄μ΄ λ°μ μ ν΄μ"λΌκ³ ν©λλ€. A: β HA λμ보λμμ ν΄λΉ λ‘λ΄ fault νμΈ β‘ μ μμ΄λ©΄ e-stop νμ± μ¬λΆ νμΈ β’ κ·Έλλ μ λλ©΄ μ΄μμκ° μλ λͺ λ Ή(HA "Manual Command" μΉ΄λ).
Q: νλΈλ¦Ώμ΄ νμ΄λ§ νλ©΄μμ λ©μΆ°μ. A: 60μ΄ ν μλ μ¬μμ β κ·Έλλ μ λλ©΄ νλΈλ¦Ώ μ¬λΆν . κ·Έλλ μ λλ©΄ ν ν° λ§λ£ μμ¬ β mcp-tablet-gateway 컨ν μ΄λ μ¬μμ.
Q: LLMμ΄ μ΄μν μλ리μ€λ₯Ό λ°λμμΌ°μ΄μ. A: e-stopμΌλ‘ μ¦μ μ€λ¨ β μ΄μ μΌμ§μ μκ°Β·λ©μμ§ κΈ°λ‘ β κ°λ°νμ trace_id 곡μ (Loki λ‘κ·Έμμ μΆμΆ).