def check_devices_connection_status(self, devices): connected_wireless_macs = self._get_connected_wireless_macs() connected_clients_list = self._controller.get_connected_clients_list() device_status_pairs = [] for device in devices: if device.is_wireless: if device.mac in connected_wireless_macs: device_status_pairs.append({"device": device, "status": ONLINE}) else: device_status_pairs.append({"device": device, "status": OFFLINE}) else: client = find( connected_clients_list, device.mac, lambda c: sanitize_mac_address(c._mac_address), optional({"_ip_address": None}), ) if ping_address(client._ip_address): device_status_pairs.append({"device": device, "status": ONLINE}) else: device_status_pairs.append({"device": device, "status": OFFLINE}) return device_status_pairs
def get_persons_from_config(): persons = [] with open(main_config()['persons'], 'r') as f: persons_config = json.load(f) all_devices = get_devices_from_config() for person_info in persons_config: persons_devices = find( all_devices, person_info['devices'], lambda d: d.name) persons.append( Person(person_info['name'], persons_devices)) return persons
def get_device_by_name(self, device_name): return find(self.devices, device_name, lambda d: d.name)
def is_home(self): if find(self.devices, predicate=lambda d: d.is_online()): return True return False
def find_service(self, service_name): return find(self.services, service_name, lambda s: s['name'])