{ "info": { "author": "S\u00e9bastien Maccagnoni-Munch", "author_email": "seb+pythonopenevse@maccagnoni.eu", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "===============\nPython-OpenEVSE\n===============\n\nThis library helps communicating with OpenEVSE boards, using the RAPI protocol.\n\nWhat is OpenEVSE ?\n------------------\n\nEVSE stands for Electrical Vehicle Supply Equipment. An EVSE is a charging\nstation for electrical vehicles.\n\nOpenEVSE is an Open Hardware EVSE, allowing people to build their own EVSEs.\n\n**OpenEVSE is not a finished product to be used by an end-user**.\n\nWhat is RAPI ?\n--------------\n\nRAPI stands for \"Remote API\", allowing remote hardware to control the OpenEVSE\nboard using a serial port, with the FTDI/UART pins on the board.\n\nThe default baudrate is 115200, according to OpenEVSE sources (``open_evse.h``).\n\nHow to install this library ?\n-----------------------------\n\n::\n\n pip install python-openevse\n\nHow to use this library ?\n-------------------------\n\nSee the inline documentation::\n\n >>> import openevse\n >>> help(openevse)\n\nLicense\n-------\n\n`MIT `_\n\nCopyright (c) 2015 S\u00e9bastien Maccagnoni-Munch\n\nIn short : do what you want but keep my name in the resulting software.\n\nPlease, if you improve it, contribute back. Thanks ! :)\n\nThe low-level API\n-----------------\n\nDocumentation on the RAPI protocol v1.0.3, from ``rapi_proc.h``::\n\n **** RAPI protocol ****\n\n Fx - function\n Sx - set parameter\n Gx - get parameter\n\n command formats\n 1. with XOR checksum (recommended)\n $cc pp pp ...^xk\\r\n 2. with additive checksum (legacy)\n $cc pp pp ...*ck\\r\n 3. no checksum (FOR TESTING ONLY! DON'T USE FOR APPS)\n $cc pp pp ...\\r\n\n \\r = carriage return = 13d = 0x0D\n cc = 2-letter command\n pp = parameters\n xk = 2-hex-digit checksum - 8-bit XOR of all characters before '^'\n ck = 2-hex-digit checksum - 8-bit sum of all characters before '*'\n\n\n response format\n $OK [optional parameters]\\r - success\n\n $NK [optional parameters]\\r - failure\n\n asynchronous messages\n $ST state\\r - EVSE state transition - sent whenever EVSE state changes\n state: EVSE_STATE_xxx\n\n commands\n\n FB color - set LCD backlight color\n colors:\n OFF 0\n RED 1\n YELLOW 3\n GREEN 2\n TEAL 6\n BLUE 4\n VIOLET 5\n WHITE 7 \n\n $FB 7*03 - set backlight to white\n FD - disable EVSE\n $FD*AE\n FE - enable EVSE\n $FE*AF\n FP x y text - print text on lcd display\n FR - reset EVSE\n $FR*BC\n FS - sleep EVSE\n $FS*BD\n\n S0 0|1 - set LCD type\n $S0 0*F7 = monochrome backlight\n $S0 1*F8 = RGB backlight\n S1 yr mo day hr min sec - set clock (RTC) yr=2-digit year\n S2 0|1 - disable/enable ammeter calibration mode - ammeter is read even when not charging\n $S2 0*F9\n $S2 1*FA\n S3 cnt - set charge time limit to cnt*15 minutes (0=disable, max=255)\n SA currentscalefactor currentoffset - set ammeter settings\n SC amps - set current capacity\n SD 0|1 - disable/enable diode check\n $SD 0*0B\n $SD 1*0C\n SE 0|1 - disable/enable command echo\n $SE 0*0C\n $SE 1*0D\n use this for interactive terminal sessions with RAPI.\n RAPI will echo back characters as they are typed, and add a character\n after its replies\n SF 0|1 - disable/enable GFI self test\n $SF 0*0D\n $SF 1*0E\n SG 0|1 - disable/enable ground check\n $SG 0*0E\n $SG 1*0F\n SH kWh - set cHarge limit to kWh\n SK - set accumulated Wh (v1.0.3+)\n $SK 0*12 - set accumulated Wh to 0\n SL 1|2|A - set service level L1/L2/Auto\n $SL 1*14\n $SL 2*15\n $SL A*24\n SM voltscalefactor voltoffset - set voltMeter settings\n SR 0|1 - disable/enable stuck relay check\n $SR 0*19\n $SR 1*1A\n SS 0|1 - disable/enable GFI self-test\n $SS 0*1A\n $SS 1*1B\n ST starthr startmin endhr endmin - set timer\n $ST 0 0 0 0*0B - cancel timer\n SV 0|1 - disable/enable vent required\n $SV 0*1D\n $SV 1*1E\n\n G3 - get time limit\n response: OK cnt\n cnt*15 = minutes\n = 0 = no time limit\n GA - get ammeter settings\n response: OK currentscalefactor currentoffset\n $GA*AC\n GC - get current capacity range in amps\n response: OK minamps maxamps\n $GC*AE\n GE - get settings\n response: OK amps(decimal) flags(hex)\n $GE*B0\n GF - get fault counters\n response: OK gfitripcnt nogndtripcnt stuckrelaytripcnt (all values hex)\n $GF*B1\n GG - get charging current and voltage\n response: OK milliamps millivolts\n AMMETER must be defined in order to get amps, otherwise returns 0 amps\n VOLTMETER must be defined in order to get voltage, otherwise returns 0 volts\n $GG*B2\n GH - get cHarge limit\n response: OK kWh\n kWh = 0 = no charge limit\n GM - get voltMeter settings\n response: OK voltcalefactor voltoffset\n $GM^2E\n GP - get temPerature (v1.0.3+)\n $GP*BB\n response: OK ds3231temp mcp9808temp tmp007temp\n ds3231temp - temperature from DS3231 RTC\n mcp9808temp - temperature from MCP9808\n tmp007temp - temperature from TMP007\n all temperatures are in 10th's of a degree Celcius\n if any temperature sensor is not installed, its return value will be 0\n GS - get state\n response: OK state elapsed\n state: EVSE_STATE_xxx\n elapsed: elapsed charge time in seconds (valid only when in state C)\n $GS*BE\n GT - get time (RTC)\n response OK yr mo day hr min sec yr=2-digit year\n $GT*BF\n GU - get energy usage (v1.0.3+)\n $GU*C0\n response OK Wattseconds Whacc\n Wattseconds - Watt-seconds used this charging session, note you'll divide Wattseconds by 3600 to get Wh\n Whacc - total Wh accumulated over all charging sessions, note you'll divide Wh by 1000 to get kWh\n GV - get version\n response: OK firmware_version protocol_version\n $GV*C1\n\nRelation between low-level API commands and Python-OpenEVSE\n-----------------------------------------------------------\n\n* FB: ``lcd_backlight_color``\n* FD: ``status``\n* FE: ``status``\n* FP: ``display_text``\n* FR: ``reset``\n* FS: ``status``\n* S0: ``lcd_type``\n* S1: ``time``\n* S2: ``ammeter_calibration``\n* S3: ``time_limit``\n* SA: ``ammeter_settings``\n* SC: ``current_capacity``\n* SD: ``diode_check``\n* SE: ``echo``\n* SF: ``gfi_self_test``\n* SG: ``ground_check``\n* SH: ``charge_limit``\n* SK: ``accumulated_wh``\n* SL: ``service_level``\n* SM: ``voltmeter_settings``\n* SR: ``stuck_relay_check``\n* SS: ``gfi_self_test`` (it is the same as SF)\n* ST: ``timer``\n* SV: ``vent_required``\n* G3: ``time_limit``\n* GA: ``ammeter_settings``\n* GC: ``current_capacity_range``\n* GE: ``current_capacity`` (1st field), see Flags class (2nd field)\n* GF: ``fault_counters``\n* GG: ``charging_current_and_voltage``\n* GH: ``charge_limit``\n* GM: ``voltmeter_settings``\n* GP: ``temperature``\n* GS: ``status``, ``elapsed``\n* GT: ``time``\n* GU: ``accumulated_wh``, ``elapsed``\n* GV: ``version``\n\n\nSome links to OpenEVSE\n----------------------\n\n* `OpenEVSE project `_\n* `Firmware source code `_\n* `OpenEVSE store `_\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tiramiseb/python-openevse", "keywords": "openevse serial rapi", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "python-openevse", "package_url": "https://pypi.org/project/python-openevse/", "platform": "", "project_url": "https://pypi.org/project/python-openevse/", "project_urls": { "Homepage": "https://github.com/tiramiseb/python-openevse" }, "release_url": "https://pypi.org/project/python-openevse/0.6/", "requires_dist": [ "pyserial" ], "requires_python": "", "summary": "Control OpenEVSE boards", "version": "0.6" }, "last_serial": 5007767, "releases": { "0.1a1": [ { "comment_text": "", "digests": { "md5": "6d33e065b12c8b4e83772d88c17dd18d", "sha256": "dad42cb5f486f20639c40f098dce73d322f274cade456da9c3f43fa7111cd67f" }, "downloads": -1, "filename": "python_openevse-0.1a1-py2-none-any.whl", "has_sig": false, "md5_digest": "6d33e065b12c8b4e83772d88c17dd18d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12765, "upload_time": "2015-07-03T11:55:03", "url": "https://files.pythonhosted.org/packages/d9/73/e6ca95c7407d761edc650ee1e9f683444afc1b791a027d631843af9e74bd/python_openevse-0.1a1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0c1a064d61f74925e0601723d626a09d", "sha256": "7d27d108fbd8caadee75203a918b82a81161fac3369a2f49512392d334a417d7" }, "downloads": -1, "filename": "python-openevse-0.1a1.tar.gz", "has_sig": false, "md5_digest": "0c1a064d61f74925e0601723d626a09d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9256, "upload_time": "2015-07-03T11:55:07", "url": "https://files.pythonhosted.org/packages/e1/31/bdb4f74f9aed622e58734fa3a1c66dcae864c5275abf45f40b5609b49f42/python-openevse-0.1a1.tar.gz" } ], "0.1a2": [ { "comment_text": "", "digests": { "md5": "fccdabd4e004d744c2500072f717076b", "sha256": "f311e684cfcf0ae56d3e48ba218b4cae036b9ac5a9979d719091ea71faf6cf64" }, "downloads": -1, "filename": "python_openevse-0.1a2-py2-none-any.whl", "has_sig": false, "md5_digest": "fccdabd4e004d744c2500072f717076b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12824, "upload_time": "2015-07-07T20:54:30", "url": "https://files.pythonhosted.org/packages/5c/a9/d26cce664289dcb95a47196ce7d319fa3b5a2905d62f2731243b76f52111/python_openevse-0.1a2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5598db6bb3e41d85b7ba7a4b3be9551c", "sha256": "bbd30f08907aa1650eeab512aa53e84aa3a7f867aa3cc14145f08f2a8709faf9" }, "downloads": -1, "filename": "python-openevse-0.1a2.tar.gz", "has_sig": false, "md5_digest": "5598db6bb3e41d85b7ba7a4b3be9551c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9313, "upload_time": "2015-07-07T20:54:34", "url": "https://files.pythonhosted.org/packages/64/f0/7813283ad855bc639ee7d36319abce6312c4dcee68246cfd1465cb1f348c/python-openevse-0.1a2.tar.gz" } ], "0.1a3": [ { "comment_text": "", "digests": { "md5": "002eb1ed37432fdd00ff1592d3fc2e5b", "sha256": "3f75b243cbade4d68171812b9c238a6483adae988c3472221273d2b17e96ea02" }, "downloads": -1, "filename": "python_openevse-0.1a3-py2-none-any.whl", "has_sig": false, "md5_digest": "002eb1ed37432fdd00ff1592d3fc2e5b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12850, "upload_time": "2015-07-15T15:15:07", "url": "https://files.pythonhosted.org/packages/8e/83/4edfb9f8be6ffc352b920a14f47ce8612d349b31b086490a6fcc41401716/python_openevse-0.1a3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51a9a0dcf43c84de5bbf28025c9e13a2", "sha256": "7cd72c0c113555aeeeb26cb7960c0d66e08037062d70e0abe0fd1640ff29a4a6" }, "downloads": -1, "filename": "python-openevse-0.1a3.tar.gz", "has_sig": false, "md5_digest": "51a9a0dcf43c84de5bbf28025c9e13a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9331, "upload_time": "2015-07-15T15:15:11", "url": "https://files.pythonhosted.org/packages/43/d8/ca7f9302f88158863458c7bbd5b6637ea15e7ef05705af7d442e3ef28c57/python-openevse-0.1a3.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "0ed5a6bec197437ced1fc00c807e7300", "sha256": "eba65ba8ddcd8a5240ab14f325b10a46abb12e685f9250e5f3d9d4c0ec08094b" }, "downloads": -1, "filename": "python_openevse-0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "0ed5a6bec197437ced1fc00c807e7300", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12656, "upload_time": "2015-07-30T14:14:52", "url": "https://files.pythonhosted.org/packages/05/d8/c22483f01a0c5b4c034509fe26be11c6de5d427992053df6cb8979ee5a98/python_openevse-0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4235dd9117c8058d2c16c46fc40f7db4", "sha256": "aa7833dd3f108374a2f26a5fc26b9d72a19ea611d745816cb9a12d7d51f978fe" }, "downloads": -1, "filename": "python-openevse-0.2.tar.gz", "has_sig": false, "md5_digest": "4235dd9117c8058d2c16c46fc40f7db4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9163, "upload_time": "2015-07-30T14:14:55", "url": "https://files.pythonhosted.org/packages/9c/6b/6636d64185bf9ba1adc337d6a5c45ee3948aa7899a2a7766ed5311706d33/python-openevse-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "d572cc604c2f60563384c2781bcafa15", "sha256": "262c76c41215a000923fba67fd90631e2e7617d17c24ba3d2acc09f7cb22bd5a" }, "downloads": -1, "filename": "python_openevse-0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "d572cc604c2f60563384c2781bcafa15", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14423, "upload_time": "2015-08-01T13:11:57", "url": "https://files.pythonhosted.org/packages/db/14/1f810431f9dbd459b65e2b197fe0d2a22f41427ef7193afd97c9f7b4811d/python_openevse-0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c32bea89d307c5d7ef0fae9fc9b7a827", "sha256": "a231794352301f3b80608047d9ea300b0f33240a885da3adcb3190db4ded9c10" }, "downloads": -1, "filename": "python-openevse-0.3.tar.gz", "has_sig": false, "md5_digest": "c32bea89d307c5d7ef0fae9fc9b7a827", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10943, "upload_time": "2015-08-01T13:12:00", "url": "https://files.pythonhosted.org/packages/b2/a2/e52af40a04c0d5fafaaf82243bd464e8d4b64af7d66032b6d7678fcd64d3/python-openevse-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "d2fc3bc32c0600e5160271329fa4301e", "sha256": "a6b4deaf5cf485749f3385c8a002901cfa4e4778906c0cd824117ae5b1b21d48" }, "downloads": -1, "filename": "python_openevse-0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "d2fc3bc32c0600e5160271329fa4301e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14999, "upload_time": "2017-02-05T23:58:59", "url": "https://files.pythonhosted.org/packages/70/d4/8416f00304f586b6610adb69aced486c6c92cd5543a10ea072eff2251d32/python_openevse-0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1a277689db21fa2dbe2a7d35a15d4ff", "sha256": "9f5a824029430b3779358db835c7465bba1ed190c0ea5e232b735ae04186a7b2" }, "downloads": -1, "filename": "python-openevse-0.4.tar.gz", "has_sig": false, "md5_digest": "a1a277689db21fa2dbe2a7d35a15d4ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14156, "upload_time": "2017-02-05T23:59:02", "url": "https://files.pythonhosted.org/packages/91/23/1547341605a4ec1539568d0568c5804300b310b571e1be463f238fcb21d3/python-openevse-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "c08de33ae4574adeae5ab8acc4c39e51", "sha256": "4dccff648584581507b4a6716c6547b02befed0f36ce42a8626869a15e040bf4" }, "downloads": -1, "filename": "python_openevse-0.4.1-py2-none-any.whl", "has_sig": false, "md5_digest": "c08de33ae4574adeae5ab8acc4c39e51", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15086, "upload_time": "2017-02-06T00:01:12", "url": "https://files.pythonhosted.org/packages/4a/78/02d0e31364420f4171d5772ce7ef979ae40c85e1bb01b316ae84427f36bc/python_openevse-0.4.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8db4db2c9306149b8785e208f751a17b", "sha256": "63704541a6736d8d2a59df6b467ac252ad5c02604cb158c78446a1dfbf614ed5" }, "downloads": -1, "filename": "python-openevse-0.4.1.tar.gz", "has_sig": false, "md5_digest": "8db4db2c9306149b8785e208f751a17b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14217, "upload_time": "2017-02-06T00:01:15", "url": "https://files.pythonhosted.org/packages/0e/61/b642cd24b2abd11a8e94fd682a7391d6b8e9b06de21fd16689c39f44d2db/python-openevse-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "91d6e9348fe57451d78dbfff78ee1e4f", "sha256": "94c3e7a0eb352b1e6d42dfc3e483257148603a2e24c5b2d7cf1c82e7ce10ed6a" }, "downloads": -1, "filename": "python_openevse-0.4.2-py2-none-any.whl", "has_sig": false, "md5_digest": "91d6e9348fe57451d78dbfff78ee1e4f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15094, "upload_time": "2017-02-06T00:02:28", "url": "https://files.pythonhosted.org/packages/44/5d/656bc3d0b834ea527689a8e311bf8cd8983b031b8ac9f03f7848e9c7b597/python_openevse-0.4.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4525cd857878d33ae35ee8cc1d3605df", "sha256": "4b6e5fc546a1ff17c1913ce793ba5ad435abaacbdff0d6244be9ad2c1476bee1" }, "downloads": -1, "filename": "python-openevse-0.4.2.tar.gz", "has_sig": false, "md5_digest": "4525cd857878d33ae35ee8cc1d3605df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14217, "upload_time": "2017-02-06T00:02:30", "url": "https://files.pythonhosted.org/packages/1f/4e/0a56153886a04f961f12a902e5cb74e99ee40052cc1b6d6903bd82f70434/python-openevse-0.4.2.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "442b8fcc60af5c97c6431bd8081970de", "sha256": "d818cc1ab2bf9c57e78d8f0ab4d92f8e1fd0005af60df183b8b25a4a4a2b1712" }, "downloads": -1, "filename": "python_openevse-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "442b8fcc60af5c97c6431bd8081970de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15211, "upload_time": "2019-03-30T19:20:36", "url": "https://files.pythonhosted.org/packages/09/ec/dbdc51552c40fe332b8e3bcebd1a1d19251bf883f386d95708dab7caacca/python_openevse-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9195a46eaf02a1644786e37719dace24", "sha256": "02df1525f4ce043de07e959167c143d1ee95867c4352963f3f5f24b98d36fc80" }, "downloads": -1, "filename": "python-openevse-0.6.tar.gz", "has_sig": false, "md5_digest": "9195a46eaf02a1644786e37719dace24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14402, "upload_time": "2019-03-30T19:20:38", "url": "https://files.pythonhosted.org/packages/97/2d/8791ccda427e9a845dce2e886cdee9d622b303b092c4ce1ae4d690d64b22/python-openevse-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "442b8fcc60af5c97c6431bd8081970de", "sha256": "d818cc1ab2bf9c57e78d8f0ab4d92f8e1fd0005af60df183b8b25a4a4a2b1712" }, "downloads": -1, "filename": "python_openevse-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "442b8fcc60af5c97c6431bd8081970de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15211, "upload_time": "2019-03-30T19:20:36", "url": "https://files.pythonhosted.org/packages/09/ec/dbdc51552c40fe332b8e3bcebd1a1d19251bf883f386d95708dab7caacca/python_openevse-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9195a46eaf02a1644786e37719dace24", "sha256": "02df1525f4ce043de07e959167c143d1ee95867c4352963f3f5f24b98d36fc80" }, "downloads": -1, "filename": "python-openevse-0.6.tar.gz", "has_sig": false, "md5_digest": "9195a46eaf02a1644786e37719dace24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14402, "upload_time": "2019-03-30T19:20:38", "url": "https://files.pythonhosted.org/packages/97/2d/8791ccda427e9a845dce2e886cdee9d622b303b092c4ce1ae4d690d64b22/python-openevse-0.6.tar.gz" } ] }