fwestenberg / reolink_dev

Home Assistant Reolink addon
MIT License
550 stars 102 forks source link

[RLC-420-5MP] New issues after firmware update #420

Closed CRCinAU closed 2 years ago

CRCinAU commented 2 years ago

Describe the bug Updated firmware to v3.0.0.660_21110805 - a few things broke.

When trying to stream a recording from the SD Card, I get:

2022-01-11 12:21:29 ERROR (MainThread) [frontend.js.latest.202112290] https://<ha url>/frontend_latest/93104ce0.js:8:3340 Uncaught TypeError: Cannot read properties of null (reading 'removeAttribute')
2022-01-11 12:21:29 ERROR (stream_worker) [libav.rtmp] Cannot read RTMP handshake response
2022-01-11 12:21:29 ERROR (stream_worker) [homeassistant.components.stream] Error from stream worker: Error opening stream rtmp://172.31.1.245:1935/vod/Rec_20220111_011940_411_M.mp4?channel=0&stream=0&token=21d65f68f659b96
2022-01-11 12:21:32 ERROR (MainThread) [frontend.js.latest.202112290] https://<ha url>/frontend_latest/93104ce0.js:8:3340 Uncaught TypeError: Cannot read properties of null (reading 'removeAttribute')
2022-01-11 12:22:18 ERROR (stream_worker) [libav.rtmp] Cannot read RTMP handshake response
2022-01-11 12:22:18 ERROR (stream_worker) [homeassistant.components.stream] Error from stream worker: Error opening stream rtmp://172.31.1.245:1935/vod/Rec_20220111_011940_411_M.mp4?channel=0&stream=0&token=21d65f68f659b96

Motion detection seems to be unstable, its log:

2022-01-11 12:16:48 ERROR (MainThread) [custom_components.reolink_dev.binary_sensor] Motion states could not be queried from API
2022-01-11 12:16:48 ERROR (MainThread) [custom_components.reolink_dev.binary_sensor] Traceback (most recent call last):
  File "/config/custom_components/reolink_dev/binary_sensor.py", line 119, in handle_event
    await self._base.api.get_all_motion_states()
  File "/usr/local/lib/python3.9/site-packages/reolink/camera_api.py", line 598, in get_all_motion_states
    json_data = json.loads(response)
  File "/usr/local/lib/python3.9/json/__init__.py", line 339, in loads
    raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not bool

Error logs for the Media Source:

2022-01-11 12:34:19 DEBUG (MainThread) [custom_components.reolink_dev.media_source] Creating REOLink Media Source
2022-01-11 12:34:19 DEBUG (MainThread) [reolink.camera_api] Sending command: Search to: 172.31.1.245 with body: [{'cmd': 'Search', 'action': 0, 'param': {'Search': {'channel': 0, 'onlyStatus': 1, 'streamType': 'main', 'StartTime': {'year': 2021, 'mon': 11, 'day': 1, 'hour': 0, 'min': 0, 'sec': 0}, 'EndTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 12, 'min': 34, 'sec': 19}}}}]
2022-01-11 12:34:19 DEBUG (MainThread) [reolink.camera_api] send() HTTP Request params ={'cmd': 'Search', 'token': '049570264d01b76'}
2022-01-11 12:34:19 DEBUG (MainThread) [reolink.camera_api] send() HTTP Request body =[{'cmd': 'Search', 'action': 0, 'param': {'Search': {'channel': 0, 'onlyStatus': 1, 'streamType': 'main', 'StartTime': {'year': 2021, 'mon': 11, 'day': 1, 'hour': 0, 'min': 0, 'sec': 0}, 'EndTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 12, 'min': 34, 'sec': 19}}}}]
2022-01-11 12:34:19 DEBUG (MainThread) [reolink.camera_api] send() HTTP Response status=200 content-type=(text/html)
2022-01-11 12:34:19 DEBUG (MainThread) [reolink.camera_api.data] send() HTTP Response data: [
   {
      "cmd" : "Search",
      "code" : 0,
      "value" : {
         "SearchResult" : {
            "Status" : [
               {
                  "mon" : 1,
                  "table" : "0000000001100000000000000000000",
                  "year" : 2022
               }
            ],
            "channel" : 0
         }
      }
   }
]

2022-01-11 12:34:19 DEBUG (MainThread) [reolink.camera_api] Sending command: Search to: 172.31.1.245 with body: [{'cmd': 'Search', 'action': 0, 'param': {'Search': {'channel': 0, 'onlyStatus': 0, 'streamType': 'main', 'StartTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 0, 'min': 0, 'sec': 0}, 'EndTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 23, 'min': 59, 'sec': 59}}}}]
2022-01-11 12:34:20 WARNING (MainThread) [homeassistant.config_entries] Config entry '172.31.1.5' for octoprint integration not ready yet: Cannot connect to host 172.31.1.5:80 ssl:default [Connect call failed ('172.31.1.5', 80)]; Retrying in background
2022-01-11 12:34:21 DEBUG (MainThread) [reolink.camera_api] send() HTTP Request params ={'cmd': 'Search', 'token': '049570264d01b76'}
2022-01-11 12:34:21 DEBUG (MainThread) [reolink.camera_api] send() HTTP Request body =[{'cmd': 'Search', 'action': 0, 'param': {'Search': {'channel': 0, 'onlyStatus': 0, 'streamType': 'main', 'StartTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 0, 'min': 0, 'sec': 0}, 'EndTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 23, 'min': 59, 'sec': 59}}}}]
2022-01-11 12:34:21 DEBUG (MainThread) [reolink.camera_api] send() HTTP Response status=200 content-type=(text/html)
2022-01-11 12:34:21 DEBUG (MainThread) [reolink.camera_api.data] send() HTTP Response data scrapped because it's too large
2022-01-11 12:34:21 ERROR (stream_worker) [libav.rtmp] Cannot read RTMP handshake response
2022-01-11 12:34:21 ERROR (stream_worker) [homeassistant.components.stream] Error from stream worker: Error opening stream rtmp://172.31.1.245:1935/bcs/channel0_main.bcs?channel=0&stream=0&user=homeassistant&password=homeassistant
2022-01-11 12:34:31 ERROR (stream_worker) [libav.rtmp] Cannot read RTMP handshake response
2022-01-11 12:34:31 ERROR (stream_worker) [homeassistant.components.stream] Error from stream worker: Error opening stream rtmp://172.31.1.245:1935/bcs/channel0_main.bcs?channel=0&stream=0&user=homeassistant&password=homeassistant

I seem to get a few of these in the logs:

2022-01-11 12:36:30 DEBUG (MainThread) [reolink.camera_api] Sending command: Search to: 172.31.1.245 with body: [{'cmd': 'Search', 'action': 0, 'param': {'Search': {'channel': 0, 'onlyStatus': 0, 'streamType': 'main', 'StartTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 0, 'min': 0, 'sec': 0}, 'EndTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 23, 'min': 59, 'sec': 59}}}}]
2022-01-11 12:36:32 DEBUG (MainThread) [reolink.camera_api] send() HTTP Request params ={'cmd': 'Search', 'token': '049570264d01b76'}
2022-01-11 12:36:32 DEBUG (MainThread) [reolink.camera_api] send() HTTP Request body =[{'cmd': 'Search', 'action': 0, 'param': {'Search': {'channel': 0, 'onlyStatus': 0, 'streamType': 'main', 'StartTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 0, 'min': 0, 'sec': 0}, 'EndTime': {'year': 2022, 'mon': 1, 'day': 11, 'hour': 23, 'min': 59, 'sec': 59}}}}]
2022-01-11 12:36:33 DEBUG (MainThread) [reolink.camera_api] send() HTTP Response status=200 content-type=(text/html)
2022-01-11 12:36:33 DEBUG (MainThread) [reolink.camera_api.data] send() HTTP Response data scrapped because it's too large
CRCinAU commented 2 years ago

New firmware for the RLC-420-5MP is here: https://www.reddit.com/r/reolinkcam/comments/qkdgyr/beta_firmware_test_for_iframe_iframe_for_nonai/

It allows you to set the iframe interval between 1 and 4 seconds - which can help quite a lot with things...

CRCinAU commented 2 years ago

Further info - this seems to be the camera config packet dumped:

2022-01-11 12:42:25 DEBUG (MainThread) [reolink.camera_api] send() HTTP Response status=200 content-type=(text/html)
2022-01-11 12:42:25 DEBUG (MainThread) [reolink.camera_api.data] send() HTTP Response data: [
   {
      "cmd" : "GetFtp",
      "code" : 0,
      "initial" : {
         "Ftp" : {
            "anonymous" : 0,
            "autoDir" : 1,
            "bpicSingle" : 0,
            "bvideoSingle" : 0,
            "interval" : 30,
            "maxSize" : 100,
            "mode" : 0,
            "onlyFtps" : 0,
            "password" : "",
            "picCaptureMode" : 0,
            "picHeight" : 1440,
            "picInterval" : 60,
            "picName" : "",
            "picWidth" : 2560,
            "port" : 21,
            "remoteDir" : "",
            "schedule" : {
               "enable" : 1,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "server" : "",
            "streamType" : 0,
            "userName" : "",
            "videoName" : ""
         }
      },
      "range" : {
         "Ftp" : {
            "anonymous" : "boolean",
            "autoDir" : [ 0, 1, 2, 3 ],
            "bpicSingle" : [ 0, 1, 2 ],
            "bvideoSingle" : [ 0, 1, 2 ],
            "interval" : [ 5, 10, 15, 30, 60 ],
            "maxSize" : {
               "max" : 1024,
               "min" : 10
            },
            "mode" : {
               "max" : 2,
               "min" : 0
            },
            "password" : {
               "maxLen" : 127
            },
            "picCaptureMode" : [ 0, 1, 2, 3 ],
            "picHeight" : {
               "max" : 2160,
               "min" : 480
            },
            "picInterval" : [ 2, 5, 10, 15, 30, 60, 300, 600, 1800 ],
            "picName" : {
               "maxLen" : 127
            },
            "picWidth" : {
               "max" : 3840,
               "min" : 640
            },
            "port" : {
               "max" : 65535,
               "min" : 1
            },
            "remoteDir" : {
               "maxLen" : 255
            },
            "schedule" : {
               "enable" : "boolean",
               "table" : {
                  "maxLen" : 168,
                  "minLen" : 168
               }
            },
            "server" : {
               "maxLen" : 127
            },
            "streamType" : {
               "max" : 6,
               "min" : 0
            },
            "userName" : {
               "maxLen" : 127
            },
            "videoName" : {
               "maxLen" : 127
            }
         }
      },
      "value" : {
         "Ftp" : {
            "anonymous" : 0,
            "autoDir" : 1,
            "bpicSingle" : 0,
            "bvideoSingle" : 0,
            "interval" : 30,
            "maxSize" : 100,
            "mode" : 0,
            "onlyFtps" : 0,
            "password" : "",
            "picCaptureMode" : 0,
            "picHeight" : 1920,
            "picInterval" : 60,
            "picName" : "",
            "picWidth" : 2560,
            "port" : 21,
            "remoteDir" : "",
            "schedule" : {
               "enable" : 0,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "server" : "",
            "streamType" : 0,
            "userName" : "",
            "videoName" : ""
         }
      }
   },
   {
      "cmd" : "GetEnc",
      "code" : 0,
      "initial" : {
         "Enc" : {
            "audio" : 0,
            "channel" : 0,
            "mainStream" : {
               "bitRate" : 6144,
               "frameRate" : 30,
               "gop" : 2,
               "height" : 1920,
               "profile" : "High",
               "resolution" : 54,
               "size" : "2560*1920",
               "width" : 2560
            },
            "subStream" : {
               "bitRate" : 160,
               "frameRate" : 7,
               "gop" : 4,
               "height" : 480,
               "profile" : "High",
               "size" : "640*480",
               "width" : 640
            }
         }
      },
      "range" : {
         "Enc" : [
            {
               "audio" : "boolean",
               "chnBit" : 1,
               "mainStream" : {
                  "bitRate" : [ 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192 ],
                  "default" : {
                     "bitRate" : 6144,
                     "frameRate" : 30,
                     "gop" : 2
                  },
                  "frameRate" : [ 30, 25, 22, 20, 18, 16, 15, 12, 10, 8, 6, 4, 2 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 1920,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 54,
                  "size" : "2560*1920",
                  "width" : 2560
               },
               "subStream" : {
                  "bitRate" : [ 64, 128, 160, 192, 256, 384, 512 ],
                  "default" : {
                     "bitRate" : 160,
                     "frameRate" : 7,
                     "gop" : 4
                  },
                  "frameRate" : [ 15, 10, 7, 4 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 480,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 28,
                  "size" : "640*480",
                  "width" : 640
               }
            },
            {
               "audio" : "boolean",
               "chnBit" : 1,
               "mainStream" : {
                  "bitRate" : [ 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192 ],
                  "default" : {
                     "bitRate" : 6144,
                     "frameRate" : 30,
                     "gop" : 2
                  },
                  "frameRate" : [ 30, 25, 22, 20, 18, 16, 15, 12, 10, 8, 6, 4, 2 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 1440,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 41,
                  "size" : "2560*1440",
                  "width" : 2560
               },
               "subStream" : {
                  "bitRate" : [ 64, 128, 160, 192, 256, 384, 512 ],
                  "default" : {
                     "bitRate" : 160,
                     "frameRate" : 7,
                     "gop" : 4
                  },
                  "frameRate" : [ 15, 10, 7, 4 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 480,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 28,
                  "size" : "640*480",
                  "width" : 640
               }
            },
            {
               "audio" : "boolean",
               "chnBit" : 1,
               "mainStream" : {
                  "bitRate" : [ 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192 ],
                  "default" : {
                     "bitRate" : 6144,
                     "frameRate" : 30,
                     "gop" : 2
                  },
                  "frameRate" : [ 30, 25, 22, 20, 18, 16, 15, 12, 10, 8, 6, 4, 2 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 1536,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 32,
                  "size" : "2048*1536",
                  "width" : 2048
               },
               "subStream" : {
                  "bitRate" : [ 64, 128, 160, 192, 256, 384, 512 ],
                  "default" : {
                     "bitRate" : 160,
                     "frameRate" : 7,
                     "gop" : 4
                  },
                  "frameRate" : [ 15, 10, 7, 4 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 480,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 28,
                  "size" : "640*480",
                  "width" : 640
               }
            },
            {
               "audio" : "boolean",
               "chnBit" : 1,
               "mainStream" : {
                  "bitRate" : [ 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192 ],
                  "default" : {
                     "bitRate" : 6144,
                     "frameRate" : 30,
                     "gop" : 2
                  },
                  "frameRate" : [ 30, 25, 22, 20, 18, 16, 15, 12, 10, 8, 6, 4, 2 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 1296,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 34,
                  "size" : "2304*1296",
                  "width" : 2304
               },
               "subStream" : {
                  "bitRate" : [ 64, 128, 160, 192, 256, 384, 512 ],
                  "default" : {
                     "bitRate" : 160,
                     "frameRate" : 7,
                     "gop" : 4
                  },
                  "frameRate" : [ 15, 10, 7, 4 ],
                  "gop" : {
                     "max" : 8,
                     "min" : 1
                  },
                  "height" : 480,
                  "profile" : [ "Base", "Main", "High" ],
                  "resolution" : 28,
                  "size" : "640*480",
                  "width" : 640
               }
            }
         ]
      },
      "value" : {
         "Enc" : {
            "audio" : 1,
            "channel" : 0,
            "mainStream" : {
               "bitRate" : 6144,
               "frameRate" : 20,
               "gop" : 1,
               "height" : 1440,
               "profile" : "High",
               "resolution" : 41,
               "size" : "2560*1440",
               "width" : 2560
            },
            "subStream" : {
               "bitRate" : 384,
               "frameRate" : 15,
               "gop" : 1,
               "height" : 480,
               "profile" : "High",
               "resolution" : 28,
               "size" : "640*480",
               "width" : 640
            }
         }
      }
   },
   {
      "cmd" : "GetEmail",
      "code" : 0,
      "initial" : {
         "Email" : {
            "addr1" : "",
            "addr2" : "",
            "addr3" : "",
            "attachmentType" : 1,
            "interval" : "5 Minutes",
            "nickName" : "",
            "password" : "",
            "schedule" : {
               "enable" : 1,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "smtpPort" : 465,
            "smtpServer" : "smtp.gmail.com",
            "ssl" : 1,
            "textType" : 1,
            "userName" : ""
         }
      },
      "range" : {
         "Email" : {
            "addr1" : {
               "maxLen" : 127
            },
            "addr2" : {
               "maxLen" : 127
            },
            "addr3" : {
               "maxLen" : 127
            },
            "attachmentType" : 1,
            "interval" : [ "30 Seconds", "1 Minute", "5 Minutes", "10 Minutes", "30 Minutes" ],
            "nickName" : {
               "maxLen" : 127
            },
            "password" : {
               "maxLen" : 127
            },
            "schedule" : {
               "enable" : "boolean",
               "table" : {
                  "maxLen" : 168,
                  "minLen" : 168
               }
            },
            "smtpPort" : {
               "max" : 65535,
               "min" : 1
            },
            "smtpServer" : {
               "maxLen" : 127
            },
            "ssl" : "boolean",
            "textType" : 1,
            "userName" : {
               "maxLen" : 127
            }
         }
      },
      "value" : {
         "Email" : {
            "addr1" : "",
            "addr2" : "",
            "addr3" : "",
            "attachmentType" : 1,
            "interval" : "5 Minutes",
            "nickName" : "",
            "password" : "",
            "schedule" : {
               "enable" : 0,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "smtpPort" : 465,
            "smtpServer" : "smtp.gmail.com",
            "ssl" : 1,
            "supportTextType" : 1,
            "supportVideo" : 1,
            "textType" : 1,
            "userName" : ""
         }
      }
   },
   {
      "cmd" : "GetIsp",
      "code" : 0,
      "initial" : {
         "Isp" : {
            "antiFlicker" : "Off",
            "backLight" : "Off",
            "bd_day" : {
               "bright" : 128,
               "dark" : 128,
               "mode" : "Auto"
            },
            "bd_night" : {
               "bright" : 128,
               "dark" : 128,
               "mode" : "Auto"
            },
            "blc" : 128,
            "blueGain" : 128,
            "channel" : 0,
            "dayNight" : "Auto",
            "dayNightThreshold" : 50,
            "drc" : 128,
            "exposure" : "Auto",
            "gain" : {
               "max" : 62,
               "min" : 1
            },
            "mirroring" : 0,
            "nr3d" : 1,
            "redGain" : 128,
            "rotation" : 0,
            "shutter" : {
               "max" : 125,
               "min" : 0
            },
            "whiteBalance" : "Auto"
         }
      },
      "range" : {
         "Isp" : {
            "antiFlicker" : [ "Outdoor", "50HZ", "60HZ", "Off" ],
            "backLight" : [ "Off", "BackLightControl", "DynamicRangeControl" ],
            "bd_day" : {
               "bright" : {
                  "max" : 255,
                  "min" : 0
               },
               "dark" : {
                  "max" : 255,
                  "min" : 0
               },
               "mode" : [ "Auto", "Manual" ]
            },
            "bd_night" : {
               "bright" : {
                  "max" : 255,
                  "min" : 0
               },
               "dark" : {
                  "max" : 255,
                  "min" : 0
               },
               "mode" : [ "Auto", "Manual" ]
            },
            "blc" : {
               "max" : 255,
               "min" : 0
            },
            "blueGain" : {
               "max" : 255,
               "min" : 0
            },
            "channel" : 0,
            "dayNight" : [ "Auto", "Color", "Black&White" ],
            "dayNightThreshold" : {
               "max" : 100,
               "min" : 0
            },
            "drc" : {
               "max" : 255,
               "min" : 0
            },
            "exposure" : [ "Auto", "LowNoise", "Anti-Smearing", "Manual" ],
            "gain" : {
               "max" : 100,
               "min" : 1
            },
            "mirroring" : "boolean",
            "nr3d" : "boolean",
            "redGain" : {
               "max" : 255,
               "min" : 0
            },
            "rotation" : "boolean",
            "shutter" : {
               "max" : 125,
               "min" : 0
            },
            "whiteBalance" : [ "Auto", "Manual" ]
         }
      },
      "value" : {
         "Isp" : {
            "antiFlicker" : "Off",
            "backLight" : "DynamicRangeControl",
            "bd_day" : {
               "bright" : 128,
               "dark" : 128,
               "mode" : "Auto"
            },
            "bd_night" : {
               "bright" : 128,
               "dark" : 128,
               "mode" : "Auto"
            },
            "blc" : 128,
            "blueGain" : 128,
            "channel" : 0,
            "dayNight" : "Auto",
            "dayNightThreshold" : 50,
            "drc" : 128,
            "exposure" : "Auto",
            "gain" : {
               "max" : 62,
               "min" : 1
            },
            "mirroring" : 0,
            "nr3d" : 1,
            "redGain" : 128,
            "rotation" : 0,
            "shutter" : {
               "max" : 125,
               "min" : 0
            },
            "whiteBalance" : "Auto"
         }
      }
   },
   {
      "cmd" : "GetIrLights",
      "code" : 0,
      "initial" : {
         "IrLights" : {
            "state" : "Auto"
         }
      },
      "range" : {
         "IrLights" : {
            "state" : [ "Auto", "Off" ]
         }
      },
      "value" : {
         "IrLights" : {
            "state" : "Auto"
         }
      }
   },
   {
      "cmd" : "Unknown",
      "code" : 1,
      "error" : {
         "detail" : "not support",
         "rspCode" : -9
      }
   },
   {
      "cmd" : "GetPtzPreset",
      "code" : 1,
      "error" : {
         "detail" : "ability error",
         "rspCode" : -26
      }
   },
   {
      "cmd" : "GetHddInfo",
      "code" : 0,
      "value" : {
         "HddInfo" : [
            {
               "capacity" : 60898,
               "format" : 1,
               "mount" : 1,
               "number" : 0,
               "size" : 39160,
               "storageType" : 2
            }
         ]
      }
   },
   {
      "cmd" : "GetAlarm",
      "code" : 0,
      "initial" : {
         "Alarm" : {
            "action" : {
               "mail" : 0,
               "push" : 0,
               "recChannel" : null
            },
            "channel" : 0,
            "enable" : 1602,
            "schedule" : {
               "table" : ""
            },
            "scope" : {
               "cols" : 80,
               "rows" : 45,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "sens" : [
               {
                  "beginHour" : 0,
                  "beginMin" : 0,
                  "endHour" : 6,
                  "endMin" : 0,
                  "sensitivity" : 10
               },
               {
                  "beginHour" : 6,
                  "beginMin" : 0,
                  "endHour" : 12,
                  "endMin" : 0,
                  "sensitivity" : 10
               },
               {
                  "beginHour" : 12,
                  "beginMin" : 0,
                  "endHour" : 18,
                  "endMin" : 0,
                  "sensitivity" : 10
               },
               {
                  "beginHour" : 18,
                  "beginMin" : 0,
                  "endHour" : 23,
                  "endMin" : 59,
                  "sensitivity" : 10
               }
            ],
            "type" : "md"
         }
      },
      "range" : {
         "Alarm" : {
            "action" : {
               "mail" : "boolean",
               "push" : "boolean",
               "recChannel" : [ 0 ]
            },
            "channel" : 0,
            "enable" : "boolean",
            "schedule" : {
               "table" : {
                  "maxLen" : 168,
                  "minLen" : 168
               }
            },
            "scope" : {
               "cols" : {
                  "max" : 80,
                  "min" : 80
               },
               "rows" : {
                  "max" : 45,
                  "min" : 45
               },
               "table" : {
                  "maxLen" : 8159
               }
            },
            "sens" : [
               {
                  "beginHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "beginMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "endHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "endMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "id" : 0,
                  "sensitivity" : {
                     "max" : 50,
                     "min" : 1
                  }
               },
               {
                  "beginHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "beginMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "endHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "endMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "id" : 1,
                  "sensitivity" : {
                     "max" : 50,
                     "min" : 1
                  }
               },
               {
                  "beginHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "beginMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "endHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "endMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "id" : 2,
                  "sensitivity" : {
                     "max" : 50,
                     "min" : 1
                  }
               },
               {
                  "beginHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "beginMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "endHour" : {
                     "max" : 23,
                     "min" : 0
                  },
                  "endMin" : {
                     "max" : 59,
                     "min" : 0
                  },
                  "id" : 3,
                  "sensitivity" : {
                     "max" : 50,
                     "min" : 1
                  }
               }
            ],
            "type" : "md"
         }
      },
      "value" : {
         "Alarm" : {
            "action" : {
               "mail" : 0,
               "push" : 0,
               "recChannel" : null
            },
            "channel" : 0,
            "enable" : 1602,
            "schedule" : {
               "table" : ""
            },
            "scope" : {
               "cols" : 80,
               "rows" : 45,
               "table" : "000000000000000000000000000000000000000000000000000000000000000000000000000011110000000000000000000000000000000000000000000000000000000000000000000000000000111100000000000000000000000000000000000000000000000000000000000000000000000000001111000000000000000000000000000000000000000000000000000000000000000000000000000011110000000000000000000000000000000000000000000000000000000000000000000000000000111100000000000000000000000000000000000000000000000000000000000000000000000000001111111111100000000000000000000000000000000000000000000000000000000000000000000011111111111000000000000000000000000000000000000000000000000000000000000000000000111111111110000000000000000000000000000000000000000000000000000000000000000000001111111111100000000000000000000000000000000000000000000000000000000000000000000011111111111000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111100000000000000000000000000000000000000000000000001111111111111111111111111111111000000000000000000000011111111111000000000000000011111111111111111111111111111110000000000000000000000111111111111111111000000000111111111111111111111111111111100000000000000000000001111111111111111111111000001111111111111111111111111111111000000000000000000000011111111111111111111111111111111111111111111111111111111111000000000000000000000111111111111111111111111111111111111111111111111111111111111000000000000000000001111111111111111111111111111111111111111111111111111111111110000000000000000000111111111111111111111111111111111111111111111111111111111111110000000000000000001111111111111111111111111111111111111111111111111111111111111111000000000000001111111111111111111111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "sens" : [
               {
                  "beginHour" : 0,
                  "beginMin" : 0,
                  "endHour" : 6,
                  "endMin" : 0,
                  "id" : 0,
                  "sensitivity" : 10
               },
               {
                  "beginHour" : 6,
                  "beginMin" : 0,
                  "endHour" : 12,
                  "endMin" : 0,
                  "id" : 1,
                  "sensitivity" : 10
               },
               {
                  "beginHour" : 12,
                  "beginMin" : 0,
                  "endHour" : 18,
                  "endMin" : 0,
                  "id" : 2,
                  "sensitivity" : 10
               },
               {
                  "beginHour" : 18,
                  "beginMin" : 0,
                  "endHour" : 23,
                  "endMin" : 59,
                  "id" : 3,
                  "sensitivity" : 10
               }
            ],
            "type" : "md"
         }
      }
   },
   {
      "cmd" : "GetPush",
      "code" : 0,
      "initial" : {
         "Push" : {
            "schedule" : {
               "enable" : 1,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            }
         }
      },
      "range" : {
         "Push" : {
            "schedule" : {
               "enable" : "boolean",
               "table" : {
                  "maxLen" : 168,
                  "minLen" : 168
               }
            }
         }
      },
      "value" : {
         "Push" : {
            "schedule" : {
               "enable" : 1,
               "table" : "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
            }
         }
      }
   },
   {
      "cmd" : "GetFtp",
      "code" : 0,
      "initial" : {
         "Ftp" : {
            "anonymous" : 0,
            "autoDir" : 1,
            "bpicSingle" : 0,
            "bvideoSingle" : 0,
            "interval" : 30,
            "maxSize" : 100,
            "mode" : 0,
            "onlyFtps" : 0,
            "password" : "",
            "picCaptureMode" : 0,
            "picHeight" : 1440,
            "picInterval" : 60,
            "picName" : "",
            "picWidth" : 2560,
            "port" : 21,
            "remoteDir" : "",
            "schedule" : {
               "enable" : 1,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "server" : "",
            "streamType" : 0,
            "userName" : "",
            "videoName" : ""
         }
      },
      "range" : {
         "Ftp" : {
            "anonymous" : "boolean",
            "autoDir" : [ 0, 1, 2, 3 ],
            "bpicSingle" : [ 0, 1, 2 ],
            "bvideoSingle" : [ 0, 1, 2 ],
            "interval" : [ 5, 10, 15, 30, 60 ],
            "maxSize" : {
               "max" : 1024,
               "min" : 10
            },
            "mode" : {
               "max" : 2,
               "min" : 0
            },
            "password" : {
               "maxLen" : 127
            },
            "picCaptureMode" : [ 0, 1, 2, 3 ],
            "picHeight" : {
               "max" : 2160,
               "min" : 480
            },
            "picInterval" : [ 2, 5, 10, 15, 30, 60, 300, 600, 1800 ],
            "picName" : {
               "maxLen" : 127
            },
            "picWidth" : {
               "max" : 3840,
               "min" : 640
            },
            "port" : {
               "max" : 65535,
               "min" : 1
            },
            "remoteDir" : {
               "maxLen" : 255
            },
            "schedule" : {
               "enable" : "boolean",
               "table" : {
                  "maxLen" : 168,
                  "minLen" : 168
               }
            },
            "server" : {
               "maxLen" : 127
            },
            "streamType" : {
               "max" : 6,
               "min" : 0
            },
            "userName" : {
               "maxLen" : 127
            },
            "videoName" : {
               "maxLen" : 127
            }
         }
      },
      "value" : {
         "Ftp" : {
            "anonymous" : 0,
            "autoDir" : 1,
            "bpicSingle" : 0,
            "bvideoSingle" : 0,
            "interval" : 30,
            "maxSize" : 100,
            "mode" : 0,
            "onlyFtps" : 0,
            "password" : "",
            "picCaptureMode" : 0,
            "picHeight" : 1920,
            "picInterval" : 60,
            "picName" : "",
            "picWidth" : 2560,
            "port" : 21,
            "remoteDir" : "",
            "schedule" : {
               "enable" : 0,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            },
            "server" : "",
            "streamType" : 0,
            "userName" : "",
            "videoName" : ""
         }
      }
   },
   {
      "cmd" : "GetRec",
      "code" : 0,
      "initial" : {
         "Rec" : {
            "channel" : 0,
            "overwrite" : 1,
            "postRec" : "15 Seconds",
            "preRec" : 1,
            "schedule" : {
               "enable" : 1,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            }
         }
      },
      "range" : {
         "Rec" : {
            "channel" : 0,
            "overwrite" : "boolean",
            "postRec" : [ "15 Seconds", "30 Seconds", "1 Minute" ],
            "preRec" : "boolean",
            "schedule" : {
               "enable" : "boolean"
            }
         }
      },
      "value" : {
         "Rec" : {
            "channel" : 0,
            "overwrite" : 1,
            "postRec" : "15 Seconds",
            "preRec" : 1,
            "schedule" : {
               "enable" : 1,
               "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
            }
         }
      }
   },
   {
      "cmd" : "GetAudioAlarm",
      "code" : 1,
      "error" : {
         "detail" : "ability error",
         "rspCode" : -26
      }
   }
]
CRCinAU commented 2 years ago

Further info, this seems to be the media browser error:

2022-01-11 12:46:17 DEBUG (MainThread) [reolink.camera_api] Response from 172.31.1.245: [{'cmd': 'SetIsp', 'code': 1, 'error': {'detail': 'ability error', 'rspCode': -26}}]
2022-01-11 12:46:17 DEBUG (MainThread) [reolink.camera_api] Host 172.31.1.245: Received an unexpected response while sending command: SetIsp
2022-01-11 12:46:19 DEBUG (MainThread) [custom_components.reolink_dev.media_source] file = Rec_20220110_125837_411_M.mp4
2022-01-11 12:46:19 DEBUG (MainThread) [custom_components.reolink_dev.media_source] Load VOD rtmp://172.31.1.245:1935/vod/Rec_20220110_125837_411_M.mp4?channel=0&stream=0&token=049570264d01b76
2022-01-11 12:46:19 DEBUG (MainThread) [custom_components.reolink_dev.media_source] Proxy /api/hls/548c71572bd288153331ec2abbfbf6fbefdcc547d584c67e25bb2f7e2547708d/playlist.m3u8
2022-01-11 12:46:19 ERROR (stream_worker) [libav.rtmp] Cannot read RTMP handshake response
2022-01-11 12:46:19 ERROR (stream_worker) [homeassistant.components.stream] Error from stream worker: Error opening stream rtmp://172.31.1.245:1935/vod/Rec_20220110_125837_411_M.mp4?channel=0&stream=0&token=049570264d01b76
2022-01-11 12:46:26 DEBUG (MainThread) [reolink.subscription_manager] Host 172.31.1.245 should renew in: 1071 seconds...
CRCinAU commented 2 years ago

I wonder if this partially has to do with enforcing redirect to https on the camera now? ie:

# curl http://172.31.1.245/ -v
*   Trying 172.31.1.245:80...
* TCP_NODELAY set
* Connected to 172.31.1.245 (172.31.1.245) port 80 (#0)
> GET / HTTP/1.1
> Host: 172.31.1.245
> User-Agent: curl/7.68.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Date: Tue, 11 Jan 2022 01:59:26 GMT
< Content-Type: text/html
< Content-Length: 154
< Connection: keep-alive
< Location: https://172.31.1.245
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< 
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host 172.31.1.245 left intact
CRCinAU commented 2 years ago

Good news, I might have accidentally figured out the issue with RTMP.... There's a new dialog in Network Settings -> Advanced -> Port Settings that is for RTMP. By default, it seems this is turned off....

image