As a professional video shooter I normally avoid auto mode but I don't usually shoot for a whole day or weeks on end as is required for time-lapse so I guess this is a new paradigm shift.
There are certainly other approaches you could take, but they would probably take a significant amount of development / testing to get good results. I wrote a script that attempts to do very smooth timelapses (
http://chdk.wikia.com/wiki/Lua/Scripts:_Raw_Meter_Intervalometer, some examples at
https://chdk.setepontos.com/index.php?topic=12761.0) but the technique it uses only good for short intervals. It's also a completely camera side script, so not directly applicable to your pi controlled approach.
FWIW,
http://escursionisticivatesi.it/webcam/ is CHDK / chkdptp / pi based and uses auto-exposure during the day, with a 10 minute interval. You can look at the "archive" links (e.g.
http://escursionisticivatesi.it/webcam/archive.php?camera=B&tsArchive=1508320800) to see how it looks
Note the "time lapse of the week" feature isn't currently hooked up, so those links go to old videos, some from a different camera system.
I see reference to 'propcase' here and there and get the impression that it's an alternate method of setting values but one which may vary from camera model to model. Am I right and, if so, is there a guide to extracting the property set for my Ixus/Elph160?
Many cameras features are controlled by the "propcase" API. Each value that can be queried or set has a number which we call a propcase ID. The number for a particular value (for example shutter speed) depends on the "propset" of the camera. Propcases are a pretty low level interface in the Canon firmware, so I would recommend against using them where CHDK provides another interface. E.g. to set the shutter speed, you should use set_tv96_direct() rather than trying to set the TV propcase.
In CHDK Lua, you can use the propcase module to refer to propcase IDs by name, without worrying about the camera specific numbers:
For example, in chkdptp, the following will return the shutter speed set for the last half press (in APEX*96 units)
=props=require'propcase' return get_prop(props.TV)
You can get the propset number of a camera using
=return get_propset()
Known propcases are listed in the propset<number>.h files found at
https://app.assembla.com/spaces/chdk/subversion/source/HEAD/trunk/include Do they have better glass for instance?
Some of the more expensive models certainly have better glass and better sensors. They also often support faster shooting rates, have adjustable apertures and so on. Whether this matters depends on your particular requirements.
If I I'm bitten by this time-lapse bug.. what's the golden unicorn camera I should seek?
I'd honestly start with something cheep and expendable like your elph160, and only consider upgrading if you decide it falls short in some way.