Skip to main content

A python interface for Pinecil V2 controls and settings.

Project description

Automated lint and tests

Pinecil V2 interface library

Overview

Pinecil is a lightweight Python library designed to inetrafce with Pinecil V2 soldering iron.

Requirements

  • Python 3.9 or higher
  • bluez

Installation

pip install pinecil

Usage Example

A complete from-scratch example:

from pinecil import find_pinecils # if running in a cloned repo, use `from src.pinecil`
import asyncio

async def main():
    devices = await find_pinecils()
    iron = devices[0]
    await iron.connect()
    settings = await iron.get_all_settings()
    await iron.set_one_setting('SetTemperature', 250)
    await iron.save_to_flash() # this is required to preserve settings after powering off
    info = await iron.get_info()
    live = await iron.get_live_data()
    print(settings)
    print('----------')
    print(info)
    print('----------')
    print(live)

if __name__ == '__main__':
    asyncio.run(main())

If you already know the address of your pinecil, you can use it directly:

from pinecil import BLE, Pinecil
import asyncio

if __name__ == '__main__':
    p = Pinecil(BLE('<your-address>'))
    asyncio.run(p.get_all_settings())

To find addresses of all pinecils nearby:

from pinecil import find_device_addresses
import asyncio

if __name__ == '__main__':
    asyncio.run(find_device_addresses('pinecil'))

Testing

poetry shell
pytest -v
# for development convenience:
ptw --runner 'pytest -v'

Publish to test.pypi

You will need a PyPi token first: https://test.pypi.org/manage/account/token/

poetry config repositories.test-pypi https://test.pypi.org/legacy/
poetry config pypi-token.test-pypi pypi-XXXXXXXX
poetry build
poetry publish -r test-pypi

References

Docs

Exceptions

  • ValueOutOfRangeException: Attempting to set a settings value that is out of range.
  • InvalidSettingException: Setting does not exist.
  • DeviceNotFoundException: Indicates the device was not found.
  • DeviceDisconnectedException: Indicates the device was disconnected.

Classes and Functions

Class: Pinecil

  • Constructor: __init__(self, ble: BLE): Initializes Pinecil with BLE instance.
  • Properties:
    • is_connected -> bool: True if Pinecil is connected.
  • Methods:
    • connect(self): Connects to Pinecil.
    • get_all_settings(self) -> Dict[str, int]: Retrieves all settings.
    • set_one_setting(self, setting: str, value: int): Sets a single setting - does not save to flash.
    • save_to_flash(self): Saves all settings to flash.
    • get_info(self) -> Dict[str, str]: Retrieves basic Pinecil info.
    • get_live_data(self) -> Dict[str, int]: Retrieves live data.

Class: BLE

  • Constructor: __init__(self, address: str): Initializes BLE device wrapper.
  • Properties:
    • is_connected -> bool: True if connected to the device.
  • Methods:
    • ensure_connected(self): Connects to the device if not connected (does nothing if connected)
    • get_services(self) -> List[str]: Gets list of services.
    • get_characteristics(self, service_uuid: str) -> List[BleakGATTCharacteristic]: Gets characteristics of a service.
    • read_characteristic(self, handle: BleakGATTCharacteristic) -> bytes: Reads value of a characteristic
    • write_characteristic(self, handle: BleakGATTCharacteristic, value: bytes): Writes value to a characteristic.

Function: find_device_addresses

  • Description: Finds devices matching a given name and returns their UUIDs
  • Returns: List[str]: List of device addresses.

Function: find_pinecils

  • Description: Finds nearby pinecils and returns their list.
  • Returns: List[Pinecil]: List of found device instances.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pinecil-0.2.15.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

pinecil-0.2.15-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file pinecil-0.2.15.tar.gz.

File metadata

  • Download URL: pinecil-0.2.15.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pinecil-0.2.15.tar.gz
Algorithm Hash digest
SHA256 23d63600d8af3c7b6e4a9662b3dbccaa6a86fdcbcba321c363e08560bd2c4ee3
MD5 27c3ac879ff379b7d39a7a585dc86a2d
BLAKE2b-256 ea23391186ca695a7a57044ca15c17909276182f3c8ba9244b6fff271fdcbda1

See more details on using hashes here.

File details

Details for the file pinecil-0.2.15-py3-none-any.whl.

File metadata

  • Download URL: pinecil-0.2.15-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pinecil-0.2.15-py3-none-any.whl
Algorithm Hash digest
SHA256 27769587122075c0d9dc0242cb60ed44c5cf52faca4af054d78b7d13b822b8c0
MD5 a5949002b40d8a06ed9cbb13b882374b
BLAKE2b-256 62e9781de146a94242cb9e7a0399e5a3be077ed87495a3d5abe8b1b0bbd21e58

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page