jvconnected.config

jvconnected.config.get_config_dir(app_name: str) pathlib.Path[source]

Get the platform’s preferred configuration directory

  • For Windows, the %LOCALAPPDATA% environment variable is used. Typically c:\Users\<username>\AppData\Local

  • For MacOS, ~/Library/Preferences

  • All others will be ~/.config

class jvconnected.config.Config(*args, **kwargs)[source]

Bases: Dispatcher

Configuration storage

This object provides a dict-like interface and stores the configuration data automatically when it changes. The stored config data is read on initialization.

Parameters

filename (pathlib.Path, optional) – The configuration filename. If not provided, the DEFAULT_FILENAME is used

DEFAULT_FILENAME: Path = PosixPath('/home/docs/.config/jvconnected/config.json')

Platform-dependent default filename (<config_dir>/jvconnected/config.json). Where <config_dir> is chosen in get_config_dir()

Event on_device_added(device: DeviceConfig)[source]

Triggered when a device is added to the config

on_device_added is a pydispatch.Event object.

indexed_devices: IndexedDict

An instance of jvconnected.utils.IndexedDict to handle device indexing

property devices: Dict[str, DeviceConfig]

Mapping of DeviceConfig using their id as keys

update(other: Dict)[source]

Update from another dict

add_device(device: DeviceConfig) DeviceConfig[source]

Add a DeviceConfig instance

If a device config already exists, it will be updated with the info provided using DeviceConfig.update_from_other()

If its device_index is set, it will be added to indexed_devices.

add_discovered_device(info: zeroconf.ServiceInfo) DeviceConfig[source]

Add a DeviceConfig from zeroconf data

class jvconnected.config.DeviceConfig(*args, **kwargs)[source]

Bases: Dispatcher

Configuration data for a device

Property name: str = ''

The device name, taken from zeroconf.ServiceInfo.get_name()

name is a pydispatch.Property object.

Property dns_name: str = ''

The fully qualified name for the service host, taken from ServiceInfo.server

dns_name is a pydispatch.Property object.

Property fqdn: str = ''

The fully qualified service name, taken from ServiceInfo.name

fqdn is a pydispatch.Property object.

Property hostaddr: str = ''

The IPv4 address (in string form)

hostaddr is a pydispatch.Property object.

Property hostport: int = 80

The service port

hostport is a pydispatch.Property object.

Property auth_user: str | None = None

Username to use with authentication

auth_user is a pydispatch.Property object.

Property auth_pass: str | None = None

Password to use with authentication

auth_pass is a pydispatch.Property object.

Property device_index: int | None = None

Index for the device for organization purposes.

If None (default), no index is assigned. Otherwise, the index will be assigned according to jvconnected.utils.IndexedDict.add()

device_index is a pydispatch.Property object.

Property always_connect: bool = False

If True, the Engine will attempt to connect to this device without it being discovered on the network

always_connect is a pydispatch.Property object.

Property stored_in_config: bool = False

True if the device is stored in Config

stored_in_config is a pydispatch.Property object.

Property online: bool = False

True if the device is currently active on the network

online is a pydispatch.Property object.

Property active: bool = False

True if a jvconnected.device.Device is currently communicating with the device

active is a pydispatch.Property object.

Property connection_state: ConnectionState = ConnectionState.UNKNOWN

The device’s ConnectionState

connection_state is a pydispatch.Property object.

Event on_change(prop_name: str, value: Any)[source]

Fired when any property value changes

Parameters
  • instance (DeviceConfig) – The instance whose property changed

  • prop_name (str) – The Property name

  • value (Any) – New value for the Property

on_change is a pydispatch.Event object.

Property display_name: str = ''

A user-defined name for the device, defaults to name

display_name is a pydispatch.Property object.

property model_name: str

The model name of the device, taken from ServiceInfo.properties

property serial_number: str

The serial number of the device, taken from the service name hc500-XXXXXXXX where XXXXXXXX is the serial number

property id: str

A unique id for the device using the model_name and serial_number attributes

classmethod get_id_for_service_info(info: zeroconf.ServiceInfo) str[source]

Get the id attribute for the given zeroconf.ServiceInfo

classmethod get_props_from_service_info(info: zeroconf.ServiceInfo) Dict[source]

Build a dictionary of instance attributes from a zeroconf.ServiceInfo

classmethod from_service_info(info: zeroconf.ServiceInfo) DeviceConfig[source]

Construct an instance from a zeroconf.ServiceInfo

build_service_info() ServiceInfo[source]

Create a zeroconf.ServiceInfo from the values in this instance

update_from_service_info(info: zeroconf.ServiceInfo)[source]

Update instance attributes from a zeroconf.ServiceInfo

update_from_other(other: DeviceConfig)[source]

Update from another instance of DeviceConfig