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. Typicallyc:\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, theDEFAULT_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 inget_config_dir()
- Event on_device_added(device: DeviceConfig)[source]
Triggered when a device is added to the config
on_device_added
is apydispatch.Event
object.
- indexed_devices: IndexedDict
An instance of
jvconnected.utils.IndexedDict
to handle device indexing
- property devices: Dict[str, DeviceConfig]
Mapping of
DeviceConfig
using theirid
as keys
- add_device(device: DeviceConfig) DeviceConfig [source]
Add a
DeviceConfig
instanceIf 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 toindexed_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 apydispatch.Property
object.
- Property dns_name: str = ''
The fully qualified name for the service host, taken from
ServiceInfo.server
dns_name
is apydispatch.Property
object.
- Property fqdn: str = ''
The fully qualified service name, taken from
ServiceInfo.name
fqdn
is apydispatch.Property
object.
- Property hostaddr: str = ''
The IPv4 address (in string form)
hostaddr
is apydispatch.Property
object.
- Property hostport: int = 80
The service port
hostport
is apydispatch.Property
object.
- Property auth_user: str | None = None
Username to use with authentication
auth_user
is apydispatch.Property
object.
- Property auth_pass: str | None = None
Password to use with authentication
auth_pass
is apydispatch.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 tojvconnected.utils.IndexedDict.add()
device_index
is apydispatch.Property
object.
- Property always_connect: bool = False
If
True
, theEngine
will attempt to connect to this device without it being discovered on the networkalways_connect
is apydispatch.Property
object.
- Property stored_in_config: bool = False
True
if the device is stored inConfig
stored_in_config
is apydispatch.Property
object.
- Property online: bool = False
True
if the device is currently active on the networkonline
is apydispatch.Property
object.
- Property active: bool = False
True
if ajvconnected.device.Device
is currently communicating with the deviceactive
is apydispatch.Property
object.
- Property connection_state: ConnectionState = ConnectionState.UNKNOWN
The device’s
ConnectionState
connection_state
is apydispatch.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 apydispatch.Event
object.
- Property display_name: str = ''
A user-defined name for the device, defaults to
name
display_name
is apydispatch.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
whereXXXXXXXX
is the serial number
- property id: str
A unique id for the device using the
model_name
andserial_number
attributes
- classmethod get_id_for_service_info(info: zeroconf.ServiceInfo) str [source]
Get the
id
attribute for the givenzeroconf.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