Axis camera integration feature request: specify image resolution

This request stems from this github issue: Axis Camera Integration needs a refresh · Issue #89967 · home-assistant/core · GitHub

Last year, Axis changed the code in some of its cameras (specifically the M series cameras, and in my case, the m3206-lve).

When requesting a jpeg from the camera, if there is something else already pulling stream data from it (like a surveillance tool, maybe a qnap or a synology array, for example) - the new firmware throws an error instead of producing an image, and this causes anything in home assistant that requires an image (cards, notifications etc) to break since no image is produced. The “fix” for this, after going back and forth with axis for over a full year, is to specify a resolution for the image (specifically, half the sensors size). This gets around the problem and produces an image. In the case of the m3206-lve its 1280x960. If a request is made for a jpeg and that resolution is specified, an image is produced and things move along as expected.

I am proposing a feature to optionally include requesting an image resolution from the camera when making a request. I am currently using a series of automations that send mobile notifications with pictures attached when motion sensors are triggered, and the one next to the m3206-lve sends an empty notification because home assistant can’t get an image from the camera.

in theory this should be a pretty trivial thing to add/fix, as attemping it with curl is as easy as adding “&resolution=1280x960” to the URI

here is an example of the behavior

asking M series cameras which are already being monitored by something else will produce a 400 error, but specifying the resolution fixes the problem.

could we find a way to add this to HA? so that we can add the resolution request to the URI when making the request for an image?

Ive created an issue here to not forget it Specify resolution in home assistant · Issue #315 · Kane610/axis · GitHub

In theory yes :slight_smile:

Currently Im reworking the library to make it easier to use and better to expand with new things, I will add this to things needed to be done after.

1 Like

oh awesome, thanks!
I spent a very long time on the horn with axis trying to convince them that forcing users to specify the resolution to avoid getting an error was breaking their api, but it seems their engineers in sweden dont care?

Did you talk directly with engineers?

I did. Back and forth with one guy in Long Beach and his boss - they basically explained the best they could do is complain up-the-line to engineers in sweden, and if those people ‘just dont feel like fixing the problem’ then it wont get fixed. It looks like this issue is affecting a small number of cameras - ones with the ‘amberella’ chipset. My argument to them was “by leaving this bug the way it is, you are causing some of your cameras to not adhere to the api reference, and its breaking things” - but I don’t think I’m a big enough customer for my complaint to matter.

At the end of the day, the fix is pretty trivial - just adding a resolutionto the requests, so if the axis integration could get a dialog box or something where the user could enter a default resolution to use, and we could input the proper one, that would resolve the issue. Maybe hide it under an ‘advanced’ checkbox so it doesnt interfere with less technical users? but right now it makes the m3206-lve camera functionally useless in home assisstant.

I’ve gotten past my first step of refactoring the integration and that is to have the reworked library used by the integration, there are infrastructural changes I need to fix in the integration to get it up to par before I do any new functionality additions.

Some stuff high up on my list

  • Support HTTPS
  • Rework MQTT support
  • Support Events over websocket
  • Configurable resolution for camera
  • Alternative source of video for streaming
  • Allow configuring RTSP ports

The fix might be “trivial” but it also bring with it internal complexity so doing things in the correct order here is important.

I see. Thanks for that extra context, it helps put things in perspective!

I also develop two other integrations which both have more users than the Axis integration so its a balancing act :slight_smile:

1 Like