Skip to content

Commit

Permalink
Merge pull request #426 from jasonacox/v4.0.1
Browse files Browse the repository at this point in the history
v4.0.1 - Powerwall Voltages
  • Loading branch information
mcbirse authored Jan 28, 2024
2 parents 4b5d0ba + 61f9518 commit 7dd1297
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 11 deletions.
6 changes: 5 additions & 1 deletion RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# RELEASE NOTES

## v4.0.1 - Powerwall Voltages

* Added CQs and updated `dashboard.json` to include voltages from battery block vitals by @mcbirse in https://github.com/jasonacox/Powerwall-Dashboard/pull/426. This addresses users no longer seeing Powerwall voltages in the dashboard with firmware 23.44.0 or later - See related https://github.com/jasonacox/Powerwall-Dashboard/discussions/109#discussioncomment-8263020

## v4.0.0 - Cloud Mode Support

* Using pyPowerwall for both Local Access and Tesla Cloud mode by @jasonacox and @mcbirse in https://github.com/jasonacox/Powerwall-Dashboard/pull/414 (replaces Tesla-history service, but the Tesla-history tool will continue to be used to fill in historic data or gaps) - See related https://github.com/jasonacox/pypowerwall/pull/59
Expand All @@ -10,7 +14,7 @@

## v3.0.8 - Critical Bug Fix

* Fixes bug in pypowerwall proxy container version before `jasonacox/pypowerwall:0.7.6t39` related to API calls and 404 HTTP status codes handling.CPowerwall Firmware version 23.44.0 has eliminated /api/devices/vitals resulting in a 404 response from the Powerwall Gateway (TEG) when this is requested. There was a bug in the pypowerwall code that will treat this 404 like an authentication failure which will result in attempts to log in over and over, eventually hitting the rate limit. This is especially impactful for those using the proxy for things like Powerwall-Dashboard as the rate limit will prohibit other data gathering.
* Fixes bug in pypowerwall proxy container version before `jasonacox/pypowerwall:0.7.6t39` related to API calls and 404 HTTP status codes handling. Powerwall Firmware version 23.44.0 has eliminated /api/devices/vitals resulting in a 404 response from the Powerwall Gateway (TEG) when this is requested. There was a bug in the pypowerwall code that will treat this 404 like an authentication failure which will result in attempts to log in over and over, eventually hitting the rate limit. This is especially impactful for those using the proxy for things like Powerwall-Dashboard as the rate limit will prohibit other data gathering.

## v3.0.7 - InfluxDB Environment Variables

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.0.0
4.0.1
157 changes: 149 additions & 8 deletions dashboards/dashboard.json
Original file line number Diff line number Diff line change
Expand Up @@ -9143,16 +9143,13 @@
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Solar Energy"
"id": "byRegexp",
"options": ".*[ ](L[1-2])\\b"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "yellow",
"mode": "fixed"
}
"id": "custom.axisPlacement",
"value": "right"
}
]
}
Expand Down Expand Up @@ -11026,6 +11023,150 @@
]
],
"tags": []
},
{
"alias": "PW1",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW1_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AQ",
"resultFormat": "time_series"
},
{
"alias": "PW2",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW2_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AR",
"resultFormat": "time_series"
},
{
"alias": "PW3",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW3_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AS",
"resultFormat": "time_series"
},
{
"alias": "PW4",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW4_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AT",
"resultFormat": "time_series"
},
{
"alias": "PW5",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW5_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AU",
"resultFormat": "time_series"
},
{
"alias": "PW6",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW6_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AV",
"resultFormat": "time_series"
},
{
"alias": "PW7",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW7_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AW",
"resultFormat": "time_series"
},
{
"alias": "PW8",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW8_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AX",
"resultFormat": "time_series"
},
{
"alias": "PW9",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW9_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AY",
"resultFormat": "time_series"
},
{
"alias": "PW10",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW10_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "AZ",
"resultFormat": "time_series"
},
{
"alias": "PW11",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW11_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "BA",
"resultFormat": "time_series"
},
{
"alias": "PW12",
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "SELECT mean(\"PW12_v_out\") FROM \"vitals\".\"http\" WHERE $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "BB",
"resultFormat": "time_series"
}
],
"title": "Voltages",
Expand Down Expand Up @@ -12156,6 +12297,6 @@
"timezone": "${VAR_TZ}",
"title": "Powerwall - Power Flow",
"uid": "RSabAvRRzZ",
"version": 51,
"version": 52,
"weekStart": ""
}
5 changes: 5 additions & 0 deletions influxdb/influxdb.sql
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ CREATE CONTINUOUS QUERY cq_vitals5 ON powerwall BEGIN SELECT mean(PW1_PINV_VSpli
CREATE CONTINUOUS QUERY cq_vitals5b ON powerwall BEGIN SELECT mean(PW7_PINV_VSplit2) AS PW7_PINV_VSplit2, mean(PW8_PINV_VSplit2) AS PW8_PINV_VSplit2, mean(PW9_PINV_VSplit2) AS PW9_PINV_VSplit2, mean(PW10_PINV_VSplit2) AS PW10_PINV_VSplit2, mean(PW11_PINV_VSplit2) AS PW11_PINV_VSplit2, mean(PW12_PINV_VSplit2) AS PW12_PINV_VSplit2 INTO powerwall.vitals.:MEASUREMENT FROM (SELECT PW7_PINV_VSplit2, PW8_PINV_VSplit2, PW9_PINV_VSplit2, PW10_PINV_VSplit2, PW11_PINV_VSplit2, PW12_PINV_VSplit2 FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_vitals6 ON powerwall BEGIN SELECT mean(METER_Z_VL1G) AS METER_Z_VL1G, mean(METER_Z_VL2G) AS METER_Z_VL2G, mean(METER_Z_CTA_I) AS METER_Z_CTA_I, mean(METER_Z_CTB_I) AS METER_Z_CTB_I INTO powerwall.vitals.:MEASUREMENT FROM (SELECT METER_Z_VL1G, METER_Z_VL2G, METER_Z_CTA_I, METER_Z_CTB_I FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_vitals7 ON powerwall BEGIN SELECT mean(ISLAND_VL1N_Main) AS ISLAND_VL1N_Main, mean(ISLAND_VL2N_Main) AS ISLAND_VL2N_Main, mean(ISLAND_VL3N_Main) AS ISLAND_VL3N_Main INTO powerwall.vitals.:MEASUREMENT FROM (SELECT ISLAND_VL1N_Main, ISLAND_VL2N_Main, ISLAND_VL3N_Main FROM raw.http) GROUP BY time(15s), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_vitals8 ON powerwall BEGIN SELECT mean(PW1_v_out) AS PW1_v_out, mean(PW2_v_out) AS PW2_v_out, mean(PW3_v_out) AS PW3_v_out, mean(PW4_v_out) AS PW4_v_out, mean(PW5_v_out) AS PW5_v_out, mean(PW6_v_out) AS PW6_v_out, mean(PW7_v_out) AS PW7_v_out, mean(PW8_v_out) AS PW8_v_out, mean(PW9_v_out) AS PW9_v_out, mean(PW10_v_out) AS PW10_v_out, mean(PW11_v_out) AS PW11_v_out, mean(PW12_v_out) AS PW12_v_out INTO powerwall.vitals.:MEASUREMENT FROM (SELECT PW1_v_out, PW2_v_out, PW3_v_out, PW4_v_out, PW5_v_out, PW6_v_out, PW7_v_out, PW8_v_out, PW9_v_out, PW10_v_out, PW11_v_out, PW12_v_out FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_vitals9 ON powerwall BEGIN SELECT mean(PW1_f_out) AS PW1_f_out, mean(PW2_f_out) AS PW2_f_out, mean(PW3_f_out) AS PW3_f_out, mean(PW4_f_out) AS PW4_f_out, mean(PW5_f_out) AS PW5_f_out, mean(PW6_f_out) AS PW6_f_out, mean(PW7_f_out) AS PW7_f_out, mean(PW8_f_out) AS PW8_f_out, mean(PW9_f_out) AS PW9_f_out, mean(PW10_f_out) AS PW10_f_out, mean(PW11_f_out) AS PW11_f_out, mean(PW12_f_out) AS PW12_f_out INTO powerwall.vitals.:MEASUREMENT FROM (SELECT PW1_f_out, PW2_f_out, PW3_f_out, PW4_f_out, PW5_f_out, PW6_f_out, PW7_f_out, PW8_f_out, PW9_f_out, PW10_f_out, PW11_f_out, PW12_f_out FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_vitals10 ON powerwall BEGIN SELECT mean(PW1_i_out) AS PW1_i_out, mean(PW2_i_out) AS PW2_i_out, mean(PW3_i_out) AS PW3_i_out, mean(PW4_i_out) AS PW4_i_out, mean(PW5_i_out) AS PW5_i_out, mean(PW6_i_out) AS PW6_i_out, mean(PW7_i_out) AS PW7_i_out, mean(PW8_i_out) AS PW8_i_out, mean(PW9_i_out) AS PW9_i_out, mean(PW10_i_out) AS PW10_i_out, mean(PW11_i_out) AS PW11_i_out, mean(PW12_i_out) AS PW12_i_out INTO powerwall.vitals.:MEASUREMENT FROM (SELECT PW1_i_out, PW2_i_out, PW3_i_out, PW4_i_out, PW5_i_out, PW6_i_out, PW7_i_out, PW8_i_out, PW9_i_out, PW10_i_out, PW11_i_out, PW12_i_out FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_vitals11 ON powerwall BEGIN SELECT mean(PW1_p_out) AS PW1_p_out, mean(PW2_p_out) AS PW2_p_out, mean(PW3_p_out) AS PW3_p_out, mean(PW4_p_out) AS PW4_p_out, mean(PW5_p_out) AS PW5_p_out, mean(PW6_p_out) AS PW6_p_out, mean(PW7_p_out) AS PW7_p_out, mean(PW8_p_out) AS PW8_p_out, mean(PW9_p_out) AS PW9_p_out, mean(PW10_p_out) AS PW10_p_out, mean(PW11_p_out) AS PW11_p_out, mean(PW12_p_out) AS PW12_p_out INTO powerwall.vitals.:MEASUREMENT FROM (SELECT PW1_p_out, PW2_p_out, PW3_p_out, PW4_p_out, PW5_p_out, PW6_p_out, PW7_p_out, PW8_p_out, PW9_p_out, PW10_p_out, PW11_p_out, PW12_p_out FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_vitals12 ON powerwall BEGIN SELECT mean(PW1_q_out) AS PW1_q_out, mean(PW2_q_out) AS PW2_q_out, mean(PW3_q_out) AS PW3_q_out, mean(PW4_q_out) AS PW4_q_out, mean(PW5_q_out) AS PW5_q_out, mean(PW6_q_out) AS PW6_q_out, mean(PW7_q_out) AS PW7_q_out, mean(PW8_q_out) AS PW8_q_out, mean(PW9_q_out) AS PW9_q_out, mean(PW10_q_out) AS PW10_q_out, mean(PW11_q_out) AS PW11_q_out, mean(PW12_q_out) AS PW12_q_out INTO powerwall.vitals.:MEASUREMENT FROM (SELECT PW1_q_out, PW2_q_out, PW3_q_out, PW4_q_out, PW5_q_out, PW6_q_out, PW7_q_out, PW8_q_out, PW9_q_out, PW10_q_out, PW11_q_out, PW12_q_out FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_grid ON powerwall BEGIN SELECT min(grid_status) AS grid_status INTO powerwall.grid.:MEASUREMENT FROM (SELECT grid_status FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_pod1 ON powerwall BEGIN SELECT mean(PW1_POD_nom_energy_remaining) AS PW1_POD_nom_energy_remaining, mean(PW2_POD_nom_energy_remaining) AS PW2_POD_nom_energy_remaining, mean(PW3_POD_nom_energy_remaining) AS PW3_POD_nom_energy_remaining, mean(PW4_POD_nom_energy_remaining) AS PW4_POD_nom_energy_remaining, mean(PW5_POD_nom_energy_remaining) AS PW5_POD_nom_energy_remaining, mean(PW6_POD_nom_energy_remaining) AS PW6_POD_nom_energy_remaining INTO powerwall.pod.:MEASUREMENT FROM (SELECT PW1_POD_nom_energy_remaining, PW2_POD_nom_energy_remaining, PW3_POD_nom_energy_remaining, PW4_POD_nom_energy_remaining, PW5_POD_nom_energy_remaining, PW6_POD_nom_energy_remaining FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
CREATE CONTINUOUS QUERY cq_pod1b ON powerwall BEGIN SELECT mean(PW7_POD_nom_energy_remaining) AS PW7_POD_nom_energy_remaining, mean(PW8_POD_nom_energy_remaining) AS PW8_POD_nom_energy_remaining, mean(PW9_POD_nom_energy_remaining) AS PW9_POD_nom_energy_remaining, mean(PW10_POD_nom_energy_remaining) AS PW10_POD_nom_energy_remaining, mean(PW11_POD_nom_energy_remaining) AS PW11_POD_nom_energy_remaining, mean(PW12_POD_nom_energy_remaining) AS PW12_POD_nom_energy_remaining INTO powerwall.pod.:MEASUREMENT FROM (SELECT PW7_POD_nom_energy_remaining, PW8_POD_nom_energy_remaining, PW9_POD_nom_energy_remaining, PW10_POD_nom_energy_remaining, PW11_POD_nom_energy_remaining, PW12_POD_nom_energy_remaining FROM raw.http) GROUP BY time(1m), month, year fill(linear) END
Expand Down
2 changes: 1 addition & 1 deletion upgrade.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
set -e

# Set Globals
VERSION="4.0.0"
VERSION="4.0.1"
CURRENT="Unknown"
COMPOSE_ENV_FILE="compose.env"
INFLUXDB_ENV_FILE="influxdb.env"
Expand Down

0 comments on commit 7dd1297

Please sign in to comment.