{"id":14982659,"url":"https://github.com/pcolby/dokit","last_synced_at":"2026-04-08T03:01:54.140Z","repository":{"id":37268081,"uuid":"454954201","full_name":"pcolby/dokit","owner":"pcolby","description":"Cross-platform library, and desktop apps for Pokit measuring devices","archived":false,"fork":false,"pushed_at":"2026-03-29T11:15:10.000Z","size":96956,"stargazers_count":63,"open_issues_count":6,"forks_count":10,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-03-29T13:47:00.031Z","etag":null,"topics":["ble","bluetooth","bluetooth-low-energy","cmake","console","dso","library","multimeter","pokit","pokit-meter","pokit-pro","qt","qt5","qt6","qtconnectivity","qtconsole"],"latest_commit_sha":null,"homepage":"https://pcolby.github.io/dokit/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pcolby.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"COPYING.LESSER.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-02T22:19:15.000Z","updated_at":"2026-03-29T10:39:54.000Z","dependencies_parsed_at":"2023-02-09T14:01:28.788Z","dependency_job_id":"bef4b527-74a5-4375-9145-1a915787352a","html_url":"https://github.com/pcolby/dokit","commit_stats":{"total_commits":1021,"total_committers":4,"mean_commits":255.25,"dds":0.005876591576885359,"last_synced_commit":"4efe556a1e2ff832019b82bf27b6dead4bd39945"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pcolby/dokit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fdokit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fdokit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fdokit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fdokit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pcolby","download_url":"https://codeload.github.com/pcolby/dokit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fdokit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31537791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ble","bluetooth","bluetooth-low-energy","cmake","console","dso","library","multimeter","pokit","pokit-meter","pokit-pro","qt","qt5","qt6","qtconnectivity","qtconsole"],"created_at":"2024-09-24T14:05:49.254Z","updated_at":"2026-04-08T03:01:54.126Z","avatar_url":"https://github.com/pcolby.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dokit\n\n[![Build Status](https://github.com/pcolby/dokit/actions/workflows/build.yaml/badge.svg?branch=main)](https://github.com/pcolby/dokit/actions/workflows/build.yaml?query=branch%3Amain)\n[![Static Analysis](https://github.com/pcolby/dokit/actions/workflows/static.yaml/badge.svg?branch=main)](https://github.com/pcolby/dokit/actions/workflows/static.yaml?query=branch%3Amain)\n[![Documentation](https://github.com/pcolby/dokit/actions/workflows/docs.yaml/badge.svg?branch=main)](https://github.com/pcolby/dokit/actions/workflows/docs.yaml?query=branch%3Amain)\n[![Codacy Grade](https://app.codacy.com/project/badge/Grade/50f86ac1809f438eae51d294ad11f36f)](https://app.codacy.com/gh/pcolby/dokit/dashboard)\n[![Codacy Coverage](https://app.codacy.com/project/badge/Coverage/50f86ac1809f438eae51d294ad11f36f)](https://app.codacy.com/gh/pcolby/dokit/dashboard)\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=pcolby_dokit\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=pcolby_dokit)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=pcolby_dokit\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=pcolby_dokit)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=pcolby_dokit\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=pcolby_dokit)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=pcolby_dokit\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=pcolby_dokit)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=pcolby_dokit\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=pcolby_dokit)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=pcolby_dokit\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=pcolby_dokit)\n\nDokit is a set of cross-platform, open source tools for accessing [Pokit][] measuring devices.\nIt consists of three primary components:\n\n1. `QtPokit` cross-platform [Qt][] library - used extensively by the applications below, but\n    also easily re-usable under the [LGPL][]; and\n2. `dokit` console CLI application demonstrating most of the features of the `QtPokit` library; and\n3. Dokit GUI application - currently in very early stages of development.\n\nMost [Pokit Meter][] and [Pokit Pro][] functions are supported, including the multimeter,\noscilloscope and data logger functions. The one real feature missing currently is\n[Pokit Pro][]'s capacitance mode, which is not currently documented by [Pokit][] (support will\nbe added as soon as [Pokit][] updates their documentation to include it... or I get around to\nreverse engineering it).\n\nAlso worth noting, is that while this project has extensive automated tests that run\nregularly on Linux, macOS and Windows, using a range of Qt versions from 5.9 to 6.4, most of\nthe hands-on testing so far has been performed on Linux only. Testers with [Pokit][] devices\non macOS and Windows would be most welcome to help!\n\n## Usage\n\n### QtPokit Library\n\nFor shared library usage (for developers to create their own Pokit device applications), see\nthe latest [API docs][].\n\n### `dokit` Command\n\nThe `dokit` CLI command is executed like:\n\n```sh\ndokit \u003ccommand\u003e [options]\n```\n\nWhere `\u003ccommand\u003e` is one of: `info`, `status`, `meter`, `dso`, `logger-start`, `logger-stop`,\n`logger-fetch`, `scan`, `set-name`, `flash-led`, or `calibrate`\n\nFor example, to get a device's status:\n\n```sh\ndokit status\n```\n\nOutputs like:\n\n```text\nDevice name:           PokitMeter\nFirmware version:      1.4\nMaximum voltage:       60\nMaximum current:       2\nMaximum resistance:    1000\nMaximum sampling rate: 1000\nSampling buffer size:  8192\nCapability mask:       0\nMAC address:           84:2E:14:2C:03:A8\nDevice status:         Idle (0)\nBattery voltage:       2.76221\nBattery status:        N/A (255)\n```\n\nOr, you can output in CSV, or JSON too, like:\n\n```sh\ndokit status --output json\n```\n\n```json\n{\n    \"battery\": {\n        \"level\": 2.760070562362671\n    },\n    \"capabilityMask\": 0,\n    \"deviceName\": \"PokitMeter\",\n    \"deviceStatus\": {\n        \"code\": 0,\n        \"label\": \"Idle\"\n    },\n    \"firmwareVersion\": {\n        \"major\": 1,\n        \"minor\": 4\n    },\n    \"macAddress\": \"84:2E:14:2C:03:A8\",\n    \"maximumCurrent\": 2,\n    \"maximumResistance\": 1000,\n    \"maximumSamplingRate\": 1000,\n    \"maximumVoltage\": 60,\n    \"samplingBufferSize\": 8192\n}\n```\n\nBy default, the `dokit` command will use the first Pokit device it finds. However, if you have more than\none device, you can specify the device's name, or MAC address, or (on macOS) device UUID, such as:\n\n```sh\ndokit status --device RedPokitPro\n```\n\nTip: You can rename Pokit devices via the official Pokit app, or the `set-name` command, like:\n\n```sh\ndokit set-name --device Pokit --new-name PokitMeter\n```\n\nHere's a more complex usage example:\n\n```sh\ndokit meter --mode Vac --range 10V --samples 10 --output csv\n```\n\nThis will fetch 10 AC meter readings, on the nearest range that can support 10Vac, and output those\nreadings in CSV format:\n\nFor full usage information (albeit brief), use the `--help` option, which currently outputs something like:\n\n```text\nUsage: dokit \u003ccommand\u003e [options]\n\nOptions:\n  --color \u003cyes|no|auto\u003e    Colors the console output. Valid options are: yes,\n                           no and auto. The default is auto.\n  --debug                  Enable debug output.\n  -d, --device \u003cdevice\u003e    Set the name, hardware address or macOS UUID of\n                           Pokit device to use. If not specified, the first\n                           discovered Pokit device will be used.\n  -h, --help               Displays help on commandline options.\n  --help-all               Displays help including Qt specific options.\n  --interval \u003cinterval\u003e    Set the update interval for DOS, meter and logger\n                           modes. Suffixes such as 's' and 'ms' (for seconds and\n                           milliseconds) may be used. If no suffix is present,\n                           the units will be inferred from the magnitude of the\n                           given interval. If the option itself is not\n                           specified, a sensible default will be chosen\n                           according to the selected command.\n  --mode \u003cmode\u003e            Set the desired operation mode. For meter, dso, and\n                           logger commands, the supported modes are: AC Voltage,\n                           DC Voltage, AC Current, DC Current, Resistance,\n                           Diode, Continuity, and Temperature. All are case\n                           insensitive. Only the first four options are\n                           available for dso and logger commands; the rest are\n                           available in meter mode only. Temperature is also\n                           available for logger commands, but requires firmware\n                           v1.5 or later for Pokit devices to support it. For\n                           the set-torch command supported modes are On and Off.\n  --new-name \u003cname\u003e        Give the desired new name for the set-name command.\n  --output \u003cformat\u003e        Set the format for output. Supported formats are:\n                           CSV, JSON and Text. All are case insensitive. The\n                           default is Text.\n  --range \u003crange\u003e          Set the desired measurement range. Pokit devices\n                           support specific ranges, such as 0 to 300mV. Specify\n                           the desired upper limit, and the best range will be\n                           selected, or use 'auto' to enable the Pokit device's\n                           auto-range feature. The default is 'auto'.\n  --samples \u003ccount\u003e        Set the number of samples to acquire.\n  --temperature \u003cdegrees\u003e  Set the current ambient temperature for the\n                           calibration command.\n  --timeout \u003cperiod\u003e       Set the device discovery scan timeout.Suffixes such\n                           as 's' and 'ms' (for seconds and milliseconds) may be\n                           used. If no suffix is present, the units will be\n                           inferred from the magnitude of the given interval.\n                           The default behaviour is no timeout.\n  --timestamp \u003cperiod\u003e     Set the optional starting timestamp for data\n                           logging. Default to 'now'.\n  --trigger-level \u003clevel\u003e  Set the DSO trigger level.\n  --trigger-mode \u003cmode\u003e    Set the DSO trigger mode. Supported modes are: free,\n                           rising and falling. The default is free.\n  -v, --version            Displays version information.\n\nCommand:\n  info                     Get Pokit device information\n  status                   Get Pokit device status\n  meter                    Access Pokit device's multimeter mode\n  dso                      Access Pokit device's DSO mode\n  logger-start             Start Pokit device's data logger mode\n  logger-stop              Stop Pokit device's data logger mode\n  logger-fetch             Fetch Pokit device's data logger samples\n  scan                     Scan Bluetooth for Pokit devices\n  set-name                 Set Pokit device's name\n  set-torch                Set Pokit device's torch on or off\n  flash-led                Flash Pokit device's LED (Pokit Meter only)\n  calibrate                Calibrate Pokit device temperature\n```\n\n## Requirements\n\n* Qt5 v5.4+[^minQt5] or Qt6 v6.2+[^minQt6]\n* a Qt-supported platform, such as Linux, macOS or Windows\n* a [Pokit][] device, such as a [Pokit Meter][] or [Pokit Pro][]\n* [CMake][] (for building Dokit itself) 3.15+\n\n\u003e [!TIP]\n\u003e To install all dependencies on modern Ubuntu releases:\n\u003e\n\u003e * `sudo apt install cmake doxygen lcov`\n\u003e\n\u003e and then either:\n\u003e\n\u003e * Qt5: `sudo apt install qtbase5{,-doc}-dev qtconnectivity5-{dev,doc-html} qttools5-dev{,-tools}`\n\u003e * Qt6: `sudo apt install qt6-{base-{dev{,-tools},doc-dev},connectivity-{dev,doc-html},l10n-tools,tools-dev{,-tools}}`\n\n## Building from Source\n\nPrototypical [CMake][]-based out-of-source build and test process:\n\n```sh\ncmake -D CMAKE_BUILD_TYPE=Release -S \u003cpath-to-cloned-repo\u003e -B \u003ctmp-build-dir\u003e\ncmake --build \u003ctmp-build-dir\u003e\nctest --test-dir \u003ctmp-build-dir\u003e --verbose\n```\n\n### Documentation\n\nConfigure the same as above, but build the `doc` and (optionally) `doc-internal` targets, for example:\n\n```sh\ncmake -S \u003cpath-to-cloned-repo\u003e -B \u003ctmp-build-dir\u003e\ncmake --build \u003ctmp-build-dir\u003e --target doc doc-internal\n# ls \u003ctmp-build-dir\u003e/doc/public    # Library end-user documentation\n# ls \u003ctmp-build-dir\u003e/doc/internal  # Internal developer documentation\n```\n\nThese are regularly published to GitHub Pages via GitHub Actions:\n\n* [public end-user docs](https://pcolby.github.io/dokit/main/doc/index.html)\n* [internal dev docs](https://pcolby.github.io/dokit/main/int/index.html)\n\n## License\n\nQtPokit is freely available under the [LGPL].\n\n[^minQt5]: The Qt BLE API was first [added in v5.4](https://doc.qt.io/qt-5/qtbluetooth-le-overview.html)\n[^minQt6]: The Qt Bluetooth module was [ported to Qt6 in v6.2](https://www.qt.io/blog/qt-6.2-lts-released)\n\n[API docs]:    https://pcolby.github.io/dokit/ \"QtPokit API Documentation\"\n[CMake]:       https://cmake.org/\n[LGPL]:        https://www.gnu.org/licenses/lgpl-3.0.html \"GNU Lesser General Public License\"\n[Pokit]:       https://www.pokitinnovations.com/ \"Pokit Innovations\"\n[Pokit Meter]: https://www.pokitinnovations.com/pokit-meter/\n[Pokit Pro]:   https://www.pokitinnovations.com/pokit-pro/\n[Qt]:          https://www.qt.io/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcolby%2Fdokit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpcolby%2Fdokit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcolby%2Fdokit/lists"}