Skip to content

SCHibbard/Powerwall-Dashboard

Repository files navigation

Powerwall-Dashboard

Monitoring Dashboard for the Tesla Powerwall using Grafana, InfluxDB and Telegraf.

Dashboard Monthly Powerwall+

This is based on the great work by mihailescu2m but has been modified to use pypowerwall as a proxy to the Powerwall and includes solar String, Inverter and Powerwall Temperature graphs for Powerwall+ systems.

Requirements

The host system will require:

  • docker
  • docker-compose
  • You should not need to run sudo to install this tool. See Docker Errors below for help.

Setup

Clone this repo on the host that will run the dashboard:

    git clone https://github.com/jasonacox/Powerwall-Dashboard.git

Option 1 - Quick Start

Run the interactive setup script that will ask you for your Powerwall details and Time Zone data.

    ./setup.sh

Jump to the Grafana Setup below to complete the setup.

Option 2 - Manual Install

If you prefer, you can perform the same steps that setup.sh performs.

You will want to set your local timezone by editing powerwall.yml, influxdb.sql and dashboard.json or you can use this handy tz.sh update script. A list of timezones is available here.

  # Replace with your timezone
  bash tz.sh "America/Los_Angeles"

Docker Containers

  • Edit powerwall.yml and look for the section under pypowerall and update the following details for your Powerwall:

      PW_PASSWORD: "password"
      PW_EMAIL: "email@example.com"
      PW_HOST: "192.168.91.1"
      PW_TIMEZONE: "America/Los_Angeles"
      PW_DEBUG: "yes"
    
  • Start the docker containers

      docker-compose -f powerwall.yml up -d

InfluxDB

  • Connect to the Influx database to import setup commands:

      docker exec -it influxdb influx -import -path=/var/lib/influxdb/influxdb.sql

Note: the influxdb.sql file is set to use America/Los_Angeles as timezone. Use the tz.sh script or manually update the database commands above to replace America/Los_Angeles with your own timezone.

Grafana Setup

  • Open up Grafana in a browser at http://<server ip>:9000 and login with admin/admin

  • From Configuration\Data Sources add InfluxDB database with:

    • Name: InfluxDB
    • URL: http://influxdb:8086
    • Database: powerwall
    • Min time interval: 5s
    • Click "Save & test" button
  • From Configuration\Data Sources add Sun and Moon database with:

    • Name: Sun and Moon
    • Enter your latitude and longitude. You can use this web page to find your GPS location if you don't know).
    • Click "Save & test" button
  • From Dashboard\Manage (or Dashboard\Browse), select Import, and upload dashboard.json

Notes

  • The database queries and dashboard are set to use America/Los_Angeles as the timezone. Remember to edit the database commands influxdb.sql, powerwall.yml, and dashboard.json to replace America/Los_Angeles with your own timezone.

  • InfluxDB does not run reliably on older models of Raspberry Pi, resulting in the Docker container terminating with error 139.

Troubleshooting Tips and Tricks

Check the logs of the services using:

  docker logs -f pypowerwall
  docker logs -f telegraf
  docker logs -f influxdb
  docker logs -f grafana

Missing String data?

  • String data only shows up for Tesla inverters as part of Powerwall+ systems. Unfortunately, non-Tesla inverter data is not available via the Tesla API. If you find a way to pull this data, please submit an Issue or Pull Request to get it added.
  • The default dashboard and InfluxDB setup supports up to 4 Tesla Powerwall+ inverters. Support for more can be added by editing the dashboard.json and influxdb.sql files. Open an Issue and we can help (see #2).

Docker Errors

If you are getting permission errors running docker, or an error that it isn't installed:

  • Ensure docker is installed for your OS (run docker version to test)
  • If you see permission denied, add your user to the docker group and reboot your system:
    # Add your user to docker group
    sudo usermod -aG docker $USER
  • If you can't access the dashboard after a reboot, that means that docker was not set to start on reboot. On many OS distributions you can set it to start on boot with:
    # Set docker to start on boot
    sudo systemctl enable docker.service
    sudo systemctl enable containerd.service
  • See Docker install here for more information.

Tips and Tricks

Since pyPowerwall proxy is part of this dashboard stack, you can query it to get raw data (read only) from the Powerwall API. This includes some aggregate functions you might find useful for other projects. I use this for ESP32 driven display for example. Replace localhost with the address of the system running the dashboard:

Data Retention and Backups InfluxDB is configured to use a 25-year retention policy (see influxdb.sql). It uses continuous queries to downsample Powerwall data and preserve disk space. However, this does not safeguard the data from accidental deletion or corruption. It is recommend that you set up a backup plan to snapshot the data for disaster recovery. See backups for some suggestions.

Credits

About

TEDAPI network route script

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 56.5%
  • Shell 27.2%
  • SQL 12.2%
  • FLUX 2.6%
  • HTML 1.2%
  • Dockerfile 0.3%