Wemo Maker devices suddenly behaving randomly. Sensors on/off with no trigger. v6 upgrade issue?

Its hard to know where to start on this.

I have 2 Wemo Maker devices. These are old-skool Wemo devices that have a feedback sensor built in. So you can trigger a switch and have a sensor provide feedback on a binary state. This currently runs my garage door, the sensor state tells me if its open/closed. Its been working perfectly for months. No issues.

In the last 48 hours the sensors have started triggering randomly on and off. On both units. its telling the doors are open/closed all the time when nothing has happened. It triggers all my automations and send things a bit crazy! The ‘switch’ aspect of these devices continue to work normally. I can open/close and all works as expected.

msedge_wJaXGcNoyr

Im at a loss as to why this has started as I have made no changes to any of this infrastructure of configurations. I have rebooted everything. Reconnected everything. I haven’t yet found any useful logs that I can use to deeply troubleshoot why this is happening. However, because both devices started doing this at the same time it logically rules out a physical issue.

Only one thing has changed in my setup. Upgrade from v5.x to v6.x. I cant be sure of the timing of upgrade-to-issue is the same. But its very close timing.

Sorry to be a bit vague. Im not sure what else to provide that is useful. Im tech savvy, but only been using HA for about 3 months.

Suggestion would be welcome on how to troubleshoot.
TIA.

Latest HA: core-2022.6.1 (upgraded from 6.0 to try and assist with this problem)
Raspberry Pi 4

Figured out how to get some relevant logs. its pretty repetitive. Some example below.

  • it complains about not being able to find a specific device (outdoor lights). This device is another Wemo device that is not directly related to this problem.
  • There are a couple of exceptions in the log around it not being able to find this unrelated device and an exception is thrown. Maybe the integration crashes and restarts?

But nothing that seems to cover my issue directly.

2022-06-04 13:43:01 WARNING (SyncWorker_4) [pywemo.ouimeaux_device.api.service] Error communicating with Outdoor lights at 192.168.98.71:49154, HTTPException(MaxRetryError("HTTPConnectionPool(host='192.168.98.71', port=49154): Max retries exceeded with url: /upnp/control/basicevent1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8bf820>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)'))")) retry 0

2022-06-04 13:43:11 DEBUG (SyncWorker_4) [pywemo.ouimeaux_device] Timed out connecting to 192.168.98.71 on port 49154, wemo is offline

2022-06-04 13:43:11 ERROR (SyncWorker_4) [pywemo.ouimeaux_device] Unable to re-probe wemo <WeMo Switch "Outdoor lights"> at 192.168.98.71

2022-06-04 13:43:11 INFO (SyncWorker_4) [pywemo.ouimeaux_device] Trying to reconnect with Outdoor lights

2022-06-04 13:43:15 WARNING (SyncWorker_2) [urllib3.connectionpool] Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8974f0>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /eventservice.xml

2022-06-04 13:43:16 ERROR (SyncWorker_4) [pywemo.ouimeaux_device] Unable to reconnect with Outdoor lights

2022-06-04 13:43:17 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Bedroom">

2022-06-04 13:43:17 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Gate">

2022-06-04 13:43:17 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Pool heating">

2022-06-04 13:43:17 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Garage">

2022-06-04 13:43:19 WARNING (SyncWorker_4) [urllib3.connectionpool] Retrying (Retry(total=5, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9aa77250>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:43:25 WARNING (SyncWorker_4) [urllib3.connectionpool] Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8fb130>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:43:34 WARNING (SyncWorker_4) [urllib3.connectionpool] Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9aa43280>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:43:42 WARNING (SyncWorker_2) [urllib3.connectionpool] Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8d6df0>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /eventservice.xml

2022-06-04 13:43:49 WARNING (SyncWorker_4) [urllib3.connectionpool] Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a89c9d0>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:44:16 WARNING (SyncWorker_4) [urllib3.connectionpool] Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8acac0>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:44:33 WARNING (SyncWorker_2) [urllib3.connectionpool] Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8ac790>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /eventservice.xml

2022-06-04 13:45:07 WARNING (SyncWorker_4) [urllib3.connectionpool] Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a897280>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:45:10 WARNING (SyncWorker_4) [pywemo.ouimeaux_device.api.service] Error communicating with Outdoor lights at 192.168.98.71:49154, HTTPException(MaxRetryError("HTTPConnectionPool(host='192.168.98.71', port=49154): Max retries exceeded with url: /upnp/control/basicevent1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8ac880>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)'))")) retry 1

2022-06-04 13:45:40 DEBUG (SyncWorker_4) [pywemo.ouimeaux_device] No response from 192.168.98.71 on port 49153, continuing

2022-06-04 13:45:48 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Outdoor lights">

2022-06-04 13:45:50 DEBUG (SyncWorker_4) [pywemo.ouimeaux_device] Timed out connecting to 192.168.98.71 on port 49152, wemo is offline

2022-06-04 13:45:50 ERROR (SyncWorker_4) [pywemo.ouimeaux_device] Unable to re-probe wemo <WeMo Switch "Outdoor lights"> at 192.168.98.71

2022-06-04 13:45:50 INFO (SyncWorker_4) [pywemo.ouimeaux_device] Trying to reconnect with Outdoor lights

2022-06-04 13:45:53 INFO (SyncWorker_4) [pywemo.ouimeaux_device] Found Outdoor lights again, updating location

2022-06-04 13:45:58 WARNING (Wemo Events Thread) [pywemo.subscribe] Resubscribe error for <Subscription basicevent "Outdoor lights"> (HTTPConnectionPool(host='192.168.98.71', port=49154): Max retries exceeded with url: /upnp/event/basicevent1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a901be0>, 'Connection to 192.168.98.71 timed out. (connect timeout=10)'))), will retry in 60s

2022-06-04 13:46:26 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=5, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a84cc10>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:46:32 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a8f49d0>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:46:41 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a897d00>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:46:56 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a84cfa0>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:46:58 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Outdoor lights">

2022-06-04 13:47:08 WARNING (Wemo Events Thread) [pywemo.subscribe] Resubscribe error for <Subscription basicevent "Outdoor lights"> (HTTPConnectionPool(host='192.168.98.71', port=49154): Max retries exceeded with url: /upnp/event/basicevent1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9abb0d30>, 'Connection to 192.168.98.71 timed out. (connect timeout=10)'))), will retry in 60s

2022-06-04 13:47:21 DEBUG (Wemo Events Thread) [pywemo.ouimeaux_device] No response from 192.168.98.71 on port 49154, continuing

2022-06-04 13:47:23 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a982280>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:47:31 DEBUG (Wemo Events Thread) [pywemo.ouimeaux_device] Timed out connecting to 192.168.98.71 on port 49153, wemo is offline

2022-06-04 13:47:31 ERROR (Wemo Events Thread) [pywemo.ouimeaux_device] Unable to re-probe wemo <WeMo Switch "Outdoor lights"> at 192.168.98.71

2022-06-04 13:47:31 INFO (Wemo Events Thread) [pywemo.ouimeaux_device] Trying to reconnect with Outdoor lights

2022-06-04 13:47:36 ERROR (Wemo Events Thread) [pywemo.ouimeaux_device] Unable to reconnect with Outdoor lights

2022-06-04 13:47:36 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Bedroom">

2022-06-04 13:47:36 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Gate">

2022-06-04 13:47:36 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Pool heating">

2022-06-04 13:47:36 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Garage">

2022-06-04 13:48:14 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a982c70>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')': /upnp/control/basicevent1

2022-06-04 13:48:17 WARNING (SyncWorker_1) [pywemo.ouimeaux_device.api.service] Error communicating with Outdoor lights at 192.168.98.71:49154, HTTPException(MaxRetryError("HTTPConnectionPool(host='192.168.98.71', port=49154): Max retries exceeded with url: /upnp/control/basicevent1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9a885070>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)'))")) retry 0

2022-06-04 13:48:27 DEBUG (SyncWorker_1) [pywemo.ouimeaux_device] Timed out connecting to 192.168.98.71 on port 49154, wemo is offline

2022-06-04 13:48:27 ERROR (SyncWorker_1) [pywemo.ouimeaux_device] Unable to re-probe wemo <WeMo Switch "Outdoor lights"> at 192.168.98.71

2022-06-04 13:48:27 INFO (SyncWorker_1) [pywemo.ouimeaux_device] Trying to reconnect with Outdoor lights

2022-06-04 13:48:28 INFO (SyncWorker_1) [pywemo.ouimeaux_device] Found Outdoor lights again, updating location

2022-06-04 13:48:28 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=5, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9a8bf340>: Failed to establish a new connection: [Errno 101] Network unreachable')': /upnp/control/basicevent1

2022-06-04 13:48:31 WARNING (SyncWorker_1) [urllib3.connectionpool] Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9a79caf0>: Failed to establish a new connection: [Errno 101] Network unreachable')': /upnp/control/basicevent1

2022-06-04 13:48:36 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Outdoor lights">

2022-06-04 13:48:36 DEBUG (Thread-65) [pywemo.subscribe] Received /sub/basicevent event from <WeMo Switch "Outdoor lights">(192.168.98.71) - BinaryState 0

2022-06-04 13:48:36 DEBUG (Thread-65) [pywemo.ouimeaux_device] subscription_update BinaryState 0

2022-06-04 13:51:21 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Bedroom">

2022-06-04 13:51:21 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Gate">

2022-06-04 13:51:21 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Pool heating">

2022-06-04 13:51:21 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Garage">

2022-06-04 13:52:21 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Outdoor lights">

2022-06-04 13:55:06 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Bedroom">

2022-06-04 13:55:06 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Gate">

2022-06-04 13:55:06 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Pool heating">

2022-06-04 13:55:06 INFO (Wemo Events Thread) [pywemo.subscribe] Resubscribe for <Subscription basicevent "Garage">

exception. Cant decipher how serious this is.

Traceback (most recent call last):

  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 174, in _new_conn

    conn = connection.create_connection(

  File "/usr/local/lib/python3.9/site-packages/urllib3/util/connection.py", line 95, in create_connection

    raise err

  File "/usr/local/lib/python3.9/site-packages/urllib3/util/connection.py", line 85, in create_connection

    sock.connect(sa)

socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen

    httplib_response = self._make_request(

  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 398, in _make_request

    conn.request(method, url, **httplib_request_kw)

  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 239, in request

    super(HTTPConnection, self).request(method, url, body=body, headers=headers)

  File "/usr/local/lib/python3.9/http/client.py", line 1285, in request

    self._send_request(method, url, body, headers, encode_chunked)

  File "/usr/local/lib/python3.9/http/client.py", line 1331, in _send_request

    self.endheaders(body, encode_chunked=encode_chunked)

  File "/usr/local/lib/python3.9/http/client.py", line 1280, in endheaders

    self._send_output(message_body, encode_chunked=encode_chunked)

  File "/usr/local/lib/python3.9/http/client.py", line 1040, in _send_output

    self.send(msg)

  File "/usr/local/lib/python3.9/http/client.py", line 980, in send

    self.connect()

  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 205, in connect

    conn = self._new_conn()

  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 179, in _new_conn

    raise ConnectTimeoutError(

urllib3.exceptions.ConnectTimeoutError: (<urllib3.connection.HTTPConnection object at 0x7f9c357c10>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/usr/local/lib/python3.9/site-packages/pywemo/ouimeaux_device/api/service.py", line 126, in request

    response = pool.request(method=method, url=url, **kwargs)

  File "/usr/local/lib/python3.9/site-packages/urllib3/request.py", line 74, in request

    return self.request_encode_url(

  File "/usr/local/lib/python3.9/site-packages/urllib3/request.py", line 96, in request_encode_url

    return self.urlopen(method, url, **extra_kw)

  File "/usr/local/lib/python3.9/site-packages/urllib3/poolmanager.py", line 376, in urlopen

    response = conn.urlopen(method, u.request_uri, **kw)

  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 813, in urlopen

    return self.urlopen(

  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 813, in urlopen

    return self.urlopen(

  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 813, in urlopen

    return self.urlopen(

  [Previous line repeated 3 more times]

  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 785, in urlopen

    retries = retries.increment(

  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 592, in increment

    raise MaxRetryError(_pool, url, error or ResponseError(cause))

urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.98.71', port=49154): Max retries exceeded with url: /eventservice.xml (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9c357c10>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)'))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File "/usr/local/lib/python3.9/site-packages/pywemo/discovery.py", line 89, in device_from_uuid_and_location

    return Switch(location)

  File "/usr/local/lib/python3.9/site-packages/pywemo/ouimeaux_device/__init__.py", line 132, in __init__

    service = Service(self, svc)

  File "/usr/local/lib/python3.9/site-packages/pywemo/ouimeaux_device/api/service.py", line 285, in __init__

    xml = device.session.get(url).content

  File "/usr/local/lib/python3.9/site-packages/pywemo/ouimeaux_device/api/service.py", line 138, in get

    return self.request('GET', url, **kwargs)

  File "/usr/local/lib/python3.9/site-packages/pywemo/ouimeaux_device/api/service.py", line 132, in request

    raise HTTPException(err) from err

pywemo.exceptions.HTTPException: HTTPConnectionPool(host='192.168.98.71', port=49154): Max retries exceeded with url: /eventservice.xml (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f9c357c10>, 'Connection to 192.168.98.71 timed out. (connect timeout=3.0)'))

also interesting (yes, im babbling now) is that, if I trigger a state change the logs show this. You can see the “sensor” value being set. And this change is honored in HA at that moment.

2022-06-04 15:09:56 DEBUG (Thread-175) [pywemo.subscribe] Received /sub/basicevent event from <WeMo Maker "Garage">(192.168.98.79) - attributeList <attribute><name>Switch</name><value>0</value><prevalue>1</prevalue><ts>1654321195</ts></attribute><attribute><name>Sensor</name><value>0</value><prevalue>1</prevalue><ts>1654321195</ts></attribute>

2022-06-04 15:09:58 DEBUG (Thread-176) [pywemo.subscribe] Received /sub/basicevent event from <WeMo Maker "Garage">(192.168.98.79) - attributeList <attribute><name>Switch</name><value>1</value><prevalue>0</prevalue><ts>1654321197</ts></attribute>

2022-06-04 15:10:01 DEBUG (Thread-177) [pywemo.subscribe] Received /sub/basicevent event from <WeMo Maker "Garage">(192.168.98.79) - attributeList <attribute><name>Switch</name><value>0</value><prevalue>1</prevalue><ts>1654321199</ts></attribute>

2022-06-04 15:10:03 DEBUG (Thread-178) [pywemo.subscribe] Received /sub/basicevent event from <WeMo Maker "Garage">(192.168.98.79) - attributeList <attribute><name>Switch</name><value>1</value><prevalue>0</prevalue><ts>1654321201</ts></attribute>

2022-06-04 15:10:05 DEBUG (Thread-179) [pywemo.subscribe] Received /sub/basicevent event from <WeMo Maker "Garage">(192.168.98.79) - attributeList <attribute><name>Switch</name><value>0</value><prevalue>1</prevalue><ts>1654321203</ts></attribute>

2022-06-04 15:10:08 DEBUG (Thread-180) [pywemo.subscribe] Received /sub/basicevent event from <WeMo Maker "Garage">(192.168.98.79) - attributeList <attribute><name>Sensor</name><value>1</value><prevalue>0</prevalue><ts>1654321206</ts></attribute>

But none of the other phantom changes show up on the logs. They just change by themselves.

If anyone ever runs into this. it turned out to be a bug introduced in a new version of HA Core. The issue was resolved by the dev and all returned to normal.