Integration के लिए REST, real-time data के लिए raw MAVLink WebSocket, remote relay के लिए versioned MQTT topics और drivers तथा extensions के लिए Python SDK। यहाँ KairOS के अपने interface के लक्षित ports, endpoints, permissions और examples तय किए गए हैं।
API और SDK KairOS के लक्षित contract के रूप में वर्णित हैं; stable version और compatibility अभी release नहीं हुए हैं।
KairOS repository ↗इस पृष्ठ पर +
आठ मुख्य endpoints
Control interface port 8080 पर सुनता है और JSON लौटाता है। अधिकतर requests में X-KairOS-Key header चाहिए। हर key का permission level होता है, इसलिए telemetry reading को flight commands, mission upload और administrative operations से अलग किया जा सकता है।
| Method | Endpoint | Data या action |
|---|---|---|
| GET | /api/status | Health, uptime, FC connection, भूमिका, agent version |
| GET | /api/telemetry | Attitude, GPS, battery, RC channels और flight mode |
| GET | /api/params | Prefix filter के साथ FC parameter cache |
| POST | /api/commands | Takeoff, land, goto, RTL, arm और disarm |
| GET | /api/config | JSON के रूप में agent का मौजूदा configuration |
| PUT | /api/config | Keys बदलना और प्रभावित services का hot reload |
| GET | /api/services | नियंत्रित services के लिए running, stopped या failed |
| GET | /api/logs | Service और level filters के साथ structured events |
curl -s http://<board-ip>:8080/api/telemetry \
-H "X-KairOS-Key: <your-key>" | jq{
"armed": true,
"mode": "GUIDED",
"battery": { "voltage": 22.4, "pct": 78 },
"gps": { "fix": 3, "satellites": 14, "alt": 50.2 },
"attitude": { "roll": 0.02, "pitch": -0.01, "yaw": 182.5 }
}Python से telemetry पढ़ना और command भेजना
import httpx
BASE = "http://<board-ip>:8080"
headers = {"X-KairOS-Key": "<your-key>"}
telem = httpx.get(f"{BASE}/api/telemetry", headers=headers).json()
print(telem["battery"]["pct"], telem["gps"]["satellites"])
httpx.post(
f"{BASE}/api/commands",
headers=headers,
json={"command": "takeoff", "params": {"alt": 10}},
)एक MAVLink stream, अनेक transports
| Interface | Port या topic | उद्देश्य |
|---|---|---|
| REST | :8080 | Status, telemetry, config, services, commands |
| MAVLink WebSocket | :8765 | दोनों दिशाओं में binary MAVLink v2 |
| WebRTC WHEP | :8889 | स्थानीय वीडियो |
| स्थिति | kairos/v1/agents/{agent_id}/status | Retained health और agent availability |
| टेलीमेट्री | kairos/v1/agents/{agent_id}/telemetry | वाहन की स्थिति की stream |
| घटनाएँ | kairos/v1/agents/{agent_id}/events | दिखने वाले events और warnings |
| कमांड | kairos/v1/agents/{agent_id}/commands | QoS 1 के साथ agent को commands |
| ACK | kairos/v1/agents/{agent_id}/acks/{command_id} | विशिष्ट command का परिणाम |
| WebRTC signaling प्रक्रिया | kairos/v1/agents/{agent_id}/video/webrtc/offer | P2P वीडियो के लिए SDP offer |
Router FC की एक stream को एक साथ अनेक consumers तक पहुँचाता है: WebSocket 8765 द्वारा browser GCS, TCP 5760 द्वारा SITL/engineering client और UDP 14550 द्वारा legacy tools। WebSocket में JSON wrapper नहीं है: wire-compatible binary MAVLink v2 frames भेजे जाते हैं।
const ws = new WebSocket("ws://<board-ip>:8765");
ws.binaryType = "arraybuffer";
ws.onmessage = (event) => {
decodeMavlink(new Uint8Array(event.data));
};
ws.send(encodeCommandLong(sysid, compid, cmd, params));Drivers और वाहन पर logic के contracts
| Class | उद्देश्य |
|---|---|
| CameraDriver | CSI, USB UVC, IP और vendor SDK cameras |
| GimbalDriver | Pan, tilt, roll और gimbal telemetry |
| LidarDriver | LiDAR और rangefinder devices |
| GpsDriver | GPS/GNSS receivers |
| EscDriver | ESC drivers और return telemetry |
| VisionClient | वाहन के vision bus से frames और detections |
API key की permissions उसका दायरा सीमित करती हैं
| स्तर | क्या अनुमत है |
|---|---|
| read | स्थिति बदले बिना telemetry, status, config, logs, params |
| command | Flight commands; read शामिल है |
| mission | Mission files का upload और execution; command शामिल है |
| config | Agent और FC configuration बदलना; read शामिल है |
| admin | Updates, service restart, key management और पूर्ण access |
Key को secret के रूप में रखें और public logs, screenshots या client bundle में न डालें। Browser integration में permanent admin key के बजाय short-lived scoped credential सुझाया जाता है।
Agent पर key रखे बिना MAVLink v2 signing
Ground station 32-byte key बनाकर उसे ब्राउज़र में non-extractable Web Crypto key के रूप में रखता है। Capability endpoint firmware और signing parameters की उपलब्धता जाँचता है। एक बार enrollment के बाद flight controller प्रत्येक outbound frame का HMAC-SHA256 tag जाँचता है। Agent पारदर्शी pipe रहता है और signing key नहीं रखता।
GET /api/mavlink/signing/capability
X-KairOS-Key: <your-key>
{
"supported": true,
"reason": "ok",
"firmware_name": "ArduPilot",
"firmware_version": "4.5.0",
"signing_params_present": true
}