diff --git a/src/pykmp/constants.py b/src/pykmp/constants.py index f4de63a..f31493e 100644 --- a/src/pykmp/constants.py +++ b/src/pykmp/constants.py @@ -16,38 +16,133 @@ # Decimals of each variable in the GetRegister command request/response (CID=0x10) REGISTERS: Final[Mapping[int, str]] = { - 0x003C: "Heat Energy (E1)", - 0x0044: "Volume", - 0x004A: "Flow", - 0x0050: "Current Power", - 0x0056: "Temp1", - 0x0057: "Temp2", - 0x0059: "Tempdiff", - 0x0061: "Temp1xm3", - 0x006E: "Temp2xm3", - 0x0071: "Infoevent", - 0x007B: "MaxFlowDate_Y", - 0x007C: "MaxFlow_Y", - 0x007D: "MinFlowDate_Y", - 0x007E: "MinFlow_Y", - 0x007F: "MaxPowerDate_Y", - 0x0080: "MaxPower_Y", - 0x0081: "MinPowerDate_Y", - 0x0082: "MinPower_Y", - 0x008A: "MaxFlowDate_M", - 0x008B: "MaxFlow_M", - 0x008C: "MinFlowDate_M", - 0x008D: "MinFlow_M", - 0x008E: "MaxPowerDate_M", - 0x008F: "MaxPower_M", - 0x0090: "MinPowerDate_M", - 0x0091: "MinPower_M", - 0x0092: "AvgTemp1_Y", - 0x0093: "AvgTemp2_Y", - 0x0095: "AvgTemp1_M", - 0x0096: "AvgTemp2_M", - 0x010A: "E1HighRes", - 0x03EC: "HourCounter", + 60: "Heat Energy (E1)", + 61: "Inlet Energy E4", + 62: "Outlet Energy E5", + 63: "Cooling Energy E3", + 64: "Tariff TA2", + 65: "Tariff TA3", + 66: "Tariff limit 2", + 67: "Tariff limit 3", + 68: "Volume V1", + 69: "Volume V2", + 72: "Mass M1", + 73: "Mass M2", + 74: "Flow V1", + 75: "Flow V2", + 80: "Current Power", + 84: "Pulse input A1", + 85: "Pulse input B1", + 86: "Temp1", + 87: "Temp2", + 88: "Temp3", + 89: "Tempdiff", + 91: "Pressure P1", + 92: "Pressure P1", + 94: "Heat Energy E2", + 95: "Tap water energy E6", + 96: "Tap water energy E7", + 97: "Temp1xm3 E8", # V1 * t1 (inlet) + 98: "Target Date", + 99: "InfoCode", + 104: "Meter number for VB", + 110: "Temp2xm3 E9", # V2 * t2 (outlet) + 112: "Customer Number 2", # 8 most-significant digits + 113: "Infoevent", + 114: "Meter number for VA", + 122: "Temp4", + 123: "MaxFlowDate_Y", + 124: "MaxFlow_Y", + 125: "MinFlowDate_Y", + 126: "MinFlow_Y", + 127: "MaxPowerDate_Y", + 128: "MaxPower_Y", + 129: "MinPowerDate_Y", + 130: "MinPower_Y", + 138: "MaxFlowDate_M", + 139: "MaxFlow_M", + 140: "MinFlowDate_M", + 141: "MinFlow_M", + 142: "MaxPowerDate_M", + 143: "MaxPower_M", + 144: "MinPowerDate_M", + 145: "MinPower_M", + 146: "AvgTemp1_Y", + 147: "AvgTemp2_Y", + 149: "AvgTemp1_M", + 150: "AvgTemp2_M", + 152: "Program number", # not seen on my meters: ABCCCCCC + 153: "Config number 1", # config no. DDDEE + 154: "Software Checksum 1", + 168: "Config number 2", # config no. FFGGMN + 175: "Error hour counter", + 178: "Differential energy dE", + 179: "Control energy cE", + 180: "Differential volume dV", + 181: "Control volume cV", + # 183: looks like a meter S/N on our Multical 603 + 184: "MbusPriAdrMod1", + 185: "MbusSekAdrMod1", + 218: "MbusPriAdrMod2", + 219: "MbusSekAdrMod2", + 222: "ConfigChangedEventCount", + 224: "Pulse input A2", + 225: "Pulse input B2", + 229: "T1_average_autoint", + 230: "T2_average_autoint", + 234: "l/imp. for VA", + 235: "l/imp for VB", + 239: "Volume V1 hires", + # Undocumented, but it matches the info given by our Multical 603 in the diagnostics display + 259: "Nominal Q\N{LATIN SUBSCRIPT SMALL LETTER P}", + 266: "E1HighRes", + 267: "Cooling energy E3 hires", + 346: "Module SW rev", + 347: "Customer Number", + 348: "Date and Time", # FIXME unkown unit 79, 28591984415535 + 355: "COP Year", + 362: "Tariff TA4", + 364: "Heat energy A1", # Heat energy with discount A1, t2 < t5 limit + 365: "Heat energy A2", # Heat energy with surcharge A2, t2 > t5 limit + 366: "T5 limit", + 367: "COP Month", + 369: "Info bits", + 371: "COP", + 372: "Power Input B1", + 379: "T1 time average day", + 380: "T2 time average day", + 381: "T1 time average hour", + 382: "T2 time average hour", + 383: "Flow V1 max year date", + # 384: something similar? + 385: "Power max year date", + # 386: something similar? + 387: "Flow V1 max month date", + # 388: something similar? + 389: "Power max month date", + # 390: something similar? + 398: "T1 actual (one decimal)", + 399: "T2 actual (one decimal)", + # Undocumented, but on Multical 603 it works that way + 400: "T1-T2 (one decimal)", + 404: "Meter Type", + 473: "Energy E10", + 474: "Energy E11", + 477: "T3 time average day", + 478: "T3 time average hour", + 505: "P1 average day", + 506: "P2 average day", + 507: "P1 average hour", + 508: "P2 average hour", + # Undocumented, but it matches the actual interval on Multical 303 + 675: "WM-Bus transmission interval", + 1001: "Fabrication No", + 1002: "Time", + 1003: "Date", + 1004: "HourCounter", + 1005: "Software edition", + 1010: "Customer number 1", # 8 least-significant digits + 1032: "Operation Mode", } @@ -73,11 +168,11 @@ 0x12: "kVAh", 0x13: "MVAh", 0x14: "GVAh", - 0x15: "kW", + 0x15: "W", 0x16: "kW", 0x17: "MW", 0x18: "GW", - 0x19: "kvar", + 0x19: "var", 0x1A: "kvar", 0x1B: "Mvar", 0x1C: "Gvar", @@ -90,7 +185,7 @@ 0x23: "kV", 0x24: "kA", 0x25: "°C", - 0x26: "°K", + 0x26: "K", 0x27: "l", 0x28: "m³", 0x29: "l/h", @@ -117,6 +212,12 @@ 0x3E: "days", 0x3F: "RTC-Q", 0x40: "Datetime", + 0x55: "%RH", + 0x56: "%O\N{SUBSCRIPT TWO}", + 0x57: "m/s", + 0x58: "kJ/kg", + 0x59: "pH", + 0x5A: "g/kg", }