A python interface for Pinecil V2 controls and settings.
Project description
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
- Originally started as PineSAM
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 withBLE
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 characteristicwrite_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
Release history Release notifications | RSS feed
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)
Built Distribution
pinecil-0.2.10-py3-none-any.whl
(10.2 kB
view details)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d6d677100b148d24f23b6b10a1f9592e6433c45ee4b2f8310797a9e70a19b75 |
|
MD5 | 267f4e6b6a2ebe41869966cd6fe031c1 |
|
BLAKE2b-256 | 3f4058170c9b57b7faf61e951d76603e34cb7e0e4a6ea36d145673399ff790f6 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a5fa0555a2adbea32b0ae264049edcde5ddfcbb92888e84c2761d118ca5b0ff |
|
MD5 | b43da758983b88b7e3d6560d6badcf41 |
|
BLAKE2b-256 | 5d45e9ba71171f99a91651f41e398bfb7e2bc55540681460b37bea8bb4f67282 |