diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/Ffmpeg.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/Ffmpeg.java index 48c3b4813..52b12d890 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/Ffmpeg.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/Ffmpeg.java @@ -39,7 +39,6 @@ import org.slf4j.LoggerFactory; /** * The {@link Ffmpeg} class is responsible for handling multiple ffmpeg conversions which are used for many tasks * - * * @author Matthew Skinner - Initial contribution */ @@ -82,7 +81,7 @@ public class Ffmpeg { public void setKeepAlive(int numberOfEightSeconds) { // We poll every 8 seconds due to mjpeg stream requirement. if (keepAlive == -1 && numberOfEightSeconds > 1) { - return;// When set to -1 this will not auto turn off stream. + return; // When set to -1 this will not auto turn off stream. } keepAlive = numberOfEightSeconds; } @@ -90,7 +89,7 @@ public class Ffmpeg { public void checkKeepAlive() { if (keepAlive == 1) { stopConverting(); - } else if (keepAlive <= -1 && !getIsAlive()) { + } else if (keepAlive <= -1 && !isAlive()) { logger.warn("HLS stream was not running, restarting it now."); startConverting(); } @@ -124,65 +123,63 @@ public class Ffmpeg { public void run() { try { process = Runtime.getRuntime().exec(commandArrayList.toArray(new String[commandArrayList.size()])); - Process localProcess = process; - if (localProcess != null) { - InputStream errorStream = localProcess.getErrorStream(); - InputStreamReader errorStreamReader = new InputStreamReader(errorStream); - BufferedReader bufferedReader = new BufferedReader(errorStreamReader); - String line = null; - while ((line = bufferedReader.readLine()) != null) { - logger.trace("{}", line); - switch (format) { - case RTSP_ALARMS: - if (line.contains("lavfi.")) { - // When the number of pixels that change are below the noise floor we need to look - // across frames to confirm it is motion and not noise. - if (countOfMotions < 10) {// Stop increasing otherwise it takes too long to go OFF - countOfMotions++; - } - if (countOfMotions > 9) { - ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); - } else if (countOfMotions > 4 && ipCameraHandler.motionThreshold.intValue() > 10) { - ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); - } else if (countOfMotions > 3 && ipCameraHandler.motionThreshold.intValue() > 15) { - ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); - } else if (countOfMotions > 2 && ipCameraHandler.motionThreshold.intValue() > 30) { - ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); - } else if (countOfMotions > 0 && ipCameraHandler.motionThreshold.intValue() > 89) { - ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); - countOfMotions = 4;// Used to debounce the Alarm. - } - } else if (line.contains("speed=")) { - if (countOfMotions > 0) { - if (ipCameraHandler.motionThreshold.intValue() > 89) { - countOfMotions--; - } - if (ipCameraHandler.motionThreshold.intValue() > 10) { - countOfMotions -= 2; - } else { - countOfMotions -= 4; - } - if (countOfMotions <= 0) { - ipCameraHandler.noMotionDetected(CHANNEL_FFMPEG_MOTION_ALARM); - countOfMotions = 0; - } - } - } else if (line.contains("silence_start")) { - ipCameraHandler.noAudioDetected(); - } else if (line.contains("silence_end")) { - ipCameraHandler.audioDetected(); + + InputStream errorStream = process.getErrorStream(); + InputStreamReader errorStreamReader = new InputStreamReader(errorStream); + BufferedReader bufferedReader = new BufferedReader(errorStreamReader); + String line = null; + while ((line = bufferedReader.readLine()) != null) { + logger.trace("{}", line); + switch (format) { + case RTSP_ALARMS: + if (line.contains("lavfi.")) { + // When the number of pixels that change are below the noise floor we need to look + // across frames to confirm it is motion and not noise. + if (countOfMotions < 10) { // Stop increasing otherwise it takes too long to go OFF + countOfMotions++; } - case MJPEG: - case SNAPSHOT: - notFrozen = true;// RTSP_ALARMS, MJPEG and SNAPSHOT all set this to true, no break. - break; - default: - break; - } + if (countOfMotions > 9) { + ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); + } else if (countOfMotions > 4 && ipCameraHandler.motionThreshold.intValue() > 10) { + ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); + } else if (countOfMotions > 3 && ipCameraHandler.motionThreshold.intValue() > 15) { + ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); + } else if (countOfMotions > 2 && ipCameraHandler.motionThreshold.intValue() > 30) { + ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); + } else if (countOfMotions > 0 && ipCameraHandler.motionThreshold.intValue() > 89) { + ipCameraHandler.motionDetected(CHANNEL_FFMPEG_MOTION_ALARM); + countOfMotions = 4; // Used to debounce the Alarm. + } + } else if (line.contains("speed=")) { + if (countOfMotions > 0) { + if (ipCameraHandler.motionThreshold.intValue() > 89) { + countOfMotions--; + } + if (ipCameraHandler.motionThreshold.intValue() > 10) { + countOfMotions -= 2; + } else { + countOfMotions -= 4; + } + if (countOfMotions <= 0) { + ipCameraHandler.noMotionDetected(CHANNEL_FFMPEG_MOTION_ALARM); + countOfMotions = 0; + } + } + } else if (line.contains("silence_start")) { + ipCameraHandler.noAudioDetected(); + } else if (line.contains("silence_end")) { + ipCameraHandler.audioDetected(); + } + case MJPEG: + case SNAPSHOT: + notFrozen = true; // RTSP_ALARMS, MJPEG and SNAPSHOT all set this to true, no break. + break; + default: + break; } } } catch (IOException e) { - logger.warn("An IO error occured trying to start FFmpeg:{}", e.getMessage()); + logger.warn("An IO error occurred trying to start FFmpeg: {}", e.getMessage()); } finally { switch (format) { case GIF: @@ -202,10 +199,10 @@ public class Ffmpeg { if (!ipCameraFfmpegThread.isAlive()) { ipCameraFfmpegThread = new IpCameraFfmpegThread(); if (!password.isEmpty()) { - logger.debug("Starting ffmpeg with this command now:{}", + logger.debug("Starting ffmpeg with this command now: {}", ffmpegCommand.replaceAll(password, "********")); } else { - logger.debug("Starting ffmpeg with this command now:{}", ffmpegCommand); + logger.debug("Starting ffmpeg with this command now: {}", ffmpegCommand); } ipCameraFfmpegThread.start(); if (format.equals(FFmpegFormat.HLS)) { @@ -217,7 +214,7 @@ public class Ffmpeg { } } - public boolean getIsAlive() { + public boolean isAlive() { Process localProcess = process; if (localProcess != null) { if (localProcess.isAlive() && notFrozen) { @@ -230,7 +227,7 @@ public class Ffmpeg { public void stopConverting() { if (ipCameraFfmpegThread.isAlive()) { - logger.debug("Stopping ffmpeg {} now when keepalive is:{}", format, keepAlive); + logger.debug("Stopping ffmpeg {} now when keepalive is: {}", format, keepAlive); Process localProcess = process; if (localProcess != null) { localProcess.destroyForcibly(); diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/ReolinkHandler.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/ReolinkHandler.java index 3dffcf725..2f582481f 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/ReolinkHandler.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/ReolinkHandler.java @@ -120,12 +120,10 @@ public class ReolinkHandler extends ChannelDuplexHandler { ipCameraHandler.logger.debug("The GetAiStateResponse could not be parsed"); return; } - if (aiResponse[0].value.dog_cat != null) { - if (aiResponse[0].value.dog_cat.alarm_state == 1) { - ipCameraHandler.setChannelState(CHANNEL_ANIMAL_ALARM, OnOffType.ON); - } else { - ipCameraHandler.setChannelState(CHANNEL_ANIMAL_ALARM, OnOffType.OFF); - } + if (aiResponse[0].value.dog_cat.alarm_state == 1) { + ipCameraHandler.setChannelState(CHANNEL_ANIMAL_ALARM, OnOffType.ON); + } else { + ipCameraHandler.setChannelState(CHANNEL_ANIMAL_ALARM, OnOffType.OFF); } if (aiResponse[0].value.face.alarm_state == 1) { ipCameraHandler.setChannelState(CHANNEL_FACE_DETECTED, OnOffType.ON); diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraGroupHandler.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraGroupHandler.java index b56abd9e7..fed486884 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraGroupHandler.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraGroupHandler.java @@ -50,7 +50,6 @@ import org.slf4j.LoggerFactory; * * @author Matthew Skinner - Initial contribution */ - @NonNullByDefault public class IpCameraGroupHandler extends BaseThingHandler { private final Logger logger = LoggerFactory.getLogger(getClass()); diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java index 4af99acb9..cab6e79c8 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/handler/IpCameraHandler.java @@ -123,7 +123,6 @@ import io.netty.util.concurrent.GlobalEventExecutor; * * @author Matthew Skinner - Initial contribution */ - @NonNullByDefault public class IpCameraHandler extends BaseThingHandler { public final Logger logger = LoggerFactory.getLogger(getClass()); @@ -245,7 +244,7 @@ public class IpCameraHandler extends BaseThingHandler { mjpegContentType = contentType; CameraServlet localServlet = servlet; if (localServlet != null) { - logger.debug("Setting Content-Type to:{}", contentType); + logger.debug("Setting Content-Type to: {}", contentType); localServlet.openStreams.updateContentType(contentType, boundary); } } @@ -384,7 +383,7 @@ public class IpCameraHandler extends BaseThingHandler { 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 camera: {}", cameraConfig.getIp()); ctx.close(); } } @@ -511,15 +510,15 @@ public class IpCameraHandler extends BaseThingHandler { } private void checkCameraConnection() { - if (snapshotPolling) {// Currently polling a real URL for snapshots, so camera must be online. + if (snapshotPolling) { // Currently polling a real URL for snapshots, so camera must be online. return; - } else if (ffmpegSnapshotGeneration) {// Use RTSP stream creating snapshots to know camera is online. + } else if (ffmpegSnapshotGeneration) { // Use RTSP stream creating snapshots to know camera is online. Ffmpeg localSnapshot = ffmpegSnapshot; - if (localSnapshot != null && !localSnapshot.getIsAlive()) { - cameraCommunicationError("FFmpeg Snapshots Stopped: Check your camera can be reached."); + if (localSnapshot != null && !localSnapshot.isAlive()) { + cameraCommunicationError("FFmpeg Snapshots Stopped: Check that your camera can be reached."); return; } - return;// ffmpeg snapshot stream is still alive + return; // ffmpeg snapshot stream is still alive } // if ONVIF cam also use connection state which is updated by regular messages to camera @@ -614,7 +613,7 @@ public class IpCameraHandler extends BaseThingHandler { if (!basicAuth.isEmpty()) { if (useDigestAuth) { - logger.warn("Camera at IP:{} had both Basic and Digest set to be used", cameraConfig.getIp()); + logger.warn("Camera at IP: {} had both Basic and Digest set to be used", cameraConfig.getIp()); setBasicAuth(false); } else { request.headers().set("Authorization", "Basic " + basicAuth); @@ -755,7 +754,7 @@ public class IpCameraHandler extends BaseThingHandler { channelTrackingMap.remove(channelTracking.getRequestUrl()); } if (channelTracking.getChannel().equals(channel)) { - logger.debug("Open channel to camera is used for URL:{}", channelTracking.getRequestUrl()); + logger.debug("Open channel to camera is used for URL: {}", channelTracking.getRequestUrl()); oldChannel = false; } } @@ -882,17 +881,14 @@ public class IpCameraHandler extends BaseThingHandler { ffmpegRecord = new Ffmpeg(this, format, cameraConfig.getFfmpegLocation(), inputOptions, rtspUri, cameraConfig.getMp4OutOptions(), cameraConfig.getFfmpegOutput() + mp4Filename + ".mp4", cameraConfig.getUser(), cameraConfig.getPassword()); - Ffmpeg localRecord = ffmpegRecord; - if (localRecord != null) { - localRecord.startConverting(); - if (mp4History.isEmpty()) { - mp4History = mp4Filename; - } else if (!"ipcamera".equals(mp4Filename)) { - mp4History = mp4Filename + "," + mp4History; - if (mp4HistoryLength > 49) { - int endIndex = mp4History.lastIndexOf(","); - mp4History = mp4History.substring(0, endIndex); - } + ffmpegRecord.startConverting(); + if (mp4History.isEmpty()) { + mp4History = mp4Filename; + } else if (!"ipcamera".equals(mp4Filename)) { + mp4History = mp4Filename + "," + mp4History; + if (mp4HistoryLength > 49) { + int endIndex = mp4History.lastIndexOf(","); + mp4History = mp4History.substring(0, endIndex); } } setChannelState(CHANNEL_MP4_HISTORY, new StringType(mp4History)); @@ -930,10 +926,7 @@ public class IpCameraHandler extends BaseThingHandler { } ffmpegRtspHelper = new Ffmpeg(this, format, cameraConfig.getFfmpegLocation(), inputOptions, input, filterOptions, "-f null -", cameraConfig.getUser(), cameraConfig.getPassword()); - localAlarms = ffmpegRtspHelper; - if (localAlarms != null) { - localAlarms.startConverting(); - } + ffmpegRtspHelper.startConverting(); break; case MJPEG: if (ffmpegMjpeg == null) { @@ -1429,7 +1422,7 @@ public class IpCameraHandler extends BaseThingHandler { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, "Camera refused connection on ONVIF ports."); } - logger.debug("About to connect to the IP Camera using the ONVIF PORT at IP:{}:{}", cameraConfig.getIp(), + logger.debug("About to connect to the IP Camera using the ONVIF PORT at IP: {}:{}", cameraConfig.getIp(), cameraConfig.getOnvifPort()); onvifCamera.connect(thing.getThingTypeUID().getId().equals(ONVIF_THING)); return; @@ -1448,7 +1441,7 @@ public class IpCameraHandler extends BaseThingHandler { } public void cameraConfigError(String reason) { - // wont try to reconnect again due to a config error being the cause. + // won't try to reconnect again due to a config error being the cause. updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, reason); dispose(); } @@ -1456,7 +1449,7 @@ public class IpCameraHandler extends BaseThingHandler { public void cameraCommunicationError(String reason) { // will try to reconnect again as camera may be rebooting. updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, reason); - if (isOnline) {// if already offline dont try reconnecting in 6 seconds, we want 30sec wait. + if (isOnline) { // if already offline dont try reconnecting in 6 seconds, we want 30sec wait. resetAndRetryConnecting(); } } @@ -1640,13 +1633,13 @@ public class IpCameraHandler extends BaseThingHandler { } if (ffmpegMotionAlarmEnabled || ffmpegAudioAlarmEnabled) { localFfmpeg = ffmpegRtspHelper; - if (localFfmpeg == null || !localFfmpeg.getIsAlive()) { + if (localFfmpeg == null || !localFfmpeg.isAlive()) { setupFfmpegFormat(FFmpegFormat.RTSP_ALARMS); } } // check if the thread has frozen due to camera doing a soft reboot localFfmpeg = ffmpegMjpeg; - if (localFfmpeg != null && !localFfmpeg.getIsAlive()) { + if (localFfmpeg != null && !localFfmpeg.isAlive()) { logger.debug("MJPEG was not being produced by FFmpeg when it should have been, restarting FFmpeg."); setupFfmpegFormat(FFmpegFormat.MJPEG); } @@ -1871,7 +1864,7 @@ public class IpCameraHandler extends BaseThingHandler { localFfmpeg.stopConverting(); ffmpegSnapshot = null; } - if (!thing.getThingTypeUID().getId().equals(GENERIC_THING)) {// generic cameras do not have ONVIF support + if (!thing.getThingTypeUID().getId().equals(GENERIC_THING)) { // generic cameras do not have ONVIF support onvifCamera.disconnect(); } openChannels.close(); diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifCodec.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifCodec.java index a3f49a9eb..f4d124a63 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifCodec.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifCodec.java @@ -28,7 +28,6 @@ import io.netty.util.ReferenceCountUtil; /** * The {@link OnvifCodec} is used by Netty to decode Onvif traffic into message Strings. * - * * @author Matthew Skinner - Initial contribution */ @NonNullByDefault @@ -66,11 +65,11 @@ public class OnvifCodec extends ChannelDuplexHandler { } if (evt instanceof IdleStateEvent) { IdleStateEvent e = (IdleStateEvent) evt; - logger.trace("IdleStateEvent received {}", e.state()); + logger.trace("IdleStateEvent received: {}", e.state()); onvifConnection.setIsConnected(false); ctx.close(); } else { - logger.trace("Other ONVIF netty channel event occured {}", evt); + logger.trace("Other ONVIF netty channel event occurred: {}", evt); } } diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifConnection.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifConnection.java index 70b830ab3..bbc5bec9d 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifConnection.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifConnection.java @@ -67,8 +67,6 @@ import io.netty.handler.timeout.IdleStateHandler; /** * The {@link OnvifConnection} This is a basic Netty implementation for connecting and communicating to ONVIF cameras. * - * - * * @author Matthew Skinner - Initial contribution */ @@ -146,7 +144,7 @@ public class OnvifConnection { private Float tiltRangeMax = 1.0f; private Float zoomMin = 0.0f; private Float zoomMax = 1.0f; - // These hold the PTZ values for updating Openhabs controls in 0-100 range + // These hold the PTZ values for updating openHABs controls in 0-100 range private Float currentPanPercentage = 0.0f; private Float currentTiltPercentage = 0.0f; private Float currentZoomPercentage = 0.0f; @@ -308,7 +306,7 @@ public class OnvifConnection { } public void processReply(String message) { - logger.trace("Onvif reply is:{}", message); + logger.trace("ONVIF reply is: {}", message); if (message.contains("PullMessagesResponse")) { eventRecieved(message); } else if (message.contains("RenewResponse")) { @@ -317,7 +315,7 @@ public class OnvifConnection { setIsConnected(true); sendOnvifRequest(RequestType.GetCapabilities, deviceXAddr); parseDateAndTime(message); - logger.debug("Openhabs UTC dateTime is:{}", getUTCdateTime()); + logger.debug("openHAB UTC dateTime is: {}", getUTCdateTime()); } else if (message.contains("GetCapabilitiesResponse")) {// 2nd to be sent. parseXAddr(message); sendOnvifRequest(RequestType.GetProfiles, mediaXAddr); @@ -358,7 +356,7 @@ public class OnvifConnection { logger.debug("ptzNodeToken={}", ptzNodeToken); sendPTZRequest(RequestType.GetConfigurations); } else if (message.contains("GetDeviceInformationResponse")) { - logger.debug("GetDeviceInformationResponse recieved"); + logger.debug("GetDeviceInformationResponse received"); } else if (message.contains("GetSnapshotUriResponse")) { snapshotUri = removeIPfromUrl(Helper.fetchXML(message, ":MediaUri", ":Uri")); logger.debug("GetSnapshotUri:{}", snapshotUri); @@ -387,7 +385,7 @@ public class OnvifConnection { index = url.indexOf("/", index + 2); } if (index == -1) { - logger.debug("We hit an issue parsing url:{}", url); + logger.debug("We hit an issue parsing url: {}", url); return ""; } return url.substring(index); @@ -399,7 +397,7 @@ public class OnvifConnection { if (startIndex != -1 && endIndex != -1) { return url.substring(startIndex, endIndex); } - logger.debug("We hit an issue extracting IP:PORT from url:{}", url); + logger.debug("We hit an issue extracting IP:PORT from url: {}", url); return ""; } @@ -421,17 +419,17 @@ public class OnvifConnection { String temp = Helper.fetchXML(message, ""); String month = Helper.fetchXML(message, "UTCDateTime", "Month>"); String year = Helper.fetchXML(message, "UTCDateTime", "Year>"); - logger.debug("Cameras UTC dateTime is:{}-{}-{}T{}:{}:{}", year, month, day, hour, minute, second); + logger.debug("Camera UTC dateTime is: {}-{}-{}T{}:{}:{}", year, month, day, hour, minute, second); } private String getUTCdateTime() { @@ -497,7 +495,7 @@ public class OnvifConnection { } public void sendOnvifRequest(RequestType requestType, String xAddr) { - logger.trace("Sending ONVIF request:{}", requestType); + logger.trace("Sending ONVIF request: {}", requestType); String security = ""; String extraEnvelope = ""; String headerTo = ""; @@ -565,7 +563,7 @@ public class OnvifConnection { bootstrap = localBootstap; } if (!mainEventLoopGroup.isShuttingDown()) { - bootstrap.connect(new InetSocketAddress(ipAddress, onvifPort)).addListener(new ChannelFutureListener() { + localBootstap.connect(new InetSocketAddress(ipAddress, onvifPort)).addListener(new ChannelFutureListener() { @Override public void operationComplete(@Nullable ChannelFuture future) { @@ -576,15 +574,16 @@ public class OnvifConnection { connectError = false; Channel ch = future.channel(); ch.writeAndFlush(request); - } else { // an error occured + } else { // an error occurred if (future.isDone() && !future.isCancelled()) { Throwable cause = future.cause(); + String msg = cause.getMessage(); logger.trace("connect failed - cause {}", cause.getMessage()); if (cause instanceof ConnectTimeoutException) { logger.debug("Camera is not reachable on IP {}", ipAddress); connectError = true; - } else if ((cause instanceof ConnectException) - && cause.getMessage().contains("Connection refused")) { + } else if ((cause instanceof ConnectException) && msg != null + && msg.contains("Connection refused")) { logger.debug("Camera ONVIF port {} is refused.", onvifPort); refusedError = true; } @@ -616,7 +615,7 @@ public class OnvifConnection { } else {// 192.168.1.1 ipAddress = url; deviceXAddr = "http://" + ipAddress + "/onvif/device_service"; - logger.debug("No Onvif Port found when parsing:{}", url); + logger.debug("No ONVIF Port found when parsing: {}", url); return; } deviceXAddr = "http://" + ipAddress + ":" + onvifPort + "/onvif/device_service"; @@ -644,7 +643,7 @@ public class OnvifConnection { } String dataName = Helper.fetchXML(eventMessage, "tt:Data", "Name=\""); String dataValue = Helper.fetchXML(eventMessage, "tt:Data", "Value=\""); - logger.debug("Onvif Event Topic:{}, Data:{}, Value:{}", topic, dataName, dataValue); + logger.debug("ONVIF Event Topic: {}, Data: {}, Value: {}", topic, dataName, dataValue); switch (topic) { case "RuleEngine/CellMotionDetector/Motion": if ("true".equals(dataValue)) { @@ -767,7 +766,7 @@ public class OnvifConnection { } break; default: - logger.debug("Please report this camera has an un-implemented ONVIF event. Topic:{}", topic); + logger.debug("Please report this camera has an un-implemented ONVIF event. Topic: {}", topic); } sendOnvifRequest(RequestType.Renew, subscriptionXAddr); } @@ -833,7 +832,7 @@ public class OnvifConnection { if (startLookingFromIndex >= 0) { temp = Helper.fetchXML(message.substring(startLookingFromIndex), heading, key); if (!temp.isEmpty()) { - logger.trace("String was found:{}", temp); + logger.trace("String was found: {}", temp); results.add(temp); } else { return results;// key string must not exist so stop looking. @@ -879,7 +878,7 @@ public class OnvifConnection { currentPanCamValue = Float.parseFloat(result.substring(beginIndex + 3, endIndex)); currentPanPercentage = (((panRangeMin - currentPanCamValue) * -1) / ((panRangeMin - panRangeMax) * -1)) * 100; - logger.debug("Pan is updating to:{} and the cam value is {}", Math.round(currentPanPercentage), + logger.debug("Pan is updating to: {} and the cam value is {}", Math.round(currentPanPercentage), currentPanCamValue); } else { logger.warn( @@ -893,7 +892,7 @@ public class OnvifConnection { currentTiltCamValue = Float.parseFloat(result.substring(beginIndex + 3, endIndex)); currentTiltPercentage = (((tiltRangeMin - currentTiltCamValue) * -1) / ((tiltRangeMin - tiltRangeMax) * -1)) * 100; - logger.debug("Tilt is updating to:{} and the cam value is {}", Math.round(currentTiltPercentage), + logger.debug("Tilt is updating to: {} and the cam value is {}", Math.round(currentTiltPercentage), currentTiltCamValue); } else { return; @@ -904,7 +903,7 @@ public class OnvifConnection { if (beginIndex >= 0 && endIndex >= 0) { currentZoomCamValue = Float.parseFloat(result.substring(beginIndex + 3, endIndex)); currentZoomPercentage = (((zoomMin - currentZoomCamValue) * -1) / ((zoomMin - zoomMax) * -1)) * 100; - logger.debug("Zoom is updating to:{} and the cam value is {}", Math.round(currentZoomPercentage), + logger.debug("Zoom is updating to: {} and the cam value is {}", Math.round(currentZoomPercentage), currentZoomCamValue); } else { return; @@ -974,7 +973,7 @@ public class OnvifConnection { } catch (InterruptedException e) { logger.warn("ONVIF was not cleanly shutdown, due to being interrupted"); } finally { - logger.debug("Eventloop is shutdown:{}", mainEventLoopGroup.isShutdown()); + logger.debug("Eventloop is shutdown: {}", mainEventLoopGroup.isShutdown()); bootstrap = null; threadPool.shutdown(); } diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifDiscovery.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifDiscovery.java index 7dbaf9242..b98238b14 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifDiscovery.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/onvif/OnvifDiscovery.java @@ -61,7 +61,6 @@ import io.netty.util.concurrent.GlobalEventExecutor; * * @author Matthew Skinner - Initial contribution */ - @NonNullByDefault @io.netty.channel.ChannelHandler.Sharable public class OnvifDiscovery { @@ -110,7 +109,7 @@ public class OnvifDiscovery { String temp = url; BigDecimal onvifPort = new BigDecimal(80); - logger.info("Camera found at xAddr:{}", url); + logger.info("Camera found at xAddr: {}", url); int endIndex = temp.indexOf(" ");// Some xAddr have two urls with a space in between. if (endIndex > 0) { temp = temp.substring(0, endIndex);// Use only the first url from now on. @@ -139,7 +138,7 @@ public class OnvifDiscovery { void processCameraReplys() { for (DatagramPacket packet : listOfReplys) { String xml = packet.content().toString(CharsetUtil.UTF_8); - logger.trace("Device replied to discovery with:{}", xml); + logger.trace("Device replied to discovery with: {}", xml); String xAddr = Helper.fetchXML(xml, "", "d:XAddrs>");// Foscam and all other brands if (!xAddr.isEmpty()) { searchReply(xAddr, xml); @@ -150,7 +149,7 @@ public class OnvifDiscovery { } catch (IOException e) { brand = "onvif"; } - logger.info("Possible {} camera found at:{}", brand, packet.sender().getHostString()); + logger.debug("Possible {} camera found at: {}", brand, packet.sender().getHostString()); if ("reolink".equals(brand)) { ipCameraDiscoveryService.newCameraFound(brand, packet.sender().getHostString(), 8000); } else { @@ -200,7 +199,7 @@ public class OnvifDiscovery { response += temp; } reply.close(); - logger.trace("Cameras Login page is:{}", response); + logger.trace("Cameras Login page is: {}", response); brand = checkForBrand(response); } catch (MalformedURLException e) { } finally { diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/NettyRtspHandler.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/NettyRtspHandler.java index 40b1b893b..59632d4f1 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/NettyRtspHandler.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/NettyRtspHandler.java @@ -22,7 +22,6 @@ import io.netty.handler.codec.http.LastHttpContent; /** * The {@link NettyRtspHandler} is used to decode RTSP traffic into message Strings. * - * * @author Matthew Skinner - Initial contribution */ @NonNullByDefault diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/RtspConnection.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/RtspConnection.java index e08c091e8..e21f50de4 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/RtspConnection.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/rtsp/RtspConnection.java @@ -43,7 +43,6 @@ import io.netty.handler.timeout.IdleStateHandler; * The {@link RtspConnection} is a WIP and not currently used, but will talk directly to RTSP and collect information * about the camera and streams. * - * * @author Matthew Skinner - Initial contribution */ @NonNullByDefault diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/CameraServlet.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/CameraServlet.java index cfe098586..973f9a930 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/CameraServlet.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/CameraServlet.java @@ -109,7 +109,7 @@ public class CameraServlet extends IpCameraServlet { Ffmpeg localFfmpeg = handler.ffmpegHLS; if (localFfmpeg == null) { handler.setupFfmpegFormat(FFmpegFormat.HLS); - } else if (!localFfmpeg.getIsAlive()) { + } else if (!localFfmpeg.isAlive()) { localFfmpeg.startConverting(); } else { localFfmpeg.setKeepAlive(8); diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/IpCameraServlet.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/IpCameraServlet.java index ef6f86faa..3532814cb 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/IpCameraServlet.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/IpCameraServlet.java @@ -63,7 +63,7 @@ public abstract class IpCameraServlet extends HttpServlet { httpService.registerServlet("/ipcamera/" + handler.getThing().getUID().getId(), this, initParameters, httpService.createDefaultHttpContext()); } catch (Exception e) { - logger.warn("Registering servlet failed:{}", e.getMessage()); + logger.warn("Registering servlet failed: {}", e.getMessage()); } } diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/OpenStreams.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/OpenStreams.java index f479e1052..90b82ced9 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/OpenStreams.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/OpenStreams.java @@ -22,10 +22,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault; * The {@link OpenStreams} Keeps track of all open mjpeg streams so the byte[] can be given to all FIFO buffers to allow * 1 to many streams without needing to open more than 1 source stream. * - * * @author Matthew Skinner - Initial contribution */ - @NonNullByDefault public class OpenStreams { private List openStreams = Collections.synchronizedList(new ArrayList()); diff --git a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/StreamOutput.java b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/StreamOutput.java index 5d41feae5..0b3a46435 100644 --- a/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/StreamOutput.java +++ b/bundles/org.openhab.binding.ipcamera/src/main/java/org/openhab/binding/ipcamera/internal/servlet/StreamOutput.java @@ -28,7 +28,6 @@ import org.slf4j.LoggerFactory; * * @author Matthew Skinner - Initial contribution */ - @NonNullByDefault public class StreamOutput { public final Logger logger = LoggerFactory.getLogger(getClass()); @@ -79,7 +78,7 @@ public class StreamOutput { try { fifo.add(frame); } catch (IllegalStateException e) { - logger.debug("FIFO buffer has run out of space:{}", e.getMessage()); + logger.debug("FIFO buffer has run out of space: {}", e.getMessage()); fifo.remove(); fifo.add(frame); }