TapHome

Orno OR-WE-525/526

Modbus RTU
Submitted by
Last updated: 03. 2026
Orno OR-WE-525/526

The Orno OR-WE-525 and OR-WE-526 are DIN-rail mounted single-phase energy meters that communicate via Modbus RTU over RS-485. Both models are MID certified (Directive 2014/32/EU), rated at 230 V AC with 5(100) A capacity, accuracy class B, and occupy just 1 module (18 mm) on a TH-35 rail. The TapHome template provides 4 devices covering total energy, export (to grid) energy, import (from grid) energy, and line current measurement, along with extensive service attributes for voltage, power factor, frequency, apparent power, reactive power, and reactive energy per quadrant.

The key difference between the two models is that the OR-WE-525 is a basic unidirectional meter with EEPROM memory, while the OR-WE-526 adds bidirectional metering, multi-tariff support (T1–T4), a built-in RTC with Li-Ion battery backup, and date/time registers. Both models share the same Modbus register map and RS-485 interface. All measurement registers use Int32 encoding read via function code FC03 (holding registers).

Hardware connection

RS-485 wiring
Orno OR-WE-525/526 circuit diagram and RS-485 wiring

The OR-WE-525/526 has a built-in RS-485 interface with three dedicated terminals on the bottom side of the meter:

  • Terminal 23 (A) — RS-485 data line A, connect to A+/D+ on TapHome RS-485
  • Terminal 24 (G) — Ground / GND
  • Terminal 25 (B) — RS-485 data line B, connect to B-/D- on TapHome RS-485

If the RS-485 communication converter has no G port, the GND connection is not required.

The connection should be made using twin-core communication cable adapted to the RS-485 standard, via a standard USB-RS485 converter or directly to the TapHome Core RS-485 bus.

Configuration

Communication parameters

The default Modbus settings match the TapHome template out of the box:

ParameterDefaultOptions
Baud rate9600 bps9600, 19200, 38400, 115200
Data bits8Fixed
ParityNoneNone, Odd, Even
Stop bits11, 2
Slave ID11–247

Communication parameters can be changed via the front panel button (press and hold button 2 for at least 3 seconds to access the settings page) or remotely via the template’s service actions.

Slave ID

When connecting multiple meters on the same RS-485 bus, each meter must have a unique Slave ID. The default Slave ID is 1 (configurable from 1 to 247). After importing the TapHome template, adjust the Slave ID in the module connection settings to match the meter. The template also provides a Slave ID service action to change the address remotely via Modbus.

Combined code (mode)

The combined code register (H:0x100F) controls how the “Total Active Energy” device calculates its total:

ModeValueDescription
To Grid1Total = forward energy only
From Grid2Total = reverse energy only
To Grid + From Grid3Total = forward + reverse (default)
To Grid - From Grid4Total = forward - reverse

This setting is configurable via the Mode service action on the Total Energy device. The import and export energy devices are unaffected by this setting — they always read their respective dedicated registers.

Device capabilities

The template creates 4 devices organized into three groups: total energy, bidirectional import/export metering, and current sensing. Each electricity meter device reports cumulative energy (kWh) and instantaneous power demand (kW).

Total energy metering
  • Total Energy — total active energy (H:0x122, kWh) and active power demand (H:0x104, kW). The total energy value depends on the combined code mode setting. This device includes 12 service attributes: voltage (V), current (A), grid frequency (Hz), power factor, apparent power (VA), reactive power (VAr), total reactive energy (kVArh), and reactive energy per quadrant (1st through 4th quadrant, kVArh). A Mode service action allows switching the combined code between forward, reverse, sum, or difference calculation.
Bidirectional energy metering

Two devices track energy flow direction for solar PV or grid interaction monitoring:

  • Export Energy — total reverse active energy (H:0x118, kWh) and export power derived from negative active power readings (H:0x104). Service attributes include total forward reactive energy (kVArh) and forward reactive demand (VAr).
  • Import Energy — total forward active energy (H:0x10E, kWh) and import power derived from positive active power readings (H:0x104). Service attributes include total reverse reactive energy (kVArh) and reverse reactive demand (VAr).

The import/export split is achieved by reading the signed active power register (H:0x104). Positive values indicate grid consumption (import), negative values indicate grid feed-in (export). This is particularly useful for monitoring solar PV self-consumption and grid interaction.

Current sensing
  • Electric Current — line current (H:0x102, A) with voltage as a service attribute (H:0x131, V). This device uses a faster 1.5-second poll interval for near-real-time current monitoring.
Service actions

The template provides module-level service actions for remote configuration:

  • Date/Time — synchronize the meter’s internal clock with the current time (writes BCD-encoded date/time to registers H:0x1007–H:0x100A). Only functional on the OR-WE-526 which has a built-in RTC.
  • Slave ID — change the Modbus slave address (1–255)
  • LCD Cycle time — set the LCD display auto-scroll interval (0–99 seconds)
  • Baud Rate — change the communication speed (9600, 19200, 38400, or 115200 bps)
Additional capabilities

The OR-WE-525/526 also exposes registers for per-tariff energy counters (T1–T4 for forward, reverse, and total active/reactive energy), resettable energy counters, demand-averaged power with recorded maximums, and tariff schedule configuration. The tariff-related registers are only functional on the OR-WE-526. These can be added in a future template update.

Troubleshooting

No communication
  1. Verify the RS-485 terminal connections — Terminal 23 = A, Terminal 25 = B. Swap A and B if communication fails, as labeling conventions vary between manufacturers
  2. Confirm the baud rate in TapHome matches the meter setting (default 9600 bps, visible on the meter’s information page)
  3. Verify the Slave ID matches (default 1)
  4. Check the parity setting — this meter defaults to None (8N1), unlike some meters that use even parity
Incorrect total energy readings
  1. Check the combined code mode setting (H:0x100F) — the default mode 3 (forward + reverse) sums both directions, which may not be the desired behavior for all installations
  2. For solar PV setups, mode 1 (forward only) or mode 4 (forward - reverse) may be more appropriate depending on the metering point location
  3. If export or import energy reads zero while total energy increases, verify that the meter is installed at a point where bidirectional power flow actually occurs

Available devices

OR-WE-525/526 Module
Service Attributes
Slave ID
Baud Rate
Parity
Stop Bit
TimeCurrent date and time from the meter's internal RTC — only available on OR-WE-526
Service Actions
Date/TimeSynchronize the meter's internal clock with the current date and time — only functional on OR-WE-526 (with built-in RTC)
Slave ID
LCD Cycle Time
Baud Rate

OR-WE-525/526

Service Attributes
${device_SlaveId}
modbusr(H, 0x1003, Int16)
${baud_rate} [bps]
switch(getbyte(modbusr(H, 0x100c, Int16),0),6,9600,7,19200,8,38400,9,115200,"Invalid")
${xml_parity}
switch(getbyte(modbusr(H, 0x100d, Int16),0),0,"None",1,"Odd",2,"Even","Invalid")
${xml_stop_bit}
modbusr(H, 0x100e, Int16)
${time}
var Y := 2000 + frombcd(modbusr(H,0x1007,uint16));
var M := frombcd(getbyte( modbusr(H,0x1008,uint16),1));
var D := frombcd(getbyte( modbusr(H,0x1008,uint16),0));
var W := frombcd(getbyte( modbusr(H,0x1009,uint16),1));
var H := frombcd(getbyte( modbusr(H,0x1009,uint16),0));
var min := frombcd(getbyte( modbusr(H,0x100a,uint16),1));
var sec := frombcd(getbyte( modbusr(H,0x100a,uint16), 0));

tostring(tostring(H,"D2") + ":" + tostring(min,"D2") + ":" + tostring(sec, "D2") + " " + tostring(D,"D2") + "." + tostring(M,"D2") + "." + Y)


Service Actions
Date/Time
var now := NOW();

var out1 := tobcd(now.YEAR - 2000);
var out2 := (tobcd(now.MONTH)<<8) + tobcd(now.DAY);
var out3 := (tobcd(now.DAYOFWEEK)<<8) + tobcd(now.HOUR);
var out4 := (tobcd(now.MINUTE)<<8) + tobcd(now.SECOND);

modbusw(H, 0x1007, uint16, out1, out2, out3, out4);

#var out1 := (tobcd(MI) << 8) + tobcd(SS);
#var out2 := (tobcd(DW) << 8) + tobcd(HH);
#var out3 := (tobcd(MM) << 8) + tobcd(DD);

#modbusw(H, 0x3c, LittleEndianUint16, out1, out2, out3, YY);
Slave ID
Parameters: Slave ID (1–255 ID)
modbusw(H, 0x1003, Uint16, ID)
LCD Cycle time
Parameters: Time [s] (0–99 t)
modbusw(H, 0x100b, Uint16, t)
${baud_rate}
Parameters: Baud rate
modbusw(H,0x100c,int16,Br)
Total Energy Electricity Meter Read-only

Total active energy and power demand — configurable combined code mode determines whether total counts forward, reverse, sum, or difference. Includes 12 service attributes for voltage, current, frequency, power factor, and reactive energy per quadrant

Register: H:0x122 (readtotalconsumption), H:0x104 (readdemand) Int32 Unit: kWh / kW / 100 (energy), / 1000 (power)
Service Attributes
ModeCombined code — determines how total energy is calculated: To Grid (forward), From Grid (reverse), sum, or difference
Voltage
Current
Grid Frequency
Power Factor
Apparent Power
Reactive Power
Total Reactive Energy
Total Reactive Energy (1st Quadrant)
Total Reactive Energy (2nd Quadrant)
Total Reactive Energy (3rd Quadrant)
Total Reactive Energy (4th Quadrant)
Service Actions
Mode

Total Energy

Read total consumption
MODBUSR(H, 0x122, Int32) / 100
Read demand
MODBUSR(H, 0x104, Int32)/1000
Service Attributes
${xml_mode}
switch(modbusr(H, 0x100f, uint16), 1, "To Grid", 2, "From Grid", 3, "To Grid + From Grid", 4, "To Grid - From Grid", "Unknown")
${electric_voltage} [V]
tostring(modbusr(H, 0x100,Int32)/1000, "F2")
${electric_current} [A]
tostring(modbusr(H, 0x102,Int32)/1000, "F2")
${grid_frequency} [Hz]
tostring(modbusr(H, 0x10a,Int16)/10, "F2")
${power_factor}
tostring(modbusr(H, 0x10b,Int16)/1000, "F2")
${apparent_power} [VA]
tostring(modbusr(H, 0x106,Int32), "F2")
${reactive_power} [VAr]
tostring(modbusr(H, 0x108,Int32), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x140,Int32)/100, "F2")
${total_reactive_energy} (1. q) [kVArh]
tostring(modbusr(H, 0x14a,Int32)/100, "F2")
${total_reactive_energy} (2. q) [kVArh]
tostring(modbusr(H, 0x154,Int32)/100, "F2")
${total_reactive_energy} (3. q) [kVArh]
tostring(modbusr(H, 0x15e,Int32)/100, "F2")
${total_reactive_energy} (4. q) [kVArh]
tostring(modbusr(H, 0x168,Int32)/100, "F2")
Service Actions
${xml_mode}
Parameters: ${xml_mode}
modbusw(H, 0x100f, uint16, mode)
Export Energy Electricity Meter Read-only

Grid export — total reverse active energy (kWh) and export power from negative active power readings (kW)

Register: H:0x118 (readtotalconsumption), H:0x104 (readdemand) Int32 Unit: kWh / kW / 100 (energy), / 1000 (power)
Service Attributes
Total Forward Reactive Energy
Forward Reactive Demand

Export Energy

Read total consumption
MODBUSR(H, 0x0118, Int32) / 100
Read demand
var demand := MODBUSR(H, 0x104, Int32)/1000;
if (demand < 0, return(demand * -1), return(0));
Service Attributes
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x12c,Int32)/100, "F2")
${reactive_power} [VAr]
tostring(modbusr(H, 0x180,Int32) / 10, "F2")
Electric Current Variable Read-only
Register: H:0x102 (readstate) Int32 Unit: A / 1000
Service Attributes
Voltage

Electric Current

Read
MODBUSR(H, 0x102, Int32)/1000
Service Attributes
Voltage [V]
round(modbusr(H, 0x131, uint16)*0.01)
Import Energy Electricity Meter Read-only

Grid import — total forward active energy (kWh) and import power from positive active power readings (kW)

Register: H:0x10E (readtotalconsumption), H:0x104 (readdemand) Int32 Unit: kWh / kW / 100 (energy), / 1000 (power)
Service Attributes
Total Reverse Reactive Energy
Reverse Reactive Demand

Import Energy

Read total consumption
MODBUSR(H, 0x10e, Int32) / 100
Read demand
var demand := MODBUSR(H, 0x104, Int32)/1000;
if (demand > 0, return(demand), return(0));
Service Attributes
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x136,Int32)/100, "F2")
${reactive_power} [VAr]
tostring(modbusr(H, 0x184,Int32) / 10, "F2")
Connection: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Possible improvements (32)
  • H:0x110 T1 Total Forward Active Energy — Tariff 1 forward active energy (kWh) — without tariffs T1 = total
  • H:0x112 T2 Total Forward Active Energy — Tariff 2 forward active energy (kWh)
  • H:0x114 T3 Total Forward Active Energy — Tariff 3 forward active energy (kWh)
  • H:0x116 T4 Total Forward Active Energy — Tariff 4 forward active energy (kWh)
  • H:0x11A T1 Total Reverse Active Energy — Tariff 1 reverse active energy (kWh)
  • H:0x11C T2 Total Reverse Active Energy — Tariff 2 reverse active energy (kWh)
  • H:0x11E T3 Total Reverse Active Energy — Tariff 3 reverse active energy (kWh)
  • H:0x120 T4 Total Reverse Active Energy — Tariff 4 reverse active energy (kWh)
  • H:0x124 T1 Total Active Energy — Tariff 1 total active energy (kWh)
  • H:0x126 T2 Total Active Energy — Tariff 2 total active energy (kWh)
  • H:0x128 T3 Total Active Energy — Tariff 3 total active energy (kWh)
  • H:0x12A T4 Total Active Energy — Tariff 4 total active energy (kWh)
  • H:0x12E T1 Total Forward Reactive Energy — Tariff 1 forward reactive energy (kVArh)
  • H:0x130 T2 Total Forward Reactive Energy — Tariff 2 forward reactive energy (kVArh)
  • H:0x132 T3 Total Forward Reactive Energy — Tariff 3 forward reactive energy (kVArh)
  • H:0x134 T4 Total Forward Reactive Energy — Tariff 4 forward reactive energy (kVArh)
  • H:0x138 T1 Total Reverse Reactive Energy — Tariff 1 reverse reactive energy (kVArh)
  • H:0x13A T2 Total Reverse Reactive Energy — Tariff 2 reverse reactive energy (kVArh)
  • H:0x13C T3 Total Reverse Reactive Energy — Tariff 3 reverse reactive energy (kVArh)
  • H:0x13E T4 Total Reverse Reactive Energy — Tariff 4 reverse reactive energy (kVArh)
  • H:0x142 T1 Total Reactive Energy — Tariff 1 total reactive energy (kVArh)
  • H:0x144 T2 Total Reactive Energy — Tariff 2 total reactive energy (kVArh)
  • H:0x146 T3 Total Reactive Energy — Tariff 3 total reactive energy (kVArh)
  • H:0x148 T4 Total Reactive Energy — Tariff 4 total reactive energy (kVArh)
  • H:0x172 Resettable Total Active Energy — Resettable counter (kWh)
  • H:0x174 Resettable Total Reactive Energy — Resettable counter (kVArh)
  • H:0x176 Forward Active Demand — Demand-averaged forward active power (W)
  • H:0x178 Forward Maximum Active Energy Demand — Maximum recorded forward active demand (W)
  • H:0x17A Reverse Active Demand — Demand-averaged reverse active power (W)
  • H:0x17C Reverse Maximum Active Energy Demand — Maximum recorded reverse active demand (W)
  • H:0x182 Forward Maximum Reactive Demand — Maximum recorded forward reactive demand (VAr)
  • H:0x186 Reverse Maximum Reactive Demand — Maximum recorded reverse reactive demand (VAr)

Sources