public class CaddxBridgeHandler extends BaseBridgeHandler implements CaddxPanelListener {
private final Logger logger = LoggerFactory.getLogger(CaddxBridgeHandler.class);
- static final byte[] DISCOVERY_PARTITION_STATUS_REQUEST_0 = { 0x26, 0x00 };
static final byte[] DISCOVERY_ZONES_SNAPSHOT_REQUEST_00 = { 0x25, 0x00 }; // 1 - 16
static final byte[] DISCOVERY_ZONES_SNAPSHOT_REQUEST_10 = { 0x25, 0x01 }; // 17 - 32
static final byte[] DISCOVERY_ZONES_SNAPSHOT_REQUEST_20 = { 0x25, 0x02 }; // 33 - 48
comm.transmit(new CaddxMessage(DISCOVERY_ZONES_SNAPSHOT_REQUEST_B0, false));
// Send discovery commands for the partitions
- comm.transmit(new CaddxMessage(DISCOVERY_PARTITION_STATUS_REQUEST_0, false));
comm.transmit(new CaddxMessage(DISCOVERY_PARTITIONS_SNAPSHOT_REQUEST, false));
+
+ // Send status commands to the zones and partitions
+ thingZonesMap.forEach((k, v) -> sendCommand(CaddxBindingConstants.ZONE_STATUS_REQUEST,
+ k.subtract(BigDecimal.ONE).toString()));
+ thingPartitionsMap.forEach((k, v) -> sendCommand(CaddxBindingConstants.PARTITION_STATUS_REQUEST,
+ k.subtract(BigDecimal.ONE).toString()));
}
// list all channels
int eventType = Integer.parseInt(type);
logger.trace("eventType received: {}", eventType);
LogEventType logEventType = LogEventType.valueOfLogEventType(eventType);
- if (logEventType == null) {
- return "Unknown log event type received";
- }
// Date
sb.append(String.format("%02d", Integer.parseInt(day))).append('-')
.append(String.format("%02d", Integer.parseInt(hour))).append(':')
.append(String.format("%02d", Integer.parseInt(minute))).append(' ');
- sb.append(logEventType.description);
- if (logEventType.isPartitionValid) {
- sb.append(" Partition ").append(Integer.parseInt(partition) + 1);
- }
+ if (logEventType == null) {
+ sb.append("Unknown log event type");
+ } else {
+ sb.append(logEventType.description);
+ if (logEventType.isPartitionValid) {
+ sb.append(" Partition ").append(Integer.parseInt(partition) + 1);
+ }
- switch (logEventType.zud) {
- case None:
- break;
- case Zone:
- sb.append(" Zone ").append(Integer.parseInt(zud) + 1);
- break;
- case User:
- sb.append(" User ").append(Integer.parseInt(zud) + 1);
- break;
- case Device:
- sb.append(" Device ").append(zud);
- break;
+ switch (logEventType.zud) {
+ case None:
+ break;
+ case Zone:
+ sb.append(" Zone ").append(Integer.parseInt(zud) + 1);
+ break;
+ case User:
+ sb.append(" User ").append(Integer.parseInt(zud) + 1);
+ break;
+ case Device:
+ sb.append(" Device ").append(zud);
+ break;
+ }
}
return sb.toString();
@Override
public void handleCommand(ChannelUID channelUID, Command command) {
- logger.trace("handleCommand(): Command Received - {} {}.", channelUID, command);
+ logger.debug("handleCommand(): Command Received - {} {}.", channelUID, command);
String cmd = null;
String data = null;
// get the channel id from the map
HashMap<String, String> logMap = panelLogMessagesMap;
- String id = logMap.get(eventNumberString);
- if (logMap != null && id != null) {
- ChannelUID channelUID = new ChannelUID(getThing().getUID(), id);
- updateChannel(channelUID, logEventMessage.toString());
+ if (logMap != null) {
+ String id = logMap.get(eventNumberString);
+ if (id != null) {
+ ChannelUID channelUID = new ChannelUID(getThing().getUID(), id);
+ updateChannel(channelUID, logEventMessage.toString());
+ }
}
if (communicatorStackPointer != null && eventNumberString.equals(communicatorStackPointer)) {
@Override
public void updateChannel(ChannelUID channelUID, String data) {
if (channelUID.getId().equals(CaddxBindingConstants.ZONE_NAME)) {
- getThing().setLabel(data);
updateState(channelUID, new StringType(data));
logger.trace(" updateChannel: {} = {}", channelUID, data);
@Override
public void handleCommand(ChannelUID channelUID, Command command) {
- logger.trace("handleCommand(): Command Received - {} {}.", channelUID, command);
+ logger.debug("handleCommand(): Command Received - {} {}.", channelUID, command);
String cmd1 = null;
String cmd2 = null;
logger.trace(" updateChannel: {} = {}", channelUID, value);
}
}
-
- updateStatus(ThingStatus.ONLINE);
}
+
+ updateStatus(ThingStatus.ONLINE);
}
@Override