Closed9
Skydio Cloud API を試してみる
ピン留めされたアイテム
GitHub リポジトリ
MIT ライセンスでご利用可能です。
このスクラップについて
下記ドキュメントを手を動かして試してみる。
API トークン取得
Skydio Cloud にアクセスする。
Google で skydio cloud login などと検索しても大丈夫。
Skydio Cloud のログインページ
Skydio Cloud のログインにはパスワードは無く、メールアドレスを入力して SIGN IN ボタンを押すと認証コードがメールで届くので入力するとログインできる。
認証コード入力画面
API トークン生成ページへ移動
ログインしたら左下の Settings をクリックする。
API トークン生成
Generate New Token ボタンをクリックする。
モーダルが表示されるので Token Name を入力してから Add ボタンをクリックする。
トークンが表示されるのでコピーして保存しておく。
トークンは再表示されないので注意する。
ワークスペース作成
コマンド
# ディレクトリを作成して移動します。
mkdir skydio-api && cd skydio-api
# package.json ファイルを作成します。
npm init -y
# npm パッケージをインストールします。
npm install dotenv node-fetch@2
npm install -D ts-node @types/node @types/node-fetch@2
# ファイルを作成します。
touch get-vehicles.ts .env
コーディング
get-vehicles.ts
import fetch from "node-fetch";
type GetVehiclesResponse = {
data: {
pagitation: {
current_page: number;
max_per_page: number;
total_pages: number;
};
vehicles: {
battery_status?: {
charging?: boolean;
percentage?: number;
};
dock?: {
dock_serial?: string;
dock_type?: "DOCK" | "DOCK_LITE";
};
flight_status?: "FLYING" | "POST_FLIGHT" | "PREP" | "REST" | "UNKNOWN";
is_online?: boolean;
is_online_via_mobile?: boolean;
mission_status?: {
current_mission?: {
mission_name?: string;
mission_template_uuid: string;
seconds_until_takeoff?: string;
state?: "IN_PROGRESS" | "PAUSED" | "POST_MISSION_ACTION";
};
next_scheduled_mission?: {
mission_name?: string;
mission_template_uuid: string;
seconds_until_takeoff?: string;
state?: "IN_PROGRESS" | "PAUSED" | "POST_MISSION_ACTION";
};
};
remote_stream_state?:
| "disabled"
| "pending"
| "active"
| "blocked"
| "device_offline"
| "device_unsupported";
upload_status?: {
files_to_upload?: number;
uploading?: true;
};
user_emails: string[];
vehicle_class: "Skydio R1" | "Skydio 2" | "Skydio X2";
vehicle_serial: string;
vehicle_type?: "R1" | "R3" | "E1";
}[];
};
meta: {
time: number;
};
skydio_error_code: number;
status_code: number;
};
async function main() {
const url = "https://api.skydio.com/api/v0/vehicles";
const getFlightsResponse = await fetch(url, {
method: "GET",
headers: {
Authorization: process.env.SKYDIO_API_TOKEN!,
},
});
if (getFlightsResponse.status !== 200) {
throw new Error(await getFlightsResponse.text());
}
const getFlightsData =
(await getFlightsResponse.json()) as GetVehiclesResponse;
console.log(JSON.stringify(getFlightsData, null, 2));
}
main().catch((err) => console.error(err));
.env(例)
SKYDIO_API_TOKEN="0000000000000000000000000000000000000000000000000000000000000000"
実行方法
コマンド
npx ts-node -r dotenv/config get-vehicles.ts
実行結果(例)
{
"data": {
"pagination": {
"current_page": 1,
"max_per_page": 25,
"total_pages": 1
},
"vehicles": [
{
"battery_status": {
"charging": false,
"percentage": 1
},
"flight_status": "REST",
"is_online": false,
"is_online_via_mobile": false,
"remote_stream_state": "device_unsupported",
"upload_status": {
"files_to_upload": 1,
"uploading": true
},
"user_emails": [
"susukida@example.com"
],
"vehicle_class": "Skydio 2",
"vehicle_serial": "Skydio2-xxxx",
"vehicle_type": "R3"
},
]
},
"meta": {
"time": 1234567890.1234567
},
"skydio_error_code": 0,
"status_code": 200
}
プロジェクトが無くなったためクローズ
また機会があることを!
このスクラップは2023/10/25にクローズされました