Releases: brendan-w/python-OBD
Releases · brendan-w/python-OBD
v0.7.2
v0.7.1
New Features
- Added the
header
field to allOBDCommand
objects, allowing the user set custom headers on their queires. - Added voltage check enabled by default, to handle cases where the vehicle is not powered.
- Added lower-power-mode support
- Added new
check_voltage
andstart_low_power
options to theOBD
constructor. - Added
__repr__
implementation forOBDCommand
s, containing more information than the normal__str__
function. Async
connections now support an optionalforce
parameter, like the mainOBD
API.- Added
delay_cmds
argument to theAsync
connection, used for rate-limiting updates.
Bugfixes
- Handle voltage responses that include a
'v'
unit - Handle "UNABLE TO CONNECT" responses explicitely, rather than blindly continuing
New/Breaking Changes
Async
connections will no longer throw exceptions when the underlying transport is disconnected. They will instead terminate gracefully. Async status is observable via theAsync.running
parameter.
Internal Changes
- Removed newline from all queries, in favor of a single
\r
- Renamed
async.py
toasynchronous.py
to avoid conflict with python's async implementation - Better debug logging in various error cases
- Better PEP8 compliance
v0.7.0
New Features
- Added
timeout
argument to OBD and Async constructors that controls the timeout used during initial adapter handshakes.
Bugfixes
- Various python 3 compatibility fixes.
- Repaired
fuel_type
andobd_compliance
decoders. These were left in an inoperative state following the 6.0 decoder interface changes.
New/Breaking Changes
- OBDCommand decoders are now given the mode and pid bytes at the head of each message. It is the duty of the decoder to ignore and/or use these bytes. This was done to facilitate modes where there are no PIDs.
- OBDCommands now return
None
instead of zero for unknown or un-parsable mode/pid values.
Internal Changes
- Fast mode now dynamically learns the number of responses to each query, rather than blindly asking for the
len(ecus)
responses for everything.
v0.6.1
v0.6.0
New Features
- added auto baud-rate detection system
- implemented mode 06 commands for CAN
- implemented more mode 01 commands that were listed as unsupported
New/Breaking Changes
- using Pint for values and units.
OBDResponse.value
now holds Pint Quantities- for backwards compatibility, use
response.value.magnitude
- for backwards compatibility, use
- new decoder format, thanks to Pint quantities
- obd.Unit is now a Pint unit registry. All unit names have changed
- using pyserial 3.0 API
- using python logging module, disposed with debug system
- using bytestrings for commands
- FUEL_STATUS now returns a tuple for denoting first and second fuel systems
- descriptions for unknown DTCs are now empty strings
- changed name and description of lone Mode 07 command
- removed deprecated commands
- OBD.get_port_name() --> OBD.port_name()
- OBDCommand.supported --> OBD.supports()
- obd.scanSerial() --> obd.scan_serial()
Internal Changes
- retrieving serial data in blocks, rather than single characters (serial reading is faster)
- renamed OBD.port --> OBD.interface
- using new "Units And Scaling" entries (built for Mode 06) for a few of the standard decoders as well
v0.5.1
v0.5.0
- Performance increases exposed as "fast mode":
- appends ECU count to the end of each fast-capable command
- re-runs previous commands with "\r\n" returns
- Manual protocol selection via the
protocol
kwarg in OBD constructor - OBD.get_port_name() has been deprecated, use OBD.port_name() instead
- Added internal ECU map and message filtering
- Decoders may now process multiple messages per OBDResponse. New decoder format:
def <name>(messages):
# process message(s)
return (<value>, <unit>)
- Replaced
Message.raw
withMessage.raw()
- Added
Message.hex()
for compatability with old decoder format - Changed behavior of the
noop()
decoder to pass raw data. - Added
drop()
decoder to return None and trigger null OBDResponses - OBDResponse.message --> .messages, now carries a list of Message objects
- OBDCommands no longer carry a
supported
flag. Use OBD.supported_commands or OBD.supports() instead. - obd.scanSerial() is deprecated, use obd.scan_serial() instead
v0.4.1
- Fixed problem where multiple
Async.start()
calls would spawn multiple update threads. - Using a blocking
serial.flush()
call, rather than an aborting one - Added context manager support for pausing the Async update loop
- Using name mangling for internal Async variables
- Made internal baudrate params required (no default value)
- Docs are under version control
v0.4.0
v0.3.0
- enables header information on ELM327 adapters
- includes basic handling for cars with multiple ECUs
- added more comprehensive debug output
- async start() and stop() must now be called explicitly before watching commands
- added better scanSerial support with globbing