Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 def get_device_by_name(self, device_name):
     return find(self.devices, device_name,
                 lambda d: d.name)
Exemplo n.º 4
0
    def is_home(self):
        if find(self.devices,
                predicate=lambda d: d.is_online()):
            return True

        return False
Exemplo n.º 5
0
 def find_service(self, service_name):
     return find(self.services, service_name,
                 lambda s: s['name'])