-
Notifications
You must be signed in to change notification settings - Fork 75
Missing string data for PW3 - Firmware 25.2.7 #616
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Take a look at the raw PVAC_PVCurrent_A sections in http://localhost:8675/tedapi/status (during solar production) to see if you can find any non-zero data (I have PW2 and is late for me so near zero): ![]() Also check http://localhost8675/tedapi/components ( for PW3 ) |
Thanks @jasonacox I've just managed to get around to try and check the outputs from those endpoints - then realised it'll have to wait until tomorrow when it's actually daylight. Otherwise it currently shows:
|
Yes, these all show inactive. |
Looks like the data is now (only?) within Output: http://localhost:8675/tedapi/status
Output: http://localhost:8675/tedapi/components
|
Yes, the string data for PW3 is in /tedapi/components where for PW2 it is in /tedapi/status. The pypowerwall code should be separating that for you. I wonder what happened in your case. Can you check http://localhost:8675/help to see if |
Good shout to check what mode is set, can confirm
Also, http://localhost:8675/strings just returns It was working before the firmware update - does pypowerwall use anything else to determine where to collate the data? |
A few ideas - can you try restarting and rebuilding? docker stop pypowerwall
docker rm pypowerwall
./compose-dash.sh up -d
docker logs pypowerwall -f I would like to see the logs especially if there are errors. There is some chance that would fix it (which may indicate another issue in the library). But here is the python path if it doesn't: # Install local pypowerwal lib
python -m venv .venv
source .venv/bin/activate
pip install pypowerwall
python -m pypowerwall get
python And run these python commands (interactive): import pypowerwall
# Your connection info
PW_GW_PWD="XXXXXXXXX"
PW_HOST="192.168.91.1"
pw = pypowerwall.Powerwall(PW_HOST, gw_pwd=PW_GW_PWD)
# Test
print(f"mode: {pw.mode} - tedapi: {pw.tedapi_mode}")
pw.tedapi.get_din()
pw.tedapi.get_firmware_version()
# Strings
pw.strings()
# Now with debug
pypowerwall.set_debug()
pw.strings() |
pypowerwall - rebuild with errorsOutputdocker stop pypowerwall
docker rm pypowerwall
./compose-dash.sh up -d
docker logs pypowerwall -f
pypowerwall
pypowerwall
Running Docker Compose...
[+] Running 5/5
✔ Container pypowerwall Started 0.1s
✔ Container influxdb Running 0.0s
✔ Container grafana Running 0.0s
✔ Container weather411 Running 0.0s
✔ Container telegraf Running 0.0s
04/19/2025 07:22:41 PM [proxy] [INFO] pyPowerwall [0.12.9] Proxy Server [t71] - HTTP Port 8675
04/19/2025 07:22:41 PM [proxy] [INFO] pyPowerwall Proxy Started
04/19/2025 07:22:42 PM [proxy] [INFO] pyPowerwall Proxy Server - Local Mode
04/19/2025 07:22:42 PM [proxy] [INFO] Connected to Energy Gateway 192.168.91.1 (My Home)
04/19/2025 07:22:42 PM [proxy] [INFO] TEDAPI Mode Enabled for Device Vitals (full)
----------------------------------------
Exception occurred during processing of request from ('172.18.0.4', 53972)
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 534, in _make_request
response = conn.getresponse()
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 516, in getresponse
httplib_response = super().getresponse()
File "/usr/local/lib/python3.10/http/client.py", line 1375, in getresponse
response.begin()
File "/usr/local/lib/python3.10/http/client.py", line 318, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.10/http/client.py", line 279, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/local/lib/python3.10/socket.py", line 717, in readinto
return self._sock.recv_into(b)
File "/usr/local/lib/python3.10/ssl.py", line 1307, in recv_into
return self.read(nbytes, buffer)
File "/usr/local/lib/python3.10/ssl.py", line 1163, in read
return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.10/site-packages/urllib3/util/util.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 536, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python3.10/socketserver.py", line 747, in __init__
self.handle()
File "/usr/local/lib/python3.10/http/server.py", line 433, in handle
self.handle_one_request()
File "/usr/local/lib/python3.10/http/server.py", line 421, in handle_one_request
method()
File "/app/server.py", line 473, in do_GET
alerts = pw.alerts()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 585, in alerts
devices: dict = self.vitals() or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 379, in vitals
output = self.client.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/pypowerwall_tedapi.py", line 562, in vitals
return self.tedapi.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 1415, in vitals
pw3_data = self.get_pw3_vitals(force) or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 693, in get_pw3_vitals
r = requests.post(url, auth=('Tesla_Energy_Device', self.gw_pwd), verify=False,
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 713, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
----------------------------------------
----------------------------------------
Exception occurred during processing of request from ('172.18.0.4', 49592)
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 534, in _make_request
response = conn.getresponse()
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 516, in getresponse
httplib_response = super().getresponse()
File "/usr/local/lib/python3.10/http/client.py", line 1375, in getresponse
response.begin()
File "/usr/local/lib/python3.10/http/client.py", line 318, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.10/http/client.py", line 279, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/local/lib/python3.10/socket.py", line 717, in readinto
return self._sock.recv_into(b)
File "/usr/local/lib/python3.10/ssl.py", line 1307, in recv_into
return self.read(nbytes, buffer)
File "/usr/local/lib/python3.10/ssl.py", line 1163, in read
return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.10/site-packages/urllib3/util/util.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 536, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python3.10/socketserver.py", line 747, in __init__
self.handle()
File "/usr/local/lib/python3.10/http/server.py", line 433, in handle
self.handle_one_request()
File "/usr/local/lib/python3.10/http/server.py", line 421, in handle_one_request
method()
File "/app/server.py", line 473, in do_GET
alerts = pw.alerts()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 585, in alerts
devices: dict = self.vitals() or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 379, in vitals
output = self.client.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/pypowerwall_tedapi.py", line 562, in vitals
return self.tedapi.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 1415, in vitals
pw3_data = self.get_pw3_vitals(force) or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 693, in get_pw3_vitals
r = requests.post(url, auth=('Tesla_Energy_Device', self.gw_pwd), verify=False,
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 713, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
----------------------------------------
04/19/2025 07:23:01 PM [pypowerwall.tedapi] [ERROR] Error fetching controller data: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa241d5d0>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
----------------------------------------
Exception occurred during processing of request from ('172.18.0.4', 49734)
Traceback (most recent call last):
File "/usr/local/lib/python3.10/socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python3.10/socketserver.py", line 747, in __init__
self.handle()
File "/usr/local/lib/python3.10/http/server.py", line 433, in handle
self.handle_one_request()
File "/usr/local/lib/python3.10/http/server.py", line 421, in handle_one_request
method()
File "/app/server.py", line 726, in do_GET
for i, (_, value) in enumerate(sorted(pw.tedapi.get_fan_speeds().items())):
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 962, in get_fan_speeds
return self.extract_fan_speeds(self.get_device_controller(force=force))
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 944, in extract_fan_speeds
for component in data.get("components", {}).get("msa", []):
AttributeError: 'NoneType' object has no attribute 'get'
----------------------------------------
04/19/2025 07:23:01 PM [pypowerwall.tedapi] [ERROR] Error fetching config: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa241e500>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:01 PM [pypowerwall.tedapi] [ERROR] Error fetching status: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2395750>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:06 PM [pypowerwall.tedapi] [ERROR] Error fetching controller data: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2394250>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:06 PM [pypowerwall.tedapi.pypowerwall_tedapi] [WARNING] This API [get_api_solar_powerwall] is using mock data in tedapi mode. This message will be printed only once at the warning level.
04/19/2025 07:23:06 PM [pypowerwall.tedapi] [ERROR] Error fetching config: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f2170>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:06 PM [pypowerwall.tedapi] [ERROR] Error fetching status: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f0c10>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:11 PM [pypowerwall.tedapi] [ERROR] Error fetching controller data: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f0220>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:11 PM [pypowerwall.tedapi] [ERROR] Error fetching config: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2396ec0>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:11 PM [pypowerwall.tedapi] [ERROR] Error fetching status: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa268c130>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:16 PM [pypowerwall.tedapi] [ERROR] Error fetching controller data: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2394f40>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:16 PM [pypowerwall.tedapi] [ERROR] Error fetching config: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f2cb0>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:17 PM [pypowerwall.tedapi] [ERROR] Error fetching status: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f3610>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:21 PM [pypowerwall.tedapi] [ERROR] Error fetching controller data: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2396fe0>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:21 PM [pypowerwall.tedapi] [ERROR] Error fetching config: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2395300>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:23 PM [pypowerwall.tedapi] [ERROR] Error fetching status: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f21a0>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:26 PM [pypowerwall.tedapi] [ERROR] Error fetching config: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2394f70>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:26 PM [pypowerwall.tedapi] [ERROR] Error fetching controller data: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f2d10>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:28 PM [pypowerwall.tedapi] [ERROR] Error fetching status: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2395fc0>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:31 PM [pypowerwall.tedapi] [ERROR] Error fetching config: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa23f3d60>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:31 PM [pypowerwall.tedapi] [ERROR] Error fetching controller data: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2397490>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
04/19/2025 07:23:33 PM [pypowerwall.tedapi] [ERROR] Error fetching status: HTTPSConnectionPool(host='192.168.91.1', port=443): Max retries exceeded with url: /tedapi/v1 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0xffffa2397580>, 'Connection to 192.168.91.1 timed out. (connect timeout=5)'))
----------------------------------------
Exception occurred during processing of request from ('172.18.0.4', 55852)
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 534, in _make_request
response = conn.getresponse()
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 516, in getresponse
httplib_response = super().getresponse()
File "/usr/local/lib/python3.10/http/client.py", line 1375, in getresponse
response.begin()
File "/usr/local/lib/python3.10/http/client.py", line 318, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.10/http/client.py", line 279, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/local/lib/python3.10/socket.py", line 717, in readinto
return self._sock.recv_into(b)
File "/usr/local/lib/python3.10/ssl.py", line 1307, in recv_into
return self.read(nbytes, buffer)
File "/usr/local/lib/python3.10/ssl.py", line 1163, in read
return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.10/site-packages/urllib3/util/util.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 536, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python3.10/socketserver.py", line 747, in __init__
self.handle()
File "/usr/local/lib/python3.10/http/server.py", line 433, in handle
self.handle_one_request()
File "/usr/local/lib/python3.10/http/server.py", line 421, in handle_one_request
method()
File "/app/server.py", line 564, in do_GET
vitals = pw.vitals() or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 379, in vitals
output = self.client.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/pypowerwall_tedapi.py", line 562, in vitals
return self.tedapi.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 1415, in vitals
pw3_data = self.get_pw3_vitals(force) or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 693, in get_pw3_vitals
r = requests.post(url, auth=('Tesla_Energy_Device', self.gw_pwd), verify=False,
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 713, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
----------------------------------------
----------------------------------------
Exception occurred during processing of request from ('172.18.0.4', 51020)
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 534, in _make_request
response = conn.getresponse()
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 516, in getresponse
httplib_response = super().getresponse()
File "/usr/local/lib/python3.10/http/client.py", line 1375, in getresponse
response.begin()
File "/usr/local/lib/python3.10/http/client.py", line 318, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.10/http/client.py", line 279, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/local/lib/python3.10/socket.py", line 717, in readinto
return self._sock.recv_into(b)
File "/usr/local/lib/python3.10/ssl.py", line 1307, in recv_into
return self.read(nbytes, buffer)
File "/usr/local/lib/python3.10/ssl.py", line 1163, in read
return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.10/site-packages/urllib3/util/util.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 536, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python3.10/socketserver.py", line 747, in __init__
self.handle()
File "/usr/local/lib/python3.10/http/server.py", line 433, in handle
self.handle_one_request()
File "/usr/local/lib/python3.10/http/server.py", line 421, in handle_one_request
method()
File "/app/server.py", line 501, in do_GET
vitals = pw.vitals() or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 379, in vitals
output = self.client.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/pypowerwall_tedapi.py", line 562, in vitals
return self.tedapi.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 1415, in vitals
pw3_data = self.get_pw3_vitals(force) or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 693, in get_pw3_vitals
r = requests.post(url, auth=('Tesla_Energy_Device', self.gw_pwd), verify=False,
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 713, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
----------------------------------------
----------------------------------------
Exception occurred during processing of request from ('172.18.0.4', 51050)
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 534, in _make_request
response = conn.getresponse()
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 516, in getresponse
httplib_response = super().getresponse()
File "/usr/local/lib/python3.10/http/client.py", line 1375, in getresponse
response.begin()
File "/usr/local/lib/python3.10/http/client.py", line 318, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.10/http/client.py", line 279, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/local/lib/python3.10/socket.py", line 717, in readinto
return self._sock.recv_into(b)
File "/usr/local/lib/python3.10/ssl.py", line 1307, in recv_into
return self.read(nbytes, buffer)
File "/usr/local/lib/python3.10/ssl.py", line 1163, in read
return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.10/site-packages/urllib3/util/util.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 536, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python3.10/socketserver.py", line 747, in __init__
self.handle()
File "/usr/local/lib/python3.10/http/server.py", line 433, in handle
self.handle_one_request()
File "/usr/local/lib/python3.10/http/server.py", line 421, in handle_one_request
method()
File "/app/server.py", line 461, in do_GET
temps = pw.temps()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 567, in temps
devices: dict = self.vitals() or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/__init__.py", line 379, in vitals
output = self.client.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/pypowerwall_tedapi.py", line 562, in vitals
return self.tedapi.vitals()
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 1415, in vitals
pw3_data = self.get_pw3_vitals(force) or {}
File "/usr/local/lib/python3.10/site-packages/pypowerwall/tedapi/__init__.py", line 693, in get_pw3_vitals
r = requests.post(url, auth=('Tesla_Energy_Device', self.gw_pwd), verify=False,
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 713, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='192.168.91.1', port=443): Read timed out. (read timeout=5)
---------------------------------------- I'll give the other commands a run shortly as I'll need to tweak them a little bit as running on Mac OS. Hopefully the output from the above helps as does include some unexpected errors. |
Looks like it's getting a >>> pw.strings()
DEBUG:Get Configuration from Powerwall
DEBUG:Starting new HTTPS connection (1): 192.168.91.1:443
DEBUG:https://192.168.91.1:443 "POST /tedapi/v1 HTTP/1.1" 200 1271
DEBUG:Response Code: 200
DEBUG:Configuration: {'vin':
...
DEBUG:Get controller data from Powerwall
DEBUG:Starting new HTTPS connection (1): 192.168.91.1:443
DEBUG:https://192.168.91.1:443 "POST /tedapi/v1 HTTP/1.1" 200 None
DEBUG:Response Code: 200
DEBUG:Payload: {"components":{"msa":
...
DEBUG:Get PW3 Components from Powerwall
DEBUG:Starting new HTTPS connection (1): 192.168.91.1:443
DEBUG:https://192.168.91.1:443 "POST /tedapi/v1 HTTP/1.1" 200 1298
DEBUG:Response Code: 200
DEBUG:Payload (len=9811): {"components":{"baggr":
...
DEBUG:Using Cached Payload
DEBUG:Starting new HTTPS connection (1): 192.168.91.1:443
DEBUG:https://192.168.91.1:443 "POST /tedapi/device/<redacted>/v1 HTTP/1.1" 502 0
DEBUG:Error fetching components: 502 |
Very puzzling! It is like the /tedapi/devices/ path is disabled. Can you try this, just to ensure the /status and /config paths still work fully? python -m pypowerwall.tedapi |
I am also a PW3 on 25.2.7. I had a quick peek:
|
Hi @JohnJ9ml - those are not valid URLs. You can try: Also, do you get a response for: |
I'm sorry - I saw your note about it seeming as though the /tedapi/devices/ endpoint was disabled, tried it out, and saw that it actually returned a payload, not just an error. I was just passing that along. My installation is not having a problem getting the string data. |
That worked without any errors and output
Thanks @JohnJ9ml for trying to help out and puzzling that your device is fine with the same firmware. I'm wondering if there's a way to reboot the PW - maybe its got itself into a weird state? Although the bit which puzzles me is the data is being returned but seems to be the |
For PW3, the vitals data is coming in at get_pw3_vitals() in tedapi/init.py (here). It builds the URL here and polls: https://192.168.91.1/tedapi/device/{din}/v1 - which is a protobuf payload it deserializes into JSON and loops through the A-F strings here. The "how to power cycle a PW3" looks more complicated than a PW2: https://energylibrary.tesla.com/docs/Public/EnergyStorage/Powerwall/3/DeviceSetupGuide/en-us/GUID-D648EE2E-BB2C-48C3-B2EF-55EAF3F11ACF.html |
Thanks @jasonacox. What I'll do is try power cycling the PW3 later on as there's an alternative approach (see link below) but requires at least an hour between switching off and back on again. But does mean I don't have to open up the unit to disconnect wires. I'm suspecting by lack of anyone else complaining about this issue and the same issue occurring with the NetZero app - it's probably an isolated issue. One question I did have is what does Thanks for all your support! |
I tried a power cycle last night for an hour but sadly no change in behaviour including NetZero. I emailed NetZero about the issue and Ziga has replied saying that the data is being returned in an unexpected format and fix coming in the next version. Based on that @jasonacox do we want to have a closer look at the data format and see if any differences? Not sure if the version is included to check/handle it differently? |
I was notified of this thread, so just to provide some context.
To clarify, what I meant by unexpected format is what was observed in this issue as well: the device is query is failing, but the necessary data is also available in the components query response. I suspect the issue here is related to networking, and could be an isolated case. The device query is meant to get data from follower PW3s, which would be connected to the leader PW3 via ethernet. It can also be used to get data from the leader PW3, but for some reason that's failing in this case. 502 error code implies a network connection issue. @johncuthbertuk: worth verifying if there's anything about your home network that would conflict with the Powerwall IP space (192.168.91 / 192.168.92). It might also be related to the static network route trick (which no longer works in firmware versions 25.10). I believe the components query returns the same data as the device query for the leader PW3, so in this case it can be used instead of the device query. |
Thanks @zigam that’s really useful and insightful. Appreciate clarifying on what was said just to make sure we’re all on the same page. In terms of networking - I’ve got two setups. One which used the static route and another that directly connects via the device WiFi. Both exhibit the same issue so doesn’t feel its network related as the other calls would fail? I guess part of the issue is silently fails to display string data but everything else works so might not be as obvious to other users? Would the fix be to change the underlying logic to use the components query data instead of the device query? |
That's what I'm planning for Netzero, yes. |
@jasonacox I'll have a go at raising a PR for the Anything to be aware or consider when making changes to the function? Or indeed you'd be happy switching to use component querying rather than the device query. {
"A":{
"State":"Pv_Standby",
"Voltage":16,
"Current":0.04999999999999964,
"Power":0.7999999999999943,
"Connected":false
},
"B":{
"State":"Pv_Standby",
"Voltage":16,
"Current":0,
"Power":0,
"Connected":false
},
"C":{
"State":"Pv_Standby",
"Voltage":16,
"Current":0,
"Power":0,
"Connected":false
},
"D":{
"State":"Pv_Standby",
"Voltage":14,
"Current":0,
"Power":0,
"Connected":false
},
"E":{
"State":"Pv_Standby",
"Voltage":16,
"Current":0,
"Power":0,
"Connected":false
},
"F":{
"State":"Pv_Standby",
"Voltage":14,
"Current":0,
"Power":0,
"Connected":false
}
} |
Raised PR: jasonacox/pypowerwall#169 Welcome any feedback 👍 |
Thanks @johncuthbertuk and @zigam I really need to get https://github.com/jasonacox/pypowerwall/tree/main/pwsimulator set up to simulate a PW3 to help with these types of issues. At a minimum, I need to get a firmware 25.10 simulation update. ;) |
Yeah it would be a big plus to get the Pleased to report using ![]() |
Thanks @johncuthbertuk ! I'll forward with publishing this as release 0.12.10 and update the PD release. |
Problem
No string voltage/current data shown - which appears to have occurred after a firmware update. I’m fairly sure on the previous firmware, all the string data was available. Unsure if newer versions of the firmware restore the data.
Even using NetZero, it doesn’t show any string data.
To Reproduce
N/A
Screenshots
If applicable, add screenshots to help explain your problem.
System Details
Additional context
Powerwall Dashboard Installation: TEDAPI
The text was updated successfully, but these errors were encountered: