A Python library for handling Sigfox API operations
Project description
Sigfox Manager
A Python library for handling Sigfox API operations with ease.
Features
Currently supports the following operations:
- Get all contracts on current Token
- Get all devices on selected contract
- Get device information
- Get messages from device
- Create device
- List device types with automatic pagination
- Resolve device types by id or name
- Provision devices with input validation
Installation
From PyPI (when published)
pip install sigfox-manager
From Source
git clone https://github.com/Jobenas/sigfox_manager_utility.git
cd sigfox_manager_utility
pip install .
For Development
git clone https://github.com/Jobenas/sigfox_manager_utility.git
cd sigfox_manager_utility
pip install -e .[dev]
Quick Start
from sigfox_manager import SigfoxManager
# Initialize the manager with your Sigfox API credentials
manager = SigfoxManager(user="your_username", pwd="your_password")
# Get all contracts
contracts = manager.get_contracts()
print(f"Found {len(contracts.data)} contracts")
# Get devices for a contract
if contracts.data:
contract_id = contracts.data[0].id
devices = manager.get_devices_by_contract(contract_id)
print(f"Found {len(devices.data)} devices")
# Get device information
if devices.data:
device_id = devices.data[0].id
device_info = manager.get_device_info(device_id)
print(f"Device: {device_info.name}")
# Get device messages
messages = manager.get_device_messages(device_id)
print(f"Found {len(messages.data)} messages")
Device Type Management and Provisioning
from sigfox_manager import SigfoxManager
sm = SigfoxManager("API_LOGIN", "API_PASSWORD")
# List all device types with automatic pagination
dts = sm.get_device_types().data
print([(dt.id, dt.name) for dt in dts])
# Provision a device with input validation
# Device type can be specified by id or name
dev = sm.provision_device(
dev_id="19C3B",
pac="1234567890ABCDEF",
dev_type_ref="Type A", # Can use device type name or id
name="field-node-42",
automatic_renewal=True,
)
print(f"Created device: {dev.id} - {dev.name}")
Device Type Management and Provisioning
The library now includes enhanced features for managing device types and provisioning devices with validation:
from sigfox_manager import SigfoxManager
# Initialize the manager
sm = SigfoxManager("API_LOGIN", "API_PASSWORD")
# List all device types
dts = sm.get_device_types().data
print([(dt.id, dt.name) for dt in dts])
# Provision a new device with validation
# - Validates dev_id format (uppercase hex, 3-16 chars)
# - Validates pac format (16 alphanumeric chars)
# - Resolves device type by id or name
dev = sm.provision_device(
dev_id="19C3B",
pac="1234567890ABCDEF",
dev_type_ref="Type A", # Can be device type id or name
name="field-node-42",
automatic_renewal=True,
)
print(dev.id, dev.name)
API Reference
SigfoxManager
The main class for interacting with the Sigfox API.
Constructor
SigfoxManager(user: str, pwd: str)
Methods
get_contracts(fetch_all_pages: bool = True) -> ContractsResponse: Get all contracts visible to the userget_devices_by_contract(contract_id: str, fetch_all_pages: bool = True) -> DevicesResponse: Get all devices for a contractget_device_info(device_id: str) -> Device: Get detailed information about a specific deviceget_device_messages(device_id: str, threshold: Optional[int] = None) -> DeviceMessagesResponse: Get messages from a deviceget_device_message_number(device_id: str) -> DeviceMessageStats: Get message metrics for a devicecreate_device(dev_id, pac, dev_type_id, name, ...) -> BaseDevice: Create a new deviceget_device_types(fetch_all_pages: bool = True) -> DeviceTypesResponse: Get all device types with pagination supportresolve_device_type_id(ref: str) -> str: Resolve a device type reference (id or name) to its idprovision_device(dev_id: str, pac: str, dev_type_ref: str, name: Optional[str] = None, **kwargs) -> BaseDevice: Validate inputs and provision a new device
Exceptions
The library provides custom exceptions for better error handling:
SigfoxAPIException: Base exception for API errorsSigfoxDeviceNotFoundError: Raised when a device is not foundSigfoxAuthError: Raised for authentication errorsSigfoxDeviceCreateConflictException: Raised when trying to create a duplicate deviceSigfoxDeviceTypeNotFoundException: Raised when a device type cannot be resolved by id or name
Development
Setting up Development Environment
# Clone the repository
git clone https://github.com/Jobenas/sigfox_manager_utility.git
cd sigfox_manager_utility
# Install in development mode with dev dependencies
pip install -e .[dev]
Running Tests
pytest tests/
Code Formatting
black sigfox_manager/
Type Checking
mypy sigfox_manager/
Building the Package
python -m build
License
MIT License - see LICENSE file for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for your changes
- Run the test suite
- Submit a pull request
Support
For issues and questions, please use the GitHub Issues page.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sigfox_manager-0.3.1.tar.gz.
File metadata
- Download URL: sigfox_manager-0.3.1.tar.gz
- Upload date:
- Size: 136.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
834836da2e49e6d489133da6dcf4fbb62006ba536c250f008f4c0709b56b01f8
|
|
| MD5 |
b254d589da34cd8f6c9eebd330101053
|
|
| BLAKE2b-256 |
7a492d1736d058ff24708782f26bdd520ce4b879789269ed2d953151c0526770
|
File details
Details for the file sigfox_manager-0.3.1-py3-none-any.whl.
File metadata
- Download URL: sigfox_manager-0.3.1-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71bd43372276a7d01cbba5823a8ee3de04330e657a2f4c05259028a45fcd9152
|
|
| MD5 |
000f9e141c8b47e9b1ca02480c6c3099
|
|
| BLAKE2b-256 |
f3e7cb494df5ef5d939016598165bc8f205070a3751666a19b4e58ac5af0b622
|