Matismart MT84SR (smart auto-recloser)
Status: Vendor Confirmed · Register points: 38 · Transports: Modbus RTU
A curated ModDef profile for the Matismart MT84SR (smart auto-recloser). Import it as
matismart.mt84sr 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("matismart-mt84sr.moddef.yaml")
dev, _ := client.New(doc, "matismart-mt84sr", transport) // your modbus.Transport
v, _ := dev.ReadPoint(ctx, "operation_mode")
fmt.Println(v)
import {Device} from '@moddef/core';
import {loadDocument} from '@moddef/core/node';
const doc = await loadDocument('matismart-mt84sr.moddef.yaml');
const dev = Device.create(doc, 'matismart-mt84sr', transport);
console.log(await dev.readPoint('operation_mode'));
let doc = moddef_core::load("matismart-mt84sr.moddef.yaml")?;
let mut dev = Device::new(&doc, Some("matismart-mt84sr"), transport)?;
let v = dev.read_point("operation_mode").await?;
from moddef import Device, load
from moddef.pymodbus import Options, PymodbusTransport
doc = load("matismart-mt84sr.moddef.yaml")
transport = await PymodbusTransport.tcp("192.168.1.50", options=Options())
dev = Device.create(doc, "matismart-mt84sr", transport)
print(await dev.read_point("operation_mode"))
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("matismart-mt84sr"), &transport);
md_value_t v;
md_dev_read(&dev, MD_STR("operation_mode"), &v);
auto doc = moddef::Document::view(flash_bytes).value(); // zero-copy over flash
auto dev = moddef::Device::open(doc, "matismart-mt84sr", transport).value();
if (auto v = dev->read("operation_mode"); v)
std::cout << v->to_string() << '\n';
Commands
Multi-step register procedures (spec §11.7)
this profile defines — write params, arm a trigger, poll for completion, then
read the result. Run one with your language's command executor (RunCommand,
runCommand, run_command, or md_cmd_begin/md_cmd_tick in C/C++).
open_breaker — Open Breaker
Write 1 (open) to register 17, then poll register 16 until it reports an automatic-mode open state: 1 (open after a trip) or 2 (opened by command). Times out if the device is in manual mode or reports equipment failure (0).
Results
| Field | Type |
|---|---|
reclosing_state | — |
close_breaker — Close Breaker
Write 2 (close) to register 17, then poll register 16 until it reports an automatic-mode closed state: 10, 11 or 12. Closing energises everything downstream. Times out if the device is in manual mode, reports equipment failure (0), or trips straight back to 1.
Results
| Field | Type |
|---|---|
reclosing_state | — |
lock_breaker — Lock Breaker
Write 3 (lock) to register 17, then poll register 14 until it reads 1 (locked). What a lock prevents is not documented.
Results
| Field | Type |
|---|---|
locked | BOOL |
unlock_breaker — Unlock Breaker
Write 4 (unlock) to register 17, then poll register 14 until it reads 0 (unlocked).
Results
| Field | Type |
|---|---|
locked | BOOL |
Measurands
The 3 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 |
|---|---|---|---|
voltage | Voltage | V | RMS voltage; qualify with phase_ref (L1_N, L1_L2, ...) |
device_status | Device Status | undefined | Overall device operating status (enum) |
alarm_status | Alarm Status | undefined | Alarm state (enum or flag set) |
Source
- Profile:
switchgear/matismart-mt84sr/matismart-mt84sr.moddef.yaml - Register map: vendor documentation