[nibeheatpump] Added device support for SMO40 control (#9376)
Signed-off-by: Markus Gafner <markus.gafner@hotmail.com>pull/9565/head
parent
ce69f22ef3
commit
ca64d1124a
|
@ -1,7 +1,7 @@
|
||||||
# Nibe Heatpump Binding
|
# Nibe Heatpump Binding
|
||||||
|
|
||||||
The Nibe Heatpump binding is used to get live data from Nibe heat pumps without using an expensive MODBUS40 adapter.
|
The Nibe Heatpump binding is used to get live data from Nibe heat pumps without using an expensive MODBUS40 adapter.
|
||||||
This binding is compatible with the F750, F1145, F1245, F1155, F1255 and F470 heat pump models.
|
This binding is compatible with the F750, F1145, F1245, F1155, F1255, F470 and SMO40 heat pump models.
|
||||||
|
|
||||||
The binding supports data telegrams (containing a maximum of 20 registers) from the heat pump.
|
The binding supports data telegrams (containing a maximum of 20 registers) from the heat pump.
|
||||||
The binding can also read other registers from the pump.
|
The binding can also read other registers from the pump.
|
||||||
|
@ -30,6 +30,9 @@ This binding supports direct serial port connection (RS-485 adapter needed) to h
|
||||||
| f470-serial | Serial port connected F470 Heat Pumps |
|
| f470-serial | Serial port connected F470 Heat Pumps |
|
||||||
| f470-udp | UDP connected Nibe F470 Heat Pumps |
|
| f470-udp | UDP connected Nibe F470 Heat Pumps |
|
||||||
| f470-simulator | Simulator for Nibe F470 Heat Pumps |
|
| f470-simulator | Simulator for Nibe F470 Heat Pumps |
|
||||||
|
| smo40-serial | Serial port connected SMO40 controller |
|
||||||
|
| smo40-udp | UDP connected Nibe SMO40 controller |
|
||||||
|
| smo40-simulator | Simulator for Nibe SMO40 controller |
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
|
@ -1896,3 +1899,12 @@ This binding currently supports following channels for F1x55 pump models:
|
||||||
| 49380 | Switch | 0 | 1 | Setting | External ERS 3 accessory bypass at heat | |
|
| 49380 | Switch | 0 | 1 | Setting | External ERS 3 accessory bypass at heat | |
|
||||||
| 49381 | Switch | 0 | 1 | Setting | External ERS 2 accessory bypass at heat | |
|
| 49381 | Switch | 0 | 1 | Setting | External ERS 2 accessory bypass at heat | |
|
||||||
| 49430 | Number | 0 | 255 | Setting | AUX ERS Fire Place Guard | |
|
| 49430 | Number | 0 | 255 | Setting | AUX ERS Fire Place Guard | |
|
||||||
|
|
||||||
|
|
||||||
|
### SMO40
|
||||||
|
|
||||||
|
To keep this documentation light, all parameters are documented in the NIBE ModbusManager except of:
|
||||||
|
| Channel Type ID | Item Type | Min | Max | Type | Description | Values |
|
||||||
|
|-----------------|-----------|-------------|------------|---------|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| 45780 | Number | 0 | 120 | Setting | Silent Mode Frequency 1 (defined in the service-menu) | |
|
||||||
|
| 49806 | Number | 0 | 120 | Setting | Silent Mode Frequency 2 (defined in the service-menu) | |
|
||||||
|
|
|
@ -37,6 +37,10 @@ public class NibeHeatPumpBindingConstants {
|
||||||
public static final ThingTypeUID THING_TYPE_F1X55_SERIAL = new ThingTypeUID(BINDING_ID, "f1x55-serial");
|
public static final ThingTypeUID THING_TYPE_F1X55_SERIAL = new ThingTypeUID(BINDING_ID, "f1x55-serial");
|
||||||
public static final ThingTypeUID THING_TYPE_F1X55_SIMULATOR = new ThingTypeUID(BINDING_ID, "f1x55-simulator");
|
public static final ThingTypeUID THING_TYPE_F1X55_SIMULATOR = new ThingTypeUID(BINDING_ID, "f1x55-simulator");
|
||||||
|
|
||||||
|
public static final ThingTypeUID THING_TYPE_SMO40_UDP = new ThingTypeUID(BINDING_ID, "smo40-udp");
|
||||||
|
public static final ThingTypeUID THING_TYPE_SMO40_SERIAL = new ThingTypeUID(BINDING_ID, "smo40-serial");
|
||||||
|
public static final ThingTypeUID THING_TYPE_SMO40_SIMULATOR = new ThingTypeUID(BINDING_ID, "smo40-simulator");
|
||||||
|
|
||||||
public static final ThingTypeUID THING_TYPE_F750_UDP = new ThingTypeUID(BINDING_ID, "f750-udp");
|
public static final ThingTypeUID THING_TYPE_F750_UDP = new ThingTypeUID(BINDING_ID, "f750-udp");
|
||||||
public static final ThingTypeUID THING_TYPE_F750_SERIAL = new ThingTypeUID(BINDING_ID, "f750-serial");
|
public static final ThingTypeUID THING_TYPE_F750_SERIAL = new ThingTypeUID(BINDING_ID, "f750-serial");
|
||||||
public static final ThingTypeUID THING_TYPE_F750_SIMULATOR = new ThingTypeUID(BINDING_ID, "f750-simulator");
|
public static final ThingTypeUID THING_TYPE_F750_SIMULATOR = new ThingTypeUID(BINDING_ID, "f750-simulator");
|
||||||
|
@ -50,7 +54,8 @@ public class NibeHeatPumpBindingConstants {
|
||||||
*/
|
*/
|
||||||
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Stream
|
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Stream
|
||||||
.of(THING_TYPE_F1X45_UDP, THING_TYPE_F1X45_SERIAL, THING_TYPE_F1X45_SIMULATOR, THING_TYPE_F1X55_UDP,
|
.of(THING_TYPE_F1X45_UDP, THING_TYPE_F1X45_SERIAL, THING_TYPE_F1X45_SIMULATOR, THING_TYPE_F1X55_UDP,
|
||||||
THING_TYPE_F1X55_SERIAL, THING_TYPE_F1X55_SIMULATOR, THING_TYPE_F750_UDP, THING_TYPE_F750_SERIAL,
|
THING_TYPE_F1X55_SERIAL, THING_TYPE_F1X55_SIMULATOR, THING_TYPE_SMO40_UDP, THING_TYPE_SMO40_SERIAL,
|
||||||
THING_TYPE_F750_SIMULATOR, THING_TYPE_F470_UDP, THING_TYPE_F470_SERIAL, THING_TYPE_F470_SIMULATOR)
|
THING_TYPE_SMO40_SIMULATOR, THING_TYPE_F750_UDP, THING_TYPE_F750_SERIAL, THING_TYPE_F750_SIMULATOR,
|
||||||
|
THING_TYPE_F470_UDP, THING_TYPE_F470_SERIAL, THING_TYPE_F470_SIMULATOR)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,14 +151,16 @@ public class NibeHeatPumpHandler extends BaseThingHandler implements NibeHeatPum
|
||||||
private NibeHeatPumpConnector getConnector() throws NibeHeatPumpException {
|
private NibeHeatPumpConnector getConnector() throws NibeHeatPumpException {
|
||||||
ThingTypeUID type = thing.getThingTypeUID();
|
ThingTypeUID type = thing.getThingTypeUID();
|
||||||
|
|
||||||
if (THING_TYPE_F1X45_UDP.equals(type) || THING_TYPE_F1X55_UDP.equals(type) || THING_TYPE_F750_UDP.equals(type)
|
if (THING_TYPE_F1X45_UDP.equals(type) || THING_TYPE_F1X55_UDP.equals(type) || THING_TYPE_SMO40_UDP.equals(type)
|
||||||
|| THING_TYPE_F470_UDP.equals(type)) {
|
|| THING_TYPE_F750_UDP.equals(type) || THING_TYPE_F470_UDP.equals(type)) {
|
||||||
return new UDPConnector();
|
return new UDPConnector();
|
||||||
} else if (THING_TYPE_F1X45_SERIAL.equals(type) || THING_TYPE_F1X55_SERIAL.equals(type)
|
} else if (THING_TYPE_F1X45_SERIAL.equals(type) || THING_TYPE_F1X55_SERIAL.equals(type)
|
||||||
|| THING_TYPE_F750_SERIAL.equals(type) || THING_TYPE_F470_SERIAL.equals(type)) {
|
|| THING_TYPE_SMO40_SERIAL.equals(type) || THING_TYPE_F750_SERIAL.equals(type)
|
||||||
|
|| THING_TYPE_F470_SERIAL.equals(type)) {
|
||||||
return new SerialConnector(serialPortManager);
|
return new SerialConnector(serialPortManager);
|
||||||
} else if (THING_TYPE_F1X45_SIMULATOR.equals(type) || THING_TYPE_F1X55_SIMULATOR.equals(type)
|
} else if (THING_TYPE_F1X45_SIMULATOR.equals(type) || THING_TYPE_F1X55_SIMULATOR.equals(type)
|
||||||
|| THING_TYPE_F750_SIMULATOR.equals(type) || THING_TYPE_F470_SIMULATOR.equals(type)) {
|
|| THING_TYPE_SMO40_SIMULATOR.equals(type) || THING_TYPE_F750_SIMULATOR.equals(type)
|
||||||
|
|| THING_TYPE_F470_SIMULATOR.equals(type)) {
|
||||||
return new SimulatorConnector();
|
return new SimulatorConnector();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ package org.openhab.binding.nibeheatpump.internal.models;
|
||||||
public enum PumpModel {
|
public enum PumpModel {
|
||||||
F1X45("F1X45"),
|
F1X45("F1X45"),
|
||||||
F1X55("F1X55"),
|
F1X55("F1X55"),
|
||||||
|
SMO40("SMO40"),
|
||||||
F750("F750"),
|
F750("F750"),
|
||||||
F470("F470");
|
F470("F470");
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -54,6 +54,8 @@ public class VariableInformation {
|
||||||
return F1X45.getVariableInfo(key);
|
return F1X45.getVariableInfo(key);
|
||||||
case F1X55:
|
case F1X55:
|
||||||
return F1X55.getVariableInfo(key);
|
return F1X55.getVariableInfo(key);
|
||||||
|
case SMO40:
|
||||||
|
return SMO40.getVariableInfo(key);
|
||||||
case F750:
|
case F750:
|
||||||
return F750.getVariableInfo(key);
|
return F750.getVariableInfo(key);
|
||||||
case F470:
|
case F470:
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,168 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="nibeheatpump"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||||
|
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||||
|
|
||||||
|
<thing-type id="smo40-udp">
|
||||||
|
<label>UDP Connected Nibe SMO40 Heat Pumps</label>
|
||||||
|
<description></description>
|
||||||
|
|
||||||
|
<channel-groups>
|
||||||
|
<channel-group typeId="smo40-sensor-group-channels" id="sensor"/>
|
||||||
|
<channel-group typeId="smo40-setting-group-channels" id="setting"/>
|
||||||
|
</channel-groups>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="hostName" type="text" required="true">
|
||||||
|
<label>Host Name</label>
|
||||||
|
<description>Network address of the NibeGW.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="port" type="integer">
|
||||||
|
<label>UDP Port</label>
|
||||||
|
<description>UDP port to listening data packets from the NibeGW.</description>
|
||||||
|
<default>9999</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="readCommandsPort" type="integer">
|
||||||
|
<label>UDP Port for Read Commands</label>
|
||||||
|
<description>UDP port to send read commands to the NibeGW.</description>
|
||||||
|
<default>9999</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="writeCommandsPort" type="integer">
|
||||||
|
<label>UDP Port for Write Commands</label>
|
||||||
|
<description>UDP port to send write commands to the NibeGW.</description>
|
||||||
|
<default>10000</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="refreshInterval" type="integer">
|
||||||
|
<label>Refresh Interval</label>
|
||||||
|
<description>States how often a refresh shall occur in seconds.</description>
|
||||||
|
<default>60</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableReadCommands" type="boolean">
|
||||||
|
<label>Enable Read Commands</label>
|
||||||
|
<description>Enable read commands to read additional variable from heat pump which are not included to data readout
|
||||||
|
messages. This is experimental feature, use it at your own risk!</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableWriteCommands" type="boolean">
|
||||||
|
<label>Enable Write Commands</label>
|
||||||
|
<description>Enable write commands to change heat pump settings. This is experimental feature, use it at your own
|
||||||
|
risk!</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableWriteCommandsToRegisters" type="text">
|
||||||
|
<label>Registers List for Write Commands</label>
|
||||||
|
<description>Comma separated list of registers, which are allowed to write to heat pump. E.g. 44266, 47004</description>
|
||||||
|
<default></default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="throttleTime" type="integer" unit="ms">
|
||||||
|
<label>Throttle Incoming Data</label>
|
||||||
|
<description>Throttle incoming data read out messages from heat pump. 0 = throttle is disabled, otherwise throttle
|
||||||
|
time in milliseconds.</description>
|
||||||
|
<default>0</default>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
|
||||||
|
</thing-type>
|
||||||
|
|
||||||
|
<thing-type id="smo40-serial">
|
||||||
|
<label>Serial Port Connected SMO40 Heat Pumps</label>
|
||||||
|
<description></description>
|
||||||
|
|
||||||
|
<channel-groups>
|
||||||
|
<channel-group typeId="smo40-sensor-group-channels" id="sensor"/>
|
||||||
|
<channel-group typeId="smo40-setting-group-channels" id="setting"/>
|
||||||
|
</channel-groups>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="serialPort" type="text" required="true">
|
||||||
|
<label>Serial Port</label>
|
||||||
|
<description>Serial port to connect to the heat pump.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="refreshInterval" type="integer">
|
||||||
|
<label>Refresh Interval</label>
|
||||||
|
<description>States how often a refresh shall occur in seconds.</description>
|
||||||
|
<default>60</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableReadCommands" type="boolean">
|
||||||
|
<label>Enable Read Commands</label>
|
||||||
|
<description>Enable read commands to read additional variable from heat pump which are not included to data readout
|
||||||
|
messages. This is experimental feature, use it at your own risk!</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableWriteCommands" type="boolean">
|
||||||
|
<label>Enable Write Commands</label>
|
||||||
|
<description>Enable write commands to change heat pump settings. This is experimental feature, use it at your own
|
||||||
|
risk!</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableWriteCommandsToRegisters" type="text">
|
||||||
|
<label>Register List for Write Commands</label>
|
||||||
|
<description>Comma separated list of registers, which are allowed to write to heat pump. E.g. 44266, 47004</description>
|
||||||
|
<default></default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="sendAckToMODBUS40" type="boolean">
|
||||||
|
<label>Enable Acknowledges to MODBUS40 Messages</label>
|
||||||
|
<description>Binding emulates MODBUS40 device and send protocol acknowledges to heat pump.</description>
|
||||||
|
<default>true</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="sendAckToRMU40" type="boolean">
|
||||||
|
<label>Enable Acknowledges to RMU40 Messages</label>
|
||||||
|
<description>Binding emulates RMU40 device and send protocol acknowledges to heat pump.</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="sendAckToSMS40" type="boolean">
|
||||||
|
<label>Enable Acknowledges to SMS40 Messages</label>
|
||||||
|
<description>Binding emulates SMS40 device and send protocol acknowledges to heat pump.</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="throttleTime" type="integer" unit="ms">
|
||||||
|
<label>Throttle Incoming Data</label>
|
||||||
|
<description>Throttle incoming data read out messages from heat pump. 0 = throttle is disabled, otherwise throttle
|
||||||
|
time in milliseconds.</description>
|
||||||
|
<default>0</default>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</thing-type>
|
||||||
|
|
||||||
|
<thing-type id="smo40-simulator">
|
||||||
|
<label>Simulator for Nibe SMO40 Heat Pumps</label>
|
||||||
|
<description></description>
|
||||||
|
|
||||||
|
<channel-groups>
|
||||||
|
<channel-group typeId="smo40-sensor-group-channels" id="sensor"/>
|
||||||
|
<channel-group typeId="smo40-setting-group-channels" id="setting"/>
|
||||||
|
</channel-groups>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="refreshInterval" type="integer">
|
||||||
|
<label>Refresh Interval</label>
|
||||||
|
<description>States how often a refresh shall occur in seconds.</description>
|
||||||
|
<default>60</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableReadCommands" type="boolean">
|
||||||
|
<label>Enable Read Commands</label>
|
||||||
|
<description>Enable read commands to read additional variable from heat pump which are not included to data readout
|
||||||
|
messages. This is experimental feature, use it at your own risk!</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableWriteCommands" type="boolean">
|
||||||
|
<label>Enable Write Commands</label>
|
||||||
|
<description>Enable write commands to change heat pump settings. This is experimental feature, use it at your own
|
||||||
|
risk!</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="enableWriteCommandsToRegisters" type="text">
|
||||||
|
<label>Register List for Write Commands</label>
|
||||||
|
<description>Comma separated list of registers, which are allowed to write to heat pump. E.g. 44266, 47004</description>
|
||||||
|
<default></default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="throttleTime" type="integer" unit="ms">
|
||||||
|
<label>Throttle Incoming Data</label>
|
||||||
|
<description>Throttle incoming data read out messages from heat pump. 0 = throttle is disabled, otherwise throttle
|
||||||
|
time in milliseconds.</description>
|
||||||
|
<default>0</default>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</thing-type>
|
||||||
|
</thing:thing-descriptions>
|
Loading…
Reference in New Issue