/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.nibeheatpump.protocol;
import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import org.apache.commons.lang.ArrayUtils;
import org.openhab.binding.nibeheatpump.internal.NibeHeatPumpException;
/**
* Class for parse data packets from Nibe heat pumps
*
* @author Pauli Anttila
* @since 1.3.0
*/
public class NibeHeatPumpDataParser {
public enum NibeDataType {
U8,
U16,
U32,
S8,
S16,
S32;
}
public enum Type {
Sensor,
Status,
Settings;
}
public static class VariableInformation {
public double factor;
public String variable;
public NibeDataType dataType;
public Type type;
public VariableInformation() {
}
public VariableInformation(double factor, String variable, NibeDataType dataType, Type type) {
this.factor = factor;
this.variable = variable;
this.dataType = dataType;
this.type = type;
}
}
@SuppressWarnings("serial")
public static final Map<Integer, VariableInformation> VARIABLE_INFO_F750 = Collections
.unmodifiableMap(new HashMap<Integer, VariableInformation>() {
{
put(40004, new VariableInformation(10, "BT1 Outdoor temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40005, new VariableInformation(10, "EB23-BT2 Supply temp S4", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40006, new VariableInformation(10, "EB22-BT2 Supply temp S3", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40007, new VariableInformation(10, "EB21-BT2 Supply temp S2", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40008, new VariableInformation(10, "BT2 Supply temp S1", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40012,
new VariableInformation(10, "EB100-EP14-BT3 Return temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40013, new VariableInformation(10, "BT7 Hot Water top", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40014, new VariableInformation(10, "BT6 Hot Water load", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40017, new VariableInformation(10, "EB100-EP14-BT12 Cond. out", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40018,
new VariableInformation(10, "EB100-EP14-BT14 Hot gas temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40019,
new VariableInformation(10, "EB100-EP14-BT15 Liquid line", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40020,
new VariableInformation(10, "EB100-BT16 Evaporator temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40022, new VariableInformation(10, "EB100-EP14-BT17 Suction", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40025,
new VariableInformation(10, "EB100-BT20 Exhaust air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40026,
new VariableInformation(10, "EB100-BT21 Vented air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40030, new VariableInformation(10, "EB23-BT50 Room Temp S4", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40031, new VariableInformation(10, "EB22-BT50 Room Temp S3", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40032, new VariableInformation(10, "EB21-BT50 Room Temp S2", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40033, new VariableInformation(10, "BT50 Room Temp S1", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40045, new VariableInformation(10, "EQ1-BT64 PCS4 Supply Temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40047, new VariableInformation(10, "EB100-BT61 Supply Radiator Temp", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(40048, new VariableInformation(10, "EB100-BT62 Return Radiator Temp", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(40050, new VariableInformation(10, "EB100-BS1 Air flow", NibeDataType.S16, Type.Sensor)); // Unit:
put(40051, new VariableInformation(100, "EB100-BS1 Air flow unfiltered", NibeDataType.S16,
Type.Sensor)); // Unit:
put(40054,
new VariableInformation(1, "EB100-FD1 Temperature limiter", NibeDataType.S16, Type.Sensor)); // Unit:
put(40067, new VariableInformation(10, "BT1 Average", NibeDataType.S16, Type.Sensor)); // Unit: �C
put(40071, new VariableInformation(10, "BT25 external supply temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40072, new VariableInformation(10, "BF1 Flow", NibeDataType.S16, Type.Sensor)); // Unit: l/m
put(40074, new VariableInformation(1, "EB100-FR1 Anode Status", NibeDataType.S16, Type.Sensor)); // Unit:
put(40077, new VariableInformation(10, "BT6 external water heater load temp.", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(40078, new VariableInformation(10, "BT7 external water heater top temp.", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(40079, new VariableInformation(10, "EB100-BE3 Current Phase 3", NibeDataType.S32, Type.Sensor)); // Unit:
// A
put(40081, new VariableInformation(10, "EB100-BE2 Current Phase 2", NibeDataType.S32, Type.Sensor)); // Unit:
// A
put(40083, new VariableInformation(10, "EB100-BE1 Current Phase 1", NibeDataType.S32, Type.Sensor)); // Unit:
// A
put(40107,
new VariableInformation(10, "EB100-BT20 Exhaust air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40108,
new VariableInformation(10, "EB100-BT20 Exhaust air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40109,
new VariableInformation(10, "EB100-BT20 Exhaust air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40110,
new VariableInformation(10, "EB100-BT21 Vented air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40111,
new VariableInformation(10, "EB100-BT21 Vented air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40112,
new VariableInformation(10, "EB100-BT21 Vented air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40127, new VariableInformation(10, "EB23-BT3 Return temp S4", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40128, new VariableInformation(10, "EB22-BT3 Return temp S3", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40129, new VariableInformation(10, "EB21-BT3 Return temp S2", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40141, new VariableInformation(10, "AZ2-BT22 Supply air temp. SAM", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(40142,
new VariableInformation(10, "AZ2-BT23 Outdoor temp. SAM", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40143, new VariableInformation(10, "AZ2-BT68 Flow temp. SAM", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40144, new VariableInformation(10, "AZ2-BT69 Return temp. SAM", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40157,
new VariableInformation(10, "EP30-BT53 Solar Panel Temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(40158, new VariableInformation(10, "EP30-BT54 Solar Load Temp", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(43001, new VariableInformation(1, "Software version", NibeDataType.U16, Type.Sensor)); // Unit:
put(43005, new VariableInformation(10, "Degree Minutes", NibeDataType.S16, Type.Sensor)); // Unit:
put(43006, new VariableInformation(10, "Calculated Supply Temperature S4", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(43007, new VariableInformation(10, "Calculated Supply Temperature S3", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(43008, new VariableInformation(10, "Calculated Supply Temperature S2", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(43009, new VariableInformation(10, "Calculated Supply Temperature S1", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(43013, new VariableInformation(1, "Freeze Protection Status", NibeDataType.U8, Type.Sensor)); // Unit:
put(43061, new VariableInformation(1, "t. after start timer", NibeDataType.U8, Type.Sensor)); // Unit:
put(43062, new VariableInformation(1, "t. after mode change", NibeDataType.U8, Type.Sensor)); // Unit:
put(43064, new VariableInformation(10, "HMF dT set.", NibeDataType.S16, Type.Sensor)); // Unit:
put(43065, new VariableInformation(10, "HMF dT act.", NibeDataType.S16, Type.Sensor)); // Unit:
put(43081, new VariableInformation(10, "Tot. op.time add.", NibeDataType.S32, Type.Sensor)); // Unit:
// h
put(43084, new VariableInformation(100, "Int. el.add. Power", NibeDataType.S16, Type.Sensor)); // Unit:
// kW
put(43086, new VariableInformation(1, "Prio", NibeDataType.U8, Type.Sensor)); // Unit:
put(43091, new VariableInformation(1, "Int. el.add. State", NibeDataType.U8, Type.Sensor)); // Unit:
put(43108, new VariableInformation(1, "Fan speed current", NibeDataType.U8, Type.Sensor)); // Unit:
// %
put(43122, new VariableInformation(1, "Compr. current min.freq.", NibeDataType.S16, Type.Sensor)); // Unit:
// Hz
put(43123, new VariableInformation(1, "Compr. current max.freq.", NibeDataType.S16, Type.Sensor)); // Unit:
// Hz
put(43124, new VariableInformation(10, "Airflow ref.", NibeDataType.S16, Type.Sensor)); // Unit:
put(43132, new VariableInformation(1, "Inverter com. timer", NibeDataType.U16, Type.Sensor)); // Unit:
// sec
put(43133, new VariableInformation(1, "Inverter drive status", NibeDataType.U16, Type.Sensor)); // Unit:
put(43136, new VariableInformation(10, "Compr. current freq.", NibeDataType.U16, Type.Sensor)); // Unit:
// Hz
put(43137, new VariableInformation(1, "Inverter alarm code", NibeDataType.U16, Type.Sensor)); // Unit:
put(43138, new VariableInformation(1, "Inverter fault code", NibeDataType.U16, Type.Sensor)); // Unit:
put(43140, new VariableInformation(10, "compr. temp.", NibeDataType.S16, Type.Sensor)); // Unit: �C
// put(43141, new VariableInformation(1, "compr. in power", NibeDataType.U16, Type.Sensor)); //
// Unit: W
put(43141, new VariableInformation(0.1, "compr. in power", NibeDataType.U16, Type.Sensor)); // Unit:
// W
put(43144, new VariableInformation(100, "Compr. energy total", NibeDataType.U32, Type.Sensor)); // Unit:
// kWh
put(43147, new VariableInformation(1, "Compr. in current", NibeDataType.S16, Type.Sensor)); // Unit:
// A
put(43181, new VariableInformation(1, "Chargepump speed", NibeDataType.S16, Type.Sensor)); // Unit:
put(43182, new VariableInformation(1, "Compr. freq. setpoint", NibeDataType.U16, Type.Sensor)); // Unit:
// Hz
put(43239, new VariableInformation(10, "Tot. HW op.time add.", NibeDataType.S32, Type.Sensor)); // Unit:
// h
put(43305, new VariableInformation(100, "Compr. energy HW", NibeDataType.U32, Type.Sensor)); // Unit:
// kWh
put(43375, new VariableInformation(1, "compr. in power mean", NibeDataType.S16, Type.Sensor)); // Unit:
// W
put(43382, new VariableInformation(1, "Inverter mem error code", NibeDataType.U16, Type.Sensor)); // Unit:
put(43416,
new VariableInformation(1, "Compressor starts EB100-EP14", NibeDataType.S32, Type.Sensor)); // Unit:
put(43420, new VariableInformation(1, "Tot. op.time compr. EB100-EP14", NibeDataType.S32,
Type.Sensor)); // Unit: h
put(43424, new VariableInformation(1, "Tot. HW op.time compr. EB100-EP14", NibeDataType.S32,
Type.Sensor)); // Unit: h
put(43427, new VariableInformation(1, "Compressor State EP14", NibeDataType.U8, Type.Sensor)); // Unit:
put(43435, new VariableInformation(1, "Compressor status EP14", NibeDataType.U8, Type.Sensor)); // Unit:
put(43437, new VariableInformation(1, "HM-pump Status EP14", NibeDataType.U8, Type.Sensor)); // Unit:
put(43514, new VariableInformation(1, "PCA-Base Relays EP14", NibeDataType.U8, Type.Sensor)); // Unit:
put(43516, new VariableInformation(1, "PCA-Power Relays EP14", NibeDataType.U8, Type.Sensor)); // Unit:
put(43542,
new VariableInformation(10, "Calculated supply air temp.", NibeDataType.S16, Type.Sensor)); // Unit:
// �C
put(44258, new VariableInformation(1, "External supply air accessory relays", NibeDataType.U8,
Type.Sensor)); // Unit:
put(44267, new VariableInformation(10, "Calc. Cooling Supply Temperature S4", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(44268, new VariableInformation(10, "Calc. Cooling Supply Temperature S3", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(44269, new VariableInformation(10, "Calc. Cooling Supply Temperature S2", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(44270, new VariableInformation(10, "Calc. Cooling Supply Temperature S1", NibeDataType.S16,
Type.Sensor)); // Unit: �C
put(44317, new VariableInformation(1, "SCA accessory relays", NibeDataType.U8, Type.Sensor)); // Unit:
put(44331, new VariableInformation(1, "Software release", NibeDataType.U8, Type.Sensor)); // Unit:
put(45001, new VariableInformation(1, "Alarm number", NibeDataType.S16, Type.Sensor)); // Unit:
put(47062, new VariableInformation(10, "HW charge offset", NibeDataType.S8, Type.Settings)); // Unit:
// �C
put(47291, new VariableInformation(1, "Floor drying timer", NibeDataType.U16, Type.Settings)); // Unit:
// hrs
put(47004, new VariableInformation(1, "Heat curve S4", NibeDataType.S8, Type.Settings)); // Unit:
put(47005, new VariableInformation(1, "Heat curve S3", NibeDataType.S8, Type.Settings)); // Unit:
put(47006, new VariableInformation(1, "Heat curve S2", NibeDataType.S8, Type.Settings)); // Unit:
put(47007, new VariableInformation(1, "Heat curve S1", NibeDataType.S8, Type.Settings)); // Unit:
put(47008, new VariableInformation(1, "Offset S4", NibeDataType.S8, Type.Settings)); // Unit:
put(47009, new VariableInformation(1, "Offset S3", NibeDataType.S8, Type.Settings)); // Unit:
put(47010, new VariableInformation(1, "Offset S2", NibeDataType.S8, Type.Settings)); // Unit:
put(47011, new VariableInformation(1, "Offset S1", NibeDataType.S8, Type.Settings)); // Unit:
put(47012, new VariableInformation(10, "Min Supply System 4", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47013, new VariableInformation(10, "Min Supply System 3", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47014, new VariableInformation(10, "Min Supply System 2", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47015, new VariableInformation(10, "Min Supply System 1", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47016, new VariableInformation(10, "Max Supply System 4", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47017, new VariableInformation(10, "Max Supply System 3", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47018, new VariableInformation(10, "Max Supply System 2", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47019, new VariableInformation(10, "Max Supply System 1", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47020, new VariableInformation(1, "Own Curve P7", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47021, new VariableInformation(1, "Own Curve P6", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47022, new VariableInformation(1, "Own Curve P5", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47023, new VariableInformation(1, "Own Curve P4", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47024, new VariableInformation(1, "Own Curve P3", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47025, new VariableInformation(1, "Own Curve P2", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47026, new VariableInformation(1, "Own Curve P1", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47027,
new VariableInformation(1, "Point offset outdoor temp.", NibeDataType.S8, Type.Settings)); // Unit:
// �C
put(47028, new VariableInformation(1, "Point offset", NibeDataType.S8, Type.Settings)); // Unit: �C
put(47029, new VariableInformation(1, "External adjustment S4", NibeDataType.S8, Type.Settings)); // Unit:
put(47030, new VariableInformation(1, "External adjustment S3", NibeDataType.S8, Type.Settings)); // Unit:
put(47031, new VariableInformation(1, "External adjustment S2", NibeDataType.S8, Type.Settings)); // Unit:
put(47032, new VariableInformation(1, "External adjustment S1", NibeDataType.S8, Type.Settings)); // Unit:
put(47033, new VariableInformation(10, "External adjustment with room sensor S4", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47034, new VariableInformation(10, "External adjustment with room sensor S3", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47035, new VariableInformation(10, "External adjustment with room sensor S2", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47036, new VariableInformation(10, "External adjustment with room sensor S1", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47041, new VariableInformation(1, "Hot water mode", NibeDataType.S8, Type.Settings)); // Unit:
put(47043, new VariableInformation(10, "Start temperature HW Luxury", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47044, new VariableInformation(10, "Start temperature HW Normal", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47045, new VariableInformation(10, "Start temperature HW Economy", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47046, new VariableInformation(10, "Stop temperature Periodic HW", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47047,
new VariableInformation(10, "Stop temperature HW Luxury", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47048,
new VariableInformation(10, "Stop temperature HW Normal", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47049, new VariableInformation(10, "Stop temperature HW Economy", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(47050, new VariableInformation(1, "Periodic HW", NibeDataType.S8, Type.Settings)); // Unit:
put(47051, new VariableInformation(1, "Periodic HW Interval", NibeDataType.S8, Type.Settings)); // Unit:
// days
put(47054, new VariableInformation(1, "Run time HWC", NibeDataType.S8, Type.Settings)); // Unit: min
put(47055, new VariableInformation(1, "Still time HWC", NibeDataType.S8, Type.Settings)); // Unit:
// min
put(47092, new VariableInformation(1, "Manual compfreq HW", NibeDataType.U8, Type.Settings)); // Unit:
put(47093, new VariableInformation(1, "Manual compfreq speed HW", NibeDataType.U16, Type.Settings)); // Unit:
// Hz
put(47094, new VariableInformation(1, "Sec per compfreq step", NibeDataType.U8, Type.Settings)); // Unit:
// s
put(47095, new VariableInformation(1, "Max compfreq step", NibeDataType.U8, Type.Settings)); // Unit:
// Hz
put(47096, new VariableInformation(1, "Manual compfreq Heating", NibeDataType.U8, Type.Settings)); // Unit:
put(47097, new VariableInformation(1, "Min speed after start", NibeDataType.U8, Type.Settings)); // Unit:
// Min
put(47098, new VariableInformation(1, "Min speed after HW", NibeDataType.U8, Type.Settings)); // Unit:
// Min
put(47099, new VariableInformation(1, "GMz", NibeDataType.U8, Type.Settings)); // Unit:
put(47100, new VariableInformation(10, "Max diff VBF-BerVBF", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47101, new VariableInformation(1, "Comp freq reg P", NibeDataType.U8, Type.Settings)); // Unit:
put(47102, new VariableInformation(1, "Comp freq max delta F", NibeDataType.S8, Type.Settings)); // Unit:
// Hz
put(47103, new VariableInformation(1, "Min comp freq", NibeDataType.S16, Type.Settings)); // Unit:
// Hz
put(47104, new VariableInformation(1, "Max comp freq", NibeDataType.S16, Type.Settings)); // Unit:
// Hz
put(47105, new VariableInformation(1, "Comp freq heating", NibeDataType.S16, Type.Settings)); // Unit:
// Hz
put(47131, new VariableInformation(1, "Language", NibeDataType.S8, Type.Settings)); // Unit:
put(47134, new VariableInformation(1, "Period HW", NibeDataType.U8, Type.Settings)); // Unit: min
put(47135, new VariableInformation(1, "Period Heat", NibeDataType.U8, Type.Settings)); // Unit: min
put(47136, new VariableInformation(1, "Period Pool", NibeDataType.U8, Type.Settings)); // Unit: min
put(47138, new VariableInformation(1, "Operational mode heat medium pump", NibeDataType.U8,
Type.Settings)); // Unit:
put(47206, new VariableInformation(1, "DM start heating", NibeDataType.S16, Type.Settings)); // Unit:
put(47207, new VariableInformation(1, "DM start cooling", NibeDataType.S16, Type.Settings)); // Unit:
put(47208, new VariableInformation(1, "DM start add.", NibeDataType.S16, Type.Settings)); // Unit:
put(47209, new VariableInformation(1, "DM between add. steps", NibeDataType.S16, Type.Settings)); // Unit:
put(47210, new VariableInformation(1, "DM start add. with shunt", NibeDataType.S16, Type.Settings)); // Unit:
put(47212, new VariableInformation(100, "Max int add. power", NibeDataType.S16, Type.Settings)); // Unit:
// kW
put(47214, new VariableInformation(1, "Fuse", NibeDataType.U8, Type.Settings)); // Unit: A
put(47261, new VariableInformation(1, "Exhaust Fan speed 4", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47262, new VariableInformation(1, "Exhaust Fan speed 3", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47263, new VariableInformation(1, "Exhaust Fan speed 2", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47264, new VariableInformation(1, "Exhaust Fan speed 1", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47265, new VariableInformation(1, "Exhaust Fan speed normal", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47266, new VariableInformation(1, "Supply Fan speed 4", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47267, new VariableInformation(1, "Supply Fan speed 3", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47268, new VariableInformation(1, "Supply Fan speed 2", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47269, new VariableInformation(1, "Supply Fan speed 1", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47270, new VariableInformation(1, "Supply Fan speed normal", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47271, new VariableInformation(1, "Fan return time 4", NibeDataType.U8, Type.Settings)); // Unit:
// h
put(47272, new VariableInformation(1, "Fan return time 3", NibeDataType.U8, Type.Settings)); // Unit:
// h
put(47273, new VariableInformation(1, "Fan return time 2", NibeDataType.U8, Type.Settings)); // Unit:
// h
put(47274, new VariableInformation(1, "Fan return time 1", NibeDataType.U8, Type.Settings)); // Unit:
// h
put(47275, new VariableInformation(1, "Filter Reminder period", NibeDataType.U8, Type.Settings)); // Unit:
// Months
put(47276, new VariableInformation(1, "Floor drying", NibeDataType.U8, Type.Settings)); // Unit:
put(47277, new VariableInformation(1, "Floor drying period 7", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47278, new VariableInformation(1, "Floor drying period 6", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47279, new VariableInformation(1, "Floor drying period 5", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47280, new VariableInformation(1, "Floor drying period 4", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47281, new VariableInformation(1, "Floor drying period 3", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47282, new VariableInformation(1, "Floor drying period 2", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47283, new VariableInformation(1, "Floor drying period 1", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47284, new VariableInformation(1, "Floor drying temp. 7", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47285, new VariableInformation(1, "Floor drying temp. 6", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47286, new VariableInformation(1, "Floor drying temp. 5", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47287, new VariableInformation(1, "Floor drying temp. 4", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47288, new VariableInformation(1, "Floor drying temp. 3", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47289, new VariableInformation(1, "Floor drying temp. 2", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47290, new VariableInformation(1, "Floor drying temp. 1", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47294, new VariableInformation(1, "Use airflow defrost", NibeDataType.U8, Type.Settings)); // Unit:
put(47295, new VariableInformation(1, "Airflow reduction trig", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47296, new VariableInformation(1, "Airflow defrost done", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47297, new VariableInformation(1, "Initiate inverter", NibeDataType.U8, Type.Settings)); // Unit:
put(47298, new VariableInformation(1, "Force inverter init", NibeDataType.U8, Type.Settings)); // Unit:
put(47299, new VariableInformation(1, "Min time defrost", NibeDataType.U8, Type.Settings)); // Unit:
// min
put(47300, new VariableInformation(10, "DOT", NibeDataType.S16, Type.Settings)); // Unit: �C
put(47301, new VariableInformation(10, "delta T at DOT", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47302,
new VariableInformation(1, "Climate system 2 accessory", NibeDataType.U8, Type.Settings)); // Unit:
put(47303,
new VariableInformation(1, "Climate system 3 accessory", NibeDataType.U8, Type.Settings)); // Unit:
put(47304,
new VariableInformation(1, "Climate system 4 accessory", NibeDataType.U8, Type.Settings)); // Unit:
put(47305, new VariableInformation(10, "Climate system 4 mixing valve amp.", NibeDataType.S8,
Type.Settings)); // Unit:
put(47306, new VariableInformation(10, "Climate system 3 mixing valve amp.", NibeDataType.S8,
Type.Settings)); // Unit:
put(47307, new VariableInformation(10, "Climate system 2 mixing valve amp.", NibeDataType.S8,
Type.Settings)); // Unit:
put(47308, new VariableInformation(10, "Climate system 4 shunt wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47309, new VariableInformation(10, "Climate system 3 shunt wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47310, new VariableInformation(10, "Climate system 2 shunt wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47317, new VariableInformation(1, "Shunt controlled add. accessory", NibeDataType.U8,
Type.Settings)); // Unit:
put(47318, new VariableInformation(1, "Shunt controlled add. min. temp.", NibeDataType.S8,
Type.Settings)); // Unit: �C
put(47319, new VariableInformation(1, "Shunt controlled add. min. runtime", NibeDataType.U8,
Type.Settings)); // Unit: hrs
put(47320, new VariableInformation(10, "Shunt controlled add. mixing valve amp.", NibeDataType.S8,
Type.Settings)); // Unit:
put(47321, new VariableInformation(1, "Shunt controlled add. mixing valve wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47352, new VariableInformation(1, "SMS40 accessory", NibeDataType.U8, Type.Settings)); // Unit:
put(47370, new VariableInformation(1, "Allow Additive Heating", NibeDataType.U8, Type.Settings)); // Unit:
put(47371, new VariableInformation(1, "Allow Heating", NibeDataType.U8, Type.Settings)); // Unit:
put(47372, new VariableInformation(1, "Allow Cooling", NibeDataType.U8, Type.Settings)); // Unit:
put(47378, new VariableInformation(10, "Max diff. comp.", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47379, new VariableInformation(10, "Max diff. add.", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47384, new VariableInformation(1, "Date format", NibeDataType.U8, Type.Settings)); // Unit:
put(47385, new VariableInformation(1, "Time format", NibeDataType.U8, Type.Settings)); // Unit:
put(47387, new VariableInformation(1, "HW production", NibeDataType.U8, Type.Settings)); // Unit:
put(47388, new VariableInformation(1, "Alarm lower room temp.", NibeDataType.U8, Type.Settings)); // Unit:
put(47389, new VariableInformation(1, "Alarm lower HW temp.", NibeDataType.U8, Type.Settings)); // Unit:
put(47391, new VariableInformation(1, "Use room sensor S4", NibeDataType.U8, Type.Settings)); // Unit:
put(47392, new VariableInformation(1, "Use room sensor S3", NibeDataType.U8, Type.Settings)); // Unit:
put(47393, new VariableInformation(1, "Use room sensor S2", NibeDataType.U8, Type.Settings)); // Unit:
put(47394, new VariableInformation(1, "Use room sensor S1", NibeDataType.U8, Type.Settings)); // Unit:
put(47395, new VariableInformation(10, "Room sensor setpoint S4", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47396, new VariableInformation(10, "Room sensor setpoint S3", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47397, new VariableInformation(10, "Room sensor setpoint S2", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47398, new VariableInformation(10, "Room sensor setpoint S1", NibeDataType.S16, Type.Settings)); // Unit:
// �C
put(47399, new VariableInformation(10, "Room sensor factor S4", NibeDataType.U8, Type.Settings)); // Unit:
put(47400, new VariableInformation(10, "Room sensor factor S3", NibeDataType.U8, Type.Settings)); // Unit:
put(47401, new VariableInformation(10, "Room sensor factor S2", NibeDataType.U8, Type.Settings)); // Unit:
put(47402, new VariableInformation(10, "Room sensor factor S1", NibeDataType.U8, Type.Settings)); // Unit:
put(47415, new VariableInformation(1, "Speed circ.pump Pool", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47417, new VariableInformation(1, "Speed circ.pump Cooling", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47442, new VariableInformation(1, "preset flow clim. sys.", NibeDataType.U8, Type.Settings)); // Unit:
put(47473, new VariableInformation(1, "Max time defrost", NibeDataType.U8, Type.Settings)); // Unit:
// min
put(47537, new VariableInformation(1, "Night cooling", NibeDataType.U8, Type.Settings)); // Unit:
put(47538, new VariableInformation(1, "Start room temp. night cooling", NibeDataType.U8,
Type.Settings)); // Unit: �C
put(47539, new VariableInformation(1, "Night Cooling Min. diff.", NibeDataType.U8, Type.Settings)); // Unit:
// �C
put(47555, new VariableInformation(1, "DEW accessory", NibeDataType.U8, Type.Settings)); // Unit:
put(47570, new VariableInformation(1, "Operational mode", NibeDataType.U8, Type.Settings)); // Unit:
put(48134,
new VariableInformation(1, "Operational mode charge pump", NibeDataType.U8, Type.Settings)); // Unit:
put(48158, new VariableInformation(10, "SAM supply air curve: outdoor temp T3", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(48159, new VariableInformation(10, "SAM supply air curve: outdoor temp T2", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(48160, new VariableInformation(10, "SAM supply air curve: outdoor temp T1", NibeDataType.S16,
Type.Settings)); // Unit: �C
put(48161, new VariableInformation(10, "SAM supply air curve: supply air temp at T3",
NibeDataType.S16, Type.Settings)); // Unit: �C
put(48162, new VariableInformation(10, "SAM supply air curve: supply air temp at T2",
NibeDataType.S16, Type.Settings)); // Unit: �C
put(48163, new VariableInformation(10, "SAM supply air curve: supply air temp at T1",
NibeDataType.S16, Type.Settings)); // Unit: �C
put(48201, new VariableInformation(1, "SCA accessory", NibeDataType.U8, Type.Settings)); // Unit:
}
});
@SuppressWarnings("serial")
public static final Map<Integer, VariableInformation> VARIABLE_INFO_F1145_F1245 = Collections
.unmodifiableMap(new HashMap<Integer, VariableInformation>() {
{
put(40004, new VariableInformation(10, "BT1 outdoor temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40005, new VariableInformation(10, "EB23-BT2 supply temp S4", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40006, new VariableInformation(10, "EB22-BT2 supply temp S3", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40007, new VariableInformation(10, "EB21-BT2 supply temp S2", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40008, new VariableInformation(10, "BT2 supply temp S1", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40012,
new VariableInformation(10, "EB100-EP14-BT3 return temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40013, new VariableInformation(10, "BT7 hot water top", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40014, new VariableInformation(10, "BT6 hot water load", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40015, new VariableInformation(10, "EB100-EP14-BT10 brine in temp", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40016, new VariableInformation(10, "EB100-EP14-BT11 brine out temp", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40017, new VariableInformation(10, "EB100-EP14-BT12 cond out", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40018,
new VariableInformation(10, "EB100-EP14-BT14 hot gas temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40019,
new VariableInformation(10, "EB100-EP14-BT15 liquid line", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40022, new VariableInformation(10, "EB100-EP14-BT17 suction", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40025,
new VariableInformation(10, "EB100-BT20 exhaust air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40026,
new VariableInformation(10, "EB100-BT21 vented air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40028, new VariableInformation(10, "AZ1-BT26 temp collector in FLM 1", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40029, new VariableInformation(10, "AZ1-BT27 temp collector out FLM 1", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40030, new VariableInformation(10, "EB23-BT50 room temp S4", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40031, new VariableInformation(10, "EB22-BT50 room temp S3", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40032, new VariableInformation(10, "EB21-BT50 room temp S2", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40033, new VariableInformation(10, "BT50 room temp S1", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40042, new VariableInformation(10, "CL11-BT51 pool 1 temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40043, new VariableInformation(10, "EP8-BT53 solar panel temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40044, new VariableInformation(10, "EP8-BT54 solar load temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40045, new VariableInformation(10, "EQ1-BT64 PCS4 supply temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40046, new VariableInformation(10, "EQ1-BT65 PCS4 return temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40054,
new VariableInformation(1, "EB100-FD1 temperature limiter", NibeDataType.S16, Type.Sensor)); // Unit:
// none
put(40067,
new VariableInformation(10, "EM1-BT52 boiler temperature", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40070, new VariableInformation(10, "BT25 external supply temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40071, new VariableInformation(10, "BT25 external supply temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40072, new VariableInformation(10, "BF1 Flow", NibeDataType.S16, Type.Sensor)); // Unit: l/m
put(40074, new VariableInformation(1, "EB100-FR1 anode status", NibeDataType.S16, Type.Sensor)); // Unit:
// none
put(40079, new VariableInformation(10, "EB100-BE1 current phase 3", NibeDataType.S32, Type.Sensor)); // Unit:
// A
put(40081, new VariableInformation(10, "EB100-BE1 current phase 2", NibeDataType.S32, Type.Sensor)); // Unit:
// A
put(40083, new VariableInformation(10, "EB100-BE1 current phase 1", NibeDataType.S32, Type.Sensor)); // Unit:
// A
put(40107,
new VariableInformation(10, "EB100-BT20 exhaust air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40108,
new VariableInformation(10, "EB100-BT20 exhaust air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40109,
new VariableInformation(10, "EB100-BT20 exhaust air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40110,
new VariableInformation(10, "EB100-BT21 vented air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40111,
new VariableInformation(10, "EB100-BT21 vented air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40112,
new VariableInformation(10, "EB100-BT21 vented air temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40113, new VariableInformation(10, "AZ1-BT26 temp collector in FLM 4", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40114, new VariableInformation(10, "AZ1-BT26 temp collector in FLM 3", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40115, new VariableInformation(10, "AZ1-BT26 temp collector in FLM 2", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40116, new VariableInformation(10, "AZ1-BT27 temp collector out FLM 4", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40117, new VariableInformation(10, "AZ1-BT27 temp collector out FLM 3", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40118, new VariableInformation(10, "AZ1-BT27 temp collector out FLM 2", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(40127, new VariableInformation(10, "EB23-BT3 return temp S4", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40128, new VariableInformation(10, "EB22-BT3 return temp S3", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40129, new VariableInformation(10, "EB21-BT3 return temp S2", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(40152, new VariableInformation(10, "BT71 ext return temp", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(43001, new VariableInformation(1, "Software version", NibeDataType.U16, Type.Sensor)); // Unit:
// none
put(43005, new VariableInformation(10, "Degree minutes", NibeDataType.S16, Type.Sensor)); // Unit:
// DM
put(43006, new VariableInformation(10, "Calculated supply temp S4", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(43007, new VariableInformation(10, "Calculated supply temp S3", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(43008, new VariableInformation(10, "Calculated supply temp S2", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(43009, new VariableInformation(10, "Calculated supply temp S1", NibeDataType.S16, Type.Sensor)); // Unit:
// C
put(43010, new VariableInformation(10, "Calculated cooling supply temp", NibeDataType.S16,
Type.Sensor)); // Unit: C
put(43013, new VariableInformation(1, "Freeze protection status", NibeDataType.U8, Type.Sensor)); // Unit:
// none,
// 1=Freeze
// protection
// active
put(43024, new VariableInformation(1, "Status cooling", NibeDataType.U8, Type.Sensor)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(43081, new VariableInformation(10, "Total operation time addition", NibeDataType.S32,
Type.Sensor)); // Unit: hours
put(43084, new VariableInformation(100, "Internal electrical addition power", NibeDataType.S16,
Type.Sensor)); // Unit: kW
put(43086, new VariableInformation(1, "Prio", NibeDataType.U8, Type.Sensor)); // Unit: none
put(43091, new VariableInformation(1, "Internal electrical addition state", NibeDataType.U16,
Type.Sensor)); // Unit: none
put(43103, new VariableInformation(1, "HPAC state", NibeDataType.U8, Type.Sensor)); // Unit: none
put(43230, new VariableInformation(10, "Accumulated energy", NibeDataType.U32, Type.Sensor)); // Unit:
// kWh
put(43239, new VariableInformation(1, "Total hot water operation time add", NibeDataType.S32,
Type.Sensor)); // Unit: hours
put(43395, new VariableInformation(1, "HPAC relays", NibeDataType.U8, Type.Sensor)); // Unit: none
put(43416,
new VariableInformation(1, "Compressor starts EB100-EP14", NibeDataType.S32, Type.Sensor)); // Unit:
// none
put(43420, new VariableInformation(1, "Total operation time compressor", NibeDataType.S32,
Type.Sensor)); // Unit: hours
put(43424, new VariableInformation(1, "Total hot water operation time compr", NibeDataType.S32,
Type.Sensor)); // Unit: hours
put(43427, new VariableInformation(1, "Compressor state EP14", NibeDataType.U8, Type.Sensor)); // Unit:
// none,
// //
// 20
// =
// Stopped,
// 40
// =
// Starting,
// 60
// =
// Running,
// 100
// =
// Stopping
put(43514, new VariableInformation(1, "PCA-Base relayes EP14", NibeDataType.U8, Type.Sensor)); // Unit:
// none
put(43516, new VariableInformation(1, "PCA-Power relayes EP14", NibeDataType.U8, Type.Sensor)); // Unit:
// none
put(45001, new VariableInformation(1, "Alarm number", NibeDataType.S16, Type.Status)); // Unit: none
put(47004, new VariableInformation(1, "Heat curve S4", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47005, new VariableInformation(1, "Heat curve S3", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47006, new VariableInformation(1, "Heat curve S2", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47007, new VariableInformation(1, "Heat curve S1", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47008, new VariableInformation(1, "Offset S4", NibeDataType.S8, Type.Settings)); // Unit: none
put(47009, new VariableInformation(1, "Offset S3", NibeDataType.S8, Type.Settings)); // Unit: none
put(47010, new VariableInformation(1, "Offset S2", NibeDataType.S8, Type.Settings)); // Unit: none
put(47011, new VariableInformation(1, "Offset S1", NibeDataType.S8, Type.Settings)); // Unit: none
put(47012, new VariableInformation(10, "Min supply system 4", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47013, new VariableInformation(10, "Min supply system 3", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47014, new VariableInformation(10, "Min supply system 2", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47015, new VariableInformation(10, "Min supply system 1", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47016, new VariableInformation(10, "Max supply system 4", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47017, new VariableInformation(10, "Max supply system 3", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47018, new VariableInformation(10, "Max supply system 2", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47019, new VariableInformation(10, "Max supply system 1", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47020, new VariableInformation(1, "Own curve P7", NibeDataType.S8, Type.Settings)); // Unit: C
put(47021, new VariableInformation(1, "Own curve P6", NibeDataType.S8, Type.Settings)); // Unit: C
put(47022, new VariableInformation(1, "Own curve P5", NibeDataType.S8, Type.Settings)); // Unit: C
put(47023, new VariableInformation(1, "Own curve P4", NibeDataType.S8, Type.Settings)); // Unit: C
put(47024, new VariableInformation(1, "Own curve P3", NibeDataType.S8, Type.Settings)); // Unit: C
put(47025, new VariableInformation(1, "Own curve P2", NibeDataType.S8, Type.Settings)); // Unit: C
put(47026, new VariableInformation(1, "Own curve P1", NibeDataType.S8, Type.Settings)); // Unit: C
put(47027, new VariableInformation(1, "Point offset outdoor temp", NibeDataType.S8, Type.Settings)); // Unit:
// C
put(47028, new VariableInformation(1, "Point offset", NibeDataType.S8, Type.Settings)); // Unit: C
put(47029, new VariableInformation(1, "External adjustment S4", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47030, new VariableInformation(1, "External adjustment S3", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47031, new VariableInformation(1, "External adjustment S2", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47032, new VariableInformation(1, "External adjustment S1", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47033, new VariableInformation(10, "External adjust with room sensor S4", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47034, new VariableInformation(10, "External adjust with room sensor S3", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47035, new VariableInformation(10, "External adjust with room sensor S2", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47036, new VariableInformation(10, "External adjust with room sensor S1", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47041, new VariableInformation(1, "Hot water mode", NibeDataType.S8, Type.Settings)); // Unit:
// none,
// 0=economy,
// 1=normal,
// 2=luxury
put(47043, new VariableInformation(10, "Start temperature hot water luxury", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47044, new VariableInformation(10, "Start temperature hot water normal", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47045, new VariableInformation(10, "Start temperature hot water economy", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47046, new VariableInformation(10, "Stop temperature periodic hot water", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47047, new VariableInformation(10, "Stop temperature hot water luxury", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47048, new VariableInformation(10, "Stop temperature hot water normal", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47049, new VariableInformation(10, "Stop temperature hot water economy", NibeDataType.S16,
Type.Settings)); // Unit: C
put(47050, new VariableInformation(1, "Periodic hot water", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47051,
new VariableInformation(1, "Periodic hot water interval", NibeDataType.S8, Type.Settings)); // Unit:
// days
put(47131, new VariableInformation(1, "Language", NibeDataType.S8, Type.Settings)); // Unit: none,
// 0=English,
// 1=Svenska,
// 5=Suomi
put(47133, new VariableInformation(1, "Period pool 2", NibeDataType.U8, Type.Settings)); // Unit:
// min
put(47134, new VariableInformation(1, "Period hot water", NibeDataType.U8, Type.Settings)); // Unit:
// min
put(47135, new VariableInformation(1, "Period heat", NibeDataType.U8, Type.Settings)); // Unit: min
put(47136, new VariableInformation(1, "Period pool", NibeDataType.U8, Type.Settings)); // Unit: min
put(47138, new VariableInformation(1, "Operational mode heat medium pump", NibeDataType.U8,
Type.Settings)); // Unit: none, 10=intermittent, 20=continuous, 30=economy, 40=auto
put(47139, new VariableInformation(1, "Operational mode brine medium pump", NibeDataType.U8,
Type.Settings)); // Unit: none, 10=intermittent, 20=continuous, 30=economy, 40=auto
put(47206, new VariableInformation(1, "DM start heating", NibeDataType.S16, Type.Settings)); // Unit:
// DM
put(47207, new VariableInformation(1, "DM start cooling", NibeDataType.S16, Type.Settings)); // Unit:
// DM
put(47208, new VariableInformation(1, "DM start addition", NibeDataType.S16, Type.Settings)); // Unit:
// DM
put(47209,
new VariableInformation(1, "DM between addition steps", NibeDataType.S16, Type.Settings)); // Unit:
// DM
put(47210, new VariableInformation(1, "DM start addition with shunt", NibeDataType.S16,
Type.Settings)); // Unit: DM
put(47212, new VariableInformation(100, "Max int addition power", NibeDataType.S16, Type.Settings)); // Unit:
// kW
put(47214, new VariableInformation(1, "Fuse", NibeDataType.U8, Type.Settings)); // Unit: A
put(47261, new VariableInformation(1, "Exhaust fan speed 4", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47262, new VariableInformation(1, "Exhaust fan speed 3", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47263, new VariableInformation(1, "Exhaust fan speed 2", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47264, new VariableInformation(1, "Exhaust fan speed 1", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47265, new VariableInformation(1, "Exhaust fan speed normal", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47271, new VariableInformation(1, "Fan return time 4", NibeDataType.U8, Type.Settings)); // Unit:
// hours
put(47272, new VariableInformation(1, "Fan return time 3", NibeDataType.U8, Type.Settings)); // Unit:
// hours
put(47273, new VariableInformation(1, "Fan return time 2", NibeDataType.U8, Type.Settings)); // Unit:
// hours
put(47274, new VariableInformation(1, "Fan return time 1", NibeDataType.U8, Type.Settings)); // Unit:
// hours
put(47275, new VariableInformation(1, "Filter reminder period", NibeDataType.U8, Type.Settings)); // Unit:
// months
put(47276, new VariableInformation(1, "Floor drying", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47277, new VariableInformation(1, "Floor drying period 7", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47278, new VariableInformation(1, "Floor drying period 6", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47279, new VariableInformation(1, "Floor drying period 5", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47280, new VariableInformation(1, "Floor drying period 4", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47281, new VariableInformation(1, "Floor drying period 3", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47282, new VariableInformation(1, "Floor drying period 2", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47283, new VariableInformation(1, "Floor drying period 1", NibeDataType.U8, Type.Settings)); // Unit:
// days
put(47284, new VariableInformation(1, "Floor drying temp 7", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47285, new VariableInformation(1, "Floor drying temp 6", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47286, new VariableInformation(1, "Floor drying temp 5", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47287, new VariableInformation(1, "Floor drying temp 4", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47288, new VariableInformation(1, "Floor drying temp 3", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47289, new VariableInformation(1, "Floor drying temp 2", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47290, new VariableInformation(1, "Floor drying temp 1", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47291, new VariableInformation(1, "Floor drying timer", NibeDataType.U16, Type.Settings)); // Unit:
// hours
put(47302,
new VariableInformation(1, "Climate system 2 accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47303,
new VariableInformation(1, "Climate system 3 accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47304,
new VariableInformation(1, "Climate system 4 accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47305, new VariableInformation(10, "Climate system 4 mixing valve amp", NibeDataType.S8,
Type.Settings)); // Unit: none
put(47306, new VariableInformation(10, "Climate system 3 mixing valve amp", NibeDataType.S8,
Type.Settings)); // Unit: none
put(47307, new VariableInformation(10, "Climate system 2 mixing valve amp", NibeDataType.S8,
Type.Settings)); // Unit: none
put(47308, new VariableInformation(10, "Climate system 4 shunt wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47309, new VariableInformation(10, "Climate system 3 shunt wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47310, new VariableInformation(10, "Climate system 2 shunt wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47312, new VariableInformation(1, "FLM pump", NibeDataType.U8, Type.Settings)); // Unit: none,
// 0=OFF, 1=ON
put(47313, new VariableInformation(1, "FLM defrost", NibeDataType.U8, Type.Settings)); // Unit:
// hours
put(47317, new VariableInformation(1, "Shunt controlled addition accessory", NibeDataType.U8,
Type.Settings)); // Unit: none, 0=OFF, 1=ON
put(47318, new VariableInformation(1, "Shunt controlled add min temp", NibeDataType.S8,
Type.Settings)); // Unit: C
put(47319, new VariableInformation(1, "Shunt controlled add min runtime", NibeDataType.U8,
Type.Settings)); // Unit: hours
put(47320, new VariableInformation(1, "Shunt controlled add mix valve amp", NibeDataType.S8,
Type.Settings)); // Unit: none
put(47321, new VariableInformation(1, "Shunt controlled add mix valve wait", NibeDataType.S16,
Type.Settings)); // Unit: secs
put(47322, new VariableInformation(1, "Step controlled add accessory", NibeDataType.U8,
Type.Settings)); // Unit: none, 0=OFF, 1=ON
put(47323, new VariableInformation(1, "Step controlled add start DM", NibeDataType.S16,
Type.Settings)); // Unit: DM
put(47324,
new VariableInformation(1, "Step controlled add diff DM", NibeDataType.S16, Type.Settings)); // Unit:
// DM
put(47326, new VariableInformation(1, "Step controlled add mode", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=linear,
// 1=binary
put(47327,
new VariableInformation(1, "Ground water pump accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47329, new VariableInformation(1, "Cooling 2-pipe accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47330, new VariableInformation(1, "Cooling 4-pipe accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47331, new VariableInformation(1, "Min cooling supply temp", NibeDataType.S8, Type.Settings)); // Unit:
// C
put(47332,
new VariableInformation(1, "Cooling supply temp at 20C", NibeDataType.S8, Type.Settings)); // Unit:
// C
put(47333,
new VariableInformation(1, "Cooling supply temp at 40C", NibeDataType.S8, Type.Settings)); // Unit:
// C
put(47334,
new VariableInformation(1, "Cooling close mixing valves", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47335, new VariableInformation(1, "Time between switch heat/cooling", NibeDataType.S8,
Type.Settings)); // Unit: hours
put(47336, new VariableInformation(1, "Heat at room under temp", NibeDataType.S8, Type.Settings)); // Unit:
// C
put(47337, new VariableInformation(1, "Cool at room over temp", NibeDataType.S8, Type.Settings)); // Unit:
// C
put(47338, new VariableInformation(1, "Cooling mixing valve amp", NibeDataType.S8, Type.Settings)); // Unit:
// none
put(47339, new VariableInformation(1, "Cooling mixing valve step delay", NibeDataType.S16,
Type.Settings)); // Unit: none
put(47340, new VariableInformation(1, "Cooling with room sensor", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47378, new VariableInformation(10, "Max diff comp", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47379, new VariableInformation(10, "Max diff add", NibeDataType.S16, Type.Settings)); // Unit: C
put(47380, new VariableInformation(1, "Low brine out autoreset", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47381, new VariableInformation(10, "Low brine out temp", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47382, new VariableInformation(1, "High brine in", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47383, new VariableInformation(10, "High brine in temp", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47384, new VariableInformation(1, "Date format", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 1=DD-MM-YY,
// 2=YY-MM-DD
put(47385, new VariableInformation(1, "Time format", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 12=12
// hours,
// 24=24
// hours
put(47387, new VariableInformation(1, "Hot water production", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47388, new VariableInformation(1, "Alarm lower room temp", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47389, new VariableInformation(1, "Alarm lower HW temp", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47391, new VariableInformation(1, "Use room sensor S4", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47392, new VariableInformation(1, "Use room sensor S3", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47393, new VariableInformation(1, "Use room sensor S2", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47394, new VariableInformation(1, "Use room sensor S1", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(47395, new VariableInformation(10, "Room sensor setpoint S4", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47396, new VariableInformation(10, "Room sensor setpoint S3", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47397, new VariableInformation(10, "Room sensor setpoint S2", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47398, new VariableInformation(10, "Room sensor setpoint S1", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(47399, new VariableInformation(10, "Room sensor factor S4", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47400, new VariableInformation(10, "Room sensor factor S3", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47401, new VariableInformation(10, "Room sensor factor S2", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47402, new VariableInformation(10, "Room sensor factor S1", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(47413, new VariableInformation(1, "Speed circ pump hot water", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47414, new VariableInformation(1, "Speed circ pump heat", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47415, new VariableInformation(1, "Speed circ pump pool", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47416, new VariableInformation(1, "Speed circ pump economy", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47417, new VariableInformation(1, "Speed circ pump cooling", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47418, new VariableInformation(1, "Speed brine pump", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(47538,
new VariableInformation(1, "Start room temp nigh cooling", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(47570, new VariableInformation(1, "Operational mode", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=auto,
// 1=manual,
// 2=add
// heat
// only
put(48074, new VariableInformation(10, "Set point for BT74", NibeDataType.S16, Type.Settings)); // Unit:
// none
put(48088, new VariableInformation(1, "Pool 1 accesory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(48090, new VariableInformation(10, "Pool 1 start temp", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(48092, new VariableInformation(10, "Pool 1 stop temp", NibeDataType.S16, Type.Settings)); // Unit:
// C
put(48093, new VariableInformation(1, "Pool 2 activated", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(48094, new VariableInformation(1, "Pool 1 activated", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(48537, new VariableInformation(1, "Night cooling", NibeDataType.U8, Type.Settings)); // Unit:
// none,
// 0=OFF,
// 1=ON
put(48539, new VariableInformation(1, "Night cooling min diff", NibeDataType.U8, Type.Settings)); // Unit:
// C
put(48053, new VariableInformation(1, "FLM 2 speed 4", NibeDataType.U8, Type.Settings)); // Unit: %
put(48054, new VariableInformation(1, "FLM 2 speed 3", NibeDataType.U8, Type.Settings)); // Unit: %
put(48055, new VariableInformation(1, "FLM 2 speed 2", NibeDataType.U8, Type.Settings)); // Unit: %
put(48056, new VariableInformation(1, "FLM 2 speed 1", NibeDataType.U8, Type.Settings)); // Unit: %
put(48057, new VariableInformation(1, "FLM 2 speed normal", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(48058, new VariableInformation(1, "FLM 3 speed 4", NibeDataType.U8, Type.Settings)); // Unit: %
put(48059, new VariableInformation(1, "FLM 3 speed 3", NibeDataType.U8, Type.Settings)); // Unit: %
put(48060, new VariableInformation(1, "FLM 3 speed 2", NibeDataType.U8, Type.Settings)); // Unit: %
put(48061, new VariableInformation(1, "FLM 3 speed 1", NibeDataType.U8, Type.Settings)); // Unit: %
put(48062, new VariableInformation(1, "FLM 3 speed normal", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(48063, new VariableInformation(1, "FLM 4 speed 4", NibeDataType.U8, Type.Settings)); // Unit: %
put(48064, new VariableInformation(1, "FLM 4 speed 3", NibeDataType.U8, Type.Settings)); // Unit: %
put(48065, new VariableInformation(1, "FLM 4 speed 2", NibeDataType.U8, Type.Settings)); // Unit: %
put(48066, new VariableInformation(1, "FLM 4 speed 1", NibeDataType.U8, Type.Settings)); // Unit: %
put(48067, new VariableInformation(1, "FLM 4 speed normal", NibeDataType.U8, Type.Settings)); // Unit:
// %
put(48068, new VariableInformation(1, "FLM 4 accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(48069, new VariableInformation(1, "FLM 3 accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(48070, new VariableInformation(1, "FLM 2 accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(48071, new VariableInformation(1, "FLM 1 accessory", NibeDataType.U8, Type.Settings)); // Unit:
// none
put(48073, new VariableInformation(1, "FLM cooling", NibeDataType.U8, Type.Settings)); // Unit: none
}
});
public static Hashtable<Integer, Short> ParseData(byte[] data) throws NibeHeatPumpException {
if (data[0] == (byte) 0x5C && data[1] == (byte) 0x00 && data[2] == (byte) 0x20 && data[3] == (byte) 0x68
&& data[4] >= (byte) 0x50) {
int datalen = data[4];
int msglen = 5 + datalen;
byte checksum = 0;
// calculate XOR checksum
for (int i = 2; i < msglen; i++) {
checksum ^= data[i];
}
byte msgChecksum = data[msglen];
// if checksum is 0x5C (start character), heat pump seems to send 0xC5 checksum
if (checksum == msgChecksum || (checksum == (byte) 0x5C && msgChecksum == (byte) 0xC5)) {
if (datalen > 0x50) {
// if data contains 0x5C (start character),
// data seems to contains double 0x5C characters
// let's remove doubles
for (int i = 1; i < msglen; i++) {
if (data[i] == (byte) 0x5C) {
data = ArrayUtils.remove(data, i);
msglen--;
}
}
}
// parse data to hash table
Hashtable<Integer, Short> values = new Hashtable<Integer, Short>();
try {
for (int i = 5; i < (msglen - 1); i += 4) {
int id = ((data[i + 1] & 0xFF) << 8 | (data[i + 0] & 0xFF));
short value = (short) ((data[i + 3] & 0xFF) << 8 | (data[i + 2] & 0xFF));
if (id != 0xFFFF) {
values.put(id, value);
}
}
} catch (ArrayIndexOutOfBoundsException e) {
throw new NibeHeatPumpException("Error occured during data parsing", e);
}
return values;
} else {
throw new NibeHeatPumpException("Checksum does not match");
}
} else {
return null;
}
}
}