Skip to main content
Tests PyPI version

Python library and CLI for WiBeee (old Mirubee) energy meters manufactured by Smilics / Circutor.

Home Assistant Integration

The official Home Assistant integration for WiBeee devices is built on top of this library and has been proposed to Home Assistant core:

The integration is polling-only (local_polling, 30-second interval), with config flow, DHCP discovery, and per-phase sensor entities. A development copy of the integration lives in ha_core_component/.

Python Library

Installation

Install from PyPI (dependencies are installed automatically):

pip install pywibeee --upgrade

Or install the latest source:

pip install git+https://github.com/fquinto/pywibeee

Usage

The library exposes an async client, WibeeeAPI, built on aiohttp:

import asyncio

import aiohttp

from pywibeee import WibeeeAPI


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        api = WibeeeAPI(session, "192.168.1.150")

        info = await api.async_fetch_device_info()
        print(info.model, info.mac_addr, info.firmware_version)

        data = await api.async_fetch_sensors_data()
        print(data["fase1"]["vrms"], data["fase4"]["p_activa"])


asyncio.run(main())

Highlights:

  • async_fetch_device_info() — model, MAC address, firmware version, and device ID. The whole discovery is bounded by an overall deadline (default 15 seconds, deadline parameter) and raises TimeoutError when exceeded.

  • async_fetch_sensors_data() — all sensor readings from status.xml, organized per phase (fase1..``fase3``, fase4 = total).

  • async_check_connection() — quick check that the host is a WiBeee device.

  • async_reboot() / async_reset_energy() — device actions.

  • async_configure_push_server() / async_get_push_server_config() — configure or read the device’s push destination.

  • async_fetch_device_diagnostics() — configuration variables for diagnostics.

  • Each HTTP request has a 10-second timeout (configurable) with optional retries; failed fetches are logged at debug level and return None.

Tests

pip install -e ".[test]"
pytest

The suite covers XML parsing, HTTP errors, retries, the discovery deadline, push server configuration, device actions, and diagnostics. It runs in CI on Python 3.10, 3.12, and 3.14.

CLI

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.

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. 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. The request path is hardcoded in the firmware; only the destination host and port are configurable.

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

Changelog

See CHANGELOG.md

License

GNU General Public License version 2

Donations for software development

If this project is useful to you, you can support its development:

Donate with PayPal

Thank you for collaborating and helping the development of software improvements.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywibeee-0.1.7.tar.gz (35.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pywibeee-0.1.7-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file pywibeee-0.1.7.tar.gz.

File metadata

  • Download URL: pywibeee-0.1.7.tar.gz
  • Upload date:
  • Size: 35.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pywibeee-0.1.7.tar.gz
Algorithm Hash digest
SHA256 b0f101e29aeeedbac77e395702369c7ee0c33d9ace7cc79d65b45014ee55a646
MD5 84d2dd326a3bcb5cb0ea05079263ede4
BLAKE2b-256 8c1b01d4e602d6de6fd661b7a42ed505b5bd96ae3281a0f3222b934225dafad1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywibeee-0.1.7.tar.gz:

Publisher: release.yml on fquinto/pywibeee

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pywibeee-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: pywibeee-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pywibeee-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 968c45fac26a403d3cab865e19dba00c4920bfbce2c3d7ada5364893ea24c3df
MD5 159f11f149ff3afd0c094d5a61773530
BLAKE2b-256 5473c363f3ee4caaabddba259a61fe299960510f8b4f69a93ef3f4cfe4ba7367

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywibeee-0.1.7-py3-none-any.whl:

Publisher: release.yml on fquinto/pywibeee

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.8

2 files

This release

0.1.7 This release

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.6

2 files

0.0.5

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page