Connect a small ESP32 module wirelessly to your smart meter via the HomeWizard P1 meter (and optionally control Energy Sockets) — no cloud, no subscription.
Live usage
View your electricity consumption and solar energy generation directly from your digital meter via WiFi.
Smart sockets
Enable Energy Sockets automatically — if desired — when there is sufficient sunlight, adjustable per second.
100% local
Works even if HomeWizard's servers or your internet go down — only your home WiFi is needed.
Open the HomeWizard app and go to Settings → Devices → P1 Meter. Enable the local API at the bottom. Without this, the module cannot retrieve data.
(Optional) Repeat this for any sockets you want to switch or monitor with the module.
First download the correct file for your board:
You need no software — this is done directly from your browser (Chrome, Edge or Opera) using espflash.app.
Go to espflash.app, connect your board via the USB data cable and click "Connect Device". Select the correct port in the pop-up.
Click "Click to upload firmware" and select the .bin file you downloaded above.
Click "Start Flashing" and wait patiently. Do not disconnect the USB cable during this process (takes a few minutes).
You will see "Done!" or "Flash successful". Unplug and reconnect the cable — the board starts up with the new firmware.
The Waveshare ESP32-S3 uses native USB and works best with esptool-js (also directly in the browser, no installation needed).
Go to espressif.github.io/esptool-js in Chrome, Edge or Opera. Connect your Waveshare board via the USB data cable.
Click "Connect" and select the correct port in the pop-up (e.g. "USB JTAG/serial debug unit").
Set the flash address to 0x0 or just zero 0Click "Choose File" and select the Autosockets_154_T.ino.merged.bin file you downloaded above.
If a second file row is visible, click "Remove" to delete it.
Also set: Flash Mode: keep — Flash Frequency: keep — Flash Size: 16 MB.
Click "Program" and wait patiently. Do not disconnect the USB cable during this process. You'll still have to wait even after “100%.” Once everything is finished, you'll see another notification, and then you can restart the device.
You will see "Leaving... Hash of data verified." at the bottom. Unplug and reconnect the cable — the board starts up with the new firmware.
Want to modify or compile the code yourself? Request the source code at johanok@gmail.com. This approach only makes sense if you are familiar with Arduino and library management.
Power on the board by connecting it to a power source. If it cannot connect to WiFi, it opens its own wireless access point (Lily, no password required).
Lily network.192.168.4.1.
192.168.4.1
p1meter-123abc.local instead of 192.168.1.x. If the IP address ever changes, you won't need to update anything.
Press the top button for 5 seconds. Turn off mobile data, reconnect to Lily (no password) and open 192.168.4.1. You can then:
Two buttons. A short press on the bottom button also displays the full button overview directly on the screen for 5 seconds.
| Button | Action | Function |
|---|---|---|
| Top button (FLASH / BOOT) | ||
| ▲ Top | Long (5 sec) | Clear WiFi credentials and restart. The board opens its own access point (name: Lily) so you can enter new credentials via 192.168.4.1. |
| ▲ Top | Short | Toggle monthly peak display on/off. Also shows uptime and the current switch-on threshold per socket for 5 seconds. |
| ▲ Top | Double click | Rotate display 180° — useful when the USB connector is on the other side. Note: after rotating, top and bottom buttons swap positions in this table. |
| Bottom button | ||
| ▼ Bottom | Long (5 sec) | Reset all switch-on thresholds to 150 W. The display briefly confirms with a message. Useful if auto-calibration has set a threshold too high. |
| ▼ Bottom | Short | Shows the button overview on the display for 5 seconds, with an arrow per button and the corresponding actions in colour (orange = long press, green = short press, cyan = double click). |
| ▼ Bottom | Double click | Switch display mode: sockets + peaks → 3-hour chart → 6-hour chart → 12-hour chart → 24-hour chart → quarter-hour projection → back to sockets. The selection is saved and persists after a restart. |
Three buttons. A short press on the middle button (PWR) displays the button overview on the screen for 5 seconds.
| Button | Action | Function |
|---|---|---|
| Top button (FLASH / BOOT) | ||
| ▲ Top | Long (5 sec) | Clear WiFi credentials and restart. The board opens its own access point (name: Lily) so you can enter new credentials via 192.168.4.1. |
| ▲ Top | Short | Toggle monthly peak display on/off. Also shows uptime and the current switch-on threshold per socket for 5 seconds. |
| ▲ Top | Double click | Rotate display 180° — useful when the USB connector is on the other side. Note: after rotating, top and bottom buttons swap positions in this table. |
| Middle button (PWR) | ||
| ⏻ PWR | Long (5 sec) | Toggle automatic socket switching on/off. The current status is shown as a coloured line at the top of the display (green = enabled). On the TTGO and T-Display S3 this setting can only be changed via the web page. |
| ⏻ PWR | Short | Shows the button overview on the display for 5 seconds, with an arrow per button and the corresponding actions in colour (orange = long press, green = short press, cyan = double click). |
| Bottom button (KEY) | ||
| ▼ Bottom | Long (5 sec) | Reset all switch-on thresholds to 150 W. The display briefly confirms with a message. |
| ▼ Bottom | Short | Switch display mode: sockets + peaks → 3-hour chart → 6-hour chart → 12-hour chart → 24-hour chart → back to sockets. The selection is saved and persists after a restart. |