I suggest all vehicle developers check their v.e.on logic before we
change this.
Well the bmwi3 logic is like so:
1) v_env_on is initialised to false when the module is initialised
2) When the OBD-2 bus goes dead for 3 seconds I turn off my polling and set v_env_on to false
3) Otherwise, v_env_on is set to (pollerstate == POLLSTATE_READY && StdMetrics.ms_v_env_gear->AsInt() != 0) - i.e. OBD alive, car is responsive on the OBD, and its in gear. You can't put it in gear unless its "ready". This was the best I could do since I can't find an OBD2 that plainly distinguishes "on" (viz accessory position) from "ready" (let's go).
If the module boots up and the OBD2 is alive there will be a brief interval of v.e.on being false and as soon as we see obd2 traffic and see the car in gear (that is polled every 4 seconds when the car is READY) then v.e.on will change to true.
I suppose that may be enough time for this alarm to go off?
Steve