TECH Sterowniki ST-340 V2 DRO (HRV controller)
Status: Vendor Confirmed · Register points: 62 · Transports: Modbus RTU
A curated ModDef profile for the TECH Sterowniki ST-340 V2 DRO (HRV controller). Import it as
tech.st340v2-dro 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("tech-st340v2-dro.moddef.yaml")
dev, _ := client.New(doc, "tech-st340v2-dro", transport) // your modbus.Transport
v, _ := dev.ReadPoint(ctx, "temperature_intake")
fmt.Println(v)
import {Device} from '@moddef/core';
import {loadDocument} from '@moddef/core/node';
const doc = await loadDocument('tech-st340v2-dro.moddef.yaml');
const dev = Device.create(doc, 'tech-st340v2-dro', transport);
console.log(await dev.readPoint('temperature_intake'));
let doc = moddef_core::load("tech-st340v2-dro.moddef.yaml")?;
let mut dev = Device::new(&doc, Some("tech-st340v2-dro"), transport)?;
let v = dev.read_point("temperature_intake").await?;
from moddef import Device, load
from moddef.pymodbus import Options, PymodbusTransport
doc = load("tech-st340v2-dro.moddef.yaml")
transport = await PymodbusTransport.tcp("192.168.1.50", options=Options())
dev = Device.create(doc, "tech-st340v2-dro", transport)
print(await dev.read_point("temperature_intake"))
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("tech-st340v2-dro"), &transport);
md_value_t v;
md_dev_read(&dev, MD_STR("temperature_intake"), &v);
auto doc = moddef::Document::view(flash_bytes).value(); // zero-copy over flash
auto dev = moddef::Device::open(doc, "tech-st340v2-dro", transport).value();
if (auto v = dev->read("temperature_intake"); 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++).
write_weekly_program — Write One Day's Weekly Program
Set the five zone boundaries and their fan speed steps for one day of the week. Selects the day in register 110, then writes the four movable zone start times (zone 0 is fixed at midnight) and the five fan steps. Start times are minutes from midnight on a 15-minute grid and must stay inside the per-zone ranges the manual gives, which overlap deliberately: zone 1 is 15-1380, zone 2 is 30-1395, zone 3 is 45-1410 and zone 4 is 60-1425.
Params
| Field | Type | Required |
|---|---|---|
day | enum weekday | yes |
zone1_start | UINT32 | yes |
zone2_start | UINT32 | yes |
zone3_start | UINT32 | yes |
zone4_start | UINT32 | yes |
zone0_fan_step | enum fan_step | yes |
zone1_fan_step | enum fan_step | yes |
zone2_fan_step | enum fan_step | yes |
zone3_fan_step | enum fan_step | yes |
zone4_fan_step | enum fan_step | yes |
Results
| Field | Type |
|---|---|
day | — |
zone1_start | UINT32 |
zone2_start | UINT32 |
zone3_start | UINT32 |
zone4_start | UINT32 |
read_weekly_program — Read One Day's Weekly Program
Read back the five zone boundaries and fan speed steps for one day of the week. Selects the day in register 110, then reads registers 111-120. Needed because the zone registers on their own do not say which day they belong to.
Params
| Field | Type | Required |
|---|---|---|
day | enum weekday | yes |
Results
| Field | Type |
|---|---|
zone0_start | UINT32 |
zone1_start | UINT32 |
zone2_start | UINT32 |
zone3_start | UINT32 |
zone4_start | UINT32 |
zone0_fan_step | — |
zone1_fan_step | — |
zone2_fan_step | — |
zone3_fan_step | — |
zone4_fan_step | — |
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 |
|---|---|---|---|
temperature | Temperature | degC | Temperature; qualify with location (INTERNAL, EXTERNAL, ...) |
device_status | Device Status | undefined | Overall device operating status (enum) |
alarm_status | Alarm Status | undefined | Alarm state (enum or flag set) |
Source
- Profile:
hvac/tech-st340v2-dro/tech-st340v2-dro.moddef.yaml - Register map: vendor documentation