SmartDeviceWorker Class Reference
See the Getting Started Guide for a guide to getting started with the smart device package.
Runs a background loop that processes DeviceSequenceRequest jobs.
The worker is designed to run in its own thread (pass run as the thread target). All public methods are thread-safe.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
smart_device
|
SCSmartDevice
|
A fully-initialised SCSmartDevice instance. The worker does not take ownership — the caller is responsible for calling shutdown when done. |
required |
logger
|
SCLogger
|
SCLogger instance from sc-foundation. |
required |
wake_event
|
Event
|
|
required |
max_concurrent_errors
|
int
|
Number of consecutive sequence errors before an additional notifiable issue is raised (default 4). |
4
|
critical_error_report_delay_mins
|
int | None
|
Minutes to delay before sending a
critical-error notification. |
None
|
does_device_have_webhooks(device)
Return True if any component of the device has webhooks enabled.
get_device_information(device_identity, refresh_status=False)
Return a consolidated copy of one device and all its components.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device_identity
|
dict | int | str
|
Device dict, ID, or name. |
required |
refresh_status
|
bool
|
If True, fetch fresh state from hardware first. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
Device dict augmented with |
dict
|
and |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If the device is not found in the list of devices or if there is an error getting the status. |
get_latest_status()
Return a frozen snapshot of the most recently refreshed device state.
Thread-safe; safe to call from any thread.
Returns:
| Type | Description |
|---|---|
SmartDeviceView
|
SmartDeviceView snapshot. |
get_location_info()
Return the latest device location data, keyed by device name.
Returns:
| Type | Description |
|---|---|
dict[str, dict]
|
Dict mapping device name → location dict ( |
get_result(req_id)
Return the result for a completed request, or None if not yet done.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
req_id
|
str
|
The request ID returned by submit. |
required |
Returns:
| Type | Description |
|---|---|
DeviceSequenceResult | None
|
|
is_device_online(device_identity=None)
See if a device is alive by pinging it.
Returns the result and updates the device's online status. If we are in simulation mode, always returns True.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device_identity
|
dict | int | str | None
|
The actual device object, device component object, device ID or device name of the device to check. If None, checks all devices. |
None
|
Returns:
| Type | Description |
|---|---|
bool
|
True if the device is online, False otherwise. If all devices are checked, returns True if all devices are online. |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If the device is not found in the list of devices. |
print_device_status(device_identity=None)
Print the status of a device or all devices.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device_identity
|
int | str | None
|
The ID or name of the device to check. If None, checks all devices. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
A string representation of the device status. |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If the device is not found in the list of devices. |
print_model_library(mode_str='brief', model_id=None)
Print the model library for all providers that have one.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
mode_str
|
str
|
The mode of printing. Can be |
'brief'
|
model_id
|
str | None
|
If provided, filters the models by this model name. If None, prints all models. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
A string representation of the model library. |
pull_webhook_event(device_id=None, device_name=None, component_id=None, component_name=None)
Return the oldest queued webhook event matching the filters, and remove it.
With no filters, returns the oldest queued event. When one or more filters are supplied, returns the oldest event for which every supplied filter matches (unsupplied filters are ignored).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device_id
|
int | None
|
Only match events whose |
None
|
device_name
|
str | None
|
Only match events whose |
None
|
component_id
|
int | None
|
Only match events whose |
None
|
component_name
|
str | None
|
Only match events whose |
None
|
Returns:
| Type | Description |
|---|---|
dict | None
|
Event dict with keys |
dict | None
|
|
reinitialise_settings(device_settings=None)
Re-apply device settings and refresh status.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device_settings
|
dict | None
|
Updated |
None
|
request_device_location(device_name)
Enqueue a location-lookup job for a single device.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device_name
|
str
|
The name (or ID) of the device to locate. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Request ID string. |
request_refresh_status()
Enqueue a status-refresh job and return its request id.
Convenience wrapper around submit for the common case of triggering a full status refresh.
Returns:
| Type | Description |
|---|---|
str
|
Request ID string. |
run()
Main worker loop — pass this as the target of a threading.Thread.
Runs until stop is called. Picks requests off the internal queue
one at a time and calls _execute_request.
stop()
Signal the worker loop to exit on the next iteration.
submit(req)
Enqueue a DeviceSequenceRequest for execution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
req
|
DeviceSequenceRequest
|
The sequence request to enqueue. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The request |
str
|
wait_for_result(req_id, timeout=None)
Block until a specific request completes or until timeout seconds elapse.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
req_id
|
str
|
The request ID returned by submit. |
required |
timeout
|
float | None
|
Maximum seconds to wait. |
None
|
Returns:
| Type | Description |
|---|---|
bool
|
|