Skip to content

Commit

Permalink
[nibeheatpump] Added device support for SMO40 control (openhab#9376)
Browse files Browse the repository at this point in the history
Signed-off-by: Markus Gafner <[email protected]>
  • Loading branch information
MarkusGafner authored Dec 25, 2020
1 parent acddb65 commit b64edcc
Show file tree
Hide file tree
Showing 9 changed files with 12,327 additions and 7 deletions.
14 changes: 13 additions & 1 deletion bundles/org.openhab.binding.nibeheatpump/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Nibe Heatpump Binding

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 can also read other registers from the pump.
Expand Down Expand Up @@ -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-udp | UDP connected 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

Expand Down Expand Up @@ -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 | |
| 49381 | Switch | 0 | 1 | Setting | External ERS 2 accessory bypass at heat | |
| 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) | |
Original file line number Diff line number Diff line change
Expand Up @@ -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_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_SERIAL = new ThingTypeUID(BINDING_ID, "f750-serial");
public static final ThingTypeUID THING_TYPE_F750_SIMULATOR = new ThingTypeUID(BINDING_ID, "f750-simulator");
Expand All @@ -50,7 +54,8 @@ public class NibeHeatPumpBindingConstants {
*/
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,
THING_TYPE_F1X55_SERIAL, THING_TYPE_F1X55_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)
THING_TYPE_F1X55_SERIAL, THING_TYPE_F1X55_SIMULATOR, THING_TYPE_SMO40_UDP, THING_TYPE_SMO40_SERIAL,
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());
}
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,16 @@ public NibeHeatPumpHandler(Thing thing, PumpModel pumpModel, SerialPortManager s
private NibeHeatPumpConnector getConnector() throws NibeHeatPumpException {
ThingTypeUID type = thing.getThingTypeUID();

if (THING_TYPE_F1X45_UDP.equals(type) || THING_TYPE_F1X55_UDP.equals(type) || THING_TYPE_F750_UDP.equals(type)
|| THING_TYPE_F470_UDP.equals(type)) {
if (THING_TYPE_F1X45_UDP.equals(type) || THING_TYPE_F1X55_UDP.equals(type) || THING_TYPE_SMO40_UDP.equals(type)
|| THING_TYPE_F750_UDP.equals(type) || THING_TYPE_F470_UDP.equals(type)) {
return new UDPConnector();
} 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);
} 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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
public enum PumpModel {
F1X45("F1X45"),
F1X55("F1X55"),
SMO40("SMO40"),
F750("F750"),
F470("F470");

Expand Down
Loading

0 comments on commit b64edcc

Please sign in to comment.