Python library and CLI for WiBeee (old Mirubee) energy meter with Home Assistant integration
Project description
Python library, CLI, and Home Assistant integration for WiBeee (old Mirubee) energy meters manufactured by Smilics / Circutor.
Home Assistant Integration
Native custom component for Home Assistant. No HACS required.
Supports two update modes (user chooses during setup):
Local Push (default, recommended) — the WiBeee sends data to HA’s HTTP server in real time. Lowest latency.
Polling — HA periodically fetches status.xml from the device (configurable interval, default 30 s).
Features
Config Flow UI — add the device from the HA interface.
DHCP auto-discovery — devices with MAC prefix 00:1E:C0 are detected automatically.
Auto-configuration — the integration can configure the WiBeee to push data to HA (IP + HTTP port).
24 sensor types per phase: voltage, current, active/apparent/reactive power, frequency, power factor, active energy, reactive energy, angle, THD current & voltage with harmonics.
Device Registry with manufacturer, model, firmware version, and link to the device web UI.
Options Flow — switch modes, change polling interval, or re-run auto-configuration at any time.
Translations: English, Spanish, Catalan.
12 device models: WBM, WBT, WMX, WTD, WX2, WX3, WXX, WBB, WB3, W3P, WGD, WBP.
Installation
Copy the custom_components/wibeee/ folder into your Home Assistant config/custom_components/ directory:
# From the repository root
cp -r custom_components/wibeee /path/to/ha/config/custom_components/
Restart Home Assistant, then go to Settings → Devices & Services → Add Integration → Wibeee Energy Monitor.
The integration will ask for:
The device IP address (or it will be pre-filled if discovered via DHCP).
The update mode: Local Push (recommended) or Polling.
If you choose Local Push with auto-configure enabled, the integration sends the HA IP and port to the WiBeee device and restarts it. The device will start pushing data to HA immediately.
Requirements
Home Assistant 2025.1.0 or later.
WiBeee device accessible on the local network (static IP or DHCP reservation recommended).
For Local Push: the WiBeee must be able to reach HA’s HTTP port (8123 by default).
CLI Library
Command line interface for WiBeee (old Mirubee) meters.
Features
Autodiscover the host (IP) of the meter on the network.
Get version, model, device name, info, status, and sensor list.
Actions: reboot (via command or web), reset energy counters, configure push server.
Output formats: xml, json, plain text, file.
Uses httpx for both sync and async HTTP calls (no other HTTP dependencies).
Requirements
pip install xmltodict httpx
Installation
Install from PyPI:
pip install pywibeee --upgrade
Or install latest source:
pip install git+https://github.com/fquinto/pywibeee
Usage
pywibeee -h
usage: pywibeee [-h] [-version] (--host HOST | --auto) [-p PORT] [-t SETTIMEOUT]
[-o {xml,json,plain,file}]
(-a {reboot,rebootweb,resetenergy,configureserver} | -g {model,version,status,info,sensors,devicename})
[--serverip SERVERIP] [--serverport SERVERPORT]
CLI for WiBeee (old Mirubee) meter
optional arguments:
-h, --help show this help message and exit
-version, --version show program's version number and exit
--host HOST The host (or the IP) of the meter.
--auto Autodiscover host function, look IP on net.
-p PORT, --port PORT set port (default 80)
-t SETTIMEOUT, --settimeout SETTIMEOUT
set timeout in seconds (default 10.0)
-o FORMAT, --output FORMAT
xml|json|plain|file
-a ACTION, --action ACTION
reboot|rebootweb|resetenergy|configureserver
-g GET, --get GET model|version|status|info|sensors|devicename
--serverip SERVERIP Server IP for push config (use with -a configureserver)
--serverport SERVERPORT
Server port for push config (default 8600)
Enjoy! :)
Examples
Get status
$ pywibeee --host 192.168.1.150 --get status
{"response": {"model": "WBB", "webversion": "3.4.614", "time": "1570484447",
"fase1_vrms": "228.70", "fase1_irms": "1.59", "fase1_p_activa": "264.34", ...}}
Get model
$ pywibeee --host 192.168.1.150 --get model
{"response": {"model": "WBB", "model_description": "Wibeee BOX"}}
Get info
$ pywibeee --host 192.168.1.150 -g info
{"response": {"model": "WBB", "model_description": "Wibeee BOX",
"webversion": "3.4.614", "host": "192.168.1.150", "devicename": "WIBEEE"}}
Get sensors with autodiscover
$ pywibeee --auto -g sensors
{"vrms": ["Vrms", "V", "mdi:sine-wave"], "irms": ["Irms", "A", "mdi:flash-auto"], ...}
Configure push server
Configure the WiBeee to push data to a server (e.g. Home Assistant on 192.168.1.50:8600):
$ pywibeee --host 192.168.1.150 -a configureserver --serverip 192.168.1.50 --serverport 8600
{"response": {"configureServer": "done (server=192.168.1.50:8600)"}}
The device will restart to apply the configuration. The port is sent in hexadecimal to the WiBeee firmware (8600 decimal = 2198 hex).
Reboot the device
$ pywibeee --host 192.168.1.150 -a rebootweb
Reset energy counters
$ pywibeee --host 192.168.1.150 -a resetenergy
Local Push Protocol
The WiBeee device can be configured to push data to a server via HTTP GET requests. The device sends periodic requests to the configured server with all sensor values as query parameters.
Endpoint
GET /Wibeee/receiverAvg?mac=001ec0112233&v1=230.5&a1=277&e1=222157&vt=230.5&...
The server must respond with <<<WBAVG to acknowledge receipt.
The server can also send <<<WREBOOT to remotely reboot the device.
Push parameter mapping
Push param prefix |
Sensor |
Unit |
|---|---|---|
v |
Phase voltage (vrms) |
V |
i |
Current (irms) |
A |
p |
Apparent power |
VA |
a |
Active power |
W |
r |
Inductive reactive power |
var |
q |
Frequency |
Hz |
f |
Power factor |
— |
e |
Active energy |
Wh |
o |
Inductive reactive energy |
varh |
Phase suffixes: 1 = L1, 2 = L2, 3 = L3, t = Total.
Example: v1 = voltage L1, at = active power total, e2 = active energy L2.
Configure push via HTTP
# Set the push server (port in hex: 8123 = 1fbb for HA default port)
curl "http://192.168.1.150/configura_server?ipServidor=192.168.1.50&URLServidor=192.168.1.50&portServidor=1fbb"
# Reset the device to apply changes
curl "http://192.168.1.150/config_value?reset=true"
Other useful HTTP endpoints
# Harmonics data
curl http://192.168.1.150/services/user/harmonics.xml
# Waveform data (per phase)
curl http://192.168.1.150/services/user/wafeformsF1.xml
# Read measurement refresh rate
curl "http://192.168.1.150/services/user/values.xml?var=WIBEEE.measuresRefresh"
# Read app refresh rate
curl "http://192.168.1.150/services/user/values.xml?var=WIBEEE.appRefresh"
# Trigger WiFi scan and get results
curl "http://192.168.1.150/scan.cgi?getAllBss"
curl http://192.168.1.150/scanallresults.xml
Device Notes
Default IP: 192.168.1.150
Default credentials:
Basic: user / user
Admin: admin / Sm1l1cs?
Admin (alt): admin / Wib333?
MAC OUI: 00:1E:C0 (Microchip Technology / Circutor)
Open ports
80/tcp open http Web interface, configuration, bootloader commands
502/tcp open modbus Modbus TCP (input registers from 1009)
550/tcp open binary OTA firmware transfer (do NOT use without full understanding)
OTA commands
21001A 576246696E697368426F6F746C6F6164657250726F6363657373 0D0A (hex) = WbStartBootloaderProccess
200119 576246696e697368426f6f746c6f6164657250726f6363657373 0D0A (hex) = WbFinishBootloaderProccess
0D (hex) = Enter key = get version
0F (hex) = read Backup Position
01 (hex) = reset
Models
Code |
Description |
|---|---|
WBM |
Wibeee 1Ph |
WBT |
Wibeee 3Ph |
WMX |
Wibeee MAX |
WTD |
Wibeee 3Ph RN |
WX2 |
Wibeee MAX 2S |
WX3 |
Wibeee MAX 3S |
WXX |
Wibeee MAX MS |
WBB |
Wibeee BOX |
WB3 |
Wibeee BOX S3P |
W3P |
Wibeee 3Ph 3W |
WGD |
Wibeee GND |
WBP |
Wibeee SMART PLUG |
Security
The WiBeee has no authentication on local HTTP endpoints and uses plain HTTP. Recommended precautions:
Isolate the device on a separate VLAN or IoT network.
Use firewall rules to restrict access to ports 80, 502, and 550.
Do not expose the device to the internet.
Tools
Firmware files and downloader: firmware/
WiBeee emulator: emulator/
Cloud receiver server: webserver/
Changelog
See CHANGELOG.md
License
GNU General Public License version 2
Community
Join the Telegram community channel for support, questions, and discussion:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pywibeee-0.1.1.tar.gz.
File metadata
- Download URL: pywibeee-0.1.1.tar.gz
- Upload date:
- Size: 27.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
707c6b25b99c9dba4df6f533115e97c8570ef3f7a570e1649fcff37d72ced340
|
|
| MD5 |
e312425c2aa55d5327e9c76888ee860c
|
|
| BLAKE2b-256 |
75060d81dae0fec1718647e81be40445a996d40bb6d15bf541ae772e4d02ab8f
|
File details
Details for the file pywibeee-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pywibeee-0.1.1-py3-none-any.whl
- Upload date:
- Size: 19.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa1fa200b1ea07c8d9ad21e95c06b9b6e3fcc03552ed0c8eedf2c6800536011f
|
|
| MD5 |
847e89244ca729888b80993cb20d80e1
|
|
| BLAKE2b-256 |
38b9c6ebd1d4e64ef1838437ed9c93e36c2b4d27e1b9a90468e7f754a0e103af
|