Code Monkey home page Code Monkey logo

linksys_velop's People

Contributors

nepozs avatar uvjim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

linksys_velop's Issues

Incorrect Speedtest Conversion

The results shown for the Speedtest function differ between this integration and the Linksys web UI.

This implementation...
Download: 370.48 Mbps
Upload: 35.99 Mbps

Linksys web UI...
Download: 379.4 Mbps
Upload: 36.9 Mbps

Raw...
Download: 379376
Upload: 36855

Card Border

image

I really like the cards, I just recently updated HA and noticed that there is now a border.. Probably has something to do with a card update but I don't know how to remove that border to revert it to how it used to look.

Allow restarting individual nodes

The title says it all really. There are reported occasions when a node can go wobbly and needs a restart. The functionality, albeit cumbersome to get to, is possible in the web UI.

Most of the feature didn't work for invalid credential

Screenshot 2023-01-07 at 22 57 22

Btw it also shows a notice that

The following integrations and platforms could not be set up:

device_tracker (Show logs)
Please check your config and logs.

here's the log

Logger: homeassistant.setup
Source: components/device_tracker/legacy.py:340
First occurred: 10:54:20 PM (1 occurrences)
Last logged: 10:54:20 PM

Error during setup of component device_tracker
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/setup.py", line 253, in _async_setup_component
result = await task
File "/usr/src/homeassistant/homeassistant/components/device_tracker/init.py", line 71, in async_setup
await async_setup_legacy_integration(hass, config)
File "/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py", line 195, in async_setup_integration
legacy_platforms = await async_extract_config(hass, config)
File "/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py", line 340, in async_extract_config
raise ValueError(
ValueError: Unable to determine type for linksys_velop: None

Division by zero

I have a lot of these error messages:

This error originated from a custom integration.

Logger: homeassistant
Source: custom_components/linksys_velop/sensor.py:112
Integration: Linksys Velop (documentation, issues)
First occurred: 3 May 2022, 22:03:22 (6587 occurrences)
Last logged: 13:24:23

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 137, in _handle_refresh_interval
    await self._async_refresh(log_failures=True, scheduled=True)
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 268, in _async_refresh
    update_callback()
  File "/config/custom_components/linksys_velop/__init__.py", line 417, in _handle_coordinator_update
    super()._handle_coordinator_update()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 328, in _handle_coordinator_update
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 532, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 570, in _async_write_ha_state
    state = self._stringify_state(available)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 538, in _stringify_state
    if (state := self.state) is None:
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 410, in state
    value = self.native_value
  File "/config/custom_components/linksys_velop/sensor.py", line 320, in native_value
    return self.entity_description.state_value(self._mesh)
  File "/config/custom_components/linksys_velop/sensor.py", line 112, in <lambda>
    state_value=lambda m: len(m.storage_available)
  File "/usr/local/lib/python3.9/site-packages/pyvelop/mesh.py", line 970, in storage_available
    "used_percent": round((partition.get("usedKB") / partition.get("availableKB")) * 100, 2),
ZeroDivisionError: division by zero

I guess somehow availableKB must end up being zero. No idea why.

Linksys Velop Integration Stop working after the 2022.4.2b2 update

Hi
after Upgrading to the Linksys Velop 2022.4.2b2 the integration stoped working for my two separate Velops, and receive the following error:


Logger: custom_components.linksys_velop
Source: custom_components/linksys_velop/__init__.py:199
Integration: Linksys Velop (documentation, issues)
First occurred: 02:39:25 (2 occurrences)
Last logged: 02:39:25

Unexpected error fetching linksys_velop (#############) data: 'NoneType' object has no attribute 'lower'
Unexpected error fetching linksys_velop (#############) data: 'NoneType' object has no attribute 'lower'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 190, in _async_refresh
    self.data = await self._async_update_data()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 150, in _async_update_data
    return await self.update_method()
  File "/config/custom_components/linksys_velop/__init__.py", line 193, in _async_get_mesh_data
    previous_nodes: Set[str] = {
  File "/config/custom_components/linksys_velop/__init__.py", line 199, in <setcomp>
    dr_device.name.lower() != "mesh",
AttributeError: 'NoneType' object has no attribute 'lower'

Any advice?

API command timeout is not stored correctly

When configuring the integration the setting for API command timeouts is stored but the key is incorrect. This only seems to happen on the initial configure, subsequent configuration changes are correct.

Pictures of nodes

Good evening,

sorry to shoot this in as a issue but I cannot get it right.

So I created the velop_node folder in www, but I cannot got the picture up and running. I have 4 whw03 nodes. Can somebody please help guide me in this.

I love the intergration, but as cherry on the cake I also would this so I can start building a new dash.

Investigate how IPv6 is exposed

Whilst fixing #239 it turns out that the properties weren't available for a device that only had IPv6 addresses. Have a look at if these are already available in the library end make available if need be.

Prevent duplicate integrations

Currently no unique_id is assigned to the configuration entry when being configured by a user. This could result in two configurations for the same Mesh being created.

TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'

HA is reporting the following error on version 2022.11.2:

Unexpected exception importing component custom_components.linksys_velop
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 599, in get_component
    cache[self.domain] = importlib.import_module(self.pkg_path)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/config/custom_components/linksys_velop/__init__.py", line 28, in <module>
    from pyvelop.const import _PACKAGE_AUTHOR as PYVELOP_AUTHOR
  File "/usr/local/lib/python3.9/site-packages/pyvelop/__init__.py", line 4, in <module>
    def signal_strength_to_text(rssi: int | None) -> str | None:
TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'

Device Tracker Entity - Connected Node Room vs Mesh (Primary Node Room)

@uvjim =Any way to associate the device tracker device to show the room of the Node - VS the Room of the Mesh? (Enhancement request)

See Image - I have selected to track the Garage Camera but its connected to the Garage Node in the Garage Room. But currently shows in the Mesh Room of the Front Room (Primary Node)

Reason - I have a camera that sometimes connects to the Primary Node VS the Stronger better signal in the Garage Node. When this happens I have a smart plug that I have to Turn Off and Back on for the Camera - so that it reconnects to the Better Node Aka Garage Node. Which I want to make an automation to run whenever it does that.

image

Parent node showing as 'unknown'

Hi uvjim,
Thanks again for your help on this. The diagnostic information is attached. Please let me know if you need any more details.

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2022.4.1",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.9.9",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/London",
    "os_name": "Linux",
    "os_version": "5.10.103-v8",
    "supervisor": "2022.03.5",
    "host_os": "Home Assistant OS 7.6",
    "docker_version": "20.10.9",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "yalebinarysensor": {
      "version": "2.2.0",
      "requirements": [
        "yalesmartalarmclient==0.3.4"
      ]
    },
    "hacs": {
      "version": "1.24.3",
      "requirements": [
        "aiogithubapi>=21.11.0"
      ]
    },
    "linksys_velop": {
      "version": "2022.3.3",
      "requirements": [
        "pyvelop==2022.4.6"
      ]
    },
    "frigate": {
      "version": "2.2.2",
      "requirements": []
    }
  },
  "integration_manifest": {
    "codeowners": [
      "@uvjim"
    ],
    "config_flow": true,
    "dependencies": [
      "ssdp"
    ],
    "domain": "linksys_velop",
    "documentation": "https://github.com/uvjim/linksys_velop",
    "iot_class": "local_polling",
    "issue_tracker": "https://github.com/uvjim/linksys_velop/issues",
    "name": "Linksys Velop",
    "requirements": [
      "pyvelop==2022.4.6"
    ],
    "ssdp": [
      {
        "st": "urn:schemas-upnp-org:device:InternetGatewayDevice:2",
        "manufacturer": "Linksys"
      }
    ],
    "version": "2022.3.3",
    "is_built_in": false
  },
  "data": {
    "config_entry": {
      "entry_id": "cc90324d9eeba83202cc395d259b079f",
      "version": 1,
      "domain": "linksys_velop",
      "title": "Linksys Velop Mesh",
      "data": {},
      "options": {
        "node": "192.168.0.45",
        "password": "**REDACTED**",
        "api_request_timeout": 10,
        "scan_interval": 60,
        "scan_interval_device_tracker": 10,
        "consider_home": 180,
        "tracked": []
      },
      "pref_disable_new_entities": false,
      "pref_disable_polling": false,
      "source": "user",
      "unique_id": "20J20M38B31432",
      "disabled_by": null
    },
    "mesh_details": {
      "raw_devices": {
        "revision": 19447,
        "devices": [
          {
            "deviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709",
            "lastChangeRevision": 19130,
            "model": {
              "deviceType": "Infrastructure",
              "manufacturer": "Linksys",
              "modelNumber": "WHW03B",
              "hardwareVersion": "2",
              "description": "Velop"
            },
            "unit": {
              "serialNumber": "20J2**REDACTED**",
              "firmwareVersion": "2.1.18.206964",
              "firmwareDate": "2021-06-24T00:38:15Z"
            },
            "isAuthority": true,
            "nodeType": "Master",
            "isHomeKitSupported": true,
            "friendlyName": "Linksys31432",
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "169.254.69.62"
              }
            ],
            "properties": [
              {
                "name": "userDeviceLocation",
                "value": "Guest Bedroom"
              },
              {
                "name": "userDeviceName",
                "value": "Guest Bedroom"
              }
            ],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "09e88d7e-f39b-4f43-8cfa-a2c297e8d1a1",
            "lastChangeRevision": 11506,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [
              {
                "name": "userDeviceOS",
                "value": "**REDACTED**"
              },
              {
                "name": "userDeviceManufacturer",
                "value": "**REDACTED**"
              },
              {
                "name": "userDeviceModelNumber",
                "value": "**REDACTED**"
              }
            ],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "d4b8419d-8e4d-cdff-f4ab-d8ec5e78d532",
            "lastChangeRevision": 19407,
            "model": {
              "deviceType": "Infrastructure",
              "manufacturer": "Linksys",
              "modelNumber": "WHW03B",
              "hardwareVersion": "2",
              "description": "Velop"
            },
            "unit": {
              "serialNumber": "20J2**REDACTED**",
              "firmwareVersion": "2.1.18.206964",
              "firmwareDate": "2021-06-24T00:38:15Z"
            },
            "isAuthority": false,
            "nodeType": "Slave",
            "isHomeKitSupported": true,
            "friendlyName": "LINKSYS32157",
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.60",
                "ipv6Address": "fe80:0000:0000:0000:daec:5eff:fe78:d532",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              },
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.20.136"
              }
            ],
            "properties": [
              {
                "name": "userDeviceLocation",
                "value": "Master Bedroom"
              },
              {
                "name": "userDeviceName",
                "value": "Master Bedroom"
              }
            ],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "84e83ee7-e5f3-4c0a-852e-f6ba34dc7906",
            "lastChangeRevision": 19431,
            "model": {
              "deviceType": "Computer",
              "manufacturer": "**REDACTED**",
              "modelNumber": "**REDACTED**"
            },
            "unit": {
              "operatingSystem": "**REDACTED**"
            },
            "isAuthority": false,
            "friendlyName": "**REDACTED**",
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.6",
                "ipv6Address": "fe80:0000:0000:0000:144c:1aa1:53c5:bc3b",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "9ac49734-f04c-442c-9c09-ae9432c02e26",
            "lastChangeRevision": 14810,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "6291e7f6-5ebf-4b47-8747-0320cbd0c696",
            "lastChangeRevision": 19239,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.1",
                "ipv6Address": "fe80:0000:0000:0000:8275:1fff:fefc:3959",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "355b2ad3-b0dc-4ee4-a2d3-23e5320ff19b",
            "lastChangeRevision": 17627,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "1af9ee73-b71d-43ee-9f89-7d7a8cc440dc",
            "lastChangeRevision": 18838,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipv6Address": "fe80:0000:0000:0000:ee71:dbff:fe2a:f8fc",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "b71907c1-ba84-4662-851d-7cea34226735",
            "lastChangeRevision": 18383,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.90",
                "ipv6Address": "fe80:0000:0000:0000:e85c:2f91:c7b0:b093",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "82d812d1-e3cd-4a49-857e-9de1d98c6880",
            "lastChangeRevision": 18388,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.25",
                "ipv6Address": "fe80:0000:0000:0000:0290:a9ff:fed5:feb0",
                "parentDeviceID": "d4b8419d-8e4d-cdff-f4ab-d8ec5e78d532"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "abcf9c5a-3c57-4c97-a84e-f2d7829c91e2",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "a4e87dab-1dab-440c-9a1b-3cd7770f8a99",
            "lastChangeRevision": 19442,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "96802c26-3aec-4bf4-a154-d64b7efcfcf4",
            "lastChangeRevision": 19206,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.13",
                "ipv6Address": "fe80:0000:0000:0000:f603:2aff:fea3:e5dc",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "25860eb8-1d39-4b7e-b4aa-5a10c8726d4c",
            "lastChangeRevision": 16030,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "0112e45b-ce65-469c-a3c0-00deaa4934c9",
            "lastChangeRevision": 16028,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "22ff2b39-7682-4d07-9f0c-0ecc2085557c",
            "lastChangeRevision": 19131,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipv6Address": "fe80:0000:0000:0000:0255:daff:fe5f:b77d",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "2d9bafff-ec69-4951-b63b-81d233d909b5",
            "lastChangeRevision": 16783,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.15",
                "ipv6Address": "fe80:0000:0000:0000:f2f0:a4ff:fef8:bc5d",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c",
            "lastChangeRevision": 19153,
            "model": {
              "deviceType": "Infrastructure",
              "manufacturer": "Linksys",
              "modelNumber": "WHW03B",
              "description": "Velop"
            },
            "unit": {
              "serialNumber": "20J2**REDACTED**",
              "firmwareVersion": "2.1.18.206964"
            },
            "isAuthority": false,
            "nodeType": "Slave",
            "isHomeKitSupported": true,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              },
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.62",
                "ipv6Address": "fe80:0000:0000:0000:daec:5eff:fe78:c68c",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              },
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.20.141",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              }
            ],
            "properties": [
              {
                "name": "userDeviceLocation",
                "value": "Gaming room"
              },
              {
                "name": "userDeviceName",
                "value": "Gaming room"
              }
            ],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "3ae2c1a6-6b96-4c5c-8ac5-1bac52c4ee9e",
            "lastChangeRevision": 14808,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.16",
                "ipv6Address": "fe80:0000:0000:0000:92a8:22ff:fe21:e1b9",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "e4aaa69a-34d4-49d2-b787-bfec9a9cdcbb",
            "lastChangeRevision": 19378,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "d2757b4e-6170-472a-ab4e-dab0f83c3f0d",
            "lastChangeRevision": 16781,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "e8ce6f27-9f66-4e5e-9c71-fbad8ef7ba66",
            "lastChangeRevision": 19443,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.20",
                "ipv6Address": "fe80:0000:0000:0000:1024:7181:b64b:fe6a",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "5aa85673-9546-409a-b350-9f61957b52a6",
            "lastChangeRevision": 19173,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.51",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "375b2ecf-dd40-4bb6-91e9-1dcc1e2024bf",
            "lastChangeRevision": 17313,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.14",
                "ipv6Address": "fe80:0000:0000:0000:4a78:5eff:feb3:a74a",
                "parentDeviceID": "d4b8419d-8e4d-cdff-f4ab-d8ec5e78d532"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "bdb16b7f-5d45-4f21-a6b3-ce2b9d695f2c",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "3cf33ab4-705c-4ee4-807c-7a962688aea6",
            "lastChangeRevision": 290,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "d1c8e3fa-4afd-4e49-a107-255a26b24c1b",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "c9f8f3c2-8cca-49a1-83f9-a9130ac148e5",
            "lastChangeRevision": 19387,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "b4350766-0842-4c17-9019-d4a2aca82435",
            "lastChangeRevision": 19447,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "bf8aac32-17f7-4af3-856c-f91ee7a1b6cd",
            "lastChangeRevision": 16,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "ef93cf53-5c48-4173-bc19-036b12cc4257",
            "lastChangeRevision": 18766,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "ca8b5a25-61fd-4e80-b223-9aac17535886",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "9dfc087c-2600-4840-925e-6ede43e4a700",
            "lastChangeRevision": 18495,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.32",
                "ipv6Address": "fe80:0000:0000:0000:185e:4015:39da:2889"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "ea9328be-4f93-4bb5-8501-70359a65616a",
            "lastChangeRevision": 19120,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "f5bb6c92-ec80-4360-b9c5-08f5e43de1af",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "a1262ccd-511c-4fb5-95b4-1f73a0e02606",
            "lastChangeRevision": 19151,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "2a4b9a25-8dfe-4058-83bd-13b925c2f308",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "8cb00670-7563-4da4-904c-fa8c626d1be8",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "be2650f2-93d3-486d-9fd9-1af3305316a1",
            "lastChangeRevision": 19304,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "d6217877-6634-45b0-bc44-d3cba0c77964",
            "lastChangeRevision": 17572,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "3c9d9aa2-70dd-4950-a447-19bfdff924f0",
            "lastChangeRevision": 359,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.221",
                "ipv6Address": "fe80:0000:0000:0000:021c:2bff:fe2e:fbe7",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "44474350-0e0b-426b-b3e9-b54342ba30d1",
            "lastChangeRevision": 18749,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "ce172874-bba7-4956-8d71-8e6cd3ee92a9",
            "lastChangeRevision": 19438,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.74",
                "parentDeviceID": "d4b8419d-8e4d-cdff-f4ab-d8ec5e78d532"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "103be3db-8a53-41d6-9329-1fdf467852a8",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "cce702bb-ae1d-4f43-8dca-da269fa06658",
            "lastChangeRevision": 14029,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "3d513100-eb35-48d0-972d-6f8fbd05cf2d",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "05777ea9-4cc3-4ecc-af85-f4c10dd10a52",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "58d2e823-0c59-4f40-a3e8-dcd2f0169b47",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "2505a143-ae43-4922-835f-02599cfddad9",
            "lastChangeRevision": 12593,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "dbf11ccf-7d9b-4e5e-a97d-12671962a868",
            "lastChangeRevision": 19166,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.63",
                "ipv6Address": "fe80:0000:0000:0000:1ce8:fa92:0980:1a41",
                "parentDeviceID": "92632e9f-8282-9324-e36a-d8ec5e78c68c"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "12189ce7-2310-46bf-94ed-9699dd8c167b",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "0bba272f-e310-48f8-9d9d-b2c520417fe3",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "6cac63de-ed4f-45a9-89c1-d800e69bc7c8",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "bb51d93c-e379-4087-9ab1-6a742555ce74",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "f63e244f-bcf7-4cc7-bc76-c217d9f0e094",
            "lastChangeRevision": 0,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "8a6cf167-aa51-437e-85fc-33da02f0e17a",
            "lastChangeRevision": 301,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "481e5c9e-477a-4731-bcf5-eabfa6bdda62",
            "lastChangeRevision": 317,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "c1f8c698-2960-4a02-8d31-38bf292cbe11",
            "lastChangeRevision": 19377,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [
              {**REDACTED**

              }
            ],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "e2e4cb07-aee4-4e9c-b270-4382cb00aa73",
            "lastChangeRevision": 18202,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "aab30d83-5d35-4d24-9cac-af2b4de408d8",
            "lastChangeRevision": 8791,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Unknown"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "e26029f6-0a03-4fc1-b6cb-8965fbcc8f5c",
            "lastChangeRevision": 18086,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wired"
              }
            ],
            "connections": [
              {
                "macAddress": "**REDACTED**",
                "ipAddress": "192.168.0.24",
                "ipv6Address": "fe80:0000:0000:0000:fab1:56ff:feb9:93a7",
                "parentDeviceID": "93387984-c318-e9e0-d53f-d8ec5e78c709"
              }
            ],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "13928899-0ec3-467f-9b13-2cdddd5923cd",
            "lastChangeRevision": 13824,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "5GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          },
          {
            "deviceID": "7128ce4e-d61e-45e2-824e-91bea61f3fc8",
            "lastChangeRevision": 19432,
            "model": {
              "deviceType": ""
            },
            "unit": {},
            "isAuthority": false,
            "knownInterfaces": [
              {
                "macAddress": "**REDACTED**",
                "interfaceType": "Wireless",
                "band": "2.4GHz"
              }
            ],
            "connections": [],
            "properties": [],
            "maxAllowedProperties": 16,
            "results_time": 1649415527
          }
        ]
      },
      "firmware_update_settings": {
        "updatePolicy": "AutomaticallyCheckAndInstall",
        "autoUpdateWindow": {
          "startMinute": 0,
          "durationMinutes": 240
        }
      },
      "backhaul": {
        "backhaulDevices": [
          {
            "deviceUUID": "d4b8419d-8e4d-cdff-f4ab-d8ec5e78d532",
            "ipAddress": "192.168.0.60",
            "parentIPAddress": "192.168.0.45",
            "connectionType": "Wired",
            "speedMbps": "1024",
            "timestamp": "2022-04-08T10:52:10Z"
          },
          {
            "deviceUUID": "92632e9f-8282-9324-e36a-d8ec5e78c68c",
            "ipAddress": "192.168.0.62",
            "parentIPAddress": "192.168.0.45",
            "connectionType": "Wired",
            "speedMbps": "1024",
            "timestamp": "2022-04-08T10:52:03Z"
          }
        ]
      },
      "guest_network": {
        "isGuestNetworkACaptivePortal": false,
        "isGuestNetworkEnabled": false,
        "radios": [
          {
            "radioID": "RADIO_2.4GHz",
            "isEnabled": false,
            "broadcastGuestSSID": false,
            "guestSSID": "**REDACTED**",
            "guestWPAPassphrase": "**REDACTED**",
            "canEnableRadio": true
          },
          {
            "radioID": "RADIO_5GHz",
            "isEnabled": false,
            "broadcastGuestSSID": false,
            "guestSSID": "**REDACTED**",
            "guestWPAPassphrase": "**REDACTED**",
            "canEnableRadio": true
          }
        ]
      },
      "parental_control": {
        "isParentalControlEnabled": false,
        "rules": [],
        "maxRuleDescriptionLength": 32,
        "maxRuleMACAddresses": 10,
        "maxRuleBlockedURLLength": 32,
        "maxRuleBlockedURLs": 10,
        "maxRules": 14
      },
      "speedtest_status": {},
      "speedtest_results": {
        "healthCheckResults": [
          {
            "resultID": 66535,
            "timestamp": "2022-04-08T09:23:53Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 66535,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29522,
              "downloadBandwidth": 150290
            }
          },
          {
            "resultID": 77485,
            "timestamp": "2022-04-08T09:06:35Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 77485,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29528,
              "downloadBandwidth": 150346
            }
          },
          {
            "resultID": 93077,
            "timestamp": "2022-04-04T08:50:44Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 93077,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29504,
              "downloadBandwidth": 150282
            }
          },
          {
            "resultID": 10398,
            "timestamp": "2022-04-01T10:15:09Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 10398,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29596,
              "downloadBandwidth": 150202
            }
          },
          {
            "resultID": 67438,
            "timestamp": "2022-03-30T14:18:54Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 67438,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 11,
              "uploadBandwidth": 29364,
              "downloadBandwidth": 133577
            }
          },
          {
            "resultID": 65623,
            "timestamp": "2022-03-30T14:18:13Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 65623,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 11,
              "uploadBandwidth": 29436,
              "downloadBandwidth": 110582
            }
          },
          {
            "resultID": 27070,
            "timestamp": "2022-03-23T10:06:36Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 27070,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29463,
              "downloadBandwidth": 145768
            }
          },
          {
            "resultID": 52692,
            "timestamp": "2022-03-23T10:04:40Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 52692,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29529,
              "downloadBandwidth": 128634
            }
          },
          {
            "resultID": 28324,
            "timestamp": "2022-03-22T18:27:29Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 28324,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29447,
              "downloadBandwidth": 108649
            }
          },
          {
            "resultID": 33980,
            "timestamp": "2022-03-20T08:47:09Z",
            "healthCheckModulesRequested": [
              "SpeedTest"
            ],
            "speedTestResult": {
              "resultID": 33980,
              "exitCode": "Success",
              "serverID": "42760",
              "latency": 10,
              "uploadBandwidth": 29497,
              "downloadBandwidth": 134450
            }
          }
        ]
      },
      "check_update_state": {
        "firmwareUpdateStatus": [
          {
            "deviceUUID": "93387984-c318-e9e0-d53f-d8ec5e78c709",
            "lastSuccessfulCheckTime": "2022-04-07T23:25:04Z"
          },
          {
            "deviceUUID": "92632e9f-8282-9324-e36a-d8ec5e78c68c",
            "lastSuccessfulCheckTime": "2022-04-07T23:25:11Z"
          },
          {
            "deviceUUID": "d4b8419d-8e4d-cdff-f4ab-d8ec5e78d532",
            "lastSuccessfulCheckTime": "2022-04-07T23:25:06Z"
          }
        ]
      },
      "wan_info": {
        "supportedWANTypes": [
          "DHCP",
          "Static",
          "PPPoE",
          "PPTP",
          "L2TP",
          "Bridge",
          "WirelessBridge",
          "WirelessRepeater"
        ],
        "supportedIPv6WANTypes": [
          "Automatic",
          "PPPoE",
          "Pass-through"
        ],
        "supportedWANCombinations": [
          {
            "wanType": "DHCP",
            "wanIPv6Type": "Automatic"
          },
          {
            "wanType": "Static",
            "wanIPv6Type": "Automatic"
          },
          {
            "wanType": "PPPoE",
            "wanIPv6Type": "Automatic"
          },
          {
            "wanType": "L2TP",
            "wanIPv6Type": "Automatic"
          },
          {
            "wanType": "PPTP",
            "wanIPv6Type": "Automatic"
          },
          {
            "wanType": "Bridge",
            "wanIPv6Type": "Automatic"
          },
          {
            "wanType": "DHCP",
            "wanIPv6Type": "Pass-through"
          },
          {
            "wanType": "PPPoE",
            "wanIPv6Type": "PPPoE"
          },
          {
            "wanType": "WirelessBridge",
            "wanIPv6Type": "Automatic"
          },
          {
            "wanType": "WirelessRepeater",
            "wanIPv6Type": "Automatic"
          }
        ],
        "supportedWirelessModeSecurities": [
          {
            "band": "2.4GHz",
            "supportedSecurityTypes": [
              "None",
              "WPA-Personal",
              "WPA2-Personal",
              "WPA-Mixed-Personal"
            ]
          },
          {
            "band": "5GHz",
            "supportedSecurityTypes": [
              "None",
              "WPA-Personal",
              "WPA2-Personal",
              "WPA-Mixed-Personal"
            ]
          },
          {
            "band": "5GHz",
            "supportedSecurityTypes": [
              "None",
              "WPA-Personal",
              "WPA2-Personal",
              "WPA-Mixed-Personal"
            ]
          }
        ],
        "isDetectingWANType": false,
        "detectedWANType": "Bridge",
        "wanStatus": "Connected",
        "wanConnection": {
          "wanType": "Bridge",
          "ipAddress": "**REDACTED**",
          "networkPrefixLength": 24,
          "gateway": "**REDACTED**",
          "mtu": 0,
          "dhcpLeaseMinutes": 1440,
          "dnsServer1": "192.168.0.1"
        },
        "wanIPv6Status": "Disconnected",
        "linkLocalIPv6Address": "fe80:0000:0000:0000:daec:5eff:fe78:c709",
        "macAddress": "**REDACTED**"
      }
    }
  }
}

Entity pictures not showing on Card 3

I added the cards in my dashboard. Really cool.

I have one issue: The pictures for my router and satellite in card 3 don't show.

In the code it seems to look into the local i.e. www folder in the subfolder velop_nodes on my HA instance for pictures

getEntityPicture: |
            () => {
              if (states[vars['ID_ENTITY_PICTURE']]) {
                return states[vars['ID_ENTITY_PICTURE']].state
              } else {
                if (states[vars['ID_MODEL']]) {
                    return '/local/velop_nodes/' + states[vars['ID_MODEL']].state + '.png'
                }
              }
            }

However on my HA there is no velop_nodes folder in my www folder. Is that supposed to be created during setup in HACS? Or do I manually need to upload it there? If the later where can I get the images?

On and one other thing, not a bug but a questions: in card 2 there is that huge globe icon that should show if my router is connected to the internet or not. I would like to make that a tad smaller. I found where to change the color in the code but I could not find the part where I can set the icon size. Can you point me to that?

Thanks.

Possible DHCP Reservation Issue

New DHCP attributes Potential Bug:

image

I am showing, I believe a correct count of 109. But all of the attribute details is a duplicate..

UI Changed after HA April Update

Hello Uvjim

after Home Assistant April update the Lovelace UI for linksys has changed
it was like this:

Screen Shot 2022-04-06 at 10 44 13 PM

and After the Update it became like this:

Screen Shot 2022-04-06 at 10 40 56 PM

Do you have any suggestions?
the rest of the UI's are working fine

Thanks

Error adding entities for domain sensor with platform linksys_velop

Maybe this issue is because my router is a Linksys AC2200 Smart Mesh Wi-Fi Router (model: MR8300v1, firmware: 1.1.8.203202) and it has a child Linksys Velop Mesh Router (model: WHW03Bv2, firmware: 2.1.18.206964) used to expand my Wi-Fi coverage.
It does the device tracker wonderfully, which is what I mostly wanted. Just thought I would share about these errors.
I get this error after each restart.

Logger: homeassistant.components.sensor
Source: custom_components/linksys_velop/entity_helpers.py:79
Integration: Sensor (documentation, issues)
First occurred: 8:15:11 PM (2 occurrences)
Last logged: 8:15:11 PM

Error adding entities for domain sensor with platform linksys_velop
Error while setting up linksys_velop platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 382, in async_add_entities
await asyncio.gather(*tasks)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 457, in _async_add_entity
device_info = entity.device_info
File "/config/custom_components/linksys_velop/entity_helpers.py", line 79, in device_info
"sw_version": node.firmware.get("version", ""),
File "/usr/local/lib/python3.9/site-packages/pyvelop/base.py", line 29, in getattribute
ret = object.getattribute(self, item)
File "/usr/local/lib/python3.9/site-packages/pyvelop/node.py", line 46, in firmware
available_updates = self.__attributes.get("updates", {}).get("availableUpdate", {})
AttributeError: 'list' object has no attribute 'get'

Blank icon in the view from the README

There seems to be a blank icon when a device is shown in the connected list for a node.

The icon should be the question mark as it is in the connected devices list for the mesh.

Fix up entitiy categories

HASS 2022.2.x releases introduce this warning.

Logger: homeassistant.helpers.frame
Source: helpers/frame.py:74
First occurred: 21:00:07 (47 occurrences)
Last logged: 21:00:07

Detected code that uses str (diagnostic) for entity category. This is deprecated and will stop working in Home Assistant 2022.4, it should be updated to use EntityCategory instead. Please report this issue.
Detected code that uses str (config) for entity category. This is deprecated and will stop working in Home Assistant 2022.4, it should be updated to use EntityCategory instead. Please report this issue.

Help: Template for detecting online device

Use Case: Create an automation that alerts me when the Drive Way Camera is detected on the Correct Node being the Garage Node. When it is Not I will then restart it via a smart Plug.

image

{{ is_state_attr('sensor.garage_velop_connected_devices',Name,Value) }}

Would the proper way to make this work be:

{{ is_state_attr('sensor.garage_velop_connected_devices','Garage-Drive-Way-Camera',True) }} # This didnt work for me.

Name: being the Garage Drive Way Camera

Edit (uvjim): I've split the possible issue into another issue so that the two can be handled separately

Two Separate Linksys Velop Mesh

Hello

Is it possible to have two separate linksys Velop's connected to HA?

I have two Linksys Velop networks, one for IoT and the other for regular internet use.
So I want to be able to connect both of them to Home Assistant if it is possible.

Thanks

Discovery finding mesh that is already set up

Hey there, thanks for your all your work!

I set up the integration and it's been working great. Recently I swapped out and upgraded my parent node - as I kept the same IP address and local password, the previously set up integration continued to work fine.

Screenshot_20220411-133334~2.png

However since then it has also appeared as if it's been newly discovered

Screenshot_20220411-133321~2.png

Of course this is a minor issue as the discovered entry can just be ignored. Thanks!

Device tracker incorrectly reports online

First of all, thank you for this integration. I genuinely appreciate all the work you have put into it.

Device tracker reports a disconnected device as online shortly after being marked offline. This happens with both devices designated as a device trackers.

Running manually installed linksys_velop
Here are snippets of relevant logging while testing with my iPhone (MAC address privacy turned off).

iPhone Connected to WiFi
{'deviceID': 'cceaa045-4540-43ba-aa2e-43908dee92dd', 'lastChangeRevision': 75805, 'model': {'deviceType': ''}, 'unit': {}, 'isAuthority': False, 'knownInterfaces': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'interfaceType': 'Wireless', 'band': '5GHz'}], 'connections': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'ipAddress': '192.168.1.240', 'parentDeviceID': '0ddb3568-f47b-f6cc-9c04-e89f805a2651'}], 'properties': [{'name': 'userDeviceOS', 'value': 'iOS 15.6.1'}, {'name': 'userDeviceManufacturer', 'value': 'Apple'}, {'name': 'userDeviceModelNumber', 'value': 'iPhone 11'}], 'maxAllowedProperties': 16}

iPhone WiFi turned off
{'deviceID': 'cceaa045-4540-43ba-aa2e-43908dee92dd', 'lastChangeRevision': 75814, 'model': {'deviceType': ''}, 'unit': {}, 'isAuthority': False, 'knownInterfaces': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'interfaceType': 'Wireless', 'band': '5GHz'}], 'connections': [], 'properties': [{'name': 'userDeviceOS', 'value': 'iOS 15.6.1'}, {'name': 'userDeviceManufacturer', 'value': 'Apple'}, {'name': 'userDeviceModelNumber', 'value': 'iPhone 11'}], 'maxAllowedProperties': 16}

2022-10-10 10:41:30.132 DEBUG (MainThread) [custom_components.linksys_velop.device_tracker] _async_get_device_info (32N10xxxxxxxxx) --> Network Device: setting consider home listener for 2022-10-10 10:44:30

Marked offline, iPhone WiFi still off
{'deviceID': 'cceaa045-4540-43ba-aa2e-43908dee92dd', 'lastChangeRevision': 75814, 'model': {'deviceType': ''}, 'unit': {}, 'isAuthority': False, 'knownInterfaces': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'interfaceType': 'Wireless', 'band': '5GHz'}], 'connections': [], 'properties': [{'name': 'userDeviceOS', 'value': 'iOS 15.6.1'}, {'name': 'userDeviceManufacturer', 'value': 'Apple'}, {'name': 'userDeviceModelNumber', 'value': 'iPhone 11'}], 'maxAllowedProperties': 16}

2022-10-10 10:44:30.376 DEBUG (MainThread) [custom_components.linksys_velop.device_tracker] _async_get_device_info (32N10xxxxxxxxx) --> Network Device is now being marked offline

Marked as back online, iPhone WiFi still off
{'deviceID': 'cceaa045-4540-43ba-aa2e-43908dee92dd', 'lastChangeRevision': 75820, 'model': {'deviceType': ''}, 'unit': {}, 'isAuthority': False, 'knownInterfaces': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'interfaceType': 'Unknown'}], 'connections': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'ipAddress': '192.168.1.240', 'parentDeviceID': '0ddb3568-f47b-f6cc-9c04-e89f805a2651'}], 'properties': [{'name': 'userDeviceOS', 'value': 'iOS 15.6.1'}, {'name': 'userDeviceManufacturer', 'value': 'Apple'}, {'name': 'userDeviceModelNumber', 'value': 'iPhone 11'}], 'maxAllowedProperties': 16}

2022-10-10 10:46:30.246 DEBUG (MainThread) [custom_components.linksys_velop.device_tracker] _async_get_device_info (32N10xxxxxxxxx) --> Network Device: back online

iPhone WiFi turned on and reconnected
{'deviceID': 'cceaa045-4540-43ba-aa2e-43908dee92dd', 'lastChangeRevision': 75835, 'model': {'deviceType': ''}, 'unit': {}, 'isAuthority': False, 'knownInterfaces': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'interfaceType': 'Wireless', 'band': '5GHz'}], 'connections': [{'macAddress': 'F4:DB:E3:xx:xx:xx', 'ipAddress': '192.168.1.240', 'parentDeviceID': '0ddb3568-f47b-f6cc-9c04-e89f805a2651'}], 'properties': [{'name': 'userDeviceOS', 'value': 'iOS 15.6.1'}, {'name': 'userDeviceManufacturer', 'value': 'Apple'}, {'name': 'userDeviceModelNumber', 'value': 'iPhone 11'}], 'maxAllowedProperties': 16}

The thing that stuck out to me in the logs is the interfaceType. When it incorrectly reports device is online, the interfaceType remains "Unknown". It isn't until iPhone WiFi is turned back on that the interface correctly reports as "Wireless".

I am attaching the diagnostic file with the device in the "marked as online but WiFi is off" state.
config_entry-linksys_velop-e40dea6f692343a6700925ee89a75987.json.txt

Fix the reason for sensor.velop_mesh_speedtest_latest throwing a warning

HASS 2021.12 beta shows the following warning

Logger: homeassistant.components.sensor
Source: components/sensor/__init__.py:376
Integration: Sensor (documentation, issues)
First occurred: 17:15:37 (1 occurrences)
Last logged: 17:15:37

sensor.velop_mesh_speedtest_latest is providing a string for its state, while the device class is 'timestamp', this is not valid and will be unsupported from Home Assistant 2022.2. Please report it to the custom component author.

linksys_velop.select error

Hello Uvjim,

I update to Home Assistant 2022.11.0b0 (beta version) and got the following error:

Logger: homeassistant.setup
Source: setup.py:320
First occurred: 17:09:16 (2 occurrences)
Last logged: 17:09:16

Unable to prepare setup for platform linksys_velop.select: Platform not found (Exception importing custom_components.linksys_velop.select).

This error originated from a custom integration.

Logger: homeassistant.loader
Source: custom_components/linksys_velop/select.py:66
Integration: Linksys Velop (documentation, issues)
First occurred: 17:09:16 (2 occurrences)
Last logged: 17:09:16

Unexpected exception importing platform custom_components.linksys_velop.select
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 728, in get_platform
    cache[full_name] = self._import_platform(platform_name)
  File "/usr/src/homeassistant/homeassistant/loader.py", line 745, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/config/custom_components/linksys_velop/select.py", line 66, in <module>
    class LinksysVelopSelectDescription(
  File "/usr/local/lib/python3.10/dataclasses.py", line 1185, in dataclass
    return wrap(cls)
  File "/usr/local/lib/python3.10/dataclasses.py", line 1176, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
  File "/usr/local/lib/python3.10/dataclasses.py", line 1025, in _process_class
    _init_fn(all_init_fields,
  File "/usr/local/lib/python3.10/dataclasses.py", line 546, in _init_fn
    raise TypeError(f'non-default argument {f.name!r} '
TypeError: non-default argument 'key' follows default argument

Enhancement - Device Details Card

Hello,

I will start by saying I know that this request is a stretch! You mentioned multiple times you are focusing your time on a different dashboard for the Velops which I respect. However I use your existing examples in the readme as that's all I have to go by and with your recent update to the services I know we can have the ability to rename devices. Could you add that function to the Device Detail Card? Also if its not to much to ask, the ability to then reserve the DHCP IP for it?

This is my use case: Your cards fit perfectly for my Portrait monitor so I enjoy the layout you originally took.

image

Device tracker automation

Would it be too much to ask for a simple example of a notification automation for new connected device? Failing that, with the trigger section it would be worth it. XD

Exception in _async_get_device_info when dispatching 'update_device_tracker'

After running "channel scan" I noticed the following error in the logs and for ~5 minutes the integration didn't have connectivity to my Linksys Velop nodes (the cards showed n/a). Seemed to self-recover, so not a critical issue IMHO.

Source: util/logging.py:156 
First occurred: 8:59:55 AM (28 occurrences) 
Last logged: 9:04:15 AM

Exception in _async_get_device_info when dispatching 'update_device_tracker': () Traceback (most recent call last): File "/config/custom_components/linksys_velop/device_tracker.py", line 192, in _async_get_device_info tracker_details: Device = await mesh.async_get_device_from_id( File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 730, in async_get_device_from_id resp = await self._async_gather_details( File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 415, in _async_gather_details responses: List[Tuple[api.Request, api.Response]] = await asyncio.gather( File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 260, in _async_make_request raise err from None File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 258, in _async_make_request req_resp = await req.execute(timeout=self._timeout) File "/usr/local/lib/python3.10/site-packages/pyvelop/jnap.py", line 176, in execute raise MeshTimeoutError from err pyvelop.exceptions.MeshTimeoutError: Timeout Error
Exception in _async_get_device_info when dispatching 'update_device_tracker': () Traceback (most recent call last): File "/config/custom_components/linksys_velop/device_tracker.py", line 192, in _async_get_device_info tracker_details: Device = await mesh.async_get_device_from_id( File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 730, in async_get_device_from_id resp = await self._async_gather_details( File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 415, in _async_gather_details responses: List[Tuple[api.Request, api.Response]] = await asyncio.gather( File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 260, in _async_make_request raise err from None File "/usr/local/lib/python3.10/site-packages/pyvelop/mesh.py", line 258, in _async_make_request req_resp = await req.execute(timeout=self._timeout) File "/usr/local/lib/python3.10/site-packages/pyvelop/jnap.py", line 182, in execute raise MeshConnectionError from None pyvelop.exceptions.MeshConnectionError: Connection Error

Offline devices cleanup

Hello Uvjim,

Is there a way to delete all offline device.
I tried creating a script but with no luck.

alias: Linksys Delete Offline Devices
sequence:
  - service: linksys_velop.delete_device
    data:
      mesh: 57575757657657657657657575
      device_name: >-
        {% set Devices = state_attr ('sensor.velop_mesh_offline_devices',
        'devices') %}  {% for Devices in Devices %}  {{ Devices }}  {% endfor %}
mode: single

any advice?

Scheduler card time selector stays black

I'm using the Google Dark theme for HA in conjunction with the scheduler card. However, the time selector is always black so I tried to change it with the following code:

card_mod:
  style: |
    .mdc-text-field .mdc-text-field__input {
      color: white !important;
    }

However, no change is applied whatsoever. The cardmod plugin is working fine on normal ha-cards so I guess it's fully functional. Any suggestions?
Bildschirmfoto 2022-11-22 um 11 06 43

Mesh Card / Node Card - Reboot Options

Looking for an enhancement or fix to the Reboot function of the cards

image

I receive this error when pressing the reboot button on the Garage Node
image

Picture of the Nodes and Mesh
image

I think the error comes in play BC the mesh isn't defined in card. But reviewing the code I didn't see where mesh: data was located.

Calling this service Does work to reset the Nodes.
image

Request:

Can you move or add the "actions" from the Node cards to the Mesh Card and Add reboot Primary Node, Secondary (Garage) and Secondary node options with the data mesh included. Maybe add a notification that states if you reset the Primary Both get rebooted...

And/Or

Help me fix or determine Why actions reboot doesn't work in the Node Cards. I see the reboot under the second node but its not showing for the primary node. I don't get why it doesn't show up under the Primary node, with the option to reboot there.

Thanks for all you do, love these cards. Great for helping me troubleshot the network and find IP addresses for devices when needed. Maybe one day, you could add a service to add devices, or rename them!

Add UPnP Support

It would be nice if the integration could automatically detect the primary node on the network. This should be achievable using UPnP.

Device only detected when connected to 5g and not on 2.4g

Hi,

Thanks for this very useful addon, I have been using it for some days now and working well. I have three nodes in my house and my 5g is separated from 4g for stability .

Unfortunately, when I go out and back home, if my phone automatically connect to 4g I will not be detected as home until i manually connect to 5g.

I know this might be a missing setting or something. I was using ping before and never had this issue .

Backhaul state unknown

I have 4 Linksys Velop nodes. The primary is connected to each of the 3 secondary nodes via ethernet. I am able to verify this by viewing the sysinfo.cgi page on the primary node:

bh_report
  Node (MAC)  NODE IP          PARENT IP        Intf.  Chan.   RSSI(AP/STA)      Speed  State Timestamp   
------------  ---------------  ---------------  -----  -----   ------------  ---------  ----- ------------
C4411E9433CF  192.168.1.3      192.168.1.2       ethX  wired              0   1024.000     up 1671754336  
C4411E9433E3  192.168.1.5      192.168.1.2       ethX  wired              0   1024.000     up 1671754322  
C4411E9EAE4E  192.168.1.4      192.168.1.2       ethX  wired              0   1024.000     up 1671754329  

The Backhaul entity for each of the secondary nodes is showing Unknown - is that expected? The attributes for that entity does have some Backhaul info:

Connection        Wired
Last checked      December 22, 2022, 6:22:02 PM
Speed mbps        1,024
Signal strength   —

Here is the diagnostic information (which does seem to indicate some backhaul info) (custom_components and _Node__connected_devices data removed):

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2022.12.8",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.7",
    "docker": true,
    "arch": "aarch64",
    "timezone": "America/Chicago",
    "os_name": "Linux",
    "os_version": "5.15.76-v8",
    "supervisor": "2022.11.2",
    "host_os": "Home Assistant OS 9.4",
    "docker_version": "20.10.19",
    "chassis": "embedded",
    "run_as_root": true
  },
  "integration_manifest": {
    "codeowners": [
      "@uvjim"
    ],
    "config_flow": true,
    "dependencies": [
      "ssdp"
    ],
    "domain": "linksys_velop",
    "documentation": "https://github.com/uvjim/linksys_velop",
    "iot_class": "local_polling",
    "issue_tracker": "https://github.com/uvjim/linksys_velop/issues",
    "loggers": [
      "pyvelop"
    ],
    "name": "Linksys Velop",
    "requirements": [
      "pyvelop==2022.12.2"
    ],
    "ssdp": [
      {
        "st": "urn:schemas-upnp-org:device:InternetGatewayDevice:2",
        "manufacturer": "Linksys"
      }
    ],
    "version": "2022.12.1",
    "is_built_in": false
  },
  "data": {
    "device_entry": {
      "area_id": "living_room",
      "config_entries": [
        "3d286c7a324f498b8244ce455e209ced"
      ],
      "configuration_url": "http://192.168.1.5/ca",
      "connections": [],
      "disabled": false,
      "disabled_by": null,
      "entry_type": null,
      "hw_version": "1",
      "id": "7e2437ea15cdc4fe653bcdb84cec5053",
      "identifiers": "**REDACTED**",
      "is_new": false,
      "manufacturer": "Linksys",
      "model": "MX5300",
      "name": "Living Room",
      "name_by_user": "Living Room Linksys Velop",
      "suggested_area": null,
      "sw_version": "1.1.12.210066",
      "via_device_id": null
    },
    "node": {
      "_attribs": {
        "deviceID": "116928a1-715d-daec-6ccf-c4411e9433e3",
        "lastChangeRevision": 1325,
        "model": {
          "deviceType": "Infrastructure",
          "manufacturer": "Linksys",
          "modelNumber": "MX5300",
          "hardwareVersion": "1",
          "description": "Velop"
        },
        "unit": {
          "serialNumber": "**REDACTED**",
          "firmwareVersion": "1.1.12.210066",
          "firmwareDate": "2020-03-05T04:54:12Z"
        },
        "isAuthority": false,
        "nodeType": "Slave",
        "friendlyName": "LINKSYS00883",
        "knownInterfaces": [
          {
            "macAddress": "**REDACTED**",
            "interfaceType": "Unknown"
          },
          {
            "macAddress": "**REDACTED**",
            "interfaceType": "Unknown"
          },
          {
            "macAddress": "**REDACTED**",
            "interfaceType": "Unknown"
          },
          {
            "macAddress": "**REDACTED**",
            "interfaceType": "Wired"
          }
        ],
        "connections": [
          {
            "macAddress": "**REDACTED**",
            "ipAddress": "192.168.1.5"
          }
        ],
        "properties": [
          {
            "name": "userDeviceLocation",
            "value": "Living Room"
          },
          {
            "name": "userDeviceName",
            "value": "Living Room"
          }
        ],
        "maxAllowedProperties": 16,
        "results_time": 1671755085,
        "backhaul": {
          "deviceUUID": "116928a1-715d-daec-6ccf-c4411e9433e3",
          "ipAddress": "192.168.1.5",
          "parentIPAddress": "192.168.1.2",
          "connectionType": "Wired",
          "speedMbps": "1024",
          "timestamp": "2022-12-23T00:22:02Z"
        },
        "updates": {
          "deviceUUID": "116928a1-715d-daec-6ccf-c4411e9433e3",
          "lastSuccessfulCheckTime": "2022-12-23T00:17:56Z"
        }
      },
      "_MeshDevice__device_id": "116928a1-715d-daec-6ccf-c4411e9433e3",
      "_Node__parent_name": "Far Garage"
    }
  }
}

If it's relevant, the nodes are running in Bridge mode as there is another device upstream that handles DHCP.

Card 3 custom fields display

Thank you for the great integration and the sample code for Lovelace! Great work!

I am having a display issue with card 3 and the display of the model, serial, and IP address information. See below:

Screen Shot 2022-10-12 at 11 46 57 AM

I've tried to mess around with the margins in the sample code but was unsuccessful in fixing this.

Thanks!

Feature request: Service call to request “Channel Finder”

I’ve noticed over time my Velop starts running into Wi-Fi issues and using Channel Finder (from Wi-Fi advanced settings) solves the problems.

If this service was accessible I could automate to run this automatically every week and hopefully eliminate the problems proactively.

Error while setting up linksys_velop platform for binary_sensor

Maybe this issue is because my router is a Linksys AC2200 Smart Mesh Wi-Fi Router (model: MR8300v1, firmware: 1.1.8.203202) and it has a child Linksys Velop Mesh Router (model: WHW03Bv2, firmware: 2.1.18.206964) used to expand my Wi-Fi coverage.
It does the device tracker wonderfully, which is what I mostly wanted. Just thought I would share about these errors.
I get this error after each restart.

Logger: homeassistant.components.binary_sensor
Source: custom_components/linksys_velop/entity_helpers.py:79
Integration: Binary sensor (documentation, issues)
First occurred: 8:15:11 PM (2 occurrences)
Last logged: 8:15:11 PM

Error adding entities for domain binary_sensor with platform linksys_velop
Error while setting up linksys_velop platform for binary_sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 382, in async_add_entities
await asyncio.gather(*tasks)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 457, in _async_add_entity
device_info = entity.device_info
File "/config/custom_components/linksys_velop/entity_helpers.py", line 79, in device_info
"sw_version": node.firmware.get("version", ""),
File "/usr/local/lib/python3.9/site-packages/pyvelop/base.py", line 29, in getattribute
ret = object.getattribute(self, item)
File "/usr/local/lib/python3.9/site-packages/pyvelop/node.py", line 46, in firmware
available_updates = self.__attributes.get("updates", {}).get("availableUpdate", {})
AttributeError: 'list' object has no attribute 'get'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.