import org.openhab.core.thing.binding.ThingHandlerService;
import org.openhab.core.types.Command;
import org.openhab.core.types.State;
-import org.openhab.core.types.UnDefType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
recievedJson = convertStringToJsonObject(receivedMessage);
if (recievedJson.size() > 0) {
if (decodeReceivedMessage(recievedJson)) {
- triggerChannel(getChannelUuid(GROUP_OUTPUT, STATUS_STRING_CHANNEL));
- updateChannelString(GROUP_OUTPUT, STATUS_STRING_CHANNEL, receivedStatus);
switch (yioRemoteDockActualStatus) {
case CONNECTION_ESTABLISHED:
case AUTHENTICATION_PROCESS:
case COMMUNICATION_ERROR:
reconnectWebsocket();
break;
+ case AUTHENTICATION_COMPLETE:
+ case CHECK_PONG:
+ case SEND_PING:
+ updateChannelString(GROUP_OUTPUT, STATUS_STRING_CHANNEL, receivedStatus);
+ triggerChannel(getChannelUuid(GROUP_OUTPUT, STATUS_STRING_CHANNEL));
+ break;
default:
break;
}
} else {
irCodeReceivedHandler.setCode("");
}
+
logger.debug("ir_receive message {}", irCodeReceivedHandler.getCode());
heartBeat = true;
success = true;
if (RECEIVER_SWITCH_CHANNEL.equals(channelUID.getIdWithoutGroup())) {
switch (yioRemoteDockActualStatus) {
case AUTHENTICATION_COMPLETE:
+ case SEND_PING:
+ case CHECK_PONG:
if (command == OnOffType.ON) {
logger.debug("YIODOCKRECEIVERSWITCH ON procedure: Switching IR Receiver on");
sendMessage(YioRemoteMessages.IR_RECEIVER_ON, "");
}
public void sendIRCode(@Nullable String irCode) {
- if (irCode != null && yioRemoteDockActualStatus.equals(YioRemoteDockHandleStatus.AUTHENTICATION_COMPLETE)) {
- if (irCode.matches("[0-9]?[0-9][;]0[xX][0-9a-fA-F]+[;][0-9]+[;][0-9]")) {
- sendMessage(YioRemoteMessages.IR_SEND, irCode);
+ if (irCode != null) {
+ if (yioRemoteDockActualStatus.equals(YioRemoteDockHandleStatus.AUTHENTICATION_COMPLETE)
+ || yioRemoteDockActualStatus.equals(YioRemoteDockHandleStatus.SEND_PING)
+ || yioRemoteDockActualStatus.equals(YioRemoteDockHandleStatus.CHECK_PONG)) {
+ if (irCode.matches("[0-9]?[0-9][;]0[xX][0-9a-fA-F]+[;][0-9]+[;][0-9]")) {
+ sendMessage(YioRemoteMessages.IR_SEND, irCode);
+ } else {
+ logger.warn("Wrong ir code format {}", irCode);
+ }
} else {
- logger.warn("Wrong ir code format {}", irCode);
+ logger.debug("Wrong Dock Statusfor sending {}", irCode);
}
+ } else {
+ logger.warn("No ir code {}", irCode);
}
}
if (authenticationOk) {
yioRemoteDockActualStatus = YioRemoteDockHandleStatus.AUTHENTICATION_COMPLETE;
updateStatus(ThingStatus.ONLINE);
+ updateState(STATUS_STRING_CHANNEL, StringType.EMPTY);
+ updateState(RECEIVER_SWITCH_CHANNEL, OnOffType.OFF);
webSocketPollingJob = scheduler.scheduleWithFixedDelay(this::pollingWebsocketJob, 0, 60,
TimeUnit.SECONDS);
} else {
yioRemoteDockActualStatus = YioRemoteDockHandleStatus.COMMUNICATION_ERROR;
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
"Connection lost no ping from YIO DOCK");
- updateState(GROUP_OUTPUT, STATUS_STRING_CHANNEL, UnDefType.UNDEF);
break;
}
}
yioRemoteDockActualStatus = YioRemoteDockHandleStatus.COMMUNICATION_ERROR;
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
"Connection lost no ping from YIO DOCK");
- updateState(GROUP_OUTPUT, STATUS_STRING_CHANNEL, UnDefType.UNDEF);
break;
}
}
case IR_SEND:
irCodeSendHandler.setCode(messagePayload);
yioremoteDockwebSocketClient.sendMessage(irCodeSendMessageHandler.getIRcodeSendMessageString());
- logger.debug("sending heartBeat message: {}", irCodeSendMessageHandler.getIRcodeSendMessageString());
+ logger.debug("sending IR code: {}", irCodeSendMessageHandler.getIRcodeSendMessageString());
break;
}
}