Public/instructionset.json
{
"Config": [ { "Battery": { "CellCount": 14, "MultiBMS": false, "ChemistryTypes": { "1": "Li-po Kokam High power", "2": "Li-po Kokam High capacity", "3": "LiFePO4 Winston", "4": "LiFePO4 A123", "5": "LiMnO2" } }, "Client": { "PortName": "/dev/ttyUSB0", "BaudRate": 38400, "Parity": "None", "DataBits": 8, "StopBits": "One", "ReadTimeout": 900, "WriteTimeout": 250, "DTREnable": true }, "Session": { "SessionThrottle": 500, "SessionTimeout": 1000, "Retries": 4 }, "Message": { "Components": { "STX": "55", "DST": "01", "SND": "00", "LEN": "00", "MSG": null, "QRY": "3f", "CMD": "20", "CRC": "0000", "ETX": "aa" }, "FloatPrecision": "single" }, "MQTT": { "Server": "server.domain.org", "Port": 1883, "Frequency": "0:0:0:30", "TopicPrefix": "", "Retain": true, "Username": "username", "Password": "password", "ServicePaths": { "Unix": { "ServiceName": "recbmsmqtt.service", "SystemdPath": "/etc/systemd/system/", "ExecutableName": "recbmsmqtt", "ExecutablePath": "/usr/bin/", "ServiceConf": "bmsmqtt.conf", "ServiceConfPath": "/etc/opt/recbms/" }, "Win32NT": { "ServiceName": "RECBMSMQTT", "ExecutableName": "recbmsmqtt.ps1", "ExecutablePath": "Program Files\\REC-BMSMQTTService\\", "ServiceConf": "RECBMSMQTTService", "ServiceConfPath": "hklm:Im\\Not\\Really\\Sure\\Yet" } } } } ], "Command": [ { "Alias": "Identity", "Instruction": "*IDN", "Name": "Identification", "Description": "Answers REC BMS xxx where xxx is the type of BMS", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Device identification", "Unit": "Description", "Value": "string", "Position": 0, "Part": 0 }, "Category": "Identification", "Handler": "String" }, { "Alias": "ListCommonData1", "Instruction": "LCD1", "Name": "Main_Data_1", "Description": "First answer is 28 how many byte data will be sent and then data message follows as 7 float values:", "Common": true, "ReadOnly": true, "Range": null, "Value": "null", "Return": { "Description": "Array of values", "Value": "Array", "Unit": { "Array": [ { "Description": "Byte count of message payload", "Unit": "ByteCount", "Value": "char", "Position": 0, "Part": 0 }, { "Description": "Minimum Cell Voltage", "Unit": "Volt", "Value": "float", "Position": 1, "Part": 1 }, { "Description": "Maximum Cell Voltage", "Unit": "Volt", "Value": "float", "Position": 2, "Part": 1 }, { "Description": "Pack Current", "Unit": "Amps", "Value": "float", "Position": 3, "Part": 1 }, { "Description": "Maximum Temperature", "Unit": "Celcius", "Value": "float", "Position": 4, "Part": 1 }, { "Description": "Pack Voltage", "Unit": "Volt", "Value": "float", "Position": 5, "Part": 1 }, { "Description": "State of Charge", "Unit": "Percent", "Value": "float", "Position": 6, "Part": 1 }, { "Description": "State of Health", "Unit": "Percent", "Value": "float", "Position": 7, "Part": 1 } ], "Type": "Byte" } }, "Category": "Information", "Handler": "Array" }, { "Alias": "ListCommonData3", "Instruction": "LCD3", "Name": "Main_Data_3", "Description": "First answer is 8 how many byte data will be sent and then data message follows as 8 byte values:", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Array of values", "Value": "Array", "Unit": { "Array": [ { "Description": "Byte count of message payload", "Unit": "ByteCount", "Value": "char", "Position": 0, "Part": 0 }, { "Description": "BMS Address of Minimum Cell Voltage", "Unit": "MinCellBMSID", "Value": "char", "Position": 1, "Part": 1 }, { "Description": "Cell Address of Minimum Cell Voltage", "Unit": "MinCellID", "Value": "char", "Position": 2, "Part": 1 }, { "Description": "BMS Address of Maximum Cell Voltage", "Unit": "MaxCellBMSID", "Value": "char", "Position": 3, "Part": 1 }, { "Description": "Cell Address of Maximum Cell Voltage", "Unit": "MaxCellID", "Value": "char", "Position": 4, "Part": 1 }, { "Description": "BMS Address of Maximum Temp Sensor", "Unit": "MaxTempBMSID", "Value": "char", "Position": 5, "Part": 1 }, { "Description": "Temp Sensor Address of Maximum Value", "Unit": "MaxTempSensorID", "Value": "char", "Position": 6, "Part": 1 }, { "Description": "AH_MSB", "Unit": "Ah0", "Value": "byte", "Position": 7, "Part": 1 }, { "Description": "AH_LSB", "Unit": "Ah1", "Value": "byte", "Position": 8, "Part": 1 } ], "Type": "IntMixedBytes" } }, "Category": "Information", "Handler": "Array" }, { "Alias": "CellVoltages", "Instruction": "CELL", "Name": "Cell Voltages", "Description": "BMS first responds with how many BMS units are connected, then it sends the values of the cells configured in float Value", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Array of values", "Value": "Array", "Unit": { "Array": [ { "Description": "Number of BMS Units", "Unit": "UnitCount", "Value": "char", "Position": 0, "Part": 0 }, { "Description": "Cell", "Unit": "Volt", "Value": "float", "Position": "template", "Part": 1 } ], "Type": "Byte" } }, "Category": "Information", "Handler": "Array" }, { "Alias": "CellTemperatures", "Instruction": "PTEM", "Name": "Cell temperatures", "Description": "BMS first responds with how many BMS units are connected then it sends the values of the temperature sensors in float Value", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Array of values with variable value template", "Value": "Array", "Unit": { "Array": [ { "Description": "Number of BMS Units", "Unit": "UnitCount", "Value": "char", "Position": 0, "Part": 0 }, { "Description": "Cell", "Unit": "celcius", "Value": "float", "Position": "template", "Part": 1 } ], "Type": "Byte" } }, "Category": "Information", "Handler": "Array" }, { "Alias": "CellResistance", "Instruction": "RINT", "Name": "Cell internal DC resistance", "Description": "BMS first responds with how many BMS units are connected then it sends the values in float Value", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Array of values with variable value template", "Value": "Array", "Unit": { "Array": [ { "Description": "Number of BMS Units", "Unit": "UnitCount", "Value": "char", "Position": 0, "Part": 0 }, { "Description": "Cell", "Unit": "ohms", "Value": "float", "Position": "template", "Part": 1 } ], "Type": "Byte" } }, "Category": "Information", "Handler": "Array" }, { "Alias": "BMSTemperature", "Instruction": "BTEM", "Name": "BMS temperature", "Description": "BMS first responds with value 1, then it sends the values of the BMS temperature sensor in float Value.", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Array of values with variable value template", "Value": "Array", "Unit": { "Array": [ { "Description": "Byte count of message payload", "Unit": "ByteCount", "Value": "char", "Position": 0, "Part": 0 }, { "Description": "BMS", "Unit": "celcius", "Value": "float", "Position": "template", "Part": 1 } ], "Type": "Byte" } }, "Category": "Information", "Handler": "Array" }, { "Alias": "BMSErrors", "Instruction": "ERRO", "Name": "Error number description array", "Description": "First answer is 4 how many byte data will be sent and then data message follows as 4 byte values.", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Variable array of values", "Value": "Array", "Unit": { "Array": [ { "Description": "Byte count of message payload", "Unit": "ByteCount", "Value": "char", "Position": 0, "Part": 0 }, { "Description": "0 – no error, 1 – error", "Unit": "boolean", "Value": "char", "Position": 1, "Part": 1 }, { "Description": "BMS unit", "Unit": "identity_bms", "Value": "char", "Position": 2, "Part": 1 }, { "Description": "error number (1-16)", "Unit": "identity", "Value": "char", "Position": 3, "Part": 1 }, { "Description": "number of the cell, temperature sensor where the error occured", "Unit": "identity", "Value": "char", "Position": 4, "Part": 1 } ], "Type": "Int" } }, "Category": "Information", "Handler": "Array" }, { "Alias": "BalanceEnd", "Instruction": "BVOL", "Name": "Balance end Voltage", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 2.5, "Max": 4.3 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "BalanceStart", "Instruction": "BMIN", "Name": "Balance start Voltage", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 2.5, "Max": 4.3 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellMax", "Instruction": "CMAX", "Name": "Cell over-Voltage switch-off", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 2, "Max": 4.3 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellHysteresisMax", "Instruction": "MAXH", "Name": "Over-Voltage switch-off hysteresis per cell", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 0.005, "Max": 2 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellMin", "Instruction": "CMIN", "Name": "Cell under-Voltage switch-off", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 1.8, "Max": 4 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellHysteresisMin", "Instruction": "MINH", "Name": "Under- Voltage switch-off hysteresis between cells", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 0.005, "Max": 2 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellChargeEnd", "Instruction": "CHAR", "Name": "Cell End of charging Voltage", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 2, "Max": 4.3 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellChargeHysteresisEnd", "Instruction": "CHIS", "Name": "End of charging Voltage hysteresis per cell", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 0.005, "Max": 2 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellDifferenceMax", "Instruction": "RAZL", "Name": "Cells max difference", "Description": "Returns Voltage value", "Common": false, "ReadOnly": false, "Range": { "Min": 0.005, "Max": 1 }, "Value": "float", "Return": { "Description": "volts", "Unit": "Volt", "Value": "float" }, "Category": "Cell", "Handler": "Range" }, { "Alias": "CellTemperatureMax", "Instruction": "TMAX", "Name": "cell over temperature switch-off", "Description": "cell over temperature switch-off", "Common": false, "ReadOnly": false, "Range": { "Min": -20, "Max": 65 }, "Value": "float", "Return": { "Description": "temperature", "Unit": "celcius", "Value": "float" }, "Category": "Temperature", "Handler": "Range" }, { "Alias": "CellTemperatureMin", "Instruction": "TMIN", "Name": "Under-temperature charging disable", "Description": "Under-temperature charging disable", "Common": false, "ReadOnly": false, "Range": { "Min": -30, "Max": 65 }, "Value": "float", "Return": { "Description": "temperature", "Unit": "celcius", "Value": "float" }, "Category": "Temperature", "Handler": "Range" }, { "Alias": "BMSTemperatureMax", "Instruction": "TBAL", "Name": "BMS over-temperature switch-off", "Description": "BMS over-temperature switch-off", "Common": false, "ReadOnly": false, "Range": { "Min": -20, "Max": 65 }, "Value": "float", "Return": { "Description": "temperature", "Unit": "celcius", "Value": "float" }, "Category": "Temperature", "Handler": "Range" }, { "Alias": "BMSTemperatureHysteresisMax", "Instruction": "BMTH", "Name": "BMS over temperature switch-off hysteresis", "Description": "BMS over temperature switch-off hysteresis", "Common": false, "ReadOnly": false, "Range": { "Min": 1, "Max": 30 }, "Value": "float", "Return": { "Description": "temperature", "Unit": "celcius", "Value": "float" }, "Category": "Temperature", "Handler": "Range" }, { "Alias": "CurrentZeroOffset", "Instruction": "IOFF", "Name": "Current measurement zero offset", "Description": "Current measurement zero offset", "Common": false, "ReadOnly": false, "Range": { "Min": -2, "Max": 2 }, "Value": "float", "Return": { "Description": "current in amps", "Unit": "Amps", "Value": "float" }, "Category": "Amperage", "Handler": "Range" }, { "Alias": "VoltageCurrentCoefficient", "Instruction": "IOJA", "Name": "Voltage to current coefficient", "Description": "Voltage to current coefficient", "Common": false, "ReadOnly": false, "Range": { "Min": 0.0005, "Max": 0.5 }, "Value": "float", "Return": { "Description": "coefficient", "Unit": "mu", "Value": "float" }, "Category": "Amperage", "Handler": "Range" }, { "Alias": "Cycles", "Instruction": "CYCL", "Name": "Number of full battery pack cycles", "Description": "Number of full battery pack cycles", "Common": true, "ReadOnly": false, "Range": { "Min": 0, "Max": 8000 }, "Value": "int", "Return": { "Description": "battery pack cycles", "Unit": "count", "Value": "int" }, "Category": "Pack", "Handler": "Range" }, { "Alias": "Capacity", "Instruction": "CAPA", "Name": "Battery pack capacity", "Description": "Battery pack capacity", "Common": true, "ReadOnly": false, "Range": { "Min": 1, "Max": 5000 }, "Value": "float", "Return": { "Description": "capacity in Amp hours", "Unit": "Amps", "Value": "float" }, "Category": "Pack", "Handler": "Range" }, { "Alias": "Chemistry", "Instruction": "CHEM", "Name": "Li-ion chemistry", "Description": "Chemistry type changes BMS algorithm", "Common": true, "ReadOnly": false, "Range": { "Min": 1, "Max": 5 }, "Value": "char", "Return": { "Description": "Battery Chemistry Type", "Unit": "identity", "Value": "char" }, "Category": "Pack", "Handler": "Range" }, { "Alias": "StateOfChargeHysteresis", "Instruction": "SOCH", "Name": "SOC end of charge hysteresis", "Description": "SOC end of charge hysteresis", "Common": false, "ReadOnly": false, "Range": { "Min": 0.005, "Max": 0.99 }, "Value": "float", "Return": { "Description": "Returns float value 0 – 1.0", "Unit": "percent", "Value": "float" }, "Category": "SOC", "Handler": "Range" }, { "Alias": "StateOfCharge", "Instruction": "SOCS", "Name": "SOC manual re-set", "Description": "SOC manual re-set", "Common": false, "ReadOnly": false, "Range": { "Min": 0.01, "Max": 1 }, "Value": "float", "Return": { "Description": "Returns float value 0 – 1.0", "Unit": "percent", "Value": "float" }, "Category": "SOC", "Handler": "Range" }, { "Alias": "ChargeCoefficient", "Instruction": "CHAC", "Name": "Charge coefficient (0-3C)", "Description": "Charge coefficient (0-3C)", "Common": false, "ReadOnly": false, "Range": { "Min": 0.01, "Max": 1 }, "Value": "float", "Return": { "Description": "Returns float value 0-3.0 (default 0.6)", "Unit": "mu", "Value": "float" }, "Category": "Victron", "Handler": "Range" }, { "Alias": "DischargeCoefficient", "Instruction": "DCHC", "Name": "Discharge coefficient (0-3C)", "Description": "Discharge coefficient (0-3C)", "Common": false, "ReadOnly": false, "Range": { "Min": 0.01, "Max": 3 }, "Value": "float", "Return": { "Description": "Returns float value 0-3.0 (default 1.5)", "Unit": "mu", "Value": "float" }, "Category": "Victron", "Handler": "Range" }, { "Alias": "InverterCount", "Instruction": "SISN", "Name": "Number of inverter devices on the bus", "Description": "Number of inverter devices on the bus", "Common": false, "ReadOnly": false, "Range": { "Min": 1, "Max": 6 }, "Value": "char", "Return": { "Description": "default is 1", "Unit": "count", "Value": "char" }, "Category": "Victron", "Handler": "Range" }, { "Alias": "InverterMaxCurrentCharge", "Instruction": "MAXC", "Name": "Maximum charge current per inverter device", "Description": "Maximum charge current per inverter device", "Common": false, "ReadOnly": false, "Range": { "Min": 5, "Max": 345 }, "Value": "float", "Return": { "Description": "amperage per inverter", "Unit": "Amps", "Value": "float" }, "Category": "Victron", "Handler": "Range" }, { "Alias": "InverterMaxCurrentDischarge", "Instruction": "MAXD", "Name": "Maximum discharge current per inverter device", "Description": "Maximum discharge current per inverter device", "Common": false, "ReadOnly": false, "Range": { "Min": 5, "Max": 345 }, "Value": "float", "Return": { "Description": "amperage per inverter", "Unit": "Amps", "Value": "float" }, "Category": "Victron", "Handler": "Range" }, { "Alias": "CellDischargeProtectionMin", "Instruction": "CLOW", "Name": "cell under-Voltage discharge protection", "Description": "cell under-Voltage discharge protection", "Common": false, "ReadOnly": false, "Range": { "Min": 1.8, "Max": 4.2 }, "Value": "float", "Return": { "Description": "Voltage per cell", "Unit": "Volt", "Value": "float" }, "Category": "Victron", "Handler": "Range" }, { "Alias": "CANBUSFrequency", "Instruction": "CANF", "Name": "CAN Frequency", "Description": "CAN Frequency", "Common": false, "ReadOnly": false, "Range": { "Min": 1, "Max": 2 }, "Value": "char", "Return": { "Description": "1 is 250 kb/s 2 is 500 kb/s", "Unit": "identity", "Value": "char" }, "Category": "Victron", "Handler": "Range" }, { "Alias": "MaximumVoltageExcursionCount", "Instruction": "VMAX", "Name": "Number of exceeded values of CMAX", "Description": "Number of exceeded values of CMAX", "Common": false, "ReadOnly": false, "Range": { "Min": 0, "Max": 8000 }, "Value": "int", "Return": { "Description": "Count of cycles of cells over max Voltage", "Unit": "count", "Value": "int" }, "Category": "Error", "Handler": "Range" }, { "Alias": "MinimumVoltageExcursionCount", "Instruction": "VMIN", "Name": "Number of exceeded values of CMIN", "Description": "Number of exceeded values of CMIN", "Common": false, "ReadOnly": false, "Range": { "Min": 0, "Max": 8000 }, "Value": "int", "Return": { "Description": "Count of cycles of cells under minimum Voltage", "Unit": "count", "Value": "int" }, "Category": "Error", "Handler": "Range" }, { "Alias": "SoftwareVersion", "Instruction": "SWVR", "Name": "BMS software version", "Description": "BMS software version", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Current version of software on BMS", "Unit": "Description", "Value": "string" }, "Category": "BMS", "Handler": "String" }, { "Alias": "HardwareVersion", "Instruction": "HWVR", "Name": "BMS hardware version", "Description": "BMS hardware version", "Common": true, "ReadOnly": true, "Range": null, "Value": null, "Return": { "Description": "Hardware revision of BMS", "Unit": "Description", "Value": "string" }, "Category": "BMS", "Handler": "String" }, { "Alias": "CalibrationEvenCells", "Instruction": "EAVC", "Name": "Even cells calibration value", "Description": "Even cells calibration value", "Common": false, "ReadOnly": false, "Range": { "Min": -0.0003, "Max": 0.0003 }, "Value": "float", "Return": { "Description": "even cell calibration value in volts", "Unit": "Volt", "Value": "float" }, "Category": "BMS", "Handler": "Range" }, { "Alias": "CalibrationOddCells", "Instruction": "ODDC", "Name": "Odd cells calibration value", "Description": "Odd cells calibration value", "Common": false, "ReadOnly": false, "Range": { "Min": -0.0003, "Max": 0.0003 }, "Value": "float", "Return": { "Description": "odd cell calibration value in volts", "Unit": "Volt", "Value": "float" }, "Category": "BMS", "Handler": "Range" }, { "Alias": "ADCReferenceVoltage", "Instruction": "REFC", "Name": "ADC reference Voltage 5.000 V +/- 3 mV", "Description": "Analog Digital Converter reference Voltage 5.000 V +/- 3 mV", "Common": false, "ReadOnly": true, "Value": "float", "Return": { "Description": "ADC reference Voltage value", "Unit": "Volt", "Value": "float" }, "Category": "BMS", "Handler": "Range" } ] } |