<!--
# Copyright 2014-2023 Jetperch LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-->
[![packaging](https://github.com/jetperch/joulescope_driver/actions/workflows/packaging.yml/badge.svg)](https://github.com/jetperch/joulescope_driver/actions/workflows/packaging.yml)
# Joulescope Driver
Welcome to the Joulescopeā¢ Driver project.
[Joulescope](https://www.joulescope.com) is an affordable, precision DC energy
analyzer that enables you to build better products.
This user-space C library communicates with Joulescope products to configure
operation and receive data. The first-generation driver introduced in 2019 was
written in Python. While Python proved to be a very flexible language enabling
many user scripts, it was difficult to support other languages.
This second-generation driver launched in 2022 addresses several issues
with the first-generation python driver including:
1. Improved event-driven API based upon PubSub for easier integration with
user interfaces and other complicated software packages.
2. Improved portability for easier language bindings.
3. Improved performance.
For more information, see:
* [source code](https://github.com/jetperch/joulescope_driver)
* [documentation](https://joulescope-driver.readthedocs.io/en/latest/)
* [pypi](https://pypi.org/project/pyjoulescope-driver/)
* [Joulescope](https://www.joulescope.com/) (Joulescope web store)
* [jls](https://github.com/jetperch/jls) (Joulescope file format)
* [forum](https://forum.joulescope.com/)
## Python Installation
The python bindings work with Python 3.9 and later.
To use the python bindings, ensure that you have a compatible version
of python installed on your host computer. Then:
python -m pip install pyjoulescope_driver
For Ubuntu, you will also need to [install the udev rules](#ubuntu-2204-lts).
You can then run the pyjoulescope_driver python entry points:
python -m pyjoulescope_driver --help
python -m pyjoulescope_driver scan
python -m pyjoulescope_driver info
python -m pyjoulescope_driver info * --verbose
Note that you may need to change "python" to "python3" or the full path.
You can also use a python
[virtual environment](https://docs.python.org/3/tutorial/venv.html).
## Building
Ensure that your computer has a development environment including CMake.
### Windows
Install cmake and your favorite build toolchain such as
Visual Studio, mingw64, wsl, ninja.
### macOS
For macOS, install homebrew, then:
brew install pkgconfig python3
### Ubuntu 22.04 LTS
For Ubuntu:
sudo apt install cmake build-essential ninja-build libudev-dev
You will also need to install the udev rules:
$ wget https://raw.githubusercontent.com/jetperch/joulescope_driver/main/99-joulescope.rules
$ sudo cp 99-joulescope.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules
### Common
cd {your/repos/joulescope_driver}
mkdir build && cd build
cmake ..
cmake --build . && ctest .
This package includes a command-line tool, jsdrv:
jsdrv --help
jsdrv scan
### Build python bindings
Install a compatible version of Python 3.9 or later. To install
the pyjoulescope_driver dependencies:
cd {your/repos/joulescope_driver}
python -m pip install -U requirements.txt
You should then be able to build the native bindings:
python setup.py build_ext --inplace
You can build the package using isolation:
python -m build
Depending upon your system configuration, you may need to replace
"python" with "python3" or the full path to your desired python installation.
On Windows, you may be prompted to install the
[Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/).
Raw data
{
"_id": null,
"home_page": "https://joulescope.readthedocs.io",
"name": "pyjoulescope-driver",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.10",
"maintainer_email": null,
"keywords": "Joulescope",
"author": "Jetperch LLC",
"author_email": "joulescope-dev@jetperch.com",
"download_url": "https://files.pythonhosted.org/packages/22/bb/3fc8a8ebfea2c9c07686a6b8222f7d4e7e05935cc898345929edc3618df1/pyjoulescope_driver-1.7.2.tar.gz",
"platform": null,
"description": "<!--\n# Copyright 2014-2023 Jetperch LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n-->\n\n[![packaging](https://github.com/jetperch/joulescope_driver/actions/workflows/packaging.yml/badge.svg)](https://github.com/jetperch/joulescope_driver/actions/workflows/packaging.yml)\n\n\n# Joulescope Driver\n\nWelcome to the Joulescope\u2122 Driver project.\n[Joulescope](https://www.joulescope.com) is an affordable, precision DC energy\nanalyzer that enables you to build better products.\n\nThis user-space C library communicates with Joulescope products to configure \noperation and receive data. The first-generation driver introduced in 2019 was\nwritten in Python. While Python proved to be a very flexible language enabling\nmany user scripts, it was difficult to support other languages. \nThis second-generation driver launched in 2022 addresses several issues\nwith the first-generation python driver including:\n\n1. Improved event-driven API based upon PubSub for easier integration with \n user interfaces and other complicated software packages.\n2. Improved portability for easier language bindings.\n3. Improved performance.\n\nFor more information, see:\n\n* [source code](https://github.com/jetperch/joulescope_driver)\n* [documentation](https://joulescope-driver.readthedocs.io/en/latest/)\n* [pypi](https://pypi.org/project/pyjoulescope-driver/)\n* [Joulescope](https://www.joulescope.com/) (Joulescope web store)\n* [jls](https://github.com/jetperch/jls) (Joulescope file format)\n* [forum](https://forum.joulescope.com/)\n\n\n## Python Installation\n\nThe python bindings work with Python 3.9 and later.\nTo use the python bindings, ensure that you have a compatible version\nof python installed on your host computer. Then:\n\n python -m pip install pyjoulescope_driver\n\nFor Ubuntu, you will also need to [install the udev rules](#ubuntu-2204-lts).\n\nYou can then run the pyjoulescope_driver python entry points:\n\n python -m pyjoulescope_driver --help\n python -m pyjoulescope_driver scan\n python -m pyjoulescope_driver info\n python -m pyjoulescope_driver info * --verbose\n\nNote that you may need to change \"python\" to \"python3\" or the full path. \nYou can also use a python\n[virtual environment](https://docs.python.org/3/tutorial/venv.html).\n\n\n## Building\n\nEnsure that your computer has a development environment including CMake. \n\n\n### Windows\n\nInstall cmake and your favorite build toolchain such as \nVisual Studio, mingw64, wsl, ninja.\n\n### macOS\n\nFor macOS, install homebrew, then:\n\n brew install pkgconfig python3\n\n\n### Ubuntu 22.04 LTS\n\nFor Ubuntu:\n\n sudo apt install cmake build-essential ninja-build libudev-dev\n\nYou will also need to install the udev rules:\n\n $ wget https://raw.githubusercontent.com/jetperch/joulescope_driver/main/99-joulescope.rules\n $ sudo cp 99-joulescope.rules /etc/udev/rules.d/\n $ sudo udevadm control --reload-rules\n\n\n### Common\n\n cd {your/repos/joulescope_driver}\n mkdir build && cd build\n cmake ..\n cmake --build . && ctest .\n\nThis package includes a command-line tool, jsdrv:\n\n jsdrv --help\n jsdrv scan\n\n\n### Build python bindings\n\nInstall a compatible version of Python 3.9 or later. To install\nthe pyjoulescope_driver dependencies:\n\n cd {your/repos/joulescope_driver}\n python -m pip install -U requirements.txt\n\nYou should then be able to build the native bindings:\n\n python setup.py build_ext --inplace\n\nYou can build the package using isolation:\n\n python -m build\n\nDepending upon your system configuration, you may need to replace\n\"python\" with \"python3\" or the full path to your desired python installation.\n\nOn Windows, you may be prompted to install the \n[Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/).\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "Joulescope\u2122 driver",
"version": "1.7.2",
"project_urls": {
"Bug Reports": "https://github.com/jetperch/pyjoulescope_driver/issues",
"Funding": "https://www.joulescope.com",
"Homepage": "https://joulescope.readthedocs.io",
"Source": "https://github.com/jetperch/pyjoulescope_driver/",
"Twitter": "https://twitter.com/joulescope"
},
"split_keywords": [
"joulescope"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "fcf3ebfc3f6d05d2a76e572d69362691a8a9f425ce9e50633d9d3df149c60223",
"md5": "3e86e397792a4561e4f519eaa6798d4c",
"sha256": "e66af6db7d211556b968c5e5879dbdd6c0bd713a757be2d3c23056c906b0ea9e"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "3e86e397792a4561e4f519eaa6798d4c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "~=3.10",
"size": 3473175,
"upload_time": "2024-12-10T17:59:36",
"upload_time_iso_8601": "2024-12-10T17:59:36.268983Z",
"url": "https://files.pythonhosted.org/packages/fc/f3/ebfc3f6d05d2a76e572d69362691a8a9f425ce9e50633d9d3df149c60223/pyjoulescope_driver-1.7.2-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e31e21a025f39ef30bd7ec0c27e4ad3d468a59faa7b3dddd89edfc8714d01fe4",
"md5": "b8a41b6c38d5ab730b78bbffe61ad7bb",
"sha256": "5e85ab713ce937acf87f3d917b72f41d93a15e9fd4bf634045924a7ce605d52e"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b8a41b6c38d5ab730b78bbffe61ad7bb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "~=3.10",
"size": 4671445,
"upload_time": "2024-12-10T17:59:38",
"upload_time_iso_8601": "2024-12-10T17:59:38.358188Z",
"url": "https://files.pythonhosted.org/packages/e3/1e/21a025f39ef30bd7ec0c27e4ad3d468a59faa7b3dddd89edfc8714d01fe4/pyjoulescope_driver-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2e3844018f6ea31734aaaa19841d3b6d3fd392545b4d5dfe55e18f926fde7d5f",
"md5": "36554dca6fb95c5b9d212b3f531726db",
"sha256": "80bff0cb1169dc4f9e3a09c580cc41fbc14d0a026c97dcf16753e8c05f4990f5"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "36554dca6fb95c5b9d212b3f531726db",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "~=3.10",
"size": 3120478,
"upload_time": "2024-12-10T17:59:41",
"upload_time_iso_8601": "2024-12-10T17:59:41.516274Z",
"url": "https://files.pythonhosted.org/packages/2e/38/44018f6ea31734aaaa19841d3b6d3fd392545b4d5dfe55e18f926fde7d5f/pyjoulescope_driver-1.7.2-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a88ee827b3f7ef846d6791739e5b52ef1431511572624315bcb1e927e5049db8",
"md5": "72e37090d9e1bcd879fdb1c03ce733f0",
"sha256": "5e27bae9016714a74c41bffd6e65dd98fec5cce0f87922a72af6b9737cb6f41c"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "72e37090d9e1bcd879fdb1c03ce733f0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "~=3.10",
"size": 3472627,
"upload_time": "2024-12-10T17:59:44",
"upload_time_iso_8601": "2024-12-10T17:59:44.742962Z",
"url": "https://files.pythonhosted.org/packages/a8/8e/e827b3f7ef846d6791739e5b52ef1431511572624315bcb1e927e5049db8/pyjoulescope_driver-1.7.2-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "655f050325f10c71c65d7ea0032ac3310ac480bdd28971eb443041e71937f659",
"md5": "5c3eea79813aaaac7067615049471534",
"sha256": "c39196a23756fedbd1e3882781491778affe57e765a1ae81c39851e7379b7fbb"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "5c3eea79813aaaac7067615049471534",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "~=3.10",
"size": 4734570,
"upload_time": "2024-12-10T17:59:47",
"upload_time_iso_8601": "2024-12-10T17:59:47.426536Z",
"url": "https://files.pythonhosted.org/packages/65/5f/050325f10c71c65d7ea0032ac3310ac480bdd28971eb443041e71937f659/pyjoulescope_driver-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d2fc690f1c9a7cdf9946dfb33ca0296a3109028346e13ebd5f944679cd918fa4",
"md5": "54664101b236f02556ee566992f0ef92",
"sha256": "06b8007c4e9123dda593d225d50a41b2a61e418de718a9c930a4f6cdd0643e19"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "54664101b236f02556ee566992f0ef92",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "~=3.10",
"size": 3120254,
"upload_time": "2024-12-10T17:59:49",
"upload_time_iso_8601": "2024-12-10T17:59:49.144702Z",
"url": "https://files.pythonhosted.org/packages/d2/fc/690f1c9a7cdf9946dfb33ca0296a3109028346e13ebd5f944679cd918fa4/pyjoulescope_driver-1.7.2-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2eb930a7941df759c480d308b987e8c9574747b14987f4d63effbd206f04f042",
"md5": "25e72ae8590fa5acf163b29f65d1cfe7",
"sha256": "b82735d1d6332e981ef849c3646beae768263a9ea4940e865c92d9350366834c"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp312-cp312-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "25e72ae8590fa5acf163b29f65d1cfe7",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "~=3.10",
"size": 3466059,
"upload_time": "2024-12-10T17:59:52",
"upload_time_iso_8601": "2024-12-10T17:59:52.185030Z",
"url": "https://files.pythonhosted.org/packages/2e/b9/30a7941df759c480d308b987e8c9574747b14987f4d63effbd206f04f042/pyjoulescope_driver-1.7.2-cp312-cp312-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a59a113f65b7e7f041ef4366d1f1f4887bf87761fca73f6f66a8576ba99a069d",
"md5": "85f52012b08a252eff9f6fea502afa46",
"sha256": "9302019f82ef173018b195f3fe13d7c3a7727b17093b7384cdc3eec7681ea65d"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "85f52012b08a252eff9f6fea502afa46",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "~=3.10",
"size": 4722630,
"upload_time": "2024-12-10T17:59:55",
"upload_time_iso_8601": "2024-12-10T17:59:55.379420Z",
"url": "https://files.pythonhosted.org/packages/a5/9a/113f65b7e7f041ef4366d1f1f4887bf87761fca73f6f66a8576ba99a069d/pyjoulescope_driver-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4a848bd81b43eb27d25f632201420c76ef4caca065fde8f6821753398c90b345",
"md5": "4228a57e0c5f4afce9da7914c71311d3",
"sha256": "e413f1bef996a337fb91d6f9245670a23af1020eac8b2229c30becebd1fd5663"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "4228a57e0c5f4afce9da7914c71311d3",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "~=3.10",
"size": 3116998,
"upload_time": "2024-12-10T17:59:58",
"upload_time_iso_8601": "2024-12-10T17:59:58.438116Z",
"url": "https://files.pythonhosted.org/packages/4a/84/8bd81b43eb27d25f632201420c76ef4caca065fde8f6821753398c90b345/pyjoulescope_driver-1.7.2-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9a63af6d7e32c39424c6b106fe1925e82416a5525fbaafe6a253d44c493d48f7",
"md5": "7fce1539b27611a7a1f8618676f92718",
"sha256": "7f46a41a23816b30f0518a7f05cb084730cd4ef84356c589c0e3809613bd20c2"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp313-cp313-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "7fce1539b27611a7a1f8618676f92718",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "~=3.10",
"size": 3461610,
"upload_time": "2024-12-10T18:00:00",
"upload_time_iso_8601": "2024-12-10T18:00:00.045058Z",
"url": "https://files.pythonhosted.org/packages/9a/63/af6d7e32c39424c6b106fe1925e82416a5525fbaafe6a253d44c493d48f7/pyjoulescope_driver-1.7.2-cp313-cp313-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "976d3d209539b8e1667149854aaddb024630a18ffb60d8214a0d5ece42ff8cbc",
"md5": "21b2294efb88da1a4b537c1331a3e29d",
"sha256": "06cf561515476422e9d09d797a8aba61e3f6f1c43767f4efd03b8f23b91abfc4"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "21b2294efb88da1a4b537c1331a3e29d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "~=3.10",
"size": 4721706,
"upload_time": "2024-12-10T18:00:01",
"upload_time_iso_8601": "2024-12-10T18:00:01.826199Z",
"url": "https://files.pythonhosted.org/packages/97/6d/3d209539b8e1667149854aaddb024630a18ffb60d8214a0d5ece42ff8cbc/pyjoulescope_driver-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "59e28c9bd7e26a11de5b04cd89abea7b72e76fdb2330b25b3d086da2952aacb3",
"md5": "1f681b8303e52de39f38248e0ad67397",
"sha256": "7604a8c2db9d1a376aff11da2c903148e12b67b2ef097e0fb138bc3ef3574762"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "1f681b8303e52de39f38248e0ad67397",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "~=3.10",
"size": 3116187,
"upload_time": "2024-12-10T18:00:03",
"upload_time_iso_8601": "2024-12-10T18:00:03.531071Z",
"url": "https://files.pythonhosted.org/packages/59/e2/8c9bd7e26a11de5b04cd89abea7b72e76fdb2330b25b3d086da2952aacb3/pyjoulescope_driver-1.7.2-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "22bb3fc8a8ebfea2c9c07686a6b8222f7d4e7e05935cc898345929edc3618df1",
"md5": "fddb28d425453e0b688827bcaa2e02ae",
"sha256": "04493bd51179d29fbeaa2e9ec4750a64c54e415108aa7dbb8f2f4f39e4b94357"
},
"downloads": -1,
"filename": "pyjoulescope_driver-1.7.2.tar.gz",
"has_sig": false,
"md5_digest": "fddb28d425453e0b688827bcaa2e02ae",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.10",
"size": 3503722,
"upload_time": "2024-12-10T18:00:05",
"upload_time_iso_8601": "2024-12-10T18:00:05.373310Z",
"url": "https://files.pythonhosted.org/packages/22/bb/3fc8a8ebfea2c9c07686a6b8222f7d4e7e05935cc898345929edc3618df1/pyjoulescope_driver-1.7.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-10 18:00:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jetperch",
"github_project": "pyjoulescope_driver",
"github_not_found": true,
"lcname": "pyjoulescope-driver"
}