ipCameraHandler.sendHttpPOST("/api.cgi?cmd=GetAbility" + ipCameraHandler.reolinkAuth,
"[{ \"cmd\":\"GetAbility\", \"param\":{ \"User\":{ \"userName\":\"admin\" }}}]");
} else {
- ipCameraHandler.logger.info("Your Reolink camera gave a bad login response:{}", content);
+ ipCameraHandler.cameraConfigError(
+ "Check your user and password are correct as the Reolink camera gave a bad login response");
}
break;
case "/api.cgi?cmd=GetAbility": // Used to check what channels the camera supports
}
if (getAbilityResponse[0].value.ability.supportAudioAlarmEnable == null
|| getAbilityResponse[0].value.ability.supportAudioAlarmEnable.permit == 0) {
- ipCameraHandler.logger.debug("Camera has no AudioAlarm support.");
+ ipCameraHandler.logger.debug("Camera has no support for controlling AudioAlarms.");
channel = ipCameraHandler.getThing().getChannel(CHANNEL_THRESHOLD_AUDIO_ALARM);
if (channel != null) {
removeChannels.add(channel);
logger.debug("Camera sent {} bytes when the content-length header was {}.", bytesAlreadyRecieved,
bytesToRecieve);
} else {
- logger.warn("!!!! Camera possibly closed the channel on the binding, cause reported is: {}",
- cause.getMessage());
+ logger.warn("Camera possibly closed the channel on the binding for URL: {}, cause reported is: {}",
+ requestUrl, cause.getMessage());
}
ctx.close();
}
return; // don't auto close this as it is for the alarms.
}
}
- logger.debug("Closing an idle channel for camera: {}", cameraConfig.getIp());
+ logger.debug("Closing an idle channel for {}{}", cameraConfig.getIp(), requestUrl);
ctx.close();
}
}
}
try {
if (msg instanceof HttpResponse response) {
- if (response.status().code() != 200) {
- logger.trace("ONVIF replied with code {} message is {}", response.status().code(), msg);
+ switch (response.status().code()) {
+ case 200:
+ break;
+ case 401:
+ if (!response.headers().isEmpty()) {
+ for (CharSequence name : response.headers().names()) {
+ for (CharSequence value : response.headers().getAll(name)) {
+ if ("WWW-Authenticate".equalsIgnoreCase(name.toString())) {
+ logger.debug(
+ "ONVIF {} replied with WWW-Authenticate header:{}, camera may require ONVIF Profile-T support.",
+ requestType, value.toString());
+ }
+ }
+ }
+ }
+ default:
+ logger.trace("ONVIF {} replied with code {}, the message is {}", requestType,
+ response.status().code(), msg);
+ ctx.close();
+ return;
}
}
if (msg instanceof HttpContent content) {
}
if (evt instanceof IdleStateEvent) {
IdleStateEvent e = (IdleStateEvent) evt;
- logger.debug("IdleStateEvent received: {}", e.state());
+ logger.debug("IdleStateEvent received for {} : {}", requestType, e.state());
onvifConnection.setIsConnected(false);
ctx.close();
} else {
- logger.debug("ONVIF netty channel event occurred: {}", evt);
+ logger.debug("ONVIF {} netty channel event occurred: {}", requestType, evt);
}
}
if (ctx == null || cause == null) {
return;
}
- logger.debug("Exception on ONVIF connection: {}", cause.getMessage());
+ logger.debug("Exception on ONVIF {} connection: {}", requestType, cause.getMessage());
ctx.close();
}