Skip to content Skip to main navigation Skip to footer

Omlet Python SDK

This SDK is designed to facilitate seamless authentication with Omlet and provide interaction with devices. With our SDK, developers can easily retrieve device information, and execute actions tailored to their devices and groups.

Introduction

Getting Started

Overview

To use this SDK the user will already be registered with omlet as you will use the same email and password credentials to authenticate. We will go through the steps for including this SDK in your application and how to interact with your devices.

Installation

To install the SmartCoop SDK, ensure you have pip installed on your system. Then, create or navigate to your project directory and execute the following command:

pip install smartcoop-python-sdk

Authentication

Create API Key

To generate an API key you'll need to login to the developer console with the email and password that use for the App. Once logged in navigate to "API Keys" and click "Generate Key". Take note of this key.

Omlet

Overview

The Omlet object offers the ability to interact with your devices, groups and user actions.

Creating an Instance

Use the apiKey you've created to start omlet.

from smartcoop.client import SmartCoopClient
from smartcoop.api.omlet import Omlet

client = SmartCoopClient(client_secret='Xwa661NcAF__secret')
omlet = Omlet(client)

Retrieving Devices

devices = omlet.get_devices()

Device Actions

Devices have a list of actions that can be executed against them. They're represented by the action class.

Using an Action

open_action = next((action for action in device.actions if action.name == 'open'), None)

if open_action:
    omlet.perform_action(open_action)

Updating Device Configuration

config = device.configuration

configuration = device.configuration
configuration.general.language = 'US'

omlet.update_configuration(device.deviceId, configuration)

A full list of the available actions for omlet can be found here:

  • get_devices()

    • Description: Retrieves a list of all devices.
    • Returns: List[Device]
  • get_device_by_id(id: str)

    • Description: Retrieves a specific device by its ID.
    • Parameters:
      • id: The ID of the device.
    • Returns: Device
  • perform_action(action: Action)

    • Description: Performs a specified action.
    • Parameters:
      • action: The Action object to be performed.
  • update_configuration(device_id: str, configuration: Configuration)

    • Description: Updates the configuration of a specific device.
    • Parameters:
      • device_id: The ID of the device.
      • configuration: The new Configuration object.
  • get_groups()

    • Description: Retrieves a list of all groups.
    • Returns: List[Group]
  • get_group_by_id(id: str)

    • Description: Retrieves a specific group by its ID.
    • Parameters:
      • id: The ID of the group.
    • Returns: Group
  • create_group(name: str)

    • Description: Creates a new group with the specified name.
    • Parameters:
      • name: The name of the new group.
    • Returns: Group
  • get_user()

    • Description: Retrieves the current user information.
    • Returns: User
  • accept_invite(group: GroupSubset)

    • Description: Accepts an invite to join a group.
    • Parameters:
      • group: The GroupSubset object representing the group invitation.
  • reject_invite(group: GroupSubset)

    • Description: Rejects an invite to join a group.
    • Parameters:
      • group: The GroupSubset object representing the group invitation.
  • update_group(group_id: str, group_name: str)

    • Description: Updates the name of a specific group.
    • Parameters:
      • group_id: The ID of the group.
      • group_name: The new name for the group.
  • delete_group(group_id: str)

    • Description: Deletes a specific group.
    • Parameters:
      • group_id: The ID of the group.
  • invite_user(group_id: str, email_address: str, access: str)

    • Description: Invites a user to a group.
    • Parameters:
      • group_id: The ID of the group.
      • email_address: The email address of the user to invite.
      • access: The access level to grant to the user.
  • remove_user(group_id: str, email_address: str)

    • Description: Removes a user from a group.
    • Parameters:
      • group_id: The ID of the group.
      • email_address: The email address of the user to remove.
  • update_user_access(group_id: str, email_address: str, access: str)

    • Description: Updates a user's access level in a group.
    • Parameters:
      • group_id: The ID of the group.
      • email_address: The email address of the user.
      • access: The new access level for the user.

Types

Action

@dataclass
class Action:
    name: str
    description: str
    value: str
    url: str
    pending: Optional[str] = None

Configuration Connectivity

@dataclass
class ConfigurationConnectivity:
    wifiState: str

Configuration Door

@dataclass
class ConfigurationDoor:
    doorType: str
    openMode: str
    openDelay: int
    openLightLevel: int
    openTime: str
    closeMode: str
    closeDelay: int
    closeLightLevel: int
    closeTime: str
    colour: str

Configuration General

@dataclass
class ConfigurationGeneral:
    datetime: str
    timezone: str
    updateFrequency: int
    language: str
    overnightSleepEnable: bool
    overnightSleepStart: str
    overnightSleepEnd: str
    pollFreq: int
    stayAliveTime: int
    statusUpdatePeriod: int
    useDst: Optional[bool] = None

Configuration Light

@dataclass
class ConfigurationLight:
    mode: str
    minutesBeforeClose: int
    maxOnTime: int
    equipped: int

Configuration

@dataclass
class Configuration:
    general: ConfigurationGeneral
    connectivity: ConfigurationConnectivity
    door: Optional[ConfigurationDoor] = None
    light: Optional[ConfigurationLight] = None

Device

@dataclass
class Device:
    deviceId: str
    name: str
    deviceType: str
    state: State
    configuration: Configuration
    actions: List[Action]

Group Subset

@dataclass
class GroupSubset:
    groupId: str
    groupName: str
    access: str

Group

@dataclass
class Group:
    groupId: str
    groupName: str
    devices: List[Device]
    admins: List[User]
    users: List[User]
    access: Optional[str] = None

State Connectivity

@dataclass
class StateConnectivity:
    ssid: str
    wifiStrength: str

State Door

@dataclass
class StateDoor:
    state: str
    lastOpenTime: str
    lastCloseTime: str
    fault: str
    lightLevel: int

State General

@dataclass
class StateGeneral:
    firmwareVersionCurrent: str
    firmwareVersionPrevious: str
    firmwareLastCheck: str
    batteryLevel: int
    powerSource: str
    uptime: int
    displayLine1: str
    displayLine2: str

State Light

@dataclass
class StateLight:
    state: str

State

@dataclass
class State:
    general: StateGeneral
    connectivity: StateConnectivity
    door: Optional[StateDoor] = None
    light: Optional[StateLight] = None

User

@dataclass
class User:
    firstName: str
    lastName: str
    userId: Optional[str] = None
    emailAddress: Optional[str] = None
    siteLink: Optional[str] = None
    invites: Optional[List[GroupSubset]] = None