Skip to content

Device

pyfamilysafety.device.Device

Device()

A device registered to a family member.

Attributes:

Name Type Description
device_id

Unique identifier (g: prefix stripped).

device_name

Friendly display name.

device_class

Device class from the API.

device_make

Hardware manufacturer.

device_model

Hardware model name.

form_factor

Form factor string (phone, console, etc.).

os_name

Operating system name.

today_time_used

Screen time today in milliseconds, if reported.

issues

Raw issue list from the API.

states

Raw state list from the API.

last_seen

Last-seen timestamp from the API.

blocked

Whether the device is blocked via a platform override.

Init a device.

Source code in pyfamilysafety/device.py
21
22
23
24
25
26
27
28
29
30
31
32
33
34
def __init__(self) -> None:
    """Init a device."""
    self.device_id = None
    self.device_name = None
    self.device_class = None
    self.device_make = None
    self.device_model = None
    self.form_factor = None
    self.os_name = None
    self.today_time_used = None
    self.issues = None
    self.states = None
    self.last_seen = None
    self.blocked = None

device_id instance-attribute

device_id = None

device_name instance-attribute

device_name = None

device_class instance-attribute

device_class = None

device_make instance-attribute

device_make = None

device_model instance-attribute

device_model = None

form_factor instance-attribute

form_factor = None

os_name instance-attribute

os_name = None

today_time_used instance-attribute

today_time_used = None

issues instance-attribute

issues = None

states instance-attribute

states = None

last_seen instance-attribute

last_seen = None

blocked instance-attribute

blocked = None

read_screentime_report

read_screentime_report(screentime_report)

Processes a screentime report.

Source code in pyfamilysafety/device.py
36
37
38
39
40
41
def read_screentime_report(self, screentime_report: dict):
    """Processes a screentime report."""
    usage = screentime_report.get("deviceUsageAggregates")
    device_usage = [x for x in usage.get("deviceAggregates") if x["deviceId"] == self.device_id]
    if len(device_usage) > 0:
        self.today_time_used = device_usage[0].get("timeUsed")

update_blocked_status

update_blocked_status(state)

Updates the blocked status.

Source code in pyfamilysafety/device.py
43
44
45
def update_blocked_status(self, state: bool):
    """Updates the blocked status."""
    self.blocked = state

from_dict classmethod

from_dict(raw_response, screentime_report)

Parse a raw response from 'get_user_devices' into a list.

Source code in pyfamilysafety/device.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@classmethod
def from_dict(cls, raw_response: dict, screentime_report: dict) -> list['Device']:
    """Parse a raw response from 'get_user_devices' into a list."""
    devices = []
    if "devices" in raw_response.keys():
        for device in raw_response.get("devices"):
            self = cls()
            self.device_id = device.get("deviceId").replace("g:", "")
            self.device_name = device.get("deviceName")
            self.device_class = device.get("deviceClass")
            self.device_make = device.get("deviceMake")
            self.device_model = device.get("deviceModel")
            self.form_factor = device.get("deviceFormFactor")
            self.os_name = device.get("osName")
            self.issues = device.get("issues")
            self.states = device.get("states")
            self.last_seen = device.get("lastSeenOn")
            self.read_screentime_report(screentime_report)
            devices.append(self)
    return devices