Your project API key can be used to enable programmatic access to Edge Impulse. You can create and/or obtain a key from your project's Dashboard, under the Keys tab. API keys are long strings, and start with ei_:
Project API Key
2. Connect your development kit to your project
Open a terminal and run the Edge Impulse daemon. The daemon is the service that connects your hardware with any Edge Impulse project:
edge-impulse-daemon --api-key <your project API key>
3. Obtain your project's ID
Copy your project's ID from the project's Dashboard under the Project Info section:
4. Setup API Connection
Replace the PROJECT_ID below with the ID of your project you selected and enter your API key when prompted:
import requests
import getpass
import json
URL_STUDIO = "https://studio.edgeimpulse.com/v1/api/"
PROJECT_ID = int(input('Enter your Project ID: '))
AUTH_KEY = getpass.getpass('Enter your API key: ')
def check_response(response, debug=False):
if not response.ok:
raise RuntimeError("⛔️ Error\n%s" % response.text)
else:
if debug:
print(response)
return response
def do_get(url, auth, debug=False):
if debug:
print(url)
response = requests.get(url,
headers={
"Accept": "application/json",
"x-api-key": auth
})
return check_response(response, debug)
def parse_response(response, key=""):
parsed = json.loads(response.text)
if not parsed["success"]:
raise RuntimeError(parsed["error"])
if key == "":
return json.loads(response.text)
return json.loads(response.text)[key]
def get_project(project_id, project_auth, debug=False):
response = do_get(URL_STUDIO + str(project_id), project_auth)
return parse_response(response, "project")
print("Project %s is accessible" % get_project(PROJECT_ID, AUTH_KEY)["name"])
5. Get the ID of the connected device
# https://studio.edgeimpulse.com/v1/api/{projectId}/devices
def get_devices(project_id, project_auth, debug=False):
response = do_get(URL_STUDIO + str(project_id) + "/devices", project_auth)
return parse_response(response, "devices")
device_id = ""
for device in get_devices(PROJECT_ID, AUTH_KEY):
# if device["remote_mgmt_connected"] and device["supportsSnapshotStreaming"]:
if device["remote_mgmt_connected"]:
device_id = device["deviceId"]
print("Found %s (type %s, id: %s)" %
(device["name"], device["deviceType"], device_id))
break
if device_id == "":
print(
"Could not find a connected device that supports snapshot streaming!")