jasonacox / Powerwall-Dashboard

Grafana Monitoring Dashboard for Tesla Solar and Powerwall Systems
MIT License
270 stars 57 forks source link

v3.0.6 Powerflow Animation Update #406

Closed jasonacox closed 6 months ago

jasonacox commented 6 months ago

v3.0.6 - Powerflow Animation Update

BJReplay commented 6 months ago

Will this require you to re-customise dashboards, or will any dashboard that includes the "standard" animation pick this up?

jasonacox commented 6 months ago

Good question. This update should be 100% transparent to the dashboards. No change needed for users. I'm using stock dashboard.json and didn't need to change anything for it to work.

The key difference is that instead of pypowerwall pulling the various html, js and image files from the Powerwall Gateway, it will send local cached versions of those files. In my testing it is a good 2-5x faster on startup. More important, even if Tesla decides to remove the portal, the pypowerwall driven animation will continue. This is the first step to also allowing solar-only customers to use the animation in their dashboards (even if they don't have a Powerwall Gateway).

Still, happy to have anyone test before we merge:

Before upgrading, make sure you revert the above change:

BJReplay commented 6 months ago

Still, happy to have anyone test before we merge:

The Grid, Solar, Powerwall, and Home Icons loaded, but then flashed on and off, with red Xs above each of grid, home and solar and through the middle of Powerwall - similar to what you see when the grid is down, but through each of the icons, including the Powerwall.

It would occasionally flash up the charge level and power, but only momentarily.

Just in case, I set up a brand-new stock dashboard from the latest dashboard.json, and saw the same thing.

Reverted to the 0.6.2t28 tag and it's working on both my customised and the standard dashboard.

My dashboard is available at wsl2:9000 - wsl2 is the hostname associated with a static DHCP reservation that allocates the IP address to the WSL2 linux instance running on my windows machine, but equally if I access it via the IP address of 192.168.1.125:9000, I see the same thing.

The iframe source renders as <iframe id="frame8675" class="powerFrame" src="http://wsl2:8675/" style="transform: translate(-50%, -50%) scale(1);">IFRAME not supported by browser.</iframe> (or 192.168.1.125:8657 when accessing using the IP address).

I tested locally on the windows host as well (i.e. localhost:9000 and localhost:8675) but the same thing occurred).

mcbirse commented 6 months ago

Hi @BJReplay - thanks for testing and the feedback, that is strange.

I wonder if this is specific to WSL - I will see if I can replicate it.

I'm sure you already tried this... but did you try clearing the browser cache and/or running in Incognito when testing?

BJReplay commented 6 months ago

I'm sure you already tried this... but did you try clearing the browser cache and/or running in Incognito when testing?

Hmmm, I didn't try incognito mode, but I did try a hard reload. I'll try now...

BJReplay commented 6 months ago

I wonder if this is specific to WSL - I will see if I can replicate it. OK,

Now tried Chrome and Edge

I'm sure you already tried this... but did you try clearing the browser cache and/or running in Incognito when testing? Now tried Incognito / In Private and Cleared Browser Cache in normal mode.

Still there in all modes.

mcbirse commented 6 months ago

I haven't been able to replicate this issue....

I tested a new WSL2 (w/ Docker Desktop) install with a new fresh install of v3.0.6, as well as a fresh v3.0.5 then upgraded to v.30.6, and in each case the Power Flow animation worked correctly in Chrome, Firefox, and Edge, from localhost and remote hosts.

@BJReplay - I wonder if this could be due to Powerwall Firmware differences?

What firmware is your Powerwall running? Mine is 23.28.2

Just a thought... as essentially the TEG asset files (html, css, js, images, fonts, etc) have been copied from the TEG and are now served from the local filesystem by the pypowerwall proxy instead of directly from the gateway. If there are differences in the copied assets compared to the users specific gateway version this could cause a problem perhaps?

I'm not sure where to go from here since I can't replicate the problem.

If you're able to, it would be interesting to see if you had the same issue on a different platform like a RPi or Linux based host or VM to eliminate the WSL factor.

BJReplay commented 6 months ago

What firmware is your Powerwall running? Mine is 23.28.2

Mine is running Firmware: 23.36.3. I'll see if I can stand up a new instance on Ubuntu (will be a cloud instance via a VPN as I don't have any spare bare metal) and see how I go).

BJReplay commented 6 months ago

it would be interesting to see if you had the same issue on a different platform

Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-1049-oracle aarch64)

OK, running via VPN.

Slightly different symptoms. I can't tell (of course) whether it's the VPN or the environment, but I'm guessing it's actually the powerwall firmware.

My suggestion is to keep running ahead with your work, and when you have access to this firmware, and can look at what it is giving you, work out whether the firmware is giving you a different set of files or, most likely, js which is causing the problem.

Annoying, but anyway, thanks for trying to repro, and I hope this helps a little.

excerpt from powerwall.yml

version: "3.5"
services:
    pypowerwall:
#        image: jasonacox/pypowerwall:0.6.2t28
        image: jasonacox/pypowerwall:0.6.4t29
        container_name: pypowerwall
        hostname: pypowerwall
        restart: unless-stopped
        user: "${PWD_USER:-1000:1000}"
        ports:
            - "${PYPOWERWALL_PORTS:-8675:8675}"
        env_file:
            - pypowerwall.env
        profiles:
            - default

Results of verify.sh

ubuntu@mastodon:~/Powerwall-Dashboard$ ./verify.sh
Verify Powerwall-Dashboard 3.0.5 on Linux - Timezone: Australia/Melbourne
----------------------------------------------------------------------------
This script will attempt to verify all the services needed to run
Powerwall-Dashboard. Use this output when you open an issue for help:
https://github.com/jasonacox/Powerwall-Dashboard/issues/new

Checking configuration
----------------------------------------------------------------------------
 - Dashboard configuration: default
 - EnvVar COMPOSE_PROFILES: default

Checking pypowerwall
----------------------------------------------------------------------------
 - Config File pypowerwall.env: GOOD
 - Container (pypowerwall): GOOD
 - Service (port 8675): GOOD
 - Version: 0.6.4 Proxy t29
 - Powerwall State: CONNECTED - Firmware Version: 23.36.3

Checking telegraf
----------------------------------------------------------------------------
 - Config File telegraf.conf: GOOD
 - Local Config File telegraf.local: GOOD
 - Container (telegraf): GOOD
 - Version: Telegraf 1.28.2 (git: HEAD@8d9cf395)

Checking influxdb
----------------------------------------------------------------------------
 - Config File influxdb.conf: GOOD
 - Container (influxdb): GOOD
 - Service (port 8086): GOOD
 - Filesystem (./influxdb): GOOD
 - Version: InfluxDB shell version: 1.8.10

Checking grafana
----------------------------------------------------------------------------
 - Config File grafana.env: GOOD
 - Container (grafana): GOOD
 - Service (port 9000): GOOD
 - Filesystem (./grafana): GOOD
 - Version: Grafana CLI version 9.1.2

Checking tesla-history
----------------------------------------------------------------------------
 - Skipped: Only required in 'solar-only' configuration

Checking weather411
----------------------------------------------------------------------------
 - Skipped: weather411 not set up

All tests succeeded.
ubuntu@mastodon:~/Powerwall-Dashboard$

Screenshot - same both on normal (cache cleared) and incognito

image

The previous version (0.6.2t28) works fine over VPN).

mcbirse commented 6 months ago

Thanks for testing, must appreciated.

Jason might have some more ideas to try before this is merged. It would be nice to resolve it, but I think I've exhausted my suggestions for now.

jasonacox commented 6 months ago

Thanks @BJReplay and @mcbirse !

@BJReplay what happens when you try to go direct to pypowerwall via http://localhost:8675 (not in iFrame)? If it is related to some differences in the firmware, it will still act up. Also, I suspect you did, but can you confirm you cleared the browser cache?

The intent was to completely detach the animation from the firmware and rely only on the data calls (e.g. /api/meters/aggregates). The code (js especially) is complex so I'm probably missing something. To help troubleshoot, can you run a local copy of the pypowerwall proxy in debug made and watch for URLs that are passing through instead of pulling from the local cache?

# Get the code
git clone https://github.com/jasonacox/pypowerwall.git
cd pypowerwall

# Set the Powerwalls credentials
export PW_PASSWORD="xxxx
export PW_EMAIL="xxxx"
export PW_HOST="x.x.x.x"
export PW_CACHE_EXPIRE="30"
export PW_DEBUG="yes"

# Run
python3 proxy/server.py

Check to see what the proxy logs show going to http://localhost:8675 - it should look something like:

Running Proxy...
12/18/2023 07:53:37 PM [proxy] [INFO] pyPowerwall [0.6.4] Proxy Server [t29] - HTTP Port 8675 - DEBUG
12/18/2023 07:53:37 PM [pypowerwall] [DEBUG] pypowerwall [0.6.4]

12/18/2023 07:53:37 PM [proxy] [INFO] pyPowerwall Proxy Started
12/18/2023 07:53:37 PM [pypowerwall] [DEBUG] loaded auth from cache file .powerwall
12/18/2023 07:53:37 PM [proxy] [INFO] pyPowerwall Proxy Server - Connected to x.x.x.x
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET / HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /index.html
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.css HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /app.css
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /grafana-dark.js HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /vendor.js HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.js HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /grafana-dark.js
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /app.js
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /vendor.js
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /eca1317ee8a99162d0d0e2df77330cec.otf HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /eca1317ee8a99162d0d0e2df77330cec.otf
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /40.17c71172308436a079d1.js HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /40.17c71172308436a079d1.js
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /1.17c71172308436a079d1.js HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /39.17c71172308436a079d1.js HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /1.17c71172308436a079d1.js
12/18/2023 07:53:40 PM [proxy] [DEBUG] Served from local web root: /39.17c71172308436a079d1.js
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/status HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info/site_name HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/status HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_faults HTTP/1.1" 200 -
12/18/2023 07:53:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/customer/registration HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/networks HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /e19c20e966bde501f94e41cd0322dbe8.otf HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] Served from local web root: /e19c20e966bde501f94e41cd0322dbe8.otf
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /cb0da8a8999c06735455bf5056a5cd78.png HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] Served from local web root: /cb0da8a8999c06735455bf5056a5cd78.png
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /012955c70685614a5639d326f41890bd.png HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /230aeae00823cd3b622d093948d9c433.png HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] Served from local web root: /012955c70685614a5639d326f41890bd.png
12/18/2023 07:53:41 PM [proxy] [DEBUG] Served from local web root: /230aeae00823cd3b622d093948d9c433.png
12/18/2023 07:53:41 PM [proxy] [DEBUG] 127.0.0.1 "GET /4e28cc8f2bdf3ba640331daa2c453341.png HTTP/1.1" 200 -
12/18/2023 07:53:41 PM [proxy] [DEBUG] Served from local web root: /4e28cc8f2bdf3ba640331daa2c453341.png
12/18/2023 07:53:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/18/2023 07:53:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/18/2023 07:53:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/18/2023 07:53:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/18/2023 07:53:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/18/2023 07:53:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/18/2023 07:53:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/18/2023 07:53:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/18/2023 07:53:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/18/2023 07:53:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/18/2023 07:53:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/18/2023 07:53:47 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/18/2023 07:53:47 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/18/2023 07:53:47 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/18/2023 07:53:47 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/18/2023 07:53:47 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -

If you have Dev Tools in your browser, it would be good to see if it is throwing javascript errors.

@mcbirse - I hope to have the pypowerwall cloud option soon. Once that is in place, I should be able to test the animation against cloud data without any Powerwall connection. It may uncover some of this bug as well.

BJReplay commented 6 months ago

@BJReplay what happens when you try to go direct to pypowerwall via http://localhost:8675 (not in iFrame)?

Same thing going directly to http://localhost:8675 not in iFrame, with browser cache cleared.

If you have Dev Tools in your browser, it would be good to see if it is throwing javascript errors.

I do, It is:

Lots of repeated errors. Once I toggled Preserve log on (since the page continuously reloads) I got a series of repeated errors, all of the form

c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_METER_AGGREGATES_ERROR'}:
RECEIVE_SOE_ERROR
RECEIVE_METER_AGGREGATES_ERROR
RECEIVE_NETWORKS_ERROR
RECEIVE_GRID_STATUS_ERROR
RECEIVE_TEST_ALERTS_ERROR
RECEIVE_CONFIG_INITIALIZED_ERROR

Here's one expanded:

{message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_METER_AGGREGATES_ERROR'}
error @ app.js:2614
c @ app.js:2639
(anonymous) @ app.js:10235
await in (anonymous) (async)
(anonymous) @ vendor.js:27696
getMeterAggregates @ app.js:21069
e @ app.js:20499
setTimeout (async)
startQuerying @ app.js:20516
componentDidMount @ app.js:20528
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184

Check to see what the proxy logs show going to http://localhost:8675 - it should look something like:

12/19/2023 03:29:17 PM [proxy] [INFO] pyPowerwall [0.6.0] Proxy Server [t29] - HTTP Port 8675 - DEBUG
12/19/2023 03:29:17 PM [pypowerwall] [DEBUG] pypowerwall [0.6.0]

12/19/2023 03:29:17 PM [proxy] [INFO] pyPowerwall Proxy Started
12/19/2023 03:29:17 PM [pypowerwall] [DEBUG] loaded auth from cache file .powerwall
12/19/2023 03:29:17 PM [proxy] [INFO] pyPowerwall Proxy Server - Connected to 192.168.1.30
12/19/2023 03:29:48 PM [proxy] [DEBUG] 127.0.0.1 "GET / HTTP/1.1" 200 -
12/19/2023 03:29:48 PM [proxy] [DEBUG] Served from local web root: /index.html
12/19/2023 03:29:48 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.css HTTP/1.1" 200 -
12/19/2023 03:29:48 PM [proxy] [DEBUG] Served from local web root: /app.css
12/19/2023 03:29:48 PM [proxy] [DEBUG] 127.0.0.1 "GET /vendor.js HTTP/1.1" 200 -
12/19/2023 03:29:48 PM [proxy] [DEBUG] Served from local web root: /vendor.js
12/19/2023 03:29:48 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.js HTTP/1.1" 200 -
12/19/2023 03:29:48 PM [proxy] [DEBUG] 127.0.0.1 "GET /grafana-dark.js HTTP/1.1" 200 -
12/19/2023 03:29:48 PM [proxy] [DEBUG] Served from local web root: /grafana-dark.js
12/19/2023 03:29:48 PM [proxy] [DEBUG] Served from local web root: /app.js
12/19/2023 03:29:49 PM [proxy] [DEBUG] 127.0.0.1 "GET /40.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:49 PM [proxy] [DEBUG] Served from local web root: /40.17c71172308436a079d1.js
12/19/2023 03:29:49 PM [proxy] [DEBUG] 127.0.0.1 "GET /1.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:49 PM [proxy] [DEBUG] Served from local web root: /1.17c71172308436a079d1.js
12/19/2023 03:29:49 PM [proxy] [DEBUG] 127.0.0.1 "GET /39.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:49 PM [proxy] [DEBUG] Served from local web root: /39.17c71172308436a079d1.js
12/19/2023 03:29:49 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/status HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /e19c20e966bde501f94e41cd0322dbe8.otf HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /e19c20e966bde501f94e41cd0322dbe8.otf
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /eca1317ee8a99162d0d0e2df77330cec.otf HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /eca1317ee8a99162d0d0e2df77330cec.otf
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET / HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /index.html
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info/site_name HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/customer/registration HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:50 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.css HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /vendor.js HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /app.css
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.js HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /vendor.js
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /grafana-dark.js HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /grafana-dark.js
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /app.js
12/19/2023 03:29:50 PM [proxy] [DEBUG] 127.0.0.1 "GET /40.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:50 PM [proxy] [DEBUG] Served from local web root: /40.17c71172308436a079d1.js
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /1.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:51 PM [proxy] [DEBUG] Served from local web root: /1.17c71172308436a079d1.js
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /39.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:51 PM [proxy] [DEBUG] Served from local web root: /39.17c71172308436a079d1.js
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /e19c20e966bde501f94e41cd0322dbe8.otf HTTP/1.1" 200 -
12/19/2023 03:29:51 PM [proxy] [DEBUG] Served from local web root: /e19c20e966bde501f94e41cd0322dbe8.otf
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /eca1317ee8a99162d0d0e2df77330cec.otf HTTP/1.1" 200 -
12/19/2023 03:29:51 PM [proxy] [DEBUG] Served from local web root: /eca1317ee8a99162d0d0e2df77330cec.otf
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/status HTTP/1.1" 200 -
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info/site_name HTTP/1.1" 200 -
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:29:51 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/customer/registration HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET / HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] Served from local web root: /index.html
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_faults HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/networks HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:52 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:52 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.css HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] Served from local web root: /app.css
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /vendor.js HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.js HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:52 PM [proxy] [DEBUG] Served from local web root: /app.js
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /grafana-dark.js HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] Served from local web root: /grafana-dark.js
12/19/2023 03:29:52 PM [proxy] [DEBUG] Served from local web root: /vendor.js
12/19/2023 03:29:52 PM [proxy] [DEBUG] 127.0.0.1 "GET /40.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:52 PM [proxy] [DEBUG] Served from local web root: /40.17c71172308436a079d1.js
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /1.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:53 PM [proxy] [DEBUG] Served from local web root: /1.17c71172308436a079d1.js
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /39.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:53 PM [proxy] [DEBUG] Served from local web root: /39.17c71172308436a079d1.js
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /eca1317ee8a99162d0d0e2df77330cec.otf HTTP/1.1" 200 -
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /e19c20e966bde501f94e41cd0322dbe8.otf HTTP/1.1" 200 -
12/19/2023 03:29:53 PM [proxy] [DEBUG] Served from local web root: /eca1317ee8a99162d0d0e2df77330cec.otf
12/19/2023 03:29:53 PM [proxy] [DEBUG] Served from local web root: /e19c20e966bde501f94e41cd0322dbe8.otf
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/status HTTP/1.1" 200 -
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info/site_name HTTP/1.1" 200 -
12/19/2023 03:29:53 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/customer/registration HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET / HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_faults HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] Served from local web root: /index.html
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/networks HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [ERROR] Socket broken sending response [doGET]
12/19/2023 03:29:54 PM [proxy] [DEBUG] 192.168.1.200 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 192.168.1.200 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 192.168.1.200 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 192.168.1.200 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 192.168.1.200 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 192.168.1.200 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 192.168.1.200 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.js HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /vendor.js HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /app.css HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] Served from local web root: /app.js
12/19/2023 03:29:54 PM [proxy] [DEBUG] Served from local web root: /app.css
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /grafana-dark.js HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] Served from local web root: /grafana-dark.js
12/19/2023 03:29:54 PM [proxy] [DEBUG] Served from local web root: /vendor.js
12/19/2023 03:29:54 PM [proxy] [DEBUG] 127.0.0.1 "GET /40.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:54 PM [proxy] [DEBUG] Served from local web root: /40.17c71172308436a079d1.js
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /1.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:55 PM [proxy] [DEBUG] Served from local web root: /1.17c71172308436a079d1.js
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /39.17c71172308436a079d1.js HTTP/1.1" 200 -
12/19/2023 03:29:55 PM [proxy] [DEBUG] Served from local web root: /39.17c71172308436a079d1.js
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /e19c20e966bde501f94e41cd0322dbe8.otf HTTP/1.1" 200 -
12/19/2023 03:29:55 PM [proxy] [DEBUG] Served from local web root: /e19c20e966bde501f94e41cd0322dbe8.otf
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /eca1317ee8a99162d0d0e2df77330cec.otf HTTP/1.1" 200 -
12/19/2023 03:29:55 PM [proxy] [DEBUG] Served from local web root: /eca1317ee8a99162d0d0e2df77330cec.otf
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/status HTTP/1.1" 200 -
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/customer/registration HTTP/1.1" 200 -
12/19/2023 03:29:55 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/site_info/site_name HTTP/1.1" 200 -
12/19/2023 03:29:58 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:29:58 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:29:58 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:29:58 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:29:58 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:00 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:00 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:00 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:00 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:00 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:00 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:03 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:03 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:03 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:03 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:03 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:05 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:30:05 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:05 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:06 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:06 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:06 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:06 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:08 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:08 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:08 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:08 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:08 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:10 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:11 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:11 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:11 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:11 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:11 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:13 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:13 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:13 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:13 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:13 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:15 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:30:15 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:16 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:16 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:16 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:16 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:16 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:18 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:18 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:18 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:18 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:18 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:20 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:21 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:21 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:21 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:21 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:21 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:23 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:24 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:24 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:24 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:24 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:25 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:30:25 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:26 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:26 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:26 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:26 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:26 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:28 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:29 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:29 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:29 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:29 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:30 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:31 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:31 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:31 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:31 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:31 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:33 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:34 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:34 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:34 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:34 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:35 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:30:35 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:36 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:36 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:36 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:36 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:36 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:39 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:39 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:39 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:39 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:39 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:40 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
12/19/2023 03:30:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:42 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:44 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/sitemaster HTTP/1.1" 200 -
12/19/2023 03:30:44 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/meters/aggregates HTTP/1.1" 200 -
12/19/2023 03:30:44 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/soe HTTP/1.1" 200 -
12/19/2023 03:30:44 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/system_status/grid_status HTTP/1.1" 200 -
12/19/2023 03:30:44 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/powerwalls HTTP/1.1" 200 -
12/19/2023 03:30:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/auth/toggle/supported HTTP/1.1" 200 -
12/19/2023 03:30:45 PM [proxy] [DEBUG] 127.0.0.1 "GET /api/troubleshooting/problems HTTP/1.1" 200 -
^C CANCEL

12/19/2023 03:30:46 PM [proxy] [INFO] pyPowerwall Proxy Stopped

And here's the web console from the two loops of the same session - note that the proxy log is more than two loops, but I've only include the first two loops below.

Navigated to http://localhost:8675/
grafana-dark.js:26 Applying Grafana customization
app.js:2614 TypeError: Failed to fetch
    at u (:8675/app.js:12793:33)
    at :8675/app.js:12787:27
    at Object.requestSitemasterStatusThunk (:8675/app.js:18486:110)
    at Ye.componentDidMount (:8675/app.js:18225:32)
    at as (:8675/vendor.js:36603:47)
    at pu (:8675/vendor.js:37498:48)
    at t.unstable_runWithPriority (:8675/vendor.js:38508:32)
    at Ho (:8675/vendor.js:34976:37)
    at fu (:8675/vendor.js:37342:24)
    at Zs (:8675/vendor.js:37144:106)
error @ app.js:2614
(anonymous) @ app.js:12789
await in (anonymous) (async)
requestSitemasterStatusThunk @ app.js:18486
componentDidMount @ app.js:18225
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
app.js:2614 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_SITEMASTER_SETTINGS_ERROR'}
error @ app.js:2614
c @ app.js:2639
(anonymous) @ app.js:4795
Promise.catch (async)
(anonymous) @ app.js:4794
(anonymous) @ vendor.js:27696
fetchSitemasterSettings @ app.js:21056
e @ app.js:20498
setTimeout (async)
startQuerying @ app.js:20516
componentDidMount @ app.js:20528
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
app.js:2614 c {message: '', context: '', name: 'RECEIVE_SUPPORTS_TOGGLE_AUTH_ERROR'}
error @ app.js:2614
c @ app.js:2639
d @ app.js:11729
(anonymous) @ vendor.js:9453
(anonymous) @ vendor.js:18467
M @ vendor.js:9365
(anonymous) @ vendor.js:40070
(anonymous) @ vendor.js:27696
dispatch @ vendor.js:9512
(anonymous) @ app.js:3746
await in (anonymous) (async)
(anonymous) @ vendor.js:27696
fetchSupportsToggleAuth @ app.js:18482
componentWillMount @ app.js:18218
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
app.js:2614 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_TEST_ALERTS_ERROR'}
error @ app.js:2614
c @ app.js:2639
(anonymous) @ app.js:11481
Promise.catch (async)
(anonymous) @ app.js:11480
(anonymous) @ vendor.js:27696
fetchAlerts @ app.js:21067
(anonymous) @ app.js:20511
startQuerying @ app.js:20515
componentDidMount @ app.js:20528
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
app.js:2614 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_SOE_ERROR'}
error @ app.js:2614
c @ app.js:2639
(anonymous) @ app.js:6065
Promise.catch (async)
(anonymous) @ app.js:6064
(anonymous) @ vendor.js:27696
getSOE @ app.js:21079
e @ app.js:20500
setTimeout (async)
startQuerying @ app.js:20516
componentDidMount @ app.js:20528
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
app.js:2614 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_SITEMASTER_SETTINGS_ERROR'}
error @ app.js:2614
c @ app.js:2639
(anonymous) @ app.js:4795
Promise.catch (async)
(anonymous) @ app.js:4794
(anonymous) @ vendor.js:27696
fetchSitemasterSettings @ app.js:18484
componentDidMount @ app.js:18223
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
app.js:2614 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_NETWORKS_ERROR'}
error @ app.js:2614
c @ app.js:2639
d @ app.js:11729
(anonymous) @ vendor.js:9453
(anonymous) @ vendor.js:18467
M @ vendor.js:9365
(anonymous) @ vendor.js:40070
(anonymous) @ vendor.js:27696
dispatch @ vendor.js:9512
(anonymous) @ app.js:10646
Promise.catch (async)
(anonymous) @ app.js:10645
(anonymous) @ vendor.js:27696
fetchNetworks @ app.js:21074
(anonymous) @ app.js:20512
startQuerying @ app.js:20515
componentDidMount @ app.js:20528
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
app.js:2614 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_METER_AGGREGATES_ERROR'}
error @ app.js:2614
c @ app.js:2639
(anonymous) @ app.js:10235
await in (anonymous) (async)
(anonymous) @ vendor.js:27696
getMeterAggregates @ app.js:21069
e @ app.js:20499
setTimeout (async)
startQuerying @ app.js:20516
componentDidMount @ app.js:20528
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_CONFIG_INITIALIZED_ERROR'}
error @ app.js:2614
c @ app.js:2639
d @ app.js:11729
(anonymous) @ vendor.js:9453
(anonymous) @ vendor.js:18467
M @ vendor.js:9365
(anonymous) @ vendor.js:40070
(anonymous) @ vendor.js:27696
dispatch @ vendor.js:9512
(anonymous) @ app.js:5362
Promise.catch (async)
(anonymous) @ app.js:5361
(anonymous) @ vendor.js:27696
initializeConfig @ app.js:21024
componentWillMount @ app.js:20525
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
 c {message: 'TypeError: Failed to fetch', context: undefined, name: 'RECEIVE_GRID_STATUS_ERROR'}
error @ app.js:2614
c @ app.js:2639
(anonymous) @ app.js:10465
await in (anonymous) (async)
(anonymous) @ vendor.js:27696
getGridStatus @ app.js:21080
e @ app.js:20501
setTimeout (async)
startQuerying @ app.js:20516
componentDidMount @ app.js:20528
as @ vendor.js:36603
pu @ vendor.js:37498
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
fu @ vendor.js:37342
Zs @ vendor.js:37144
(anonymous) @ vendor.js:35001
t.unstable_runWithPriority @ vendor.js:38508
Ho @ vendor.js:34976
Uo @ vendor.js:34997
Ko @ vendor.js:34989
Js @ vendor.js:36997
enqueueSetState @ vendor.js:35154
g.setState @ vendor.js:32760
(anonymous) @ vendor.js:4126
(anonymous) @ vendor.js:3899
(anonymous) @ vendor.js:3825
(anonymous) @ vendor.js:3434
(anonymous) @ vendor.js:3435
(anonymous) @ vendor.js:3603
(anonymous) @ vendor.js:3614
(anonymous) @ vendor.js:3432
b @ vendor.js:3431
k @ vendor.js:3599
l @ vendor.js:3824
r @ vendor.js:3486
runEnterHooks @ vendor.js:3499
(anonymous) @ vendor.js:3839
r @ vendor.js:3486
runChangeHooks @ vendor.js:3516
c @ vendor.js:3837
(anonymous) @ vendor.js:3814
u @ vendor.js:3416
(anonymous) @ vendor.js:3784
(anonymous) @ vendor.js:3750
(anonymous) @ vendor.js:3712
(anonymous) @ app.js:21721
Promise.then (async)
getIndexRoute @ app.js:21699
e @ vendor.js:3711
P @ vendor.js:3744
(anonymous) @ vendor.js:3783
c @ vendor.js:3420
v @ vendor.js:3423
Y @ vendor.js:3780
u @ vendor.js:3813
r @ vendor.js:3898
listen @ vendor.js:3903
componentWillMount @ vendor.js:4125
ga @ vendor.js:35205
Yi @ vendor.js:35961
Ms @ vendor.js:37719
cu @ vendor.js:37305
su @ vendor.js:37299
Zs @ vendor.js:37137
Js @ vendor.js:36997
Pu @ vendor.js:37987
(anonymous) @ vendor.js:38054
tu @ vendor.js:37161
Fu @ vendor.js:38053
t.render @ vendor.js:38235
ne @ app.js:21970
(anonymous) @ app.js:21977
Promise.then (async)
(anonymous) @ app.js:21975
s @ app.js:25
i @ app.js:14
(anonymous) @ app.js:183
(anonymous) @ app.js:184
Navigated to http://localhost:8675/

I had to a custom throttle (0.1kb/s, 10,000ms lag) to slow it down enough to capture :)

jasonacox commented 6 months ago

This is gold! Thank you @BJReplay !

I'm wondering if some of the base APIs are already being removed. Looking through the logs above, can you pull down the payloads for each of these urls (of course, feel free to obfuscate any sensitive data):

/api/sitemaster /api/auth/toggle/supported /api/status /api/customer/registration /api/site_info/site_name /api/meters/aggregates /api/system_status/soe /api/system_status/grid_status /api/powerwalls /api/troubleshooting/problems /api/system_status/grid_status

Using something like:

curl http://localhost:8675/api/auth/toggle/supported

jasonacox commented 6 months ago

Update: The good news is that I have been able to replicate the "flashing" issue reported by @BJReplay by using the Cloud functions to pull all power data (basically detaching from the Powerwall). Unfortunately, I don't yet know the cause. It appears that the animation is not getting something it wants so it reloads. Ironically, it just about renders with all the correct power data before it crashes and restarts. I suspect one of the errors identified above is the cause... research continues. ;)

BJReplay commented 6 months ago

I'm wondering if some of the base APIs are already being removed. Looking through the logs above, can you pull down the payloads for each of these urls (of course, feel free to obfuscate any sensitive data

Will do. May not be until tomorrow my time.

BJReplay commented 6 months ago

I'm wondering if some of the base APIs are already being removed. Looking through the logs above, can you pull down the payloads for each of these urls (of course, feel free to obfuscate any sensitive data):

All worked with 0.6.2t28. I haven't tried (yet) with 0.6.4t29, just in case the calls are broken in this version of pypowerwall, but it doesn't look like any of the calls below are missing.

/api/sitemaster

{
"status": "StatusUp",
"running": true,
"connected_to_tesla": true,
"power_supply_mode": false,
"can_reboot": "Yes"
}

/api/auth/toggle/supported

{
"toggle_auth_supported": true
}

/api/status

{
"din": "long string of DIN stuff",
"start_time": "2023-12-13 17:35:00 +0800",
"up_time_seconds": "145h4m57.478864105s",
"is_new": false,
"version": "23.36.3 aa269d35",
"git_hash": "aa269d352a70b0e24fd00cc5b01ea0625b0a805b",
"commission_count": 0,
"device_type": "hec",
"teg_type": "unknown",
"sync_type": "v1",
"cellular_disabled": false,
"can_reboot": true
}

/api/customer/registration

{
"privacy_notice": true,
"limited_warranty": true,
"grid_services": true,
"marketing": false,
"registered": true,
"timed_out_registration": false
}

/api/site_info/site_name

{
"site_name": "BJReplay's Powerwall",
"timezone": "Australia/Melbourne"
}

/api/meters/aggregates

{
"site": {
"last_communication_time": "2023-12-19T18:42:09.306301326+11:00",
"instant_power": -46.04999923706055,
"instant_reactive_power": -18.579999923706055,
"instant_apparent_power": 49.65701186034248,
"frequency": 49.95000076293945,
"energy_exported": 8726770.293740146,
"energy_imported": 18201990.861519843,
"instant_average_voltage": 239.16000366210938,
"instant_average_current": 0,
"i_a_current": 0,
"i_b_current": 0,
"i_c_current": 0,
"last_phase_voltage_communication_time": "0001-01-01T00:00:00Z",
"last_phase_power_communication_time": "0001-01-01T00:00:00Z",
"last_phase_energy_communication_time": "0001-01-01T00:00:00Z",
"timeout": 1500000000,
"num_meters_aggregated": 1,
"instant_total_current": 0
},
"battery": {
"last_communication_time": "2023-12-19T18:42:09.212123+11:00",
"instant_power": 340,
"instant_reactive_power": 10,
"instant_apparent_power": 340.14702703389895,
"frequency": 49.959,
"energy_exported": 9965900,
"energy_imported": 11321570,
"instant_average_voltage": 238.9,
"instant_average_current": -7.1000000000000005,
"i_a_current": 0,
"i_b_current": 0,
"i_c_current": 0,
"last_phase_voltage_communication_time": "0001-01-01T00:00:00Z",
"last_phase_power_communication_time": "0001-01-01T00:00:00Z",
"last_phase_energy_communication_time": "0001-01-01T00:00:00Z",
"timeout": 1500000000,
"num_meters_aggregated": 1,
"instant_total_current": -7.1000000000000005
},
"load": {
"last_communication_time": "2023-12-19T18:42:09.203704373+11:00",
"instant_power": 708.988453643589,
"instant_reactive_power": 46.893628689222034,
"instant_apparent_power": 710.5375710063263,
"frequency": 49.95000076293945,
"energy_exported": 0,
"energy_imported": 43065543.74860798,
"instant_average_voltage": 239.16000366210938,
"instant_average_current": 2.9644942414588007,
"i_a_current": 0,
"i_b_current": 0,
"i_c_current": 0,
"last_phase_voltage_communication_time": "0001-01-01T00:00:00Z",
"last_phase_power_communication_time": "0001-01-01T00:00:00Z",
"last_phase_energy_communication_time": "0001-01-01T00:00:00Z",
"timeout": 1500000000,
"instant_total_current": 2.9644942414588007
},
"solar": {
"last_communication_time": "2023-12-19T18:42:09.203704373+11:00",
"instant_power": 390,
"instant_reactive_power": 71.01000213623047,
"instant_apparent_power": 396.41193272073366,
"frequency": 49.95000076293945,
"energy_exported": 35046544.1978051,
"energy_imported": 100551.01697682189,
"instant_average_voltage": 239.10000610351562,
"instant_average_current": 0,
"i_a_current": 0,
"i_b_current": 0,
"i_c_current": 0,
"last_phase_voltage_communication_time": "0001-01-01T00:00:00Z",
"last_phase_power_communication_time": "0001-01-01T00:00:00Z",
"last_phase_energy_communication_time": "0001-01-01T00:00:00Z",
"timeout": 1500000000,
"num_meters_aggregated": 1,
"instant_total_current": 0
}
}

/api/system_status/soe

{
"percentage": 85.33702401436372
}

/api/system_status/grid_status

{
"grid_status": "SystemGridConnected",
"grid_services_active": false
}

/api/powerwalls

{
"enumerating": false,
"updating": false,
"checking_if_offgrid": false,
"running_phase_detection": false,
"phase_detection_last_error": "phase detection not run",
"bubble_shedding": false,
"on_grid_check_error": "run sitemanager flag enabled",
"grid_qualifying": false,
"grid_code_validating": false,
"phase_detection_not_available": true,
"powerwalls": [
{
"Type": "",
"PackagePartNumber": "1092170-03-G",
"PackageSerialNumber": "serial number here",
"type": "ACPW",
"grid_state": "Grid_Uncompliant",
"grid_reconnection_time_seconds": 0,
"under_phase_detection": false,
"updating": false,
"commissioning_diagnostic": {
"name": "Commissioning",
"category": "InternalComms",
"disruptive": false,
"inputs": null,
"checks": [
{
"name": "CAN connectivity",
"status": "fail",
"start_time": "2023-12-19T18:43:39.276171874+11:00",
"end_time": "2023-12-19T18:43:39.276174874+11:00",
"message": "Cannot perform this action with site controller running. From landing page, either \"STOP SYSTEM\" or \"RUN WIZARD\" to proceed.",
"results": {},
"debug": {},
"checks": null
},
{
"name": "Enable switch",
"status": "fail",
"start_time": "2023-12-19T18:43:39.276177207+11:00",
"end_time": "2023-12-19T18:43:39.276179541+11:00",
"message": "Cannot perform this action with site controller running. From landing page, either \"STOP SYSTEM\" or \"RUN WIZARD\" to proceed.",
"results": {},
"debug": {},
"checks": null
},
{
"name": "Internal communications",
"status": "fail",
"start_time": "2023-12-19T18:43:39.276181541+11:00",
"end_time": "2023-12-19T18:43:39.276183541+11:00",
"message": "Cannot perform this action with site controller running. From landing page, either \"STOP SYSTEM\" or \"RUN WIZARD\" to proceed.",
"results": {},
"debug": {},
"checks": null
},
{
"name": "Firmware up-to-date",
"status": "fail",
"start_time": "2023-12-19T18:43:39.276186874+11:00",
"end_time": "2023-12-19T18:43:39.276190541+11:00",
"message": "Cannot perform this action with site controller running. From landing page, either \"STOP SYSTEM\" or \"RUN WIZARD\" to proceed.",
"results": {},
"debug": {},
"checks": null
}
],
"alert": false
},
"update_diagnostic": {
"name": "Firmware Update",
"category": "InternalComms",
"disruptive": true,
"inputs": null,
"checks": [
{
"name": "Powerwall firmware",
"status": "not_run",
"start_time": null,
"end_time": null,
"progress": 0,
"results": null,
"debug": null,
"checks": null
},
{
"name": "Battery firmware",
"status": "not_run",
"start_time": null,
"end_time": null,
"progress": 0,
"results": null,
"debug": null,
"checks": null
},
{
"name": "Inverter firmware",
"status": "not_run",
"start_time": null,
"end_time": null,
"progress": 0,
"results": null,
"debug": null,
"checks": null
},
{
"name": "Grid code",
"status": "not_run",
"start_time": null,
"end_time": null,
"progress": 0,
"results": null,
"debug": null,
"checks": null
}
],
"alert": false
},
"bc_type": null,
"in_config": true
}
],
"gateway_din": "din number here includes serial",
"sync": {
"updating": false,
"commissioning_diagnostic": {
"name": "Commissioning",
"category": "InternalComms",
"disruptive": false,
"inputs": null,
"checks": [
{
"name": "CAN connectivity",
"status": "fail",
"start_time": "2023-12-19T18:43:39.276273541+11:00",
"end_time": "2023-12-19T18:43:39.276276207+11:00",
"message": "Cannot perform this action with site controller running. From landing page, either \"STOP SYSTEM\" or \"RUN WIZARD\" to proceed.",
"results": {},
"debug": {},
"checks": null
},
{
"name": "Firmware up-to-date",
"status": "fail",
"start_time": "2023-12-19T18:43:39.276278541+11:00",
"end_time": "2023-12-19T18:43:39.276280541+11:00",
"message": "Cannot perform this action with site controller running. From landing page, either \"STOP SYSTEM\" or \"RUN WIZARD\" to proceed.",
"results": {},
"debug": {},
"checks": null
}
],
"alert": false
},
"update_diagnostic": {
"name": "Firmware Update",
"category": "InternalComms",
"disruptive": true,
"inputs": null,
"checks": [
{
"name": "Synchronizer firmware",
"status": "not_run",
"start_time": null,
"end_time": null,
"progress": 0,
"results": null,
"debug": null,
"checks": null
},
{
"name": "Islanding configuration",
"status": "not_run",
"start_time": null,
"end_time": null,
"progress": 0,
"results": null,
"debug": null,
"checks": null
},
{
"name": "Grid code",
"status": "not_run",
"start_time": null,
"end_time": null,
"progress": 0,
"results": null,
"debug": null,
"checks": null
}
],
"alert": false
}
},
"msa": null,
"states": null
}

/api/troubleshooting/problems

{
"problems": []
}

/api/system_status/grid_status


{
"grid_status": "SystemGridConnected",
"grid_services_active": false
}
jasonacox commented 6 months ago

I think I found it... In the /api/status call:

            {
                "din": "1232100-00-E--TG123456789E4G",
                "start_time": "2023-10-13 04:01:45 +0800",
                "up_time_seconds": "1627h22m56.671597308s",
                "is_new": false,
                "version": "23.28.2 27626f98",
                "git_hash": "27626f98a66cad5c665bbe1d4d788cdb3e94fd33",
                "commission_count": 0,
                "device_type": "teg",
                "teg_type": "unknown",
                "sync_type": "v2.1",
                "cellular_disabled": false,
                "can_reboot": true
            }

The git_hash also appear in the index.html. If they do not match, it goes into flash/reload mode. I speculate that they want to ensure the UI matches the firmware. The reason the same thing happened on the cloud-only version is because I zero out the hash in the simulated /api/status call since the cloud payloads don't have it.

I think I can fix this by having pypowerwall proxy generate a index.html using the hash value from the Powerwall (/api/status).

jasonacox commented 6 months ago

I updated the proxy to generate an index.html with correct version and git_hash values. My brief testing in cloud-only mode now works. I pushed it to teslacloud branch.

@mcbirse test if you can.

@BJReplay - I pushed a new container: jasonacox/pypowerwall:0.7.0t31 - test that one if you can.

mcbirse commented 6 months ago

My Powerwall Firmware just updated 🤣 So I have the flashing animation now too with latest pypowerwall... at least that means I can help with testing on this FW version!

EvnTime: 2023-12-20 18:54:29
Message: Firmware version has been updated
Details: Version changed from 23.28.2 27626f98 to 23.36.3 aa269d35
Up time: 52.021884767s
jasonacox commented 6 months ago

Well then.. you can try the jasonacox/pypowerwall:0.7.0t31 container too!

mcbirse commented 6 months ago

Well then.. you can try the jasonacox/pypowerwall:0.7.0t31 container too!

Pulled, tested, working!!

e5472b306363   jasonacox/pypowerwall:0.7.0t31   "python3 server.py"      12 seconds ago   Up 6 seconds    0.0.0.0:8675->8675/tcp, :::8675->8675/tcp             pypowerwall

image

mcbirse commented 6 months ago

That's awesome Jason. Will test later with the cloud only setup... supposed to be cooking dinner right now and going to get in trouble.

jasonacox commented 6 months ago

Awesome!!! Don't get into trouble! 😂 Thanks for testing @mcbirse ... let me know how the cloud part works too.. no rush.

If it works, I want to do a quick review of all the changes to make sure I didn't break anything else. I'll push a clean PR to pypowerwall tomorrow and update this PR to pull it in.

BJReplay commented 6 months ago

@BJReplay - I pushed a new container: jasonacox/pypowerwall:0.7.0t31 - test that one if you can.

Sorry, I've been neck deep in json trying to see if I can bulk edit entries in bitwarden self hosted...

Yup, working!

You may not be able to see this in the screenshot, but there's an interesting difference in darkness between the central portion of the powerwall display and the surrounding grafana dashboard background. The powerwall display is slightly darker.

image

mcbirse commented 6 months ago

@BJReplay - thanks for highlighting the background issue. I'm not absolutely sure this is the cause, but it could be... (and regardless this a bug I found when testing).

I was looking into why that may happen and noticed the latest change which incorporates serving up "index.html" from the local filesystem has the "style" (background colour) hardcoded in the html file (e.g. grafana-dark.js) and does not honour the PW_STYLE setting from pypowerwall.env.

Very easy fix - I will push a commit for Jason to update.

jasonacox commented 6 months ago

Good catch, you two! Ok, the new container is uploaded and ready. I rolled back the name to patch the current pypowerwall library. I still want to test the "cloud" parts of the 0.7.0 branch before rolling it out.

For this PR, please check this container: jasonacox/pypowerwall:0.6.4t32

mcbirse commented 6 months ago

For this PR, please check this container: jasonacox/pypowerwall:0.6.4t32

I have tested this (non-cloud version) and all working well for me. Powerflow Animation working from local assets with my PW FW version 23.36.3 and loads very fast.

BJReplay commented 6 months ago

For this PR, please check this container: jasonacox/pypowerwall:0.6.4t32

Nice. I'll look at it tomorrow. My work for the last couple of days has been to write a utility that update URLs in bitwarden or vaultwarden where they are stored as http and turns them into https. Ought to be simple, but isn't. It works; a little tweaking, and I'll publish it. Probably not much use (other that some rough pointers) for other password managers, because their APIs are all so different.

mcbirse commented 6 months ago

My work for the last couple of days has been to write a utility that update URLs in bitwarden or vaultwarden where they are stored as http and turns them into https. Ought to be simple, but isn't. It works; a little tweaking, and I'll publish it.

Cool - I'd be interested in checking that out as I use Bitwarden as well.

BJReplay commented 6 months ago

For this PR, please check this container: jasonacox/pypowerwall:0.6.4t32

Working here too, thanks. Very quick to update; I should script it, but even without a script, it takes 1 minute to swap versions - bsaed on the time I need to backfill missing readings :) - and most of that is waiting for influxdb to start.

jasonacox commented 6 months ago

Thank you, both!! 🙏

BJReplay commented 6 months ago

Cool - I'd be interested in checking that out as I use Bitwarden as well.

@mcbirse https://github.com/BJReplay/bwfixhttp