Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Super Sunshine

Fully-local solar and energy monitoring for your balcony solar power station using the Raspberry Pi Pico W (or Pico 2 W). No cloud, no vendor app, no smart-home. Talks directly to your inverter over Bluetooth and to your smart-meter over its IR-interface.

Supported and tested are the Hoymiles HMS-800-2WB ("HiFlow Pro") microinverter and (optionally) a ISKRA MT631 smart-meter. Others may work too.

SuperSunshine e-Paper display
Black Hole web dashboard
SuperSunshine web dashboard

Components

SuperSunshine: the solar display

An e-Paper dashboard that connects to the microinverter over Bluetooth and shows:

  • current production
  • a power curve across the day
  • a multi-day production-history bar graph
  • depending on availability of a smart-meter either:
    • active net grid power and self-consumed energy
    • energy produced today, over the inverter's lifetime, and per-panel production

When WiFi is configured, SuperSunshine also serves the same readings as a web dashboard on your local network, reachable at supersunshine.local, with the raw data available as JSON at supersunshine.local/data.

Smart-meter readings can be obtained either over a TTL read head attached directly, or by running a Black Hole board (below) on the same network.

Note about self-consumed energy. The value is the lifetime energy production of the microinverter minus the exported energy of the smart-meter. This assumes that all exported energy was produced by the monitored microinverter, otherwise the values won't make much sense.

Black Hole: the meter reader

Reads your smart meter through an optical TTL read head, and decodes the live consumption, import and export values. It serves the latest snapshot as a web dashboard on your local network, reachable at blackhole.local, with the raw data available as JSON at blackhole.local/data.

Run it alone as a standalone smart-meter readout, or alongside SuperSunshine to supplement the solar display.

Hardware

For SuperSunshine:

  • A Raspberry Pi Pico W (or Pico 2 W).

  • A Waveshare 2.9" e-Paper display (IL3820 controller). Wire it to the Pico over SPI as follows (defaults, adjustable):

    Display pin Pico GPIO
    CLK / SCK GPIO 10
    DIN / MOSI GPIO 11
    CS GPIO 9
    DC GPIO 8
    RST GPIO 12
    VCC 3V3
    GND GND

For Black Hole:

  • A Raspberry Pi Pico W (or Pico 2 W).

  • An optical TTL smart-meter read head that outputs 3.3 V serial. Wire it to the Pico as follows (defaults, adjustable):

    Read head Pico
    Data out / RX GPIO 5
    Data in / TX GPIO 4
    VCC 3V3
    GND GND

Both boards are powered over USB and connect to your WiFi for network features.

Pins are adjustable; see Configuration.

Building the firmware

You need the Raspberry Pi Pico toolchain (CMake, the GNU Arm embedded toolchain, and the usual build tools). See the pico-sdk quick-start for the prerequisites for your OS. The Pico SDK itself is downloaded automatically during the build unless you point PICO_SDK_PATH at a local copy.

git submodule update --init     # fetch the display library
cmake -B build \
  -DSUPERSUNSHINE_DEVICE_SERIAL=XXXXXXXXXXXX \
  -DSUPERSUNSHINE_DEVICE_PIN=123456 \
  -DWIFI_SSID="your-network" \
  -DWIFI_PASSWORD="your-password"
cmake --build build

To build for the Pico 2 W, add -DPICO_BOARD=pico2_w.

This produces two flashable images:

  • build/apps/super_sunshine/SuperSunshine.uf2
  • build/apps/black_hole/BlackHole.uf2

Flashing

Hold the Pico's BOOTSEL button while plugging it into USB; it appears as a USB drive. Copy the matching .uf2 file onto it and the board reboots into the firmware.

To watch the diagnostic output, open the board's USB serial console (for example with screen, minicom, or the Arduino/VS Code serial monitor).

Configuration

Settings are passed on the cmake command line. Re-run the cmake -B build ... step with the options you need, then rebuild.

Shared

Option Default Meaning
-DWIFI_SSID <empty> Your WiFi network name.
-DWIFI_PASSWORD <empty> Your WiFi password.
-DLANGUAGE en UI and web-page language for both apps. en or de.

With WiFi configured, SuperSunshine syncs the clock over the internet daily, and both boards expose their readings (web dashboard and JSON) on your local network. WiFi is optional for SuperSunshine: leaving the SSID empty disables the network features and falls back to the inverter's own clock for timestamps. Black Hole needs WiFi to publish its dashboard.

SuperSunshine

Option Default Meaning
-DSUPERSUNSHINE_DEVICE_SERIAL <empty> The 12-character serial tail of your inverter's RMI-<serial> Bluetooth name. Required.
-DSUPERSUNSHINE_DEVICE_PIN <empty> The Bluetooth PIN set in the S-Miles app. Leave unset if your inverter has no PIN.
-DSUPERSUNSHINE_METER_SOURCE BLACKHOLE BLACKHOLE: Pull the reading from a Black Hole board on the network over HTTP. Needs WiFi configured on both boards.
UART: Read an SML optical read head wired straight to SuperSunshine's own UART.
NONE: No meter; show the per-panel power.
-DSUPERSUNSHINE_TIMEZONE CET-1CEST,M3.5.0,M10.5.0/3 Your local timezone as a POSIX TZ string, including its DST rule, used to display local wall-clock time. The default is Central European Time.

Configuration files

Configuration for pin assignment, hostnames, intervals and timeouts lives in config/SuperSunshineConfig.h.in and config/BlackHoleConfig.h respectively.

Edit those files and rebuild.

Targeting a different board

By default the build targets the Pico W (pico_w). Use -DPICO_BOARD=pico2_w for the Pico 2 W, or -DPICO_BOARD=<board> for another supported board.

Acknowledgements

The Hoymiles HiFlow Pro Bluetooth protocol was reverse-engineered by TheTiEr in hiflow-ble. SuperSunshine's inverter communication is built directly on that work. Huge thanks for documenting and sharing it.

About

Fully-local solar and energy monitoring for your balcony solar power station using the Raspberry Pi Pico

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages