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.14.tar.gz (9.5 kB view hashes)

Uploaded Source

Built Distribution

pinecil-0.2.14-py3-none-any.whl (10.3 kB view hashes)

Uploaded Python 3

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