31
31
import de .ibapl .fhz4j .protocol .evohome .EvoHomeDeviceMessage ;
32
32
import de .ibapl .fhz4j .protocol .evohome .ZoneTemperature ;
33
33
import de .ibapl .fhz4j .protocol .evohome .messages .AbstractZoneSetpointPayloadMessage ;
34
+ import de .ibapl .fhz4j .protocol .evohome .messages .AbstractZoneTemperaturePayloadMessage ;
34
35
import de .ibapl .fhz4j .protocol .evohome .messages .ZoneConfigPayloadMessage ;
36
+ import de .ibapl .fhz4j .protocol .evohome .messages .ZoneConfigRequestMessage ;
35
37
import de .ibapl .fhz4j .protocol .evohome .messages .ZoneHeatDemandInformationMessage ;
38
+ import de .ibapl .fhz4j .protocol .evohome .messages .ZoneSetpointRequestMessage ;
36
39
import static de .ibapl .openhab .fhz4j .FHZ4JBindingConstants .*;
37
40
import java .io .IOException ;
38
41
import java .util .logging .Level ;
@@ -99,7 +102,7 @@ public void initialize() {
99
102
try {
100
103
deviceId = ((Number ) configuration .get ("deviceId" )).intValue ();
101
104
} catch (Exception e ) {
102
- updateStatus (ThingStatus .OFFLINE , ThingStatusDetail .HANDLER_INITIALIZING_ERROR , "Can't parse deviceId" );
105
+ updateStatus (ThingStatus .OFFLINE , ThingStatusDetail .HANDLER_INITIALIZING_ERROR , "Can'' t parse deviceId" );
103
106
evoHomeRadiatorHandlerStatus = ThingStatusDetail .HANDLER_INITIALIZING_ERROR ;
104
107
return ;
105
108
}
@@ -138,7 +141,7 @@ public void updateFromMsg(EvoHomeDeviceMessage msg) {
138
141
}
139
142
case ZONE_TEMPERATURE -> {
140
143
//From SingleZoneThermostat and RadiatorController and MultZoneController
141
- final AbstractZoneSetpointPayloadMessage m = (AbstractZoneSetpointPayloadMessage ) msg ;
144
+ final AbstractZoneTemperaturePayloadMessage m = (AbstractZoneTemperaturePayloadMessage ) msg ;
142
145
switch (m .deviceId1 .type ) {
143
146
case RADIATOR_CONTROLLER , SINGLE_ZONE_THERMOSTAT -> //TODO ZoneID ???
144
147
updateState (new ChannelUID (getThing ().getUID (), CHANNEL_TEMPERATURE_MEASURED ),
@@ -150,56 +153,70 @@ public void updateFromMsg(EvoHomeDeviceMessage msg) {
150
153
}
151
154
}
152
155
default -> {
156
+ LOGGER .log (Level .SEVERE , "Can''t handle ZONE_TEMPERATURE message: {0}" , msg );
153
157
}
154
158
}
155
159
}
156
160
case ZONE_SETPOINT -> {
157
- //From RadiatorController and MultZoneController
158
- final AbstractZoneSetpointPayloadMessage m = (AbstractZoneSetpointPayloadMessage ) msg ;
159
- switch (m .deviceId1 .type ) {
160
- case RADIATOR_CONTROLLER , SINGLE_ZONE_THERMOSTAT -> //TODO ZoneID ???
161
- updateState (new ChannelUID (getThing ().getUID (), CHANNEL_DESIRED_TEMPERATURE ),
162
- new DecimalType (m .zoneTemperatures .get (0 ).temperature ));
163
- case MULTI_ZONE_CONTROLLER -> {
164
- for (ZoneTemperature zoneTemperature : m .zoneTemperatures ) {
165
- updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_DESIRED_TEMPERATURE , zoneTemperature .zone )),
166
- new DecimalType (zoneTemperature .temperature ));
161
+ if (msg instanceof AbstractZoneSetpointPayloadMessage m ) {
162
+ //From RadiatorController and MultZoneController
163
+ switch (m .deviceId1 .type ) {
164
+ case RADIATOR_CONTROLLER , SINGLE_ZONE_THERMOSTAT -> //TODO ZoneID ???
165
+ updateState (new ChannelUID (getThing ().getUID (), CHANNEL_DESIRED_TEMPERATURE ),
166
+ new DecimalType (m .zoneTemperatures .get (0 ).temperature ));
167
+ case MULTI_ZONE_CONTROLLER -> {
168
+ for (ZoneTemperature zoneTemperature : m .zoneTemperatures ) {
169
+ updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_DESIRED_TEMPERATURE , zoneTemperature .zone )),
170
+ new DecimalType (zoneTemperature .temperature ));
171
+ }
172
+ }
173
+ default -> {
174
+ LOGGER .log (Level .SEVERE , "Can''t handle ZONE_SETPOINT message: {0}" , msg );
167
175
}
168
176
}
169
- default -> {
170
- }
177
+ } else if (msg instanceof ZoneSetpointRequestMessage m ) {
178
+ LOGGER .log (Level .INFO , "ZoneSetpointRequestMessage received ZONE_SETPOINT payload: \" {0}\" " , m );
179
+ } else {
180
+ LOGGER .log (Level .SEVERE , "Can''t handle ZONE_SETPOINT message: {0}" , msg );
171
181
}
172
182
}
173
183
case ZONE_CONFIG -> {
174
- final ZoneConfigPayloadMessage zpm = (ZoneConfigPayloadMessage ) msg ;
175
- switch (zpm .deviceId1 .type ) {
176
- case RADIATOR_CONTROLLER , SINGLE_ZONE_THERMOSTAT -> {
177
- updateState (new ChannelUID (getThing ().getUID (), CHANNEL_MIN_TEMP ),
178
- new DecimalType (zpm .zones .get (0 ).minTemperature ));
179
- updateState (new ChannelUID (getThing ().getUID (), CHANNEL_MAX_TEMP ),
180
- new DecimalType (zpm .zones .get (0 ).maxTemperature ));
181
- updateState (new ChannelUID (getThing ().getUID (), CHANNEL_OPERATION_LOCK ),
182
- zpm .zones .get (0 ).operationLock ? OnOffType .ON : OnOffType .OFF );
183
- updateState (new ChannelUID (getThing ().getUID (), CHANNEL_WINDOW_FUNCTION ),
184
- zpm .zones .get (0 ).windowFunction ? OnOffType .ON : OnOffType .OFF );
185
- }
186
- case MULTI_ZONE_CONTROLLER -> {
187
- for (ZoneConfigPayloadMessage .ZoneParams zoneParam : zpm .zones ) {
188
- updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_MIN_TEMP , zoneParam .zoneId )),
189
- new DecimalType (zoneParam .minTemperature ));
190
- updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_MAX_TEMP , zoneParam .zoneId )),
191
- new DecimalType (zoneParam .maxTemperature ));
192
- updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_OPERATION_LOCK , zoneParam .zoneId )),
193
- zoneParam .operationLock ? OnOffType .ON : OnOffType .OFF );
194
- updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_WINDOW_FUNCTION , zoneParam .zoneId )),
195
- zoneParam .windowFunction ? OnOffType .ON : OnOffType .OFF );
184
+ if (msg instanceof ZoneConfigPayloadMessage zpm ) {
185
+ switch (zpm .deviceId1 .type ) {
186
+ case RADIATOR_CONTROLLER , SINGLE_ZONE_THERMOSTAT -> {
187
+ updateState (new ChannelUID (getThing ().getUID (), CHANNEL_MIN_TEMP ),
188
+ new DecimalType (zpm .zones .get (0 ).minTemperature ));
189
+ updateState (new ChannelUID (getThing ().getUID (), CHANNEL_MAX_TEMP ),
190
+ new DecimalType (zpm .zones .get (0 ).maxTemperature ));
191
+ updateState (new ChannelUID (getThing ().getUID (), CHANNEL_OPERATION_LOCK ),
192
+ zpm .zones .get (0 ).operationLock ? OnOffType .ON : OnOffType .OFF );
193
+ updateState (new ChannelUID (getThing ().getUID (), CHANNEL_WINDOW_FUNCTION ),
194
+ zpm .zones .get (0 ).windowFunction ? OnOffType .ON : OnOffType .OFF );
195
+ }
196
+ case MULTI_ZONE_CONTROLLER -> {
197
+ for (ZoneConfigPayloadMessage .ZoneParams zoneParam : zpm .zones ) {
198
+ updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_MIN_TEMP , zoneParam .zoneId )),
199
+ new DecimalType (zoneParam .minTemperature ));
200
+ updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_MAX_TEMP , zoneParam .zoneId )),
201
+ new DecimalType (zoneParam .maxTemperature ));
202
+ updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_OPERATION_LOCK , zoneParam .zoneId )),
203
+ zoneParam .operationLock ? OnOffType .ON : OnOffType .OFF );
204
+ updateState (new ChannelUID (getThing ().getUID (), String .format (_XX_TEMPLATE , CHANNEL_WINDOW_FUNCTION , zoneParam .zoneId )),
205
+ zoneParam .windowFunction ? OnOffType .ON : OnOffType .OFF );
206
+ }
207
+ }
208
+ default -> {
209
+ LOGGER .log (Level .SEVERE , "Can''t handle ZONE_SETPOINT message: {0}" , msg );
196
210
}
197
211
}
198
- default -> {
199
- }
212
+ } else if (msg instanceof ZoneConfigRequestMessage m ) {
213
+ LOGGER .log (Level .INFO , "ZoneConfigRequestMessage received ZONE_CONFIG payload: \" {0}\" " , m );
214
+ } else {
215
+ LOGGER .log (Level .SEVERE , "Can''t handle ZONE_CONFIG message: {0}" , msg );
200
216
}
201
217
}
202
218
default -> {
219
+ LOGGER .log (Level .SEVERE , "Can''t handle {0} message: {1}" , new Object []{msg .command , msg });
203
220
}
204
221
}
205
222
}
0 commit comments