Документация на русском языке: Readme-ru
Implementation of Mercury-200 power meter's exchange protocol. The commands.go file contains all implemented commands. Below is the list of commands with hex codes and corresponding functions in code.
Code | Command | Function |
---|---|---|
21 | Current time | GetCurrentTime |
22 | Power limit | GetPowerLimit |
23 | Energy limit | GetEnergyLimit |
24 | Seasonal time shift flag | GetSeasonSwitchFlag |
25 | Limits of manual correction | GetManualCorrectionAmount |
27 | Energy from last reset | GetEnergyFromReset |
28 | Firmware version | GetVersion |
29 | Voltage of builtin battery | GetBatteryVoltage |
2A | Displayed values | GetTariffsDisplayOptions |
2B | Last turnoff time | GetLastTurnOffTime |
2C | Last standby time | GetLastTurnOnTime |
2D | Impulse output operation mode | GetImpOutputOptions |
2E | Number of tariffs | GetTariffsCount |
2F | Serial number | GetSerial |
30 | Holidays | GetHolidays |
32 | Energy at month start time | GetEnergyAtMonthStart |
61 | Last case opening time | GetLastOpenedTime |
62 | Last case closing time | GetLastClosedTime |
63 | Instant values | GetInstants |
66 | Production date | GetProductionDate |
67 | Values displaying intervals | GetDisplayIntervals |
Code | Command | Function |
---|---|---|
2 | Set current time | SetCurrentTime |
3 | Set power limit | SetPowerLimit |
4 | Set energy limit | SetEnergyLimit |
5 | Set seasonal time shift flag | SetSeasonSwitchFlag |
6 | Set manual correction limits | SetManualCorrectionAmount |
7 | Set impulse output operation mode | SetImpOutputOptions |
9 | Choose displayed values | SetTariffsDisplayOptions |
0A | Set number of tariffs | SetTariffsCount |
0D | Set displaying intervals | SetDisplayIntervals |
10 | Set holidays | SetHolidays |
- get values of accumulated energy with tariffs breakdown at the start of 11th month
package main
import (
"fmt"
"mercury200/commands"
)
func main() {
netNum := "266608"
port := "COM5"
timeOut := 5
baudRate := 9600
result, _ := commands.GetEnergyAtMonthStart(&netNum, &port, &timeOut, &baudRate, 11)
fmt.Println(result)
fmt.Printf("Tariff 1: %s kW\n", result.T1)
fmt.Printf("Tariff 2: %s kW", result.T2)
}
$ go run main.go
&{0684.92 0342.65 000.0 000.0}
Tariff 1: 0684.92 kW
Tariff 2: 0342.65 kW