{ "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": "51b8b66e", "metadata": {}, "source": [ "## Adjust Log Level" ] }, { "cell_type": "code", "execution_count": 6, "id": "06d91db2", "metadata": {}, "outputs": [], "source": [ "import logging\n", "logger = logging.getLogger()\n", "logger.setLevel('WARN')" ] }, { "cell_type": "markdown", "id": "8355d241", "metadata": {}, "source": [ "## Import Module" ] }, { "cell_type": "code", "execution_count": 7, "id": "1394471a", "metadata": {}, "outputs": [], "source": [ "from EagleEyev3 import EagleEyev3" ] }, { "cell_type": "code", "execution_count": 8, "id": "486a2537", "metadata": {}, "outputs": [], "source": [ "een = EagleEyev3()" ] }, { "cell_type": "markdown", "id": "0311109c-869c-4190-97c1-a6e717a8eeba", "metadata": {}, "source": [ "## Who am I and what is my access_token" ] }, { "cell_type": "code", "execution_count": 9, "id": "e14e2be5-a5f9-4b8c-ae60-76c61cb61b8b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Mark Cotton - mcotton@mcottondesign.com'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f\"{een.current_user['firstName']} {een.current_user['lastName']} - {een.current_user['email']}\"" ] }, { "cell_type": "code", "execution_count": 10, "id": "4ef47ae2-a010-4b7e-87f6-3dbf0a047e16", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'eyJraWQiOiI2ODYxYjBjYS0wZjI2LTExZWQtODYxZC0wMjQyYWMxMjAwMDIiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYWZlZGVmMiIsImF1ZCI6InZtcy5hcGkiLCJpc3MiOiJ2bXMuYXV0aC52MSIsInZtc19hY2NvdW50IjoiMDAwMjgyMDEiLCJleHAiOjE2ODYwMTQ0NjUsImlhdCI6MTY4NTQwOTY2NiwianRpIjoiNDBkMThmZTA0YTZlNWE5NDI0OWE4NmVjNmE5NDA0YzYiLCJjbGllbnRfaWQiOiJQUkVWSUVXLU1BUkstV0VCIiwidm1zX2NsdXN0ZXIiOiJjMDEyIn0.RAVxuQtnb9WSv4jp4hNqEyPaVzlpK6GqodFAUybzrnGiPR9tHE5OIanCZf2aX5IGAyOk9Kn5UYD4h96iIt8cpCXIyrFPKGE3WtspAxYNBwczjAWTuZQ6lOxH2eIeo3QjoTeOZaL8JEfCmc5-NyK4xaTrnb0nuhUnWzB4Vo9xtqzn2mupYUEyOvkgM0nOaTxPlrJLRNjNKDWKwMtuE2wo94HbjeOi8lSvQcMPvm07qvS1nFEaTjzpHCdwENcK6ghEUv5wzbUsDm5FYZFi29MyGLLiwv6csGD8lY0C3FFsG5EbMFzNAqS-v-CriPgA-3X9rpgLiWNIjSFG8vj7ZzCtsg'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "een.access_token" ] }, { "cell_type": "markdown", "id": "a22ff6c2", "metadata": {}, "source": [ "## Get Cameras" ] }, { "cell_type": "code", "execution_count": 11, "id": "bb457850", "metadata": {}, "outputs": [], "source": [ "ret = een.get_list_of_cameras()" ] }, { "cell_type": "code", "execution_count": 12, "id": "c43f1db1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[✅ [1001423e] - ATM & Wine,\n", " ✅ [100d8666] - Cash Register,\n", " ✅ [10012735] - Fuel Dock,\n", " ✅ [1002584c] - Safe]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[i for i in een.cameras if i.is_online()]" ] }, { "cell_type": "code", "execution_count": 13, "id": "ad33bf2a-ea36-4ec1-8335-8a44089f5f7e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[? [10090759] - Benny Camera,\n", " ❌ [1003e10b] - Driveway,\n", " ❌ [100ba388] - Front Door,\n", " ? [100b7b3b] - Max Camera,\n", " ❌ [1009ae55] - Office]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[i for i in een.cameras if not i.is_online()]" ] }, { "cell_type": "code", "execution_count": 14, "id": "f4c6fe67", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[? [10090759] - Benny Camera,\n", " ❌ [1003e10b] - Driveway,\n", " ❌ [100ba388] - Front Door,\n", " ? [100b7b3b] - Max Camera,\n", " ❌ [1009ae55] - Office]" ] }, "execution_count": 14, "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": 15, "id": "ef1ea137-d9fb-4f6f-b241-fb019c8e3230", "metadata": {}, "outputs": [], "source": [ "from datetime import datetime, timedelta\n", "from pytz import timezone" ] }, { "cell_type": "code", "execution_count": 16, "id": "0841aef0-89c1-45ac-b501-a9196f481d49", "metadata": {}, "outputs": [], "source": [ "tz = timezone(een.current_user['timeZone']['timeZone'])\n", "now = datetime.now(tz=tz)" ] }, { "cell_type": "code", "execution_count": 17, "id": "ae53f810-cb77-48e3-b148-72ef7038bb89", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2023-05-30T21:39:54.210-05:00'" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "now.isoformat(timespec='milliseconds')" ] }, { "cell_type": "code", "execution_count": 18, "id": "4d708ccb-80b1-4d88-aa2e-d93a71cbdc04", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2023-05-30T15:39:55.646-05:00'" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(datetime.now(tz=tz) - timedelta(hours=6)).isoformat(timespec='milliseconds')" ] }, { "cell_type": "markdown", "id": "f4d8c154-400a-4af9-b677-29190b588408", "metadata": {}, "source": [ "## Event Subscription" ] }, { "cell_type": "code", "execution_count": 29, "id": "a9d81b0d-72e6-4404-b30e-3a341a9e6639", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\"id\":\"e572b7c7-f5de-4994-b4e5-f301af23213c\",\"subscriptionConfig\":{\"lifeCycle\":\"temporary\",\"timeToLiveSeconds\":900},\"deliveryConfig\":{\"type\":\"serverSentEvents.v1\",\"sseUrl\":\"https://api.c012.eagleeyenetworks.com/api/v3.0/sse/eventSubscriptions/e572b7c7-f5de-4994-b4e5-f301af23213c\"}}\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:1001423e\", \"camera:100d8666\"],\n", " \"types\": [{\"id\": \"een.motionDetectionEvent.v1\"}]\n", " }\n", " ]\n", "}\n", "headers = {\n", " \"accept\": \"application/json\",\n", " \"content-type\": \"application/json\",\n", " \"authorization\": \"Bearer eyJraWQiOiI2ODYxYjBjYS0wZjI2LTExZWQtODYxZC0wMjQyYWMxMjAwMDIiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYWZlZGVmMiIsImF1ZCI6InZtcy5hcGkiLCJpc3MiOiJ2bXMuYXV0aC52MSIsInZtc19hY2NvdW50IjoiMDAwMjgyMDEiLCJleHAiOjE2ODU5OTY0NTksImlhdCI6MTY4NTM5MTY1OSwianRpIjoiM2NjZjcyNDEwMjNjYWVlNjZkMjFlODRlODE2MTU4MDciLCJjbGllbnRfaWQiOiJQUkVWSUVXLU1BUkstV0VCIiwidm1zX2NsdXN0ZXIiOiJjMDEyIn0.hgNkbGkzG0C-CG9lxgpOX_c__uI9s4BextwKIWgCwHyFhin7jftW7gVvb_xyisjD7YxxZyvBRRJ8cQ6enH37RaS5orLjKUj81qUi7RrlhApHLOSV_lyFSSkyXd-QzV9iDI2_0DRN1VviIZrC0t783Cdyz1deKG3kvDhWIUGLUvmJNLmpgIkYmmQkGgWvo80Snqm11TKMORNG779pDvA7C5l__fZDEbCjYh5yhkEmOcQAekYCBichO70w4frNiYP_hOLuBGUs3yvtglNo5QAp5fdhYfgjv-zmzyE1fjZcLo22rNPb3_I8SGpEJWEe0JLtxCrEf-YaCQccD4YBh_RE9Q\"\n", "}\n", "\n", "response = requests.post(url, json=payload, headers=headers)\n", "\n", "print(response.text)" ] }, { "cell_type": "code", "execution_count": 30, "id": "53d3bff7-848f-4669-ab66-57597313fa0d", "metadata": { "scrolled": true }, "outputs": [], "source": [ "#pip install sseclient\n", "from sseclient import SSEClient\n", "\n", "messages = SSEClient(response.json()['deliveryConfig']['sseUrl'], headers=headers)" ] }, { "cell_type": "code", "execution_count": 33, "id": "91cfe32d-db80-40fb-8ea9-d60f8a647b0d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "messages.resp" ] }, { "cell_type": "code", "execution_count": null, "id": "2016a9cf-9ce8-48af-8e3f-c058024c544e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "for msg in messages:\n", " print(msg)" ] }, { "cell_type": "code", "execution_count": null, "id": "bf23672e-f808-442f-8393-3c0e1f84c984", "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 }