home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
71.14k stars 29.81k forks source link

AXIS integration broken from last HA update #112550

Closed yozh closed 6 months ago

yozh commented 6 months ago

The problem

AXIS integration seems to be broken after updating to 2024.3.0. I have 4 cameras and they all stopped working

What version of Home Assistant Core has the issue?

core-2024.3.0

What was the last working version of Home Assistant Core?

core-2024.2

What type of installation are you running?

Home Assistant OS

Integration causing the issue

axis

Link to integration documentation on our website

https://www.home-assistant.io/integrations/axis

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

Logger: homeassistant.config_entries
Source: config_entries.py:504
First occurred: 6:43:21 PM (5 occurrences)
Last logged: 6:44:26 PM

Error setting up entry M1054 - 00408CB208XX for axis
Error setting up entry M1054 - 00408CB20XXX for axis
Error setting up entry M1034-W - ACCC8E201XXX for axis
Error setting up entry M1054 - 00408CB2XXXX for axis
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/__init__.py", line 21, in async_setup_entry
    api = await get_axis_device(hass, config_entry.data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device
    await device.vapix.initialize()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 145, in initialize
    await self.initialize_param_cgi(preload_data=False)
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 201, in initialize_param_cgi
    await self.params.ptz_handler.update()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update
    obj_ids = await self._update()
              ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 39, in _update
    return await self.vapix.params.request_group(self.parameter_group)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_cgi.py", line 52, in request_group
    self.signal_subscribers(obj_id)
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 42, in signal_subscribers
    callback(obj_id)
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 44, in _update_params_callback
    self._items.update(self.parameter_item.decode_to_dict([data]))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/param_cgi.py", line 92, in decode_to_dict
    return {"0": cls.decode(data[0])}
                 ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 396, in decode
    limits=PtzLimit.from_dict(data["Limit"]),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 211, in from_dict
    return {k[1:]: cls.decode(v) for k, v in data.items()}
                   ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 192, in decode
    max_field_angle=data["MaxFieldAngle"],
                    ~~~~^^^^^^^^^^^^^^^^^
KeyError: 'MaxFieldAngle'

Additional information

Logger: homeassistant.components.axis Source: components/axis/device.py:272 Integration: Axis (documentation, issues) First occurred: 6:43:28 PM (1 occurrences) Last logged: 6:43:28 PM

Error connecting to the Axis device at 192.168.1.34

home-assistant[bot] commented 6 months ago

Hey there @kane610, mind taking a look at this issue as it has been labeled with an integration (axis) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `axis` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Renames the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign axis` Removes the current integration label and assignees on the issue, add the integration domain after the command. - `@home-assistant add-label needs-more-information` Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue. - `@home-assistant remove-label needs-more-information` Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


axis documentation axis source (message by IssueLinks)

yozh commented 6 months ago

Just to add cameras I have are 3x1054 and 1x1034-W all are not loading and showing that error. All running 5.51.7.6 firmware.

Here is some debug info `orjson.JSONDecodeError: unexpected character: line 1 column 1 (char 0) 2024-03-06 19:45:52.434 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.1.40:80/axis-cgi/apidiscovery.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getApiList"}'', 'None', 'None' 2024-03-06 19:45:52.439 DEBUG (MainThread) [axis.vapix.vapix] <Response [404 Not Found]>, Client error '404 Not Found' for url 'http://192.168.1.40/axis-cgi/apidiscovery.cgi' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 2024-03-06 19:45:52.439 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.1.40:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.Properties'}', 'None' 2024-03-06 19:45:52.439 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.1.40:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.Brand'}', 'None' 2024-03-06 19:45:52.440 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.1.40:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.IOPort'}', 'None' 2024-03-06 19:45:52.440 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.1.40:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.StreamProfile'}', 'None' 2024-03-06 19:45:52.906 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.1.40 /axis-cgi/param.cgi): b'root.IOPort.I0.Configurable=no\nroot.IOPort.I0.Direction=input\nroot.IOPort.I0.Input.Name=Input 1\nroot.IOPort.I0.Input.Trig=closed\nroot.IOPort.I1.Configurable=no\nroot.IOPort.I1.Direction=input\nroot.IOPort.I1.Input.Name=PIR sensor\nroot.IOPort.I1.Input.Trig=closed\nroot.IOPort.I2.Configurable=no\nroot.IOPort.I2.Direction=output\nroot.IOPort.I2.Output.Name=Output 1\nroot.IOPort.I2.Output.Active=closed\nroot.IOPort.I2.Output.Button=none\nroot.IOPort.I2.Output.PulseTime=0\nroot.IOPort.I2.Output.Mode=bistable\nroot.IOPort.I2.Output.DelayTime=0\n' 2024-03-06 19:45:52.911 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.1.40 /axis-cgi/param.cgi): b'root.Brand.Brand=AXIS\nroot.Brand.ProdFullName=AXIS M1054 Network Camera\nroot.Brand.ProdShortName=AXIS M1054\nroot.Brand.ProdNbr=M1054\nroot.Brand.ProdType=Network Camera\nroot.Brand.WebURL=http://www.axis.com/\n' 2024-03-06 19:45:54.212 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.1.40 /axis-cgi/param.cgi): b'root.Properties.AlwaysMulticast.AlwaysMulticast=yes\nroot.Properties.API.HTTP.Version=3\nroot.Properties.API.HTTP.AdminPath=/operator/basic.shtml\nroot.Properties.API.Metadata.Metadata=yes\nroot.Properties.API.Metadata.Version=1.0\nroot.Properties.API.RTSP.Version=2.01\nroot.Properties.API.RTSP.RTSPAuth=yes\nroot.Properties.API.WebService.WebService=yes\nroot.Properties.API.WebService.ONVIF.ONVIF=yes\nroot.Properties.API.WebService.ONVIF.Version=1.02\nroot.Properties.Audio.Audio=yes\nroot.Properties.Audio.Format=g711,g726,aac\nroot.Properties.Audio.DuplexMode=full,half,post,get\nroot.Properties.Audio.InputType=mic\nroot.Properties.Audio.Decoder.Format=g711,g726,axis-mulaw-128\nroot.Properties.Audio.Source.A0.Input=yes\nroot.Properties.Audio.Source.A0.Output=yes\nroot.Properties.EmbeddedDevelopment.EmbeddedDevelopment=yes\nroot.Properties.EmbeddedDevelopment.Version=1.40\nroot.Properties.EmbeddedDevelopment.CacheSize=26214400\nroot.Properties.EmbeddedDevelopment.DefaultCacheSize=41943040\nroot.Properties.Firmware.BuildNumber=1\nroot.Properties.Firmware.BuildDate=Apr 13 2021 13:19\nroot.Properties.Firmware.Version=5.51.7.4\nroot.Properties.GuardTour.GuardTour=yes\nroot.Properties.GuardTour.RecordedTour=no\nroot.Properties.HTTPS.HTTPS=yes\nroot.Properties.Image.Rotation=0,90,180,270\nroot.Properties.Image.Resolution=1024x768,800x600,640x480,480x360,320x240,240x180,160x120,1280x720,800x450,640x360,480x270,320x180,160x90,1280x800,1024x640,800x500,640x400,480x300,320x200,160x100,176x144\nroot.Properties.Image.Format=jpeg,mjpeg,h264,bitmap\nroot.Properties.Image.NbrOfViews=1\nroot.Properties.Image.H264.Profiles=Baseline\nroot.Properties.LEDControl.LEDControl=yes\nroot.Properties.LightControl.LightControl=yes\nroot.Properties.LocalStorage.LocalStorage=yes\nroot.Properties.LocalStorage.Version=1.00\nroot.Properties.LocalStorage.ContinuousRecording=yes\nroot.Properties.LocalStorage.NbrOfContinuousRecordingProfiles=1\nroot.Properties.LocalStorage.FailOverRecording=yes\nroot.Properties.Motion.Motion=yes\nroot.Properties.Motion.MaxNbrOfWindows=10\nroot.Properties.NetworkShare.NetworkShare=yes\nroot.Properties.NetworkShare.CIFS=yes\nroot.Properties.NetworkShare.IPV6=yes\nroot.Properties.PrivacyMask.PrivacyMask=no\nroot.Properties.PrivacyMask.MaxNbrOfPrivacyMasks=10\nroot.Properties.PTZ.PTZ=yes\nroot.Properties.PTZ.DigitalPTZ=yes\nroot.Properties.PTZ.DriverManagement=no\nroot.Properties.RemoteService.RemoteService=no\nroot.Properties.RTC.RTC=no\nroot.Properties.Serial.Serial=no\nroot.Properties.System.Language=English\nroot.Properties.System.LanguageType=default\nroot.Properties.System.HardwareID=175.1\nroot.Properties.System.SerialNumber=00408CB2089F\nroot.Properties.System.Architecture=crisv32\nroot.Properties.Tampering.Tampering=yes\nroot.Properties.TemperatureSensor.TemperatureSensor=no\nroot.Properties.TemperatureSensor.TemperatureControl=yes\nroot.Properties.TemperatureSensor.Fan=no\nroot.Properties.TemperatureSensor.Heater=no\nroot.Properties.VirtualInput.VirtualInput=yes\n' 2024-03-06 19:45:54.732 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.1.40 /axis-cgi/param.cgi): b'root.StreamProfile.MaxGroups=20\nroot.StreamProfile.S0.Name=Quality\nroot.StreamProfile.S0.Description=Best image quality and full frame rate.\nroot.StreamProfile.S0.Parameters=videocodec=h264&resolution=1280x800&compression=20&fps=0&videokeyframeinterval=8&videobitrate=0\nroot.StreamProfile.S0.Default.Name=Quality\nroot.StreamProfile.S0.Default.Description=Best image quality and full frame rate.\nroot.StreamProfile.S0.Default.Parameters=videocodec=h264&resolution=1280x800&compression=20&fps=0&videokeyframeinterval=8&videobitrate=0\nroot.StreamProfile.S1.Name=Balanced\nroot.StreamProfile.S1.Description=Medium image quality and frame rate.\nroot.StreamProfile.S1.Parameters=videocodec=h264&resolution=640x480&compression=30&fps=15&videokeyframeinterval=15&videobitrate=0\nroot.StreamProfile.S1.Default.Name=Balanced\nroot.StreamProfile.S1.Default.Description=Medium image quality and frame rate.\nroot.StreamProfile.S1.Default.Parameters=videocodec=h264&resolution=640x480&compression=30&fps=15&videokeyframeinterval=15&videobitrate=0\nroot.StreamProfile.S2.Name=Bandwidth\nroot.StreamProfile.S2.Description=Low bandwidth with medium image quality.\nroot.StreamProfile.S2.Parameters=videocodec=h264&resolution=640x480&compression=50&fps=15&videokeyframeinterval=32&videobitrate=250&videomaxbitrate=1000&videobitratepriority=framerate\nroot.StreamProfile.S2.Default.Name=Bandwidth\nroot.StreamProfile.S2.Default.Description=Low bandwidth with medium image quality.\nroot.StreamProfile.S2.Default.Parameters=videocodec=h264&resolution=640x480&compression=50&fps=15&videokeyframeinterval=32&videobitrate=250&videomaxbitrate=1000&videobitratepriority=framerate\nroot.StreamProfile.S3.Name=Mobile\nroot.StreamProfile.S3.Description=Mobile device settings.\nroot.StreamProfile.S3.Parameters=videocodec=h264&resolution=176x144&compression=50&fps=15&videokeyframeinterval=32&videobitrate=120&videomaxbitrate=128&videobitratepriority=quality&audio=0\nroot.StreamProfile.S3.Default.Name=Mobile\nroot.StreamProfile.S3.Default.Description=Mobile device settings.\nroot.StreamProfile.S3.Default.Parameters=videocodec=h264&resolution=176x144&compression=50&fps=15&videokeyframeinterval=32&videobitrate=120&videomaxbitrate=128&videobitratepriority=quality&audio=0\n' 2024-03-06 19:45:54.732 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.1.40:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.PTZ'}', 'None' 2024-03-06 19:45:55.140 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.1.40 /axis-cgi/param.cgi): b'root.PTZ.NbrOfSerPorts=0\nroot.PTZ.NbrOfCameras=1\nroot.PTZ.CameraDefault=1\nroot.PTZ.BoaProtPTZOperator=password\nroot.PTZ.CamPorts.Cam1Port=1\nroot.PTZ.ImageSource.I0.PTZEnabled=false\nroot.PTZ.Limit.L1.MinPan=-180\nroot.PTZ.Limit.L1.MaxPan=180\nroot.PTZ.Limit.L1.MinTilt=-180\nroot.PTZ.Limit.L1.MaxTilt=180\nroot.PTZ.Limit.L1.MinZoom=1\nroot.PTZ.Limit.L1.MaxZoom=9999\nroot.PTZ.Preset.P0.Name=\nroot.PTZ.Preset.P0.ImageSource=0\nroot.PTZ.Preset.P0.HomePosition=1\nroot.PTZ.Preset.P0.Position.P1.Name=Home\nroot.PTZ.Preset.P0.Position.P1.Data=tilt=0.000000:pan=0.000000:zoom=1.000000\nroot.PTZ.PTZDriverStatuses.Driver1Status=3\nroot.PTZ.Support.S1.AbsolutePan=true\nroot.PTZ.Support.S1.RelativePan=true\nroot.PTZ.Support.S1.AbsoluteTilt=true\nroot.PTZ.Support.S1.RelativeTilt=true\nroot.PTZ.Support.S1.AbsoluteZoom=true\nroot.PTZ.Support.S1.RelativeZoom=true\nroot.PTZ.Support.S1.DigitalZoom=false\nroot.PTZ.Support.S1.AbsoluteFocus=false\nroot.PTZ.Support.S1.RelativeFocus=false\nroot.PTZ.Support.S1.AutoFocus=false\nroot.PTZ.Support.S1.AbsoluteIris=false\nroot.PTZ.Support.S1.RelativeIris=false\nroot.PTZ.Support.S1.AutoIris=false\nroot.PTZ.Support.S1.AbsoluteBrightness=false\nroot.PTZ.Support.S1.RelativeBrightness=false\nroot.PTZ.Support.S1.ContinuousPan=true\nroot.PTZ.Support.S1.ContinuousTilt=true\nroot.PTZ.Support.S1.ContinuousZoom=true\nroot.PTZ.Support.S1.ContinuousFocus=false\nroot.PTZ.Support.S1.ContinuousIris=false\nroot.PTZ.Support.S1.ContinuousBrightness=false\nroot.PTZ.Support.S1.Auxiliary=false\nroot.PTZ.Support.S1.ServerPreset=true\nroot.PTZ.Support.S1.DevicePreset=false\nroot.PTZ.Support.S1.SpeedCtl=true\nroot.PTZ.Support.S1.JoyStickEmulation=true\nroot.PTZ.Support.S1.IrCutFilter=false\nroot.PTZ.Support.S1.AutoIrCutFilter=false\nroot.PTZ.Support.S1.BackLight=false\nroot.PTZ.Support.S1.OSDMenu=false\nroot.PTZ.Support.S1.ActionNotification=true\nroot.PTZ.Support.S1.ProportionalSpeed=true\nroot.PTZ.Support.S1.GenericHTTP=false\nroot.PTZ.Support.S1.LensOffset=false\nroot.PTZ.Support.S1.AreaZoom=true\nroot.PTZ.UserAdv.U1.MoveSpeed=100\nroot.PTZ.UserCtlQueue.U0.UserGroup=Administrator\nroot.PTZ.UserCtlQueue.U0.UseCookie=yes\nroot.PTZ.UserCtlQueue.U0.Priority=10\nroot.PTZ.UserCtlQueue.U0.TimeoutType=activity\nroot.PTZ.UserCtlQueue.U0.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U1.UserGroup=Operator\nroot.PTZ.UserCtlQueue.U1.UseCookie=yes\nroot.PTZ.UserCtlQueue.U1.Priority=30\nroot.PTZ.UserCtlQueue.U1.TimeoutType=activity\nroot.PTZ.UserCtlQueue.U1.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U2.UserGroup=Viewer\nroot.PTZ.UserCtlQueue.U2.UseCookie=yes\nroot.PTZ.UserCtlQueue.U2.Priority=50\nroot.PTZ.UserCtlQueue.U2.TimeoutType=timespan\nroot.PTZ.UserCtlQueue.U2.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U3.UserGroup=Event\nroot.PTZ.UserCtlQueue.U3.UseCookie=no\nroot.PTZ.UserCtlQueue.U3.Priority=20\nroot.PTZ.UserCtlQueue.U3.TimeoutType=activity\nroot.PTZ.UserCtlQueue.U3.TimeoutTime=20\nroot.PTZ.UserCtlQueue.U4.UserGroup=Guardtour\nroot.PTZ.UserCtlQueue.U4.UseCookie=no\nroot.PTZ.UserCtlQueue.U4.Priority=40\nroot.PTZ.UserCtlQueue.U4.TimeoutType=infinity\nroot.PTZ.UserCtlQueue.U4.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U5.UserGroup=Autotracking\nroot.PTZ.UserCtlQueue.U5.UseCookie=no\nroot.PTZ.UserCtlQueue.U5.Priority=35\nroot.PTZ.UserCtlQueue.U5.TimeoutType=infinity\nroot.PTZ.UserCtlQueue.U5.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U6.UserGroup=Onvif\nroot.PTZ.UserCtlQueue.U6.UseCookie=no\nroot.PTZ.UserCtlQueue.U6.Priority=1\nroot.PTZ.UserCtlQueue.U6.TimeoutType=infinity\nroot.PTZ.UserCtlQueue.U6.TimeoutTime=60\nroot.PTZ.Various.V1.CtlQueueing=false\nroot.PTZ.Various.V1.CtlQueueLimit=20\nroot.PTZ.Various.V1.CtlQueuePollTime=20\nroot.PTZ.Various.V1.PanEnabled=true\nroot.PTZ.Various.V1.TiltEnabled=true\nroot.PTZ.Various.V1.ZoomEnabled=true\nroot.PTZ.Various.V1.SpeedCtlEnabled=true\nroot.PTZ.Various.V1.HomePresetSet=true\nroot.PTZ.Various.V1.ProportionalSpeedEnabled=true\nroot.PTZ.Various.V1.MaxProportionalSpeed=200\nroot.PTZ.Various.V1.ReturnToOverview=30\nroot.PTZ.Various.V1.Locked=true\n' 2024-03-06 19:45:55.141 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry M1054 - 00408CB2089F for axis Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup result = await component.async_setup_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/init.py", line 21, in async_setup_entry api = await get_axis_device(hass, config_entry.data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device await device.vapix.initialize() File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 145, in initialize await self.initialize_param_cgi(preload_data=False) File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 201, in initialize_param_cgi await self.params.ptz_handler.update() File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update obj_ids = await self._update() ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 39, in _update return await self.vapix.params.request_group(self.parameter_group) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_cgi.py", line 52, in request_group self.signal_subscribers(obj_id) File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 42, in signal_subscribers callback(obj_id) File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 44, in _update_params_callback self._items.update(self.parameter_item.decode_to_dict([data])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/param_cgi.py", line 92, in decode_to_dict return {"0": cls.decode(data[0])} ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 396, in decode limits=PtzLimit.from_dict(data["Limit"]), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 211, in from_dict return {k[1:]: cls.decode(v) for k, v in data.items()} ^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 192, in decode max_field_angle=data["MaxFieldAngle"],


KeyError: 'MaxFieldAngle'
`
DirkMu commented 6 months ago

My cams cannot be integrated, too. However, I get a different error:

2024-03-07 06:24:08.473 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry P3228-LVE - ACCC8EBBACD0 for axis
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/__init__.py", line 21, in async_setup_entry
    api = await get_axis_device(hass, config_entry.data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device
    await device.vapix.initialize()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 144, in initialize
    await self.initialize_api_discovery()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 162, in initialize_api_discovery
    await asyncio.gather(*[api.update() for api in apis if api.supported])
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update
    obj_ids = await self._update()
              ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 115, in _update
    objects = await self._api_request()
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 31, in _api_request
    return await self.get_ports()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 36, in get_ports
    return GetPortsResponse.decode(bytes_data).data
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/port_management.py", line 221, in decode
    data=Port.decode_to_dict(data["data"]["items"]),
                             ~~~~~~~~~~~~^^^^^^^^^
KeyError: 'items'
2024-03-07 06:24:08.516 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Cam-Vorgarten for axis
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/__init__.py", line 21, in async_setup_entry
    api = await get_axis_device(hass, config_entry.data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device
    await device.vapix.initialize()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 144, in initialize
    await self.initialize_api_discovery()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 162, in initialize_api_discovery
    await asyncio.gather(*[api.update() for api in apis if api.supported])
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update
    obj_ids = await self._update()
              ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 115, in _update
    objects = await self._api_request()
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 31, in _api_request
    return await self.get_ports()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 36, in get_ports
    return GetPortsResponse.decode(bytes_data).data
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/port_management.py", line 221, in decode
    data=Port.decode_to_dict(data["data"]["items"]),
                             ~~~~~~~~~~~~^^^^^^^^^
KeyError: 'items'
2024-03-07 06:24:08.948 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry M3106-LVE-MkII - ACCC8EC73BB2 for axis
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/__init__.py", line 21, in async_setup_entry
    api = await get_axis_device(hass, config_entry.data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device
    await device.vapix.initialize()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 144, in initialize
    await self.initialize_api_discovery()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 162, in initialize_api_discovery
    await asyncio.gather(*[api.update() for api in apis if api.supported])
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update
    obj_ids = await self._update()
              ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 115, in _update
    objects = await self._api_request()
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 31, in _api_request
    return await self.get_ports()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 36, in get_ports
    return GetPortsResponse.decode(bytes_data).data
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/port_management.py", line 221, in decode
    data=Port.decode_to_dict(data["data"]["items"]),
                             ~~~~~~~~~~~~^^^^^^^^^
KeyError: 'items'
AlexGo14 commented 6 months ago

I` also have a problem today

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/__init__.py", line 21, in async_setup_entry
    api = await get_axis_device(hass, config_entry.data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device
    await device.vapix.initialize()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 145, in initialize
    await self.initialize_param_cgi(preload_data=False)
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 201, in initialize_param_cgi
    await self.params.ptz_handler.update()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update
    obj_ids = await self._update()
              ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 39, in _update
    return await self.vapix.params.request_group(self.parameter_group)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_cgi.py", line 52, in request_group
    self.signal_subscribers(obj_id)
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 42, in signal_subscribers
    callback(obj_id)
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 44, in _update_params_callback
    self._items.update(self.parameter_item.decode_to_dict([data]))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/param_cgi.py", line 92, in decode_to_dict
    return {"0": cls.decode(data[0])}
                 ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 396, in decode
    limits=PtzLimit.from_dict(data["Limit"]),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 211, in from_dict
    return {k[1:]: cls.decode(v) for k, v in data.items()}
                   ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 192, in decode
    max_field_angle=data["MaxFieldAngle"],
                    ~~~~^^^^^^^^^^^^^^^^^
KeyError: 'MaxFieldAngle'
Kane610 commented 6 months ago

@DirkMu can you provide a debug log

Kane610 commented 6 months ago

I suggest you follow https://community.home-assistant.io/t/axis-camera-component/14594/369?u=robban where I post updates to the integration and if something might have the risk of braking.

theFeverDog commented 6 months ago

Hi again,

After you fixed https://github.com/home-assistant/core/issues/112421 on Monday, I also still cannot get the integration set up. Now the missing key that's reported is KeyError: 'NbrOfCameras'.

Here's the debug log:


2024-03-07 09:36:36.150 DEBUG (MainThread) [axis.vapix.vapix] post, http://<MY-IP>:80/axis-cgi/apidiscovery.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getApiList"}'', 'None', 'None'
2024-03-07 09:36:36.165 DEBUG (MainThread) [axis.vapix.vapix] <Response [404 Not Found]>, Client error '404 Not Found' for url 'http://<MY-IP>/axis-cgi/apidiscovery.cgi'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
2024-03-07 09:36:36.166 DEBUG (MainThread) [axis.vapix.vapix] post, http://<MY-IP>:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.Properties'}', 'None'
2024-03-07 09:36:36.167 DEBUG (MainThread) [axis.vapix.vapix] post, http://<MY-IP>:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.Brand'}', 'None'
2024-03-07 09:36:36.169 DEBUG (MainThread) [axis.vapix.vapix] post, http://<MY-IP>:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.IOPort'}', 'None'
2024-03-07 09:36:36.170 DEBUG (MainThread) [axis.vapix.vapix] post, http://<MY-IP>:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.StreamProfile'}', 'None'
2024-03-07 09:36:36.776 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/param.cgi): b'root.Brand.Brand=AXIS\nroot.Brand.ProdFullName=AXIS M3024-L Network Camera\nroot.Brand.ProdShortName=AXIS M3024-L\nroot.Brand.ProdNbr=M3024-L\nroot.Brand.ProdType=Network Camera\nroot.Brand.WebURL=http://www.axis.com/\n'
2024-03-07 09:36:36.929 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/param.cgi): b'root.IOPort.I0.Direction=input\nroot.IOPort.I1.Direction=output\nroot.IOPort.I1.Output.Name=Output 1\nroot.IOPort.I1.Output.Active=closed\nroot.IOPort.I1.Output.Button=none\nroot.IOPort.I1.Output.PulseTime=0\nroot.IOPort.I1.Output.Mode=bistable\nroot.IOPort.I1.Output.DelayTime=0\n'
2024-03-07 09:36:39.295 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/param.cgi): b'root.Properties.AlwaysMulticast.AlwaysMulticast=yes\nroot.Properties.API.HTTP.Version=3\nroot.Properties.API.HTTP.AdminPath=/operator/basic.shtml\nroot.Properties.API.Metadata.Metadata=yes\nroot.Properties.API.Metadata.Version=1.0\nroot.Properties.API.RTSP.Version=2.01\nroot.Properties.API.RTSP.RTSPAuth=yes\nroot.Properties.API.WebService.WebService=yes\nroot.Properties.API.WebService.ONVIF.ONVIF=yes\nroot.Properties.API.WebService.ONVIF.Version=1.02\nroot.Properties.EmbeddedDevelopment.EmbeddedDevelopment=yes\nroot.Properties.EmbeddedDevelopment.Version=1.40\nroot.Properties.EmbeddedDevelopment.CacheSize=10485760\nroot.Properties.EmbeddedDevelopment.DefaultCacheSize=26214400\nroot.Properties.Firmware.BuildNumber=1\nroot.Properties.Firmware.BuildDate=Nov 23 2021 11:01\nroot.Properties.Firmware.Version=5.51.7.6\nroot.Properties.HTTPS.HTTPS=yes\nroot.Properties.Image.Rotation=0,90,180,270\nroot.Properties.Image.Resolution=800x600,640x480,480x360,320x240,1280x720,640x360,1280x800,1024x640,640x400,352x240\nroot.Properties.Image.Format=jpeg,mjpeg,h264\nroot.Properties.Image.NbrOfViews=1\nroot.Properties.Image.H264.Profiles=Main\nroot.Properties.ImageSource.DayNight=yes\nroot.Properties.LEDControl.LEDControl=yes\nroot.Properties.LightControl.LightControlAvailable=yes\nroot.Properties.LocalStorage.LocalStorage=yes\nroot.Properties.LocalStorage.Version=1.00\nroot.Properties.LocalStorage.ContinuousRecording=yes\nroot.Properties.LocalStorage.NbrOfContinuousRecordingProfiles=1\nroot.Properties.LocalStorage.FailOverRecording=yes\nroot.Properties.LocalStorage.SDCard=yes\nroot.Properties.Motion.Motion=yes\nroot.Properties.Motion.MaxNbrOfWindows=10\nroot.Properties.NetworkShare.NetworkShare=yes\nroot.Properties.NetworkShare.CIFS=yes\nroot.Properties.NetworkShare.IPV6=yes\nroot.Properties.PrivacyMask.PrivacyMask=no\nroot.Properties.PrivacyMask.MaxNbrOfPrivacyMasks=3\nroot.Properties.PTZ.PTZ=yes\nroot.Properties.PTZ.DigitalPTZ=yes\nroot.Properties.PTZ.DriverManagement=no\nroot.Properties.RemoteService.RemoteService=no\nroot.Properties.RTC.RTC=yes\nroot.Properties.Serial.Serial=no\nroot.Properties.System.Language=English\nroot.Properties.System.LanguageType=default\nroot.Properties.System.HardwareID=1A1\nroot.Properties.System.SerialNumber=ACCC8E3A1335\nroot.Properties.System.Architecture=armv6l\nroot.Properties.Tampering.Tampering=yes\nroot.Properties.TemperatureSensor.TemperatureSensor=no\nroot.Properties.TemperatureSensor.TemperatureControl=yes\nroot.Properties.TemperatureSensor.Fan=no\nroot.Properties.TemperatureSensor.Heater=no\nroot.Properties.VirtualInput.VirtualInput=yes\n'
2024-03-07 09:36:39.633 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/param.cgi): b'root.StreamProfile.MaxGroups=20\nroot.StreamProfile.S0.Name=Quality\nroot.StreamProfile.S0.Description=Best image quality and full frame rate.\nroot.StreamProfile.S0.Parameters=resolution=1280x720&compression=20&fps=25&videokeyframeinterval=100&videobitrate=0&videocodec=h264\nroot.StreamProfile.S0.Default.Name=Quality\nroot.StreamProfile.S0.Default.Description=Best image quality and full frame rate.\nroot.StreamProfile.S0.Default.Parameters=videocodec=h264&resolution=1280x800&compression=20&fps=0&videokeyframeinterval=8&videobitrate=0\nroot.StreamProfile.S1.Name=Balanced\nroot.StreamProfile.S1.Description=Medium image quality and frame rate.\nroot.StreamProfile.S1.Parameters=resolution=640x400&compression=30&textstring=Front%20Door%20640&textsize=small&textcolor=white&textbackgroundcolor=semitransparent&textposition=top&text=1&clock=1&date=1&fps=15&videokeyframeinterval=32&videobitrate=0&videocodec=h264\nroot.StreamProfile.S1.Default.Name=Balanced\nroot.StreamProfile.S1.Default.Description=Medium image quality and frame rate.\nroot.StreamProfile.S1.Default.Parameters=videocodec=h264&resolution=640x480&compression=30&fps=15&videokeyframeinterval=15&videobitrate=0\nroot.StreamProfile.S2.Name=Bandwidth\nroot.StreamProfile.S2.Description=Low bandwidth with medium image quality.\nroot.StreamProfile.S2.Parameters=resolution=640x480&compression=50&fps=15&videokeyframeinterval=32&videobitrate=250&videobitratepriority=framerate&videocodec=h264\nroot.StreamProfile.S2.Default.Name=Bandwidth\nroot.StreamProfile.S2.Default.Description=Low bandwidth with medium image quality.\nroot.StreamProfile.S2.Default.Parameters=videocodec=h264&resolution=640x480&compression=50&fps=15&videokeyframeinterval=32&videobitrate=250&videomaxbitrate=1000&videobitratepriority=framerate\nroot.StreamProfile.S3.Name=Mobile\nroot.StreamProfile.S3.Description=Mobile device settings. 480x360\nroot.StreamProfile.S3.Parameters=resolution=480x360&compression=50&fps=10&videokeyframeinterval=40&videobitrate=100&videobitratepriority=quality&videocodec=h264\nroot.StreamProfile.S3.Default.Name=Mobile\nroot.StreamProfile.S3.Default.Description=Mobile device settings.\nroot.StreamProfile.S3.Default.Parameters=videocodec=h264&resolution=352x240&compression=50&fps=15&videokeyframeinterval=32&videobitrate=120&videomaxbitrate=128&videobitratepriority=quality&audio=0\n'
2024-03-07 09:36:39.636 DEBUG (MainThread) [axis.vapix.vapix] post, http://<MY-IP>:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.PTZ'}', 'None'
2024-03-07 09:36:40.565 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/param.cgi): b'root.PTZ.NbrOfSerPorts=0\nroot.PTZ.CameraDefault=1\nroot.PTZ.BoaProtPTZOperator=password\nroot.PTZ.CamPorts.Cam1Port=1\nroot.PTZ.ImageSource.I0.PTZEnabled=false\nroot.PTZ.Limit.L1.MinPan=-180\nroot.PTZ.Limit.L1.MaxPan=180\nroot.PTZ.Limit.L1.MinTilt=-180\nroot.PTZ.Limit.L1.MaxTilt=180\nroot.PTZ.Limit.L1.MinZoom=1\nroot.PTZ.Limit.L1.MaxZoom=9999\nroot.PTZ.Preset.P0.Name=\nroot.PTZ.Preset.P0.ImageSource=0\nroot.PTZ.Preset.P0.HomePosition=1\nroot.PTZ.Preset.P0.Position.P1.Name=Home\nroot.PTZ.Preset.P0.Position.P1.Data=tilt=0.000000:pan=0.000000:zoom=1.000000\nroot.PTZ.PTZDriverStatuses.Driver1Status=3\nroot.PTZ.Support.S1.AbsolutePan=true\nroot.PTZ.Support.S1.RelativePan=true\nroot.PTZ.Support.S1.AbsoluteTilt=true\nroot.PTZ.Support.S1.RelativeTilt=true\nroot.PTZ.Support.S1.AbsoluteZoom=true\nroot.PTZ.Support.S1.RelativeZoom=true\nroot.PTZ.Support.S1.DigitalZoom=false\nroot.PTZ.Support.S1.AbsoluteFocus=false\nroot.PTZ.Support.S1.RelativeFocus=false\nroot.PTZ.Support.S1.AutoFocus=false\nroot.PTZ.Support.S1.AbsoluteIris=false\nroot.PTZ.Support.S1.RelativeIris=false\nroot.PTZ.Support.S1.AutoIris=false\nroot.PTZ.Support.S1.AbsoluteBrightness=false\nroot.PTZ.Support.S1.RelativeBrightness=false\nroot.PTZ.Support.S1.ContinuousPan=true\nroot.PTZ.Support.S1.ContinuousTilt=true\nroot.PTZ.Support.S1.ContinuousZoom=true\nroot.PTZ.Support.S1.ContinuousFocus=false\nroot.PTZ.Support.S1.ContinuousIris=false\nroot.PTZ.Support.S1.ContinuousBrightness=false\nroot.PTZ.Support.S1.Auxiliary=false\nroot.PTZ.Support.S1.ServerPreset=true\nroot.PTZ.Support.S1.DevicePreset=false\nroot.PTZ.Support.S1.SpeedCtl=true\nroot.PTZ.Support.S1.JoyStickEmulation=true\nroot.PTZ.Support.S1.IrCutFilter=false\nroot.PTZ.Support.S1.AutoIrCutFilter=false\nroot.PTZ.Support.S1.BackLight=false\nroot.PTZ.Support.S1.OSDMenu=false\nroot.PTZ.Support.S1.ActionNotification=true\nroot.PTZ.Support.S1.ProportionalSpeed=true\nroot.PTZ.Support.S1.GenericHTTP=false\nroot.PTZ.Support.S1.LensOffset=false\nroot.PTZ.Support.S1.AreaZoom=true\nroot.PTZ.UserAdv.U1.MoveSpeed=100\nroot.PTZ.Various.V1.CtlQueueing=false\nroot.PTZ.Various.V1.CtlQueueLimit=20\nroot.PTZ.Various.V1.CtlQueuePollTime=20\nroot.PTZ.Various.V1.PanEnabled=true\nroot.PTZ.Various.V1.TiltEnabled=true\nroot.PTZ.Various.V1.ZoomEnabled=true\nroot.PTZ.Various.V1.SpeedCtlEnabled=true\nroot.PTZ.Various.V1.HomePresetSet=true\nroot.PTZ.Various.V1.ProportionalSpeedEnabled=true\nroot.PTZ.Various.V1.MaxProportionalSpeed=200\nroot.PTZ.Various.V1.ReturnToOverview=30\nroot.PTZ.Various.V1.Locked=true\n'
Kane610 commented 6 months ago

As soon as I've gotten a log output from @DirkMu I can publish a new hot fix release for Home Assistant.

There might be a few more data points like these which will cause errors

yozh commented 6 months ago

As soon as I've gotten a log output from @DirkMu I can publish a new hot fix release for Home Assistant.

There might be a few more data points like these which will cause errors

Cant wait! Will it be updated via HAs core ? Or will we need to manually install hotfix ? Really need this 4 cams to work properly, the onvif access to them seems to be very slow compared to the API, the snapshot takes about 10-15 seconds to take, which is way past what Im using this for.

DirkMu commented 6 months ago

I am on the road. Will provide them this evening (CET).

Kane610 commented 6 months ago

@DirkMu perfect

@yozh i will put it up and get it integrated with the next core release

yozh commented 6 months ago

@Kane610 great thank you. Cant wait! thanks again !

reicharb commented 6 months ago

same issues, ended up restoring a backup.

petitpiton commented 6 months ago

@Kane610 I have the same issue with my Axis M3105-LVE and M3106-LVE cameras on 9.80 LTS (9.80.55) firmware. Debug log below: `2024-03-07 16:46:43.182 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Garage for axis Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup result = await component.async_setup_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/init.py", line 21, in async_setup_entry api = await get_axis_device(hass, config_entry.data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device await device.vapix.initialize() File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 144, in initialize await self.initialize_api_discovery() File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 162, in initialize_api_discovery await asyncio.gather(*[api.update() for api in apis if api.supported]) File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update obj_ids = await self._update() ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 115, in _update objects = await self._api_request() ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 31, in _api_request return await self.get_ports() ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 36, in get_ports return GetPortsResponse.decode(bytes_data).data ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/port_management.py", line 221, in decode data=Port.decode_to_dict(data["data"]["items"]),


KeyError: 'items'
2024-03-07 16:46:43.550 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/basicdeviceinfo.cgi): b'{"apiVersion": "1.1", "data": {"propertyList": {"Architecture": "armv7hf", "ProdNbr": "M3106-LVE", "HardwareID": "716", "Version": "9.80.55", "ProdFullName": "AXIS M3106-LVE Network Camera", "Brand": "AXIS", "ProdType": "Network Camera", "Soc": "Ambarella S2L (Flattened Device Tree)", "SocSerialNumber": "", "WebURL": "http://www.axis.com", "ProdVariant": "", "SerialNumber": "ACCC8E68315E", "ProdShortName": "AXIS M3106-LVE", "BuildDate": "Dec 28 2023 14:27"}}, "context": "Axis library"}\n'
2024-03-07 16:46:43.601 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/streamprofile.cgi): b'{"method": "list", "context": "Axis library", "apiVersion": "1.0", "data": {"streamProfile": [{"name": "ACC_High", "description": "AXIS Companion high quality stream", "parameters": "videozfpsmode=fixed&videocodec=h264&fps=0&videozgopmode=fixed&videozmaxgoplength=100&videoframeskipmode=empty&videozstrength=30&resolution=2560x1440"}, {"name": "ACC_Low", "description": "AXIS Companion low quality stream", "parameters": "videocodec=h264&resolution=640x360&fps=5&videozstrength=30&videozgopmode=dynamic&videozmaxgoplength=30&videozfpsmode=dynamic&videoframeskipmode=empty"}], "maxProfiles": 26}}\r\n'`
Kane610 commented 6 months ago

same issues, ended up restoring a backup.

Which of the issues, PTZ or port?

Kane610 commented 6 months ago

@Kane610 I have the same issue with my Axis M3105-LVE and M3106-LVE cameras on 9.80 LTS (9.80.55) firmware. Debug log below: `2024-03-07 16:46:43.182 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Garage for axis Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup result = await component.async_setup_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/init.py", line 21, in async_setup_entry api = await get_axis_device(hass, config_entry.data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device await device.vapix.initialize() File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 144, in initialize await self.initialize_api_discovery() File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 162, in initialize_api_discovery await asyncio.gather(*[api.update() for api in apis if api.supported]) File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update obj_ids = await self._update() ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 115, in _update objects = await self._api_request() ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 31, in _api_request return await self.get_ports() ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 36, in get_ports return GetPortsResponse.decode(bytes_data).data ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/port_management.py", line 221, in decode data=Port.decode_to_dict(data["data"]["items"]),

KeyError: 'items'
2024-03-07 16:46:43.550 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/basicdeviceinfo.cgi): b'{"apiVersion": "1.1", "data": {"propertyList": {"Architecture": "armv7hf", "ProdNbr": "M3106-LVE", "HardwareID": "716", "Version": "9.80.55", "ProdFullName": "AXIS M3106-LVE Network Camera", "Brand": "AXIS", "ProdType": "Network Camera", "Soc": "Ambarella S2L (Flattened Device Tree)", "SocSerialNumber": "", "WebURL": "http://www.axis.com", "ProdVariant": "", "SerialNumber": "ACCC8E68315E", "ProdShortName": "AXIS M3106-LVE", "BuildDate": "Dec 28 2023 14:27"}}, "context": "Axis library"}\n'
2024-03-07 16:46:43.601 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/streamprofile.cgi): b'{"method": "list", "context": "Axis library", "apiVersion": "1.0", "data": {"streamProfile": [{"name": "ACC_High", "description": "AXIS Companion high quality stream", "parameters": "videozfpsmode=fixed&videocodec=h264&fps=0&videozgopmode=fixed&videozmaxgoplength=100&videoframeskipmode=empty&videozstrength=30&resolution=2560x1440"}, {"name": "ACC_Low", "description": "AXIS Companion low quality stream", "parameters": "videocodec=h264&resolution=640x360&fps=5&videozstrength=30&videozgopmode=dynamic&videozmaxgoplength=30&videozfpsmode=dynamic&videoframeskipmode=empty"}], "maxProfiles": 26}}\r\n'`

Thanks! I need the log output from before the KeyError as that's the related information

petitpiton commented 6 months ago

@Kane610 Sorry, just noticed that! 2024-03-07 16:53:57.174 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP>/axis-cgi/lightcontrol.cgi): b'{"apiVersion": "1.1", "context": "Axis library", "method": "getLightInformation", "data": {"items": [{"lightID": "led0", "lightType": "IR", "enabled": true, "synchronizeDayNightMode": true, "lightState": true, "automaticIntensityMode": false, "automaticAngleOfIlluminationMode": false, "nrOfLEDs": 2, "error": false, "errorInfo": ""}]}}\r\n' 2024-03-07 16:53:57.180 DEBUG (MainThread) [axis.vapix.vapix] Response (from <MY-IP> /axis-cgi/io/portmanagement.cgi): b'{\n "apiVersion": "1.0",\n "context": "Axis library",\n "method": "getPorts",\n "data": {\n "numberOfPorts": 0\n }\n}' 2024-03-07 16:53:57.181 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Garage for axis

Kane610 commented 6 months ago

Thanks! Fixed the issue

yozh commented 6 months ago

@Kane610 WOW that was fast! I wonder when core will be updated

Kane610 commented 6 months ago

@Kane610 WOW that was fast! I wonder when core will be updated

I was also aware that there probably was variations of features I hadn't accounted for in the library rewrite I want to be quick getting it out to fix it when aware of them.

DirkMu commented 6 months ago

Do you still need my log?

Kane610 commented 6 months ago

Do you still need my log?

Check your log and if it looks different from Response (from <MY-IP> /axis-cgi/io/portmanagement.cgi): b'{\n "apiVersion": "1.0",\n "context": "Axis library",\n "method": "getPorts",\n "data": {\n "numberOfPorts": 0\n }\n} then you can share your logs

DirkMu commented 6 months ago

Yes, I get that response. However, I share that part from the logs.

2024-03-07 19:47:49.782 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.10.13:80/axis-cgi/apidiscovery.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getApiList"}'', 'None', 'None'
2024-03-07 19:47:49.910 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.10.13 /axis-cgi/apidiscovery.cgi): b'{"method": "getApiList", "apiVersion": "1.1", "data": {"apiList": [{"id": "temperaturecontrol", "version": "1.0", "name": "Temperature Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-export", "version": "1.2", "name": "Export edge recording", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "analytics-metadata-config", "version": "1.0", "name": "Analytics Metadata Producer Configuration API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-storage-limit", "version": "1.0", "name": "Edge Recording storage limit", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "light-control", "version": "1.3", "name": "Light Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "rtsp-over-websocket", "version": "1.0", "name": "RTSP Streaming over WebSocket", "docLink": "https://www.axis.com/partner_pages/vapix/#/", "status": "official"}, {"id": "image-size", "version": "1.0", "name": "Image Size", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-mixer", "version": "1.0", "name": "Audio Mixer", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "mediaclip", "version": "1.0", "name": "Mediaclip", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "customhttpheader", "version": "1.1", "name": "Custom HTTP header", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "event-streaming-over-websocket", "version": "1.0", "name": "Event Streaming over WebSocket", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ptz-control", "version": "2.1", "name": "PTZ Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "stream-profiles", "version": "1.0", "name": "Stream Profiles", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "upnp", "version": "1.1", "name": "UPnP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "mdnssd", "version": "1.1", "name": "mDNS-SD", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-management", "version": "1.0", "name": "Edge storage Disk management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-analytics", "version": "0.1", "name": "Audio Analytics", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "feature-flag", "version": "1.0", "name": "Feature Flag API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "api-discovery", "version": "1.1", "name": "API Discovery Service", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "oak", "version": "1.0", "name": "OAK", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "privacy-mask", "version": "2.0", "name": "Privacy Masking", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "io-port-management", "version": "1.1", "name": "IO Port Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "mqtt-client", "version": "1.6", "name": "MQTT Client API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "custom-firmware-certificate", "version": "1.0", "name": "Custom Firmware Certificate", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "sip", "version": "2.2", "name": "Call service API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-properties", "version": "1.1", "name": "Edge storage Disk properties", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "user-management", "version": "1.1", "name": "User Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording", "version": "1.0", "name": "Edge Recording", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "media-cgi", "version": "1.0", "name": "Media stream over HTTP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "dynamicoverlay", "version": "1.7", "name": "Dynamic Overlay", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "time-service", "version": "1.0", "name": "Time API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "packagemanager", "version": "1.4", "name": "Package Manager", "docLink": ""}, {"id": "shuttergain-cgi", "version": "2.0", "name": "Shuttergain CGI", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "view-area", "version": "1.0", "name": "View Area", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "overlayimage", "version": "1.0", "name": "Overlay image API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "remoteservice", "version": "1.0", "name": "Remote service", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "network-settings", "version": "1.27", "name": "Network Settings", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "capture-mode", "version": "1.0", "name": "Capture Mode", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "device-config", "version": "1.0", "name": "Device Config API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ntp", "version": "1.4", "name": "NTP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-network-share", "version": "1.0", "name": "Edge storage Network share", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "remote-syslog", "version": "1.1", "name": "Remote Syslog API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "device-self-test", "version": "1.0", "name": "Device Self Test", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "event-mqtt-bridge", "version": "1.2", "name": "Event-MQTT Bridge API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-device-control", "version": "1.0", "name": "Audio Device Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "basic-device-info", "version": "1.3", "name": "Basic Device Information", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "zipstream", "version": "1.0", "name": "ZipStream", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-streaming-capabilities", "version": "1.0", "name": "Audio Streaming Capabilities", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "supervised-io", "version": "2.0", "name": "Supervised IO", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ssh", "version": "1.0", "name": "SSH", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-group", "version": "1.0", "name": "Edge Recording group", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "guard-tour", "version": "1.0", "name": "Guard Tour", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "fwmgr", "version": "1.4", "name": "Firmware Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "onscreencontrols", "version": "1.6", "name": "On-Screen Controls", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "systemready", "version": "1.4", "name": "Systemready", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "param-cgi", "version": "1.0", "name": "Legacy Parameter Handling", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}]}, "context": "Axis library"}\n'
2024-03-07 19:47:49.911 DEBUG (MainThread) [axis.vapix.models.api_discovery] Unsupported API discovery status ''
2024-03-07 19:47:49.912 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.10.13:80/axis-cgi/basicdeviceinfo.cgi, 'b'{"apiVersion":"1.3","context":"Axis library","method":"getAllProperties"}'', 'None', 'None'
2024-03-07 19:47:49.913 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.10.13:80/axis-cgi/io/portmanagement.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getPorts"}'', 'None', 'None'
2024-03-07 19:47:49.915 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.10.13:80/axis-cgi/lightcontrol.cgi, 'b'{"apiVersion":"1.3","context":"Axis library","method":"getLightInformation"}'', 'None', 'None'
2024-03-07 19:47:49.916 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.10.13:80/axis-cgi/streamprofile.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"list","params":{"streamProfileName":[]}}'', 'None', 'None'
2024-03-07 19:47:49.917 DEBUG (MainThread) [axis.vapix.vapix] post, http://192.168.10.13:80/axis-cgi/viewarea/info.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"list"}'', 'None', 'None'
2024-03-07 19:47:50.050 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.10.13 /axis-cgi/lightcontrol.cgi): b'{"apiVersion": "1.3", "context": "Axis library", "method": "getLightInformation", "data": {"items": [{"lightID": "led0", "lightType": "IR", "enabled": true, "synchronizeDayNightMode": true, "lightState": true, "automaticIntensityMode": true, "automaticAngleOfIlluminationMode": true, "nrOfLEDs": 2, "error": false, "errorInfo": ""}]}}\r\n'
2024-03-07 19:47:50.157 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.10.13 /axis-cgi/streamprofile.cgi): b'{"method": "list", "context": "Axis library", "apiVersion": "1.0", "data": {"streamProfile": [{"name": "HA", "description": "Home Assistant", "parameters": "videocodec=h264&resolution=1280x800"}], "maxProfiles": 26}}\r\n'
2024-03-07 19:47:50.227 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.10.13 /axis-cgi/io/portmanagement.cgi): b'{\n  "apiVersion": "1.1",\n  "context": "Axis library",\n  "method": "getPorts",\n  "data": {\n    "numberOfPorts": 0\n  }\n}'
2024-03-07 19:47:50.227 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Cam-Vorgarten for axis
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/__init__.py", line 21, in async_setup_entry
    api = await get_axis_device(hass, config_entry.data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device
    await device.vapix.initialize()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 144, in initialize
    await self.initialize_api_discovery()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 162, in initialize_api_discovery
    await asyncio.gather(*[api.update() for api in apis if api.supported])
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update
    obj_ids = await self._update()
              ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 115, in _update
    objects = await self._api_request()
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 31, in _api_request
    return await self.get_ports()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 36, in get_ports
    return GetPortsResponse.decode(bytes_data).data
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/port_management.py", line 221, in decode
    data=Port.decode_to_dict(data["data"]["items"]),
                             ~~~~~~~~~~~~^^^^^^^^^
KeyError: 'items'
2024-03-07 19:47:50.292 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.10.13 /axis-cgi/basicdeviceinfo.cgi): b'{"apiVersion": "1.3", "data": {"propertyList": {"Architecture": "armv7hf", "ProdNbr": "P3228-LVE", "HardwareID": "72B.4", "ProdFullName": "AXIS P3228-LVE Network Camera", "Version": "11.7.61", "ProdType": "Network Camera", "SocSerialNumber": "00000000-00000000-444A090C-20C00143", "Soc": "Axis Artpec-6", "Brand": "AXIS", "WebURL": "http://www.axis.com", "ProdVariant": "", "SerialNumber": "ACCC8E8F7495", "ProdShortName": "AXIS P3228-LVE", "BuildDate": "Nov 15 2023 18:55"}}, "context": "Axis library"}\n'
2024-03-07 19:47:50.617 DEBUG (MainThread) [axis.vapix.vapix] Response (from 192.168.10.13 /axis-cgi/viewarea/info.cgi): b'{"apiVersion": "1.0", "context": "Axis library", "method": "list", "data": {"viewAreas": [{"id": 1000008, "source": 0, "camera": 8, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}, {"id": 1000001, "source": 0, "camera": 1, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}, {"id": 1000007, "source": 0, "camera": 7, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}, {"id": 1000006, "source": 0, "camera": 6, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}, {"id": 1000005, "source": 0, "camera": 5, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}, {"id": 1000004, "source": 0, "camera": 4, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}, {"id": 1000003, "source": 0, "camera": 3, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}, {"id": 1000002, "source": 0, "camera": 2, "configurable": true, "canvasSize": {"horizontal": 3840, "vertical": 2160}, "rectangularGeometry": {"horizontalOffset": 0, "horizontalSize": 3840, "verticalOffset": 0, "verticalSize": 2160}, "minSize": {"horizontal": 64, "vertical": 64}, "maxSize": {"horizontal": 3840, "vertical": 2160}, "grid": {"horizontalOffset": 0, "horizontalSize": 1, "verticalOffset": 0, "verticalSize": 1}}]}}\r\n'
Kane610 commented 6 months ago

There might still be more issues hidden behind those issues. We will see once 2024.3.1 is out.

yozh commented 6 months ago

@Kane610 WOW that was fast! I wonder when core will be updated

I was also aware that there probably was variations of features I hadn't accounted for in the library rewrite I want to be quick getting it out to fix it when aware of them.

and your work is appreciated!

Kane610 commented 6 months ago

@Kane610 WOW that was fast! I wonder when core will be updated

I was also aware that there probably was variations of features I hadn't accounted for in the library rewrite I want to be quick getting it out to fix it when aware of them.

and your work is appreciated!

Thanks!

DevTodd commented 6 months ago

@Kane610 thanks for all your work on this...

I'm getting the "items" and also a "maxpan" KeyError on 2 different Q series devices. If you think you have this addressed already great, but if you need anything from me let me know and I would be happy to provide it.

Kane610 commented 6 months ago

@Kane610 thanks for all your work on this...

I'm getting the "items" and also a "maxpan" KeyError on 2 different Q series devices. If you think you have this addressed already great, but if you need anything from me let me know and I would be happy to provide it.

That's a new one. Please provide backtrack and debug log

DevTodd commented 6 months ago

@Kane610 thanks for all your work on this... I'm getting the "items" and also a "maxpan" KeyError on 2 different Q series devices. If you think you have this addressed already great, but if you need anything from me let me know and I would be happy to provide it.

That's a new one. Please provide backtrack and debug log

` 2024-03-07 11:33:23.170 DEBUG (MainThread) [axis.rtsp] Received data ['RTSP/1.0 200 OK', 'CSeq: 4', 'Public: OPTIONS, DESCRIBE, ANNOUNCE, GET_PARAMETER, PAUSE, PLAY, RECORD, SETUP, SET_PARAMETER, TEARDOWN', 'Server: GStreamer RTSP server', 'Session: Re5IPOaOTZngp5hs;timeout=10', 'Date: Thu, 07 Mar 2024 19:33:23 GMT', ''] from 10.0.2.10 2024-03-07 11:33:23.277 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.11 /axis-cgi/param.cgi): b'root.Properties.AlwaysMulticast.AlwaysMulticast=yes\nroot.Properties.API.Browser.Language=yes\nroot.Properties.API.Browser.RootPwdSetValue=yes\nroot.Properties.API.Browser.UserGroup=yes\nroot.Properties.API.ClientNotes.ClientNotes=yes\nroot.Properties.API.HTTP.AdminPath=/index.html\nroot.Properties.API.HTTP.Version=3\nroot.Properties.API.Metadata.Metadata=yes\nroot.Properties.API.Metadata.Version=1.0\nroot.Properties.API.OnScreenControls.OnScreenControls=yes\nroot.Properties.API.PTZ.Presets.Version=2.00\nroot.Properties.API.RTP.OnvifReplayExt=yes\nroot.Properties.API.RTSP.AdjustableStreamSettings=compression,fps,videokeyframeinterval,videomaxbitrate,videozstrength\nroot.Properties.API.RTSP.RTSPAuth=yes\nroot.Properties.API.RTSP.Version=2.01\nroot.Properties.API.WebService.EntryService=yes\nroot.Properties.API.WebService.WebService=yes\nroot.Properties.API.WebService.ONVIF.ONVIF=yes\nroot.Properties.API.WebService.ONVIF.Version=1.02\nroot.Properties.API.WebSocket.RTSP.RTSP=yes\nroot.Properties.ApiDiscovery.ApiDiscovery=yes\nroot.Properties.Audio.Audio=yes\nroot.Properties.Audio.DuplexMode=get\nroot.Properties.Audio.Format=lpcm,g711,g726,aac,opus\nroot.Properties.Audio.InputType=mic,line,digital\nroot.Properties.Audio.Decoder.Format=g711,g726,axis-mulaw-128\nroot.Properties.Audio.Source.A0.Input=yes\nroot.Properties.Audio.Source.A0.Output=no\nroot.Properties.AudioClip.Format=au,mp3,opus,vorbis,wav\nroot.Properties.AudioClip.PlayOptions=location,repeat,volume\nroot.Properties.AudioClip.StopClip=yes\nroot.Properties.DynamicOverlay.DynamicOverlay=yes\nroot.Properties.DynamicOverlay.Version=1.7\nroot.Properties.EmbeddedDevelopment.CacheSize=252706816\nroot.Properties.EmbeddedDevelopment.DefaultCacheSize=268435456\nroot.Properties.EmbeddedDevelopment.EmbeddedDevelopment=yes\nroot.Properties.EmbeddedDevelopment.Version=2.18\nroot.Properties.EmbeddedDevelopment.RuleEngine.MultiConfiguration=yes\nroot.Properties.Firmware.BuildDate=Feb 23 2024 22:21\nroot.Properties.Firmware.BuildNumber=1\nroot.Properties.Firmware.Version=11.9.60\nroot.Properties.FirmwareManagement.Version=1.4\nroot.Properties.Gatekeeper.Gatekeeper=basic\nroot.Properties.Geolocation.Geolocation=yes\nroot.Properties.Geolocation.Version=1.0\nroot.Properties.GuardTour.GuardTour=yes\nroot.Properties.GuardTour.MaxGuardTours=100\nroot.Properties.GuardTour.MinGuardTourWaitTime=10\nroot.Properties.GuardTour.RecordedTour=no\nroot.Properties.HTTPS.HTTPS=yes\nroot.Properties.Image.CodecSpecificResolutions=yes\nroot.Properties.Image.Format=jpeg,mjpeg,h264,h265\nroot.Properties.Image.NbrOfViews=1\nroot.Properties.Image.Resolution=3840x2160,3072x1728,2880x2160,2688x1512,2592x1944,2592x1458,2560x1440,2304x1728,2016x1512,1920x1440,1920x1080,1440x1080,1280x960,1280x800,1280x720,1024x768,1024x640,1024x576,800x600,800x500,800x450,640x480,640x400,640x360,480x360,480x300,480x270,320x240,320x200,320x180,160x120,160x100,160x90\nroot.Properties.Image.Rotation=0,90,180,270\nroot.Properties.Image.ShowSuboptimalResolutions=false\nroot.Properties.Image.H264.Profiles=Baseline,Main,High\nroot.Properties.Image.H265.Profiles=Main\nroot.Properties.Image.I0.H264.Resolution=3840x2160,3072x1728,2880x2160,2688x1512,2592x1944,2592x1458,2560x1440,2304x1728,2016x1512,1920x1440,1920x1080,1440x1080,1280x960,1280x800,1280x720,1024x768,1024x640,1024x576,800x600,800x500,800x450,640x480,640x400,640x360,480x360,480x300,480x270,320x240,320x200,320x180,160x120,160x100,160x90\nroot.Properties.Image.I0.H265.Resolution=3840x2160,3072x1728,2880x2160,2688x1512,2592x1944,2592x1458,2560x1440,2304x1728,2016x1512,1920x1440,1920x1080,1440x1080,1280x960,1280x800,1280x720,1024x768,1024x640,1024x576,800x600,800x500,800x450,640x480,640x400,640x360,480x360,480x300,480x270,320x240,320x200,320x180,160x120,160x100,160x90\nroot.Properties.Image.I0.JPEG.Resolution=3840x2160,3072x1728,2880x2160,2688x1512,2592x1944,2592x1458,2560x1440,2304x1728,2016x1512,1920x1440,1920x1080,1440x1080,1280x960,1280x800,1280x720,1024x768,1024x640,1024x576,800x600,800x500,800x450,640x480,640x400,640x360,480x360,480x300,480x270,320x240,320x200,320x180,160x120,160x100,160x90\nroot.Properties.Image.RateControl.Version=1.1\nroot.Properties.Image.RateControl.ABR.ABR=yes\nroot.Properties.ImageSource.DayNight=yes\nroot.Properties.ImageSource.DCIris=no\nroot.Properties.ImageSource.IrisManager=no\nroot.Properties.ImageSource.PositionableIris=yes\nroot.Properties.ImageSource.AutoFocus.FocusWindow=yes\nroot.Properties.IO.ManualTriggerNbr=6\nroot.Properties.LEDControl.LEDControl=yes\nroot.Properties.LensParams.Alignment=yes\nroot.Properties.LensParams.LensParams=yes\nroot.Properties.LightControl.LightControl2=yes\nroot.Properties.LightControl.LightControlAvailable=yes\nroot.Properties.LocalStorage.AutoRepair=yes\nroot.Properties.LocalStorage.ContinuousRecording=yes\nroot.Properties.LocalStorage.DiskEncryption=yes\nroot.Properties.LocalStorage.DiskHealth=yes\nroot.Properties.LocalStorage.ExportRecording=yes\nroot.Properties.LocalStorage.FailOverRecording=yes\nroot.Properties.LocalStorage.LocalStorage=yes\nroot.Properties.LocalStorage.NbrOfContinuousRecordingProfiles=1\nroot.Properties.LocalStorage.RequiredFileSystem=yes\nroot.Properties.LocalStorage.SDCard=yes\nroot.Properties.LocalStorage.StorageLimit=yes\nroot.Properties.LocalStorage.Version=1.00\nroot.Properties.NetworkShare.CIFS=yes\nroot.Properties.NetworkShare.IPV6=yes\nroot.Properties.NetworkShare.NameLookup=yes\nroot.Properties.NetworkShare.NetworkShare=yes\nroot.Properties.Orientation.Reporting=yes\nroot.Properties.PackageManager.FormatListing=yes\nroot.Properties.PackageManager.LicenseKeyManagement=yes\nroot.Properties.PackageManager.PackageManager=yes\nroot.Properties.PrivacyMask.MainSwitch=yes\nroot.Properties.PrivacyMask.MaxNbrOfCorners=10\nroot.Properties.PrivacyMask.MaxNbrOfPrivacyMasks=32\nroot.Properties.PrivacyMask.Polygon=yes\nroot.Properties.PrivacyMask.PrivacyMask=yes\nroot.Properties.PrivacyMask.Query=list,position,listpxjson,positionpxjson\nroot.Properties.PTZ.DigitalPTZ=no\nroot.Properties.PTZ.DriverManagement=no\nroot.Properties.PTZ.DriverModeList=none\nroot.Properties.PTZ.EmbeddedDrivers=yes\nroot.Properties.PTZ.PTZ=yes\nroot.Properties.PTZ.PTZOnQuadView=no\nroot.Properties.PTZ.SelectableDriverMode=no\nroot.Properties.RemoteService.RemoteService=no\nroot.Properties.RTC.RTC=yes\nroot.Properties.Serial.Serial=no\nroot.Properties.SRTP.Acceleration=hardware\nroot.Properties.SRTP.Authentication=hmac-sha1\nroot.Properties.SRTP.Encryption=aes-ctr-128,aes-ctr-256,aes-gcm-128,aes-gcm-256\nroot.Properties.SRTP.SRTP=yes\nroot.Properties.SRTP.Version=1.0\nroot.Properties.SupervisedIO.SupervisedIO=yes\nroot.Properties.SupervisedIO.Version=2.0\nroot.Properties.System.Architecture=armv7hf\nroot.Properties.System.HardwareID=7AF\nroot.Properties.System.Language=\nroot.Properties.System.LanguageType=\nroot.Properties.System.SerialNumber=(removed)\nroot.Properties.System.Soc=Axis Artpec-7\nroot.Properties.Tampering.ShockDetection=yes\nroot.Properties.Tampering.Tampering=yes\nroot.Properties.TemperatureSensor.Fan=no\nroot.Properties.TemperatureSensor.Heater=yes\nroot.Properties.TemperatureSensor.TemperatureControl=yes\nroot.Properties.TemperatureSensor.TemperatureSensor=yes\nroot.Properties.VideoStreamingIndicator.VideoStreamingIndicator=yes\nroot.Properties.VirtualInput.VirtualInput=yes\nroot.Properties.ZipStream.ZipStream=yes\n' 2024-03-07 11:33:23.284 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.11:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.PTZ'}', 'None' 2024-03-07 11:33:23.514 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '1'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=True, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='1', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>) 2024-03-07 11:33:24.051 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.11 /axis-cgi/param.cgi): b'root.PTZ.BoaProtPTZOperator=password\nroot.PTZ.CameraDefault=1\nroot.PTZ.NbrOfCameras=1\nroot.PTZ.NbrOfSerPorts=0\nroot.PTZ.PresetNameMaxLen=95\nroot.PTZ.ResponseEncoding=iso-8859-1\nroot.PTZ.CamPorts.Cam1Port=1\nroot.PTZ.ImageSource.I0.PTZEnabled=true\nroot.PTZ.Limit.L1.MaxFieldAngle=731\nroot.PTZ.Limit.L1.MaxFocus=9999\nroot.PTZ.Limit.L1.MaxZoom=9999\nroot.PTZ.Limit.L1.MinFieldAngle=210\nroot.PTZ.Limit.L1.MinFocus=1\nroot.PTZ.Limit.L1.MinZoom=1\nroot.PTZ.Preset.P0.HomePosition=1\nroot.PTZ.Preset.P0.ImageSource=0\nroot.PTZ.Preset.P0.Name=\nroot.PTZ.Preset.P0.Position.P1.Data=zoom=1\nroot.PTZ.Preset.P0.Position.P1.Name=Home\nroot.PTZ.PTZDriverStatuses.Driver1Status=3\nroot.PTZ.Support.S1.AbsoluteBrightness=false\nroot.PTZ.Support.S1.AbsoluteFocus=true\nroot.PTZ.Support.S1.AbsoluteIris=false\nroot.PTZ.Support.S1.AbsolutePan=false\nroot.PTZ.Support.S1.AbsoluteTilt=false\nroot.PTZ.Support.S1.AbsoluteZoom=true\nroot.PTZ.Support.S1.ActionNotification=true\nroot.PTZ.Support.S1.AreaZoom=false\nroot.PTZ.Support.S1.AutoFocus=true\nroot.PTZ.Support.S1.AutoIrCutFilter=false\nroot.PTZ.Support.S1.AutoIris=false\nroot.PTZ.Support.S1.Auxiliary=true\nroot.PTZ.Support.S1.BackLight=false\nroot.PTZ.Support.S1.ContinuousBrightness=false\nroot.PTZ.Support.S1.ContinuousFocus=true\nroot.PTZ.Support.S1.ContinuousIris=false\nroot.PTZ.Support.S1.ContinuousPan=false\nroot.PTZ.Support.S1.ContinuousTilt=false\nroot.PTZ.Support.S1.ContinuousZoom=true\nroot.PTZ.Support.S1.DevicePreset=false\nroot.PTZ.Support.S1.DigitalZoom=true\nroot.PTZ.Support.S1.GenericHTTP=false\nroot.PTZ.Support.S1.IrCutFilter=false\nroot.PTZ.Support.S1.JoyStickEmulation=false\nroot.PTZ.Support.S1.LensOffset=false\nroot.PTZ.Support.S1.OSDMenu=false\nroot.PTZ.Support.S1.ProportionalSpeed=false\nroot.PTZ.Support.S1.RelativeBrightness=false\nroot.PTZ.Support.S1.RelativeFocus=true\nroot.PTZ.Support.S1.RelativeIris=false\nroot.PTZ.Support.S1.RelativePan=false\nroot.PTZ.Support.S1.RelativeTilt=false\nroot.PTZ.Support.S1.RelativeZoom=true\nroot.PTZ.Support.S1.ServerPreset=true\nroot.PTZ.Support.S1.SpeedCtl=false\nroot.PTZ.UserAdv.U1.DeviceModVer= \nroot.PTZ.UserAdv.U1.DeviceStatus=cam=ok\nroot.PTZ.UserAdv.U1.ImageFreeze=off\nroot.PTZ.UserAdv.U1.LastTestDate=Mon Mar 4 14:54:32 2024\nroot.PTZ.UserCtlQueue.U0.Priority=10\nroot.PTZ.UserCtlQueue.U0.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U0.TimeoutType=activity\nroot.PTZ.UserCtlQueue.U0.UseCookie=no\nroot.PTZ.UserCtlQueue.U0.UserGroup=Administrator\nroot.PTZ.UserCtlQueue.U1.Priority=30\nroot.PTZ.UserCtlQueue.U1.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U1.TimeoutType=activity\nroot.PTZ.UserCtlQueue.U1.UseCookie=no\nroot.PTZ.UserCtlQueue.U1.UserGroup=Operator\nroot.PTZ.UserCtlQueue.U2.Priority=50\nroot.PTZ.UserCtlQueue.U2.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U2.TimeoutType=timespan\nroot.PTZ.UserCtlQueue.U2.UseCookie=no\nroot.PTZ.UserCtlQueue.U2.UserGroup=Viewer\nroot.PTZ.UserCtlQueue.U3.Priority=20\nroot.PTZ.UserCtlQueue.U3.TimeoutTime=20\nroot.PTZ.UserCtlQueue.U3.TimeoutType=activity\nroot.PTZ.UserCtlQueue.U3.UseCookie=no\nroot.PTZ.UserCtlQueue.U3.UserGroup=Event\nroot.PTZ.UserCtlQueue.U4.Priority=40\nroot.PTZ.UserCtlQueue.U4.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U4.TimeoutType=infinity\nroot.PTZ.UserCtlQueue.U4.UseCookie=no\nroot.PTZ.UserCtlQueue.U4.UserGroup=Guardtour\nroot.PTZ.UserCtlQueue.U5.Priority=35\nroot.PTZ.UserCtlQueue.U5.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U5.TimeoutType=infinity\nroot.PTZ.UserCtlQueue.U5.UseCookie=no\nroot.PTZ.UserCtlQueue.U5.UserGroup=Autotracking\nroot.PTZ.UserCtlQueue.U6.Priority=1\nroot.PTZ.UserCtlQueue.U6.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U6.TimeoutType=activity\nroot.PTZ.UserCtlQueue.U6.UseCookie=no\nroot.PTZ.UserCtlQueue.U6.UserGroup=Onvif\nroot.PTZ.UserCtlQueue.U7.Priority=33\nroot.PTZ.UserCtlQueue.U7.TimeoutTime=60\nroot.PTZ.UserCtlQueue.U7.TimeoutType=infinity\nroot.PTZ.UserCtlQueue.U7.UseCookie=no\nroot.PTZ.UserCtlQueue.U7.UserGroup=Focuswindow\nroot.PTZ.Various.V1.AutoFocus=true\nroot.PTZ.Various.V1.CtlQueueing=false\nroot.PTZ.Various.V1.CtlQueueLimit=20\nroot.PTZ.Various.V1.CtlQueuePollTime=20\nroot.PTZ.Various.V1.FocusEnabled=true\nroot.PTZ.Various.V1.HomePresetSet=true\nroot.PTZ.Various.V1.ReturnToOverview=0\nroot.PTZ.Various.V1.ZoomEnabled=true\n' 2024-03-07 11:33:24.055 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Q1798-LE - (serial removed) for axis Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup result = await component.async_setup_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/init.py", line 21, in async_setup_entry api = await get_axis_device(hass, config_entry.data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device await device.vapix.initialize() File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 145, in initialize await self.initialize_param_cgi(preload_data=False) File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 201, in initialize_param_cgi await self.params.ptz_handler.update() File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update obj_ids = await self._update() ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 39, in _update return await self.vapix.params.request_group(self.parameter_group) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_cgi.py", line 52, in request_group self.signal_subscribers(obj_id) File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 42, in signal_subscribers callback(obj_id) File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/parameters/param_handler.py", line 44, in _update_params_callback self._items.update(self.parameter_item.decode_to_dict([data])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/param_cgi.py", line 92, in decode_to_dict return {"0": cls.decode(data[0])} ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 396, in decode limits=PtzLimit.from_dict(data["Limit"]), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 211, in from_dict return {k[1:]: cls.decode(v) for k, v in data.items()} ^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/parameters/ptz.py", line 194, in decode max_pan=data["MaxPan"],


KeyError: 'MaxPan'
2024-03-07 11:33:24.688 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '0'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=False, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='0', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)
2024-03-07 11:33:24.693 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '1'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=True, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='1', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)
2024-03-07 11:33:25.866 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '0'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=False, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='0', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)
2024-03-07 11:33:25.876 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '1'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=True, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='1', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)
2024-03-07 11:33:27.039 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '0'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=False, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='0', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)
2024-03-07 11:33:27.050 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '1'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=True, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='1', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)`

`CSeq: 4
User-Agent: HASS Axis
Session: Re5IPOaOTZngp5hs

2024-03-07 11:33:18.165 DEBUG (MainThread) [axis.rtsp] Received data ['RTSP/1.0 200 OK', 'CSeq: 4', 'Public: OPTIONS, DESCRIBE, ANNOUNCE, GET_PARAMETER, PAUSE, PLAY, RECORD, SETUP, SET_PARAMETER, TEARDOWN', 'Server: GStreamer RTSP server', 'Session: Re5IPOaOTZngp5hs;timeout=10', 'Date: Thu, 07 Mar 2024 19:33:18 GMT', ''] from 10.0.2.10
2024-03-07 11:33:19.070 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '1'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=True, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='1', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)
2024-03-07 11:33:19.598 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.11:80/axis-cgi/apidiscovery.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getApiList"}'', 'None', 'None'
2024-03-07 11:33:20.235 DEBUG (MainThread) [axis.event_stream] Event(data={'operation': 'Changed', 'topic': 'tns1:Device/tnsaxis:Sensor/PIR', 'source': 'sensor', 'source_idx': '0', 'type': 'state', 'value': '0'}, group=<EventGroup.MOTION: 'motion'>, id='0', is_tripped=False, operation=<EventOperation.CHANGED: 'Changed'>, source='sensor', state='0', topic='tns1:Device/tnsaxis:Sensor/PIR', topic_base=<EventTopic.PIR: 'tns1:Device/tnsaxis:Sensor/PIR'>)
2024-03-07 11:33:20.451 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.11 /axis-cgi/apidiscovery.cgi): b'{"method": "getApiList", "apiVersion": "1.1", "data": {"apiList": [{"id": "supervised-io", "version": "2.0", "name": "Supervised IO", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-export", "version": "1.2", "name": "Export edge recording", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "analytics-metadata-config", "version": "1.0", "name": "Analytics Metadata Producer Configuration API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-storage-limit", "version": "1.0", "name": "Edge Recording storage limit", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "light-control", "version": "1.3", "name": "Light Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "privacy-mask", "version": "2.4", "name": "Privacy Masking", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "image-size", "version": "1.0", "name": "Image Size", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "network-settings", "version": "1.29", "name": "Network Settings", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-mixer", "version": "1.0", "name": "Audio Mixer", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "mediaclip", "version": "1.0", "name": "Mediaclip", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "customhttpheader", "version": "1.1", "name": "Custom HTTP header", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "event-streaming-over-websocket", "version": "1.0", "name": "Event Streaming over WebSocket", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "network-speaker-pairing", "version": "1.2", "name": "Network Speaker Pairing", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "guard-tour", "version": "1.1", "name": "Guard Tour", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "rtsp-over-websocket", "version": "1.0", "name": "RTSP Streaming over WebSocket", "docLink": "https://www.axis.com/partner_pages/vapix/#/", "status": "official"}, {"id": "mdnssd", "version": "1.1", "name": "mDNS-SD", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-management", "version": "1.0", "name": "Edge storage Disk management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-analytics", "version": "0.1", "name": "Audio Analytics", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "feature-flag", "version": "1.0", "name": "Feature Flag API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "api-discovery", "version": "1.1", "name": "API Discovery Service", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "oak", "version": "1.0", "name": "OAK", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "shockdetection", "version": "1.0", "name": "Shock Detection", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "io-port-management", "version": "1.1", "name": "IO Port Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "mqtt-client", "version": "1.6", "name": "MQTT Client API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "temperaturecontrol", "version": "1.0", "name": "Temperature Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "custom-firmware-certificate", "version": "1.0", "name": "Custom Firmware Certificate", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-properties", "version": "1.1", "name": "Edge storage Disk properties", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "stream-profiles", "version": "1.0", "name": "Stream Profiles", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording", "version": "1.0", "name": "Edge Recording", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "media-cgi", "version": "1.0", "name": "Media stream over HTTP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "dynamicoverlay", "version": "1.7", "name": "Dynamic Overlay", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "upnp", "version": "1.1", "name": "UPnP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ptz-control", "version": "2.1", "name": "PTZ Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "packagemanager", "version": "1.4", "name": "Package Manager", "docLink": ""}, {"id": "shuttergain-cgi", "version": "2.0", "name": "Shuttergain CGI", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "user-management", "version": "1.2", "name": "User Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "overlayimage", "version": "1.0", "name": "Overlay image API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "time-service", "version": "1.1", "name": "Time API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "systemready", "version": "1.4", "name": "Systemready", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "capture-mode", "version": "1.0", "name": "Capture Mode", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "device-config", "version": "1.0", "name": "Device Config API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ntp", "version": "1.4", "name": "NTP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-network-share", "version": "1.0", "name": "Edge storage Network share", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "privacy-mask", "version": "3.0", "name": "Privacy Masking", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "device-self-test", "version": "1.0", "name": "Device Self Test", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "event-mqtt-bridge", "version": "1.2", "name": "Event-MQTT Bridge API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-device-control", "version": "1.0", "name": "Audio Device Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "basic-device-info", "version": "1.3", "name": "Basic Device Information", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "zipstream", "version": "1.0", "name": "ZipStream", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-streaming-capabilities", "version": "1.0", "name": "Audio Streaming Capabilities", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "orientation", "version": "1.0", "name": "Orientation", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "remote-syslog", "version": "1.1", "name": "Remote Syslog API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "remoteservice", "version": "1.1", "name": "Remote service", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-group", "version": "1.0", "name": "Edge Recording group", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "onscreencontrols", "version": "1.6", "name": "On-Screen Controls", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "fwmgr", "version": "1.4", "name": "Firmware Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "param-cgi", "version": "1.0", "name": "Legacy Parameter Handling", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "video-streaming-indicator", "version": "1.1", "name": "Video Streaming Indicator", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ssh", "version": "1.0", "name": "SSH", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}]}, "context": "Axis library"}\n'
2024-03-07 11:33:20.452 DEBUG (MainThread) [axis.vapix.models.api_discovery] Unsupported API discovery status ''
2024-03-07 11:33:20.454 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.11:80/axis-cgi/basicdeviceinfo.cgi, 'b'{"apiVersion":"1.3","context":"Axis library","method":"getAllProperties"}'', 'None', 'None'
2024-03-07 11:33:20.456 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.11:80/axis-cgi/io/portmanagement.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getPorts"}'', 'None', 'None'
2024-03-07 11:33:20.459 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.11:80/axis-cgi/lightcontrol.cgi, 'b'{"apiVersion":"1.3","context":"Axis library","method":"getLightInformation"}'', 'None', 'None'
2024-03-07 11:33:20.461 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.11:80/axis-cgi/streamprofile.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"list","params":{"streamProfileName":[]}}'', 'None', 'None'
2024-03-07 11:33:20.780 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.11 /axis-cgi/lightcontrol.cgi): b'{"apiVersion": "1.3", "context": "Axis library", "method": "getLightInformation", "data": {"items": [{"lightID": "led0", "lightType": "IR", "enabled": true, "synchronizeDayNightMode": true, "lightState": false, "automaticIntensityMode": false, "automaticAngleOfIlluminationMode": true, "nrOfLEDs": 3, "error": false, "errorInfo": ""}]}}\r\n'
2024-03-07 11:33:20.870 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.11 /axis-cgi/streamprofile.cgi): b'{"method": "list", "context": "Axis library", "apiVersion": "1.0", "data": {"streamProfile": [], "maxProfiles": 26}}\r\n'
2024-03-07 11:33:21.149 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.11 /axis-cgi/io/portmanagement.cgi): b'{\n  "apiVersion": "1.1",\n  "context": "Axis library",\n  "method": "getPorts",\n  "data": {\n    "numberOfPorts": 2,\n    "items": [\n      {\n        "port": "0",\n        "configurable": true,\n        "usage": "",\n        "name": "Port 1",\n        "direction": "input",\n        "state": "open",\n        "normalState": "open"\n      },\n      {\n        "port": "1",\n        "configurable": true,\n        "usage": "",\n        "name": "Gate Switch",\n        "direction": "output",\n        "state": "open",\n        "normalState": "open"\n      }\n    ]\n  }\n}'
2024-03-07 11:33:21.432 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.11 /axis-cgi/basicdeviceinfo.cgi): b'{"apiVersion": "1.3", "data": {"propertyList": {"Architecture": "armv7hf", "ProdNbr": "Q1798-LE", "HardwareID": "7AF", "ProdFullName": "AXIS Q1798-LE Network Camera", "Version": "11.9.60", "ProdType": "Network Camera", "SocSerialNumber": "429C2E1C-9344D72E-00000000-00000000", "Soc": "Axis Artpec-7", "Brand": "AXIS", "WebURL": "http://www.axis.com", "ProdVariant": "", "SerialNumber": "removed", "ProdShortName": "AXIS Q1798-LE", "BuildDate": "Feb 23 2024 22:21"}}, "context": "Axis library"}\n'
2024-03-07 11:33:21.433 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.11:80/axis-cgi/param.cgi, 'None', '{'action': 'list', 'group': 'root.Properties'}', 'None'
2024-03-07 11:33:21.872 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.13:80/axis-cgi/apidiscovery.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getApiList"}'', 'None', 'None'
2024-03-07 11:33:22.109 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.13 /axis-cgi/apidiscovery.cgi): b'{"method": "getApiList", "apiVersion": "1.1", "data": {"apiList": [{"id": "ssh", "version": "1.0", "name": "SSH", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording", "version": "1.0", "name": "Edge Recording", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "feature-flag", "version": "1.0", "name": "Feature Flag API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-management", "version": "1.0", "name": "Edge storage Disk management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "light-control", "version": "1.3", "name": "Light Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "customhttpheader", "version": "1.1", "name": "Custom HTTP header", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-group", "version": "1.0", "name": "Edge Recording group", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-storage-limit", "version": "1.0", "name": "Edge Recording storage limit", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "remoteservice", "version": "1.1", "name": "Remote service", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "io-port-management", "version": "1.1", "name": "IO Port Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "network-settings", "version": "1.29", "name": "Network Settings", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "systemready", "version": "1.4", "name": "Systemready", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "overlayimage", "version": "1.0", "name": "Overlay image API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "mdnssd", "version": "1.1", "name": "mDNS-SD", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "oak", "version": "1.0", "name": "OAK", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "remote-syslog", "version": "1.1", "name": "Remote Syslog API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "time-service", "version": "1.1", "name": "Time API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "dynamicoverlay", "version": "1.7", "name": "Dynamic Overlay", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "custom-firmware-certificate", "version": "1.0", "name": "Custom Firmware Certificate", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "onscreencontrols", "version": "1.6", "name": "On-Screen Controls", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "device-config", "version": "1.0", "name": "Device Config API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "device-self-test", "version": "1.0", "name": "Device Self Test", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "autotracking-2", "version": "2.0", "name": "PTZ Autotracking", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "fwmgr", "version": "1.4", "name": "Firmware Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recording-export", "version": "1.2", "name": "Export edge recording", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "supervised-io", "version": "2.0", "name": "Supervised IO", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "temperaturecontrol", "version": "1.0", "name": "Temperature Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "capture-mode", "version": "1.0", "name": "Capture Mode", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-properties", "version": "1.1", "name": "Edge storage Disk properties", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "stream-profiles", "version": "1.0", "name": "Stream Profiles", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "image-size", "version": "1.0", "name": "Image Size", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "media-cgi", "version": "1.0", "name": "Media stream over HTTP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "event-mqtt-bridge", "version": "1.2", "name": "Event-MQTT Bridge API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-device-control", "version": "1.0", "name": "Audio Device Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "orientation", "version": "1.0", "name": "Orientation", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "power-settings", "version": "1.6", "name": "Power Settings", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "rtsp-over-websocket", "version": "1.0", "name": "RTSP Streaming over WebSocket", "docLink": "https://www.axis.com/partner_pages/vapix/#/", "status": "official"}, {"id": "mediaclip", "version": "1.0", "name": "Mediaclip", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "param-cgi", "version": "1.0", "name": "Legacy Parameter Handling", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "disk-network-share", "version": "1.0", "name": "Edge storage Network share", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "user-management", "version": "1.2", "name": "User Management", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "network-speaker-pairing", "version": "1.2", "name": "Network Speaker Pairing", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "upnp", "version": "1.1", "name": "UPnP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "analytics-metadata-config", "version": "1.0", "name": "Analytics Metadata Producer Configuration API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-streaming-capabilities", "version": "1.0", "name": "Audio Streaming Capabilities", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "api-discovery", "version": "1.1", "name": "API Discovery Service", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "mqtt-client", "version": "1.6", "name": "MQTT Client API", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ntp", "version": "1.4", "name": "NTP", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "guard-tour", "version": "1.1", "name": "Guard Tour", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "shockdetection", "version": "1.0", "name": "Shock Detection", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "event-streaming-over-websocket", "version": "1.0", "name": "Event Streaming over WebSocket", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ptz-orientationaid", "version": "2.0", "name": "Orientation Aid PTZ", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-analytics", "version": "0.1", "name": "Audio Analytics", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "audio-mixer", "version": "1.0", "name": "Audio Mixer", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "privacy-mask", "version": "2.4", "name": "Privacy Masking", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "packagemanager", "version": "1.4", "name": "Package Manager", "docLink": ""}, {"id": "ptz-limits", "version": "1.1", "name": "PTZ Limits", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "privacy-mask", "version": "3.0", "name": "Privacy Masking", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "ptz-control", "version": "2.1", "name": "PTZ Control", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "zipstream", "version": "1.0", "name": "ZipStream", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "recorded-guard-tour", "version": "1.0", "name": "Recorded Guard Tour", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "basic-device-info", "version": "1.3", "name": "Basic Device Information", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "shuttergain-cgi", "version": "2.0", "name": "Shuttergain CGI", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}, {"id": "video-streaming-indicator", "version": "1.1", "name": "Video Streaming Indicator", "docLink": "https://www.axis.com/partner_pages/vapix_library/#/", "status": "official"}]}, "context": "Axis library"}\n'
2024-03-07 11:33:22.111 DEBUG (MainThread) [axis.vapix.models.api_discovery] Unsupported API discovery status ''
2024-03-07 11:33:22.113 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.13:80/axis-cgi/basicdeviceinfo.cgi, 'b'{"apiVersion":"1.3","context":"Axis library","method":"getAllProperties"}'', 'None', 'None'
2024-03-07 11:33:22.116 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.13:80/axis-cgi/io/portmanagement.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"getPorts"}'', 'None', 'None'
2024-03-07 11:33:22.121 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.13:80/axis-cgi/lightcontrol.cgi, 'b'{"apiVersion":"1.3","context":"Axis library","method":"getLightInformation"}'', 'None', 'None'
2024-03-07 11:33:22.123 DEBUG (MainThread) [axis.vapix.vapix] post, http://10.0.2.13:80/axis-cgi/streamprofile.cgi, 'b'{"apiVersion":"1.0","context":"Axis library","method":"list","params":{"streamProfileName":[]}}'', 'None', 'None'
2024-03-07 11:33:22.269 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.13 /axis-cgi/lightcontrol.cgi): b'{"apiVersion": "1.3", "context": "Axis library", "method": "getLightInformation", "data": {"items": [{"lightID": "led0", "lightType": "IR", "enabled": true, "synchronizeDayNightMode": true, "lightState": false, "automaticIntensityMode": false, "automaticAngleOfIlluminationMode": true, "nrOfLEDs": 3, "error": false, "errorInfo": ""}]}}\r\n'
2024-03-07 11:33:22.334 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.13 /axis-cgi/streamprofile.cgi): b'{"method": "list", "context": "Axis library", "apiVersion": "1.0", "data": {"streamProfile": [], "maxProfiles": 26}}\r\n'
2024-03-07 11:33:22.349 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.13 /axis-cgi/io/portmanagement.cgi): b'{\n  "apiVersion": "1.1",\n  "context": "Axis library",\n  "method": "getPorts",\n  "data": {\n    "numberOfPorts": 0\n  }\n}'
2024-03-07 11:33:22.351 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Q6315-LE - (serial removed) for axis
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 504, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/__init__.py", line 21, in async_setup_entry
    api = await get_axis_device(hass, config_entry.data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/axis/device.py", line 261, in get_axis_device
    await device.vapix.initialize()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 144, in initialize
    await self.initialize_api_discovery()
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/vapix.py", line 162, in initialize_api_discovery
    await asyncio.gather(*[api.update() for api in apis if api.supported])
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 126, in update
    obj_ids = await self._update()
              ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/api_handler.py", line 115, in _update
    objects = await self._api_request()
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 31, in _api_request
    return await self.get_ports()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/interfaces/port_management.py", line 36, in get_ports
    return GetPortsResponse.decode(bytes_data).data
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/axis/vapix/models/port_management.py", line 221, in decode
    data=Port.decode_to_dict(data["data"]["items"]),
                             ~~~~~~~~~~~~^^^^^^^^^
KeyError: 'items'
2024-03-07 11:33:22.456 DEBUG (MainThread) [axis.vapix.vapix] Response (from 10.0.2.13 /axis-cgi/basicdeviceinfo.cgi): b'{"apiVersion": "1.3", "data": {"propertyList": {"Architecture": "armv7hf", "ProdNbr": "Q6315-LE", "HardwareID": "7C9.2", "ProdFullName": "AXIS Q6315-LE PTZ Network Camera", "Version": "11.9.60", "ProdType": "PTZ Network Camera", "SocSerialNumber": "42A23501-800756B9-00000000-00000000", "Soc": "Axis Artpec-7", "Brand": "AXIS", "WebURL": "http://www.axis.com", "ProdVariant": "", "SerialNumber": "removed", "ProdShortName": "AXIS Q6315-LE", "BuildDate": "Feb 23 2024 21:37"}}, "context": "Axis library"}\n'
2024-03-07 11:33:22.867 DEBUG (MainThread) [axis.rtsp] OPTIONS rtsp://10.0.2.15/axis-media/media.amp?video=0&audio=0&event=on RTSP/1.0
CSeq: 4
User-Agent: HASS Axis
Session: jw089RLmgF9IWoGj

2024-03-07 11:33:22.871 DEBUG (MainThread) [axis.rtsp] Received data ['RTSP/1.0 200 OK', 'CSeq: 4', 'Public: OPTIONS, DESCRIBE, ANNOUNCE, GET_PARAMETER, PAUSE, PLAY, RECORD, SETUP, SET_PARAMETER, TEARDOWN', 'Server: GStreamer RTSP server', 'Session: jw089RLmgF9IWoGj;timeout=10', 'Date: Thu, 07 Mar 2024 19:33:22 GMT', ''] from 10.0.2.15
2024-03-07 11:33:23.167 DEBUG (MainThread) [axis.rtsp] OPTIONS rtsp://10.0.2.10/axis-media/media.amp?video=0&audio=0&event=on RTSP/1.0`
Kane610 commented 6 months ago

@Kane610 thanks for all your work on this... I'm getting the "items" and also a "maxpan" KeyError on 2 different Q series devices. If you think you have this addressed already great, but if you need anything from me let me know and I would be happy to provide it.

That's a new one. Please provide backtrack and debug log

` 2024-03-07 11:33:23.170 DEBUG (MainThread) [axis.rtsp] Received data ['RTSP/1.0 200 OK', 'CSeq: 4', 'Public:

Thanks @DevTodd , fixed in library and updated PR on HASS

grssll commented 6 months ago

Having similar issues. Out of 7 cameras 3 is not working but other 4 is fine.

Kane610 commented 6 months ago

Having similar issues. Out of 7 cameras 3 is not working but other 4 is fine.

Great to hear that some devices also works :)