🎥
MerakiカメラのAPIで最新のスナップショット取得
Merakiのカメラを検証中にAPIでいろいろできることを聞いたため、最新のスナップショットをPythonでとってみることにした。
カメラについてはこちら。
APIアクセスの有効化
Merakiダッシュボードにログイン後、Organization(オーガナイゼーション) > Settings(設定) > Dashboard API access(ダッシュボードAPIアクセス) で、オーガナイゼーションのAPIを有効化
APIを有効化したら、my profileページに移動して、APIキーを生成。
Meraki Dashboard APIの使い方
公式ドキュメントを参照
スナップショットの取得
このAPIを使って、スナップショットを取得する。
以下のコードはPythonで書いてみた。
Get-CameraSnapshot.py
# {serial}と{api-key}は環境毎で設定
import requests
import json
import time
url = "https://api.meraki.com/api/v1/devices/{serial}/camera/generateSnapshot"
payload = {}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Cisco-Meraki-API-Key": "{api-key}"
}
response = requests.request('POST', url, headers=headers, data=payload)
# APIの実行結果の表示
# print(response.text)
# API実行結果(JSON)の読み込み
rjson = json.loads(response.text)
urlDate = rjson["url"]
# API実行後ファイルの生成まで待機
for i in range(0, 30):
response = requests.request('GET', urlDate, headers=headers, data=payload)
print(response.status_code)
if response.status_code == 200:
break
else:
print('sleeping for 1 second')
time.sleep(1)
# 画像を保存
file = open('mv_snapshot.png', 'wb')
file.write(response.content)
file.close()
補足
payload部分にtimestampを入れると任意の時間のスナップショットを取得することも可能。
Discussion