506 lines
12 KiB
Plaintext
506 lines
12 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d4582341",
|
||
"metadata": {},
|
||
"source": [
|
||
"# EagleEyev3 Playground\n",
|
||
"\n",
|
||
"To make this playground work, it is easier to read the `access_token` off the filesystem but you can always run the example server `python server.py` to go thorugh the Oauth2 flow. By default it will save the `access_token` into a file named `.lazy_login`. The module looks for that file and tries reading t"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8355d241",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Import Module"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "1394471a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from EagleEyev3 import EagleEyev3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "486a2537",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:root:200 in get_base_url\n",
|
||
"INFO:root:200 in get_current_user\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"een = EagleEyev3()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "51b8b66e",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Adjust Log Level"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "06d91db2",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import logging\n",
|
||
"logger = logging.getLogger()\n",
|
||
"#logger.setLevel('DEBUG')\n",
|
||
"#logger.setLevel('INFO')\n",
|
||
"logger.setLevel('WARN')\n",
|
||
"#logger.setLevel('ERROR')\n",
|
||
"#logger.setLevel('CRITICAL')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0311109c-869c-4190-97c1-a6e717a8eeba",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Who am I"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "e14e2be5-a5f9-4b8c-ae60-76c61cb61b8b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'Mark Cotton - mcotton@mcottondesign.com'"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"f\"{een.current_user['firstName']} {een.current_user['lastName']} - {een.current_user['email']}\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "4ef47ae2-a010-4b7e-87f6-3dbf0a047e16",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'eyJraWQiOiI2ODYxYjBjYS0wZjI2LTExZWQtODYxZC0wMjQyYWMxMjAwMDIiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYWZlZGVmMiIsImF1ZCI6InZtcy5hcGkiLCJpc3MiOiJ2bXMuYXV0aC52MSIsInZtc19hY2NvdW50IjoiMDAwMjgyMDEiLCJleHAiOjE2ODYwMTQ0NjUsImlhdCI6MTY4NTQwOTY2NiwianRpIjoiNDBkMThmZTA0YTZlNWE5NDI0OWE4NmVjNmE5NDA0YzYiLCJjbGllbnRfaWQiOiJQUkVWSUVXLU1BUkstV0VCIiwidm1zX2NsdXN0ZXIiOiJjMDEyIn0.RAVxuQtnb9WSv4jp4hNqEyPaVzlpK6GqodFAUybzrnGiPR9tHE5OIanCZf2aX5IGAyOk9Kn5UYD4h96iIt8cpCXIyrFPKGE3WtspAxYNBwczjAWTuZQ6lOxH2eIeo3QjoTeOZaL8JEfCmc5-NyK4xaTrnb0nuhUnWzB4Vo9xtqzn2mupYUEyOvkgM0nOaTxPlrJLRNjNKDWKwMtuE2wo94HbjeOi8lSvQcMPvm07qvS1nFEaTjzpHCdwENcK6ghEUv5wzbUsDm5FYZFi29MyGLLiwv6csGD8lY0C3FFsG5EbMFzNAqS-v-CriPgA-3X9rpgLiWNIjSFG8vj7ZzCtsg'"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"een.access_token"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a22ff6c2",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Get Cameras"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"id": "bb457850",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"ret = een.get_list_of_cameras()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"id": "c43f1db1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[✅ [1001423e] - ATM & Wine, ✅ [100d8666] - Cash Register, ✅ [1002584c] - Safe]"
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"[i for i in een.cameras if i.is_online()]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "ad33bf2a-ea36-4ec1-8335-8a44089f5f7e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[? [10090759] - Benny Camera,\n",
|
||
" ? [1003e10b] - Driveway,\n",
|
||
" ? [100ba388] - Front Door,\n",
|
||
" ? [10012735] - Fuel Dock,\n",
|
||
" ? [100b7b3b] - Max Camera,\n",
|
||
" ? [1009ae55] - Office]"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"[i for i in een.cameras if not i.is_online()]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"id": "f4c6fe67",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[? [10090759] - Benny Camera,\n",
|
||
" ? [1003e10b] - Driveway,\n",
|
||
" ? [100ba388] - Front Door,\n",
|
||
" ? [10012735] - Fuel Dock,\n",
|
||
" ? [100b7b3b] - Max Camera,\n",
|
||
" ? [1009ae55] - Office]"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"[i for i in een.cameras if not i.is_online()]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b0ec786b-ed07-4486-a4d7-a7483e5a02ce",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "295b9ef8-df88-447e-b787-0098b4778f6a",
|
||
"metadata": {},
|
||
"source": [
|
||
"## User timezone fun"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "ef1ea137-d9fb-4f6f-b241-fb019c8e3230",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#from datetime import datetime, timedelta\n",
|
||
"#from pytz import timezone"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "0841aef0-89c1-45ac-b501-a9196f481d49",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#een.user_tz_obj = timezone(een.current_user['timeZone']['timeZone'])\n",
|
||
"#now = datetime.now(tz=een.user_tz_obj)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "ae53f810-cb77-48e3-b148-72ef7038bb89",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#now.isoformat(timespec='milliseconds')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "4d708ccb-80b1-4d88-aa2e-d93a71cbdc04",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#(datetime.now(tz=een.user_tz_obj) - timedelta(hours=6)).isoformat(timespec='milliseconds')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f4d8c154-400a-4af9-b677-29190b588408",
|
||
"metadata": {
|
||
"editable": true,
|
||
"slideshow": {
|
||
"slide_type": ""
|
||
},
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"## Event Subscription"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "a9d81b0d-72e6-4404-b30e-3a341a9e6639",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{\"id\":\"967034aa-aa8c-45d4-92c1-af73d0bc9f8d\",\"subscriptionConfig\":{\"lifeCycle\":\"temporary\",\"timeToLiveSeconds\":900},\"deliveryConfig\":{\"type\":\"serverSentEvents.v1\",\"sseUrl\":\"https://api.c012.eagleeyenetworks.com/api/v3.0/sse/eventSubscriptions/967034aa-aa8c-45d4-92c1-af73d0bc9f8d\"}}\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import requests\n",
|
||
"\n",
|
||
"url = \"https://api.c012.eagleeyenetworks.com/api/v3.0/eventSubscriptions\"\n",
|
||
"\n",
|
||
"payload = {\n",
|
||
" \"deliveryConfig\": {\"type\": \"serverSentEvents.v1\"},\n",
|
||
" \"filters\": [\n",
|
||
" {\n",
|
||
" \"actors\": [\"camera:100d8666\"],\n",
|
||
" \"types\": [{\"id\": \"een.motionDetectionEvent.v1\"}]\n",
|
||
" }\n",
|
||
" ]\n",
|
||
"}\n",
|
||
"headers = {\n",
|
||
" \"accept\": \"application/json\",\n",
|
||
" \"content-type\": \"application/json\",\n",
|
||
" \"authorization\": f\"Bearer {een.access_token}\"\n",
|
||
"}\n",
|
||
"\n",
|
||
"response = requests.post(url, json=payload, headers=headers)\n",
|
||
"\n",
|
||
"print(response.text)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"id": "53d3bff7-848f-4669-ab66-57597313fa0d",
|
||
"metadata": {
|
||
"editable": true,
|
||
"scrolled": true,
|
||
"slideshow": {
|
||
"slide_type": ""
|
||
},
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"#pip install sseclient\n",
|
||
"from sseclient import SSEClient\n",
|
||
"\n",
|
||
"messages = SSEClient(f\"{response.json()['deliveryConfig']['sseUrl']}\", headers=headers)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "91cfe32d-db80-40fb-8ea9-d60f8a647b0d",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Response [200]>"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"messages.resp"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "2016a9cf-9ce8-48af-8e3f-c058024c544e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#for msg in messages:\n",
|
||
"# print(msg)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8c140aaf-766f-4255-94ef-199d17cbc7a6",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Getting list of Events"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "74e78ee1-33b8-4a88-9d23-cd6281603a5b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"2023-06-01T13:41:19.422-05:00 2023-06-01T07:41:19.422-05:00\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(een.time_now(), een.time_before())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c84c30dd-4b7c-415b-8e6f-e77de70d1924",
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"for i in range(0,20):\n",
|
||
" ts = een.time_now()\n",
|
||
"\n",
|
||
" for cam in een.cameras:\n",
|
||
" blah = cam.get_list_of_events(end_timestamp=een.time_before(ts=ts, hours=(6*i)), \\\n",
|
||
" start_timestamp=een.time_before(ts=ts, hours=(6*(i+1))) )"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "13809cc7-9ec2-4e15-9495-e64feaecca6d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"len(een.cameras[2].events['status'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "67d4f79b-2b43-4bdb-9068-28ac9d8d921c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"len(een.cameras[0].events['motion'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "287cbf7b-52c4-4aac-abeb-be94d0594c19",
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"#een.cameras[2].get_list_of_events(end_timestamp=een.time_now(), start_timestamp=een.time_before())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8be8d503-b46d-4ba7-884e-2c21c3987129",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#for cam in een.cameras:\n",
|
||
"# for i in cam.events['status']:\n",
|
||
"# print(f\"{cam.name} - {i['startTimestamp']} - {i['data'][0]['newStatus']['connectionStatus']} \")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b761affe-ec32-4bd2-ba20-a2a6fb9db801",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#sorted(een.cameras[2].events['status'], key=lambda x: x['startTimestamp'], reverse=True) "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "1cebbb4e-4c4e-4ab0-9627-251eb812b2f1",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.8.10"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|