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
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?
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.