ELM327-emulator
===============
[![PyPI](https://img.shields.io/pypi/v/ELM327-emulator.svg?maxAge=2592000)](https://pypi.org/project/ELM327-emulator)
[![Python Versions](https://img.shields.io/pypi/pyversions/ELM327-emulator.svg)](https://pypi.org/project/ELM327-emulator/)
[![PyPI download month](https://img.shields.io/pypi/dm/ELM327-emulator.svg)](https://pypi.python.org/pypi/ELM327-emulator/)
[![GitHub license](https://img.shields.io/badge/license-CC--BY--NC--SA--4.0-blue)](https://raw.githubusercontent.com/ircama/ELM327-emulator/master/LICENSE)
__A Python emulator of the ELM327 OBD-II adapter connected to a vehicle supporting multi-ECU simulation.__
*ELM327-emulator* connects client applications to multiple emulated [ECU](https://en.wikipedia.org/wiki/Engine_control_unit)s via [OBD-II](https://en.wikipedia.org/wiki/On-board_diagnostics) interface through different networking systems, including serial communication (where [pseudo-terminals](https://en.wikipedia.org/wiki/Pseudoterminal) are used if supported by the operating systems), or direct interaction with communication devices, or TCP/IP, or Bluetooth. The software simulates an [ELM327](https://en.wikipedia.org/wiki/ELM327) adapter connected to a vehicle, includes a command-line interface for extensive monitoring and offers a documented Python development framework to implement ECU emulation objects.
*ELM327-emulator* is able to support basic ELM327 commands and OBD service requests through stateless request/response method via OBD-II, but can also handle stateful [UDS](https://en.wikipedia.org/wiki/Unified_Diagnostic_Services) communication with [ISO-TP](https://en.wikipedia.org/wiki/ISO_15765-2) Flow Control and [Keyword Protocol 2000](https://en.wikipedia.org/wiki/Keyword_Protocol_2000), concurrently emulating multiple ECUs. It is designed to be extended via a plugin architecture to allow easy development of specific tasks implementing workflows, including the possibility to simulate anomalies for testing purposes. Many AT commands are supported, as well as some [OBDLink](https://www.obdlink.com/) AT/ST [commands](https://www.scantool.net/scantool/downloads/98/stn1100-frpm.pdf).
*ELM327-emulator* supports different operating systems including Windows, macOS and UNIX/Linux; it is agnostic of the client application and has been tested with [python-OBD](https://github.com/brendan-w/python-OBD) as well as with many applications on Windows, Linux and on smartphone devices.
An internal dictionary (named *ObdMessage*) allows configuring the emulation, which is currently set to reproduce the message flow generated by more ECUs, including the basic communication of a Toyota Auris Hybrid car (through the `scenario car` option) and can be easily extended to simulate communication produced by other vehicles or ECUs. In case of more complex interactions (e.g., entering privileged diagnostic sessions and performing reset or flash upload operations), the dictionary can instance tasks, which are implemented through plugins, very simple to be developed by users extending the software. Some example of plugins is already included.
*ELM327-emulator* also offers a feature that compares the emulation with the direct connection of an OBD-II adapter to allow extending the dictionary by reporting unmatched requests. In addition, it provides an auxiliary scanning tool (*obd_dictionary*) that builds the ObdMessage dictionary of a specific vehicle by automatically querying all standard OBD service requests one by one (as well as querying additional custom PIDs specified by the user via CSV file); the dictionary can then be used to emulate stateless request/responses of a specific car or ECU.
Full information and usage details at the [ELM327-emulator GitHub repository](https://github.com/Ircama/ELM327-emulator).
Raw data
{
"_id": null,
"home_page": "https://github.com/Ircama/ELM327-emulator",
"name": "ELM327-emulator",
"maintainer": null,
"docs_url": null,
"requires_python": ">3.5",
"maintainer_email": null,
"keywords": "elm327 emulator obdii obd2 torque simulation simulator can-bus automotive",
"author": "Ircama",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/9f/14/4568b00777d09b14823e49eb9f0b0e63899213e98f5b55eacc48b702a6de/elm327_emulator-3.0.3.post31.tar.gz",
"platform": null,
"description": "ELM327-emulator\n===============\n\n[![PyPI](https://img.shields.io/pypi/v/ELM327-emulator.svg?maxAge=2592000)](https://pypi.org/project/ELM327-emulator)\n[![Python Versions](https://img.shields.io/pypi/pyversions/ELM327-emulator.svg)](https://pypi.org/project/ELM327-emulator/)\n[![PyPI download month](https://img.shields.io/pypi/dm/ELM327-emulator.svg)](https://pypi.python.org/pypi/ELM327-emulator/)\n[![GitHub license](https://img.shields.io/badge/license-CC--BY--NC--SA--4.0-blue)](https://raw.githubusercontent.com/ircama/ELM327-emulator/master/LICENSE)\n\n__A Python emulator of the ELM327 OBD-II adapter connected to a vehicle supporting multi-ECU simulation.__\n\n*ELM327-emulator* connects client applications to multiple emulated [ECU](https://en.wikipedia.org/wiki/Engine_control_unit)s via [OBD-II](https://en.wikipedia.org/wiki/On-board_diagnostics) interface through different networking systems, including serial communication (where [pseudo-terminals](https://en.wikipedia.org/wiki/Pseudoterminal) are used if supported by the operating systems), or direct interaction with communication devices, or TCP/IP, or Bluetooth. The software simulates an [ELM327](https://en.wikipedia.org/wiki/ELM327) adapter connected to a vehicle, includes a command-line interface for extensive monitoring and offers a documented Python development framework to implement ECU emulation objects.\n\n*ELM327-emulator* is able to support basic ELM327 commands and OBD service requests through stateless request/response method via OBD-II, but can also handle stateful [UDS](https://en.wikipedia.org/wiki/Unified_Diagnostic_Services) communication with [ISO-TP](https://en.wikipedia.org/wiki/ISO_15765-2) Flow Control and [Keyword Protocol 2000](https://en.wikipedia.org/wiki/Keyword_Protocol_2000), concurrently emulating multiple ECUs. It is designed to be extended via a plugin architecture to allow easy development of specific tasks implementing workflows, including the possibility to simulate anomalies for testing purposes. Many AT commands are supported, as well as some [OBDLink](https://www.obdlink.com/) AT/ST [commands](https://www.scantool.net/scantool/downloads/98/stn1100-frpm.pdf).\n\n*ELM327-emulator* supports different operating systems including Windows, macOS and UNIX/Linux; it is agnostic of the client application and has been tested with [python-OBD](https://github.com/brendan-w/python-OBD) as well as with many applications on Windows, Linux and on smartphone devices.\n\nAn internal dictionary (named *ObdMessage*) allows configuring the emulation, which is currently set to reproduce the message flow generated by more ECUs, including the basic communication of a Toyota Auris Hybrid car (through the `scenario car` option) and can be easily extended to simulate communication produced by other vehicles or ECUs. In case of more complex interactions (e.g., entering privileged diagnostic sessions and performing reset or flash upload operations), the dictionary can instance tasks, which are implemented through plugins, very simple to be developed by users extending the software. Some example of plugins is already included.\n\n*ELM327-emulator* also offers a feature that compares the emulation with the direct connection of an OBD-II adapter to allow extending the dictionary by reporting unmatched requests. In addition, it provides an auxiliary scanning tool (*obd_dictionary*) that builds the ObdMessage dictionary of a specific vehicle by automatically querying all standard OBD service requests one by one (as well as querying additional custom PIDs specified by the user via CSV file); the dictionary can then be used to emulate stateless request/responses of a specific car or ECU.\n\n\nFull information and usage details at the [ELM327-emulator GitHub repository](https://github.com/Ircama/ELM327-emulator).\n",
"bugtrack_url": null,
"license": "CC-BY-NC-SA-4.0",
"summary": "ELM327 Emulator for testing software interfacing OBDII via ELM327 adapter",
"version": "3.0.3.post31",
"project_urls": {
"Homepage": "https://github.com/Ircama/ELM327-emulator"
},
"split_keywords": [
"elm327",
"emulator",
"obdii",
"obd2",
"torque",
"simulation",
"simulator",
"can-bus",
"automotive"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9f144568b00777d09b14823e49eb9f0b0e63899213e98f5b55eacc48b702a6de",
"md5": "2177ef5af8f1964a68f2b4146032d0a7",
"sha256": "468b4f9548efe264a9e9b2c4bc23b2bd0b423862e9b38e12b232035f7ff760cd"
},
"downloads": -1,
"filename": "elm327_emulator-3.0.3.post31.tar.gz",
"has_sig": false,
"md5_digest": "2177ef5af8f1964a68f2b4146032d0a7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">3.5",
"size": 107620,
"upload_time": "2024-12-02T03:25:26",
"upload_time_iso_8601": "2024-12-02T03:25:26.878473Z",
"url": "https://files.pythonhosted.org/packages/9f/14/4568b00777d09b14823e49eb9f0b0e63899213e98f5b55eacc48b702a6de/elm327_emulator-3.0.3.post31.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-02 03:25:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Ircama",
"github_project": "ELM327-emulator",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "elm327-emulator"
}