Iskra WM3M4 (MID EV meter)
Status: Vendor Confirmed · Register points: 73 · Transports: Modbus RTU
A curated ModDef profile for the Iskra WM3M4 (MID EV meter). Import it as
iskra.wm3m4 or load the .moddef.yaml directly.
Connect to one over Web Serial and watch its values live in the device dashboard.
Usage
Load the profile, bind a transport, and read a point by name. The runtime applies the offset, scaling, byte order, and sentinels from the definition.
- Go
- TypeScript
- Rust
- Python
- C
- C++
doc, _ := moddef.Load("iskra-wm3m4.moddef.yaml")
dev, _ := client.New(doc, "iskra-wm3m4", transport) // your modbus.Transport
v, _ := dev.ReadPoint(ctx, "frequency")
fmt.Println(v)
import {Device} from '@moddef/core';
import {loadDocument} from '@moddef/core/node';
const doc = await loadDocument('iskra-wm3m4.moddef.yaml');
const dev = Device.create(doc, 'iskra-wm3m4', transport);
console.log(await dev.readPoint('frequency'));
let doc = moddef_core::load("iskra-wm3m4.moddef.yaml")?;
let mut dev = Device::new(&doc, Some("iskra-wm3m4"), transport)?;
let v = dev.read_point("frequency").await?;
from moddef import Device, load
from moddef.pymodbus import Options, PymodbusTransport
doc = load("iskra-wm3m4.moddef.yaml")
transport = await PymodbusTransport.tcp("192.168.1.50", options=Options())
dev = Device.create(doc, "iskra-wm3m4", transport)
print(await dev.read_point("frequency"))
md_doc_t doc;
md_doc_init(&doc, flash_ptr, flash_len); /* zero-copy view */
md_dev_t dev;
md_dev_init(&dev, &doc, MD_STR("iskra-wm3m4"), &transport);
md_value_t v;
md_dev_read(&dev, MD_STR("frequency"), &v);
auto doc = moddef::Document::view(flash_bytes).value(); // zero-copy over flash
auto dev = moddef::Device::open(doc, "iskra-wm3m4", transport).value();
if (auto v = dev->read("frequency"); v)
std::cout << v->to_string() << '\n';
Measurands
The 9 semantic quantities this device reports, each linked to the measurand catalog. Query a device by measurand instead of a raw point when you want portable code.
| Base quantity | Name | Unit | Description |
|---|---|---|---|
frequency | Frequency | Hz | Grid frequency |
voltage | Voltage | V | RMS voltage; qualify with phase_ref (L1_N, L1_L2, ...) |
current | Current | A | RMS current; qualify with phase_ref / direction |
active_power | Active Power | W | Instantaneous real power |
reactive_power | Reactive Power | var | Instantaneous reactive power |
apparent_power | Apparent Power | VA | Instantaneous apparent power |
power_factor | Power Factor | 1 (ratio) | Ratio of real to apparent power (dimensionless) |
energy_active | Active Energy | Wh | Cumulative active energy register |
temperature | Temperature | degC | Temperature; qualify with location (INTERNAL, EXTERNAL, ...) |
Source
- Profile:
energy-meter/iskra-wm3m4/iskra-wm3m4.moddef.yaml - Register map: vendor documentation