Last January, I had some solar panels installed. The inverter I chose was a Fronius Primo, which is a relatively well thought of piece of equipment.
It comes with access to Solar.Web, which is Fronius’ online portal. Using this, you can get realtime access to your power generation, and hourly updated energy generation for the current day. They also have an Apple Watch app (and iPhone, naturally).
Additionally, I configured PVOutput, which gives me generation stats with a five minute resolution.
Shortly after, I decided to have a Fronius Smart Meter installed, which gives me realtime access to feed-in and feed-out data. This matches up fairly well with the SA Power Networks smart meter data: which is only available a day or so after the fact. I wish I’d had this installed from day one.
One of the key things I wanted to be able to do was have an easily readable display that shows how much power we are generating (and how much energy we have generated today), but also the current consumption, and the feed in or out right now.
After a bit of work, I came up with a (what I think is) really nice UI. I wrote it using Elixir: mainly because I wanted to write something using Phoenix LiveView. It’s actually a bit too much like Rails for me to want to use it frequently, but I do wish there was something a bit like it for Django.
Anyway, enough of the technology choices, let’s look at the dashboard:
The data is updated every second; and at night time, it goes into a dark mode:
Like most of my side projects, this is freely available. You can install this now on any device that runs Docker, as long as it’s
arm. I’ve built it on a Raspberry Pi 3B+, but I think it should also work on a Raspberry Pi Zero.
$ docker run -it -p 4000:4000 \ --restart unless-stopped \ --name fronius-dashboard \ --env INVERTER=<ip-address-or-hostname> \ schinckel/fronius-dashboard:latest
This should download the latest version, and start it up. You will need to supply your own inverter’s IP address or hostname: but if you have
fronius.lan as the hostname, then you can omit that line.
To make it available outside of your network, you’ll need to forward something to port 4000 of the device that is running this service. I have the aforementioned rPi3B+ running this, an MQTT broker and Node-RED, and my MQTT2HomeKit bridge, and expose only the
Fronius Dashboard service to the internet.
It’s also designed to work well as a home screen app on iOS, and possibly Android devices.
There is no warranty, implied or otherwise as to the fitness of this to your purposes, but if you are nice, I’ll try to fix any bugs. You can view the source code at Source Hut.
I’m not sure how it will handle not having a Smart Meter installed.
I’ll also be more than happy to try to make this work with other inverters.
I’ve also been playing around with using nerves-project to build a standalone image that can be burned to a RaspberryPi Zero, but I’m still working through some kinks related to being able to configure that. I’m hoping to have that as a turn-key solution that I can install into some friends who have/are purchasing Fronius inverters.
Basically, I need a mechanism for storing the WiFi credentials on the nerves board, and allow configuring the IP address/hostname of the inverter. I got partway through an admin UI, but it’s not really complete yet.