gitextract_ladqec0m/ ├── .flake8 ├── .github/ │ └── workflows/ │ ├── check-protobuf.yml │ ├── jekyll-gh-pages.yml │ ├── pwsim-docker.yml │ ├── pylint.yml │ ├── simtest.yml │ └── test.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .pylintrc ├── API.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── RELEASE.md ├── _config.yml ├── api_test.py ├── dashboard/ │ └── README.md ├── docs/ │ ├── README.md │ ├── api.txt │ ├── reference/ │ │ ├── alerts.md │ │ ├── devices.md │ │ └── firmware-history.md │ ├── vitals-example-failed-pw.json │ ├── vitals-example-latest.json │ └── vitals-example.json ├── example-cloud-mode.py ├── example.py ├── examples/ │ ├── network_route.py │ ├── vitals/ │ │ ├── README.md │ │ ├── pull_vitals.py │ │ ├── tesla.proto │ │ └── tesla_pb2.py │ └── vitals.py ├── proxy/ │ ├── .dockerignore │ ├── API.md │ ├── Dockerfile │ ├── Dockerfile.beta │ ├── HELP.md │ ├── README.md │ ├── RELEASE.md │ ├── __init__.py │ ├── beta.txt │ ├── localhost.pem │ ├── perf_test.py │ ├── requirements.txt │ ├── server.py │ ├── tests/ │ │ ├── __init__.py │ │ ├── test_api_endpoints.py │ │ └── test_csv_endpoints.py │ ├── transform.py │ ├── upload-beta.sh │ └── web/ │ ├── LICENSE │ ├── bogus/ │ │ ├── api.auth.toggle.supported.json │ │ ├── api.customer.json │ │ ├── api.customer.registration.json │ │ ├── api.installer.json │ │ ├── api.meters.aggregates.json │ │ ├── api.meters.json │ │ ├── api.meters.readings.json │ │ ├── api.meters.site.json │ │ ├── api.meters.solar.json │ │ ├── api.networks.json │ │ ├── api.operation.json │ │ ├── api.powerwalls.json │ │ ├── api.site_info.grid_codes.json │ │ ├── api.site_info.json │ │ ├── api.site_info.site_name.json │ │ ├── api.sitemaster.json │ │ ├── api.solars.brands.json │ │ ├── api.solars.json │ │ ├── api.status.json │ │ ├── api.synchrometer.ct_voltage_references.json │ │ ├── api.system.networks.json │ │ ├── api.system.update.status.json │ │ ├── api.system_status.grid_faults.json │ │ ├── api.system_status.grid_status.json │ │ ├── api.system_status.grid_status.json-offline │ │ ├── api.system_status.grid_status.json-transition │ │ ├── api.system_status.json │ │ ├── api.system_status.soe.json │ │ └── api.troubleshooting.problems.json │ ├── example.html │ ├── index.html │ └── viz-static/ │ ├── 1.17c71172308436a079d1.js │ ├── 124f233cfa9945f861dcaca7acedd308.otf │ ├── 2bf15a1686c7a1bf7b577337a07d7049.otf │ ├── 39.17c71172308436a079d1.js │ ├── 40.17c71172308436a079d1.js │ ├── 653969a51632a4df33358a39d7012f79.otf │ ├── 722c5f898bbca8b2eb3fce0287688326.otf │ ├── 86a6894da889a3db781418529403290f.otf │ ├── 89aec2cc0b804667e95b1adc02e1ac4a.otf │ ├── a3b0d611359e6fa8356cd88aa9035268.otf │ ├── ac2944015a17576924af7c56d88751cb.otf │ ├── app.css │ ├── app.js │ ├── b8d72cb0ef934ba1fe847c692d9dfed1.otf │ ├── bceda3fae660177ae570735feec62811.otf │ ├── befdfda70624c396169873b05de57f8a.otf │ ├── black.js │ ├── clear.js │ ├── d859fee2eba0e67c75c4c92e719d0630.otf │ ├── dakboard.js │ ├── e19c20e966bde501f94e41cd0322dbe8.otf │ ├── ec6b35b07448e1624cb09323b5fb6e32.otf │ ├── ec89c09b066f57efc7687540c998845b.otf │ ├── eca1317ee8a99162d0d0e2df77330cec.otf │ ├── grafana-dark.js │ ├── grafana.js │ ├── solar.js │ ├── vendor.js │ └── white.js ├── pwsimulator/ │ ├── Dockerfile │ ├── README.md │ ├── control.html │ ├── localhost.pem │ ├── stub.py │ ├── tedapi_pb2.py │ ├── test.py │ ├── test.sh │ └── test_tedapi.py ├── pypowerwall/ │ ├── __init__.py │ ├── __main__.py │ ├── api_lock.py │ ├── cloud/ │ │ ├── __init__.py │ │ ├── decorators.py │ │ ├── exceptions.py │ │ ├── mock_data.py │ │ ├── pypowerwall_cloud.py │ │ ├── stubs.py │ │ └── teslapy/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __init__.py │ │ ├── endpoints.json │ │ ├── option_codes.json │ │ └── requirements.txt │ ├── exceptions.py │ ├── fleetapi/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── decorators.py │ │ ├── exceptions.py │ │ ├── fleetapi.py │ │ ├── mock_data.py │ │ ├── pypowerwall_fleetapi.py │ │ └── stubs.py │ ├── local/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── pypowerwall_local.py │ │ └── tesla_pb2.py │ ├── pypowerwall_base.py │ ├── regex.py │ ├── scan.py │ ├── tedapi/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── decorators.py │ │ ├── exceptions.py │ │ ├── mock_data.py │ │ ├── pypowerwall_tedapi.py │ │ ├── stubs.py │ │ ├── tedapi.proto │ │ ├── tedapi_combined.proto │ │ ├── tedapi_combined_pb2.py │ │ ├── tedapi_pb2.py │ │ └── tedapi_v1r.py │ ├── tesla_auth.py │ ├── tests/ │ │ ├── __init__.py │ │ ├── tedapi/ │ │ │ ├── __init__.py │ │ │ └── test_init.py │ │ ├── test_live_modes.py │ │ ├── test_mode_selection.py │ │ ├── test_powerwall.py │ │ └── unit/ │ │ ├── __init__.py │ │ ├── test_cli_tedapi.py │ │ ├── test_parse_version.py │ │ └── test_powerwall_core.py │ └── v1r_register.py ├── pytest.ini ├── requirements.txt ├── setup.py ├── tesla.proto ├── test.py ├── test_requirements.txt ├── tools/ │ ├── README.md │ ├── cron.sh │ ├── fleetapi/ │ │ ├── README.md │ │ ├── create_pem_key.py │ │ ├── fleetapi.py │ │ ├── index.html │ │ ├── live.py │ │ ├── setup.py │ │ └── test.py │ ├── gen_proto.sh │ ├── nws.py │ ├── requirements-tools.txt │ ├── server/ │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── app/ │ │ │ ├── __init__.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── aggregates.py │ │ │ │ ├── gateways.py │ │ │ │ ├── legacy.py │ │ │ │ └── websockets.py │ │ │ ├── config.py │ │ │ ├── core/ │ │ │ │ ├── __init__.py │ │ │ │ └── gateway_manager.py │ │ │ ├── main.py │ │ │ ├── models/ │ │ │ │ ├── __init__.py │ │ │ │ └── gateway.py │ │ │ ├── static/ │ │ │ │ ├── example.html │ │ │ │ ├── index.html │ │ │ │ └── viz-static/ │ │ │ │ ├── 1.17c71172308436a079d1.js │ │ │ │ ├── 124f233cfa9945f861dcaca7acedd308.otf │ │ │ │ ├── 2bf15a1686c7a1bf7b577337a07d7049.otf │ │ │ │ ├── 39.17c71172308436a079d1.js │ │ │ │ ├── 40.17c71172308436a079d1.js │ │ │ │ ├── 653969a51632a4df33358a39d7012f79.otf │ │ │ │ ├── 722c5f898bbca8b2eb3fce0287688326.otf │ │ │ │ ├── 86a6894da889a3db781418529403290f.otf │ │ │ │ ├── 89aec2cc0b804667e95b1adc02e1ac4a.otf │ │ │ │ ├── a3b0d611359e6fa8356cd88aa9035268.otf │ │ │ │ ├── ac2944015a17576924af7c56d88751cb.otf │ │ │ │ ├── app.css │ │ │ │ ├── app.js │ │ │ │ ├── b8d72cb0ef934ba1fe847c692d9dfed1.otf │ │ │ │ ├── bceda3fae660177ae570735feec62811.otf │ │ │ │ ├── befdfda70624c396169873b05de57f8a.otf │ │ │ │ ├── black.js │ │ │ │ ├── clear.js │ │ │ │ ├── d859fee2eba0e67c75c4c92e719d0630.otf │ │ │ │ ├── dakboard.js │ │ │ │ ├── e19c20e966bde501f94e41cd0322dbe8.otf │ │ │ │ ├── ec6b35b07448e1624cb09323b5fb6e32.otf │ │ │ │ ├── ec89c09b066f57efc7687540c998845b.otf │ │ │ │ ├── eca1317ee8a99162d0d0e2df77330cec.otf │ │ │ │ ├── grafana-dark.js │ │ │ │ ├── grafana.js │ │ │ │ ├── solar.js │ │ │ │ ├── vendor.js │ │ │ │ └── white.js │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ └── transform.py │ │ ├── docker-compose.yml │ │ ├── pytest.ini │ │ ├── requirements-dev.txt │ │ ├── requirements.txt │ │ ├── run.sh │ │ └── tests/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── test_api_aggregates.py │ │ ├── test_api_gateways.py │ │ ├── test_api_legacy.py │ │ ├── test_basic.py │ │ ├── test_config.py │ │ ├── test_edge_cases.py │ │ └── test_gateway_manager.py │ ├── set-mode.py │ ├── set-reserve.py │ ├── tedapi/ │ │ ├── ComponentsQuery.py │ │ ├── PW3_Strings.py │ │ ├── PW3_Vitals.py │ │ ├── README.md │ │ ├── create_request.py │ │ ├── decode.py │ │ ├── status.py │ │ ├── tedapi.proto │ │ ├── tedapi_orig.py │ │ ├── tedapi_pb2.py │ │ ├── tedapi_test.py │ │ └── web.py │ ├── tedapi-lan/ │ │ ├── README.md │ │ ├── lan_tedapi.py │ │ ├── requirements.txt │ │ ├── tedapi_combined.proto │ │ └── tedapi_combined_pb2.py │ └── tessolarcharge.py ├── v1r_register.py └── web/ └── index.html