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'

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.10.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

pinecil-0.2.10-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pinecil-0.2.10.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for pinecil-0.2.10.tar.gz
Algorithm Hash digest
SHA256 3d6d677100b148d24f23b6b10a1f9592e6433c45ee4b2f8310797a9e70a19b75
MD5 267f4e6b6a2ebe41869966cd6fe031c1
BLAKE2b-256 3f4058170c9b57b7faf61e951d76603e34cb7e0e4a6ea36d145673399ff790f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pinecil-0.2.10-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for pinecil-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 4a5fa0555a2adbea32b0ae264049edcde5ddfcbb92888e84c2761d118ca5b0ff
MD5 b43da758983b88b7e3d6560d6badcf41
BLAKE2b-256 5d45e9ba71171f99a91651f41e398bfb7e2bc55540681460b37bea8bb4f67282

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