Skip to main content

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")
    
    # Paginate through all messages
    all_messages = []
    response = manager.get_device_messages(device_id)
    all_messages.extend(response.data)
    
    while response.paging.next is not None:
        response = manager.get_device_messages(device_id, paging=response.paging)
        all_messages.extend(response.data)
    
    print(f"Total messages retrieved: {len(all_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 user
  • get_devices_by_contract(contract_id: str, fetch_all_pages: bool = True) -> DevicesResponse: Get all devices for a contract
  • get_device_info(device_id: str) -> Device: Get detailed information about a specific device
  • get_device_messages(device_id: str, threshold: Optional[int] = None, paging: Optional[Paging] = None) -> DeviceMessagesResponse: Get messages from a device with optional pagination support
  • get_device_message_number(device_id: str) -> DeviceMessageStats: Get message metrics for a device
  • create_device(dev_id, pac, dev_type_id, name, ...) -> BaseDevice: Create a new device
  • get_device_types(fetch_all_pages: bool = True) -> DeviceTypesResponse: Get all device types with pagination support
  • resolve_device_type_id(ref: str) -> str: Resolve a device type reference (id or name) to its id
  • provision_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 errors
  • SigfoxDeviceNotFoundError: Raised when a device is not found
  • SigfoxAuthError: Raised for authentication errors
  • SigfoxDeviceCreateConflictException: Raised when trying to create a duplicate device
  • SigfoxDeviceTypeNotFoundException: 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for your changes
  5. Run the test suite
  6. Submit a pull request

Support

For issues and questions, please use the GitHub Issues page.

Metadata

Release files for sigfox-manager 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sigfox-manager 0.4.0
File Size Uploaded
sigfox_manager-0.4.0.tar.gz 135.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sigfox-manager 0.4.0
File Interpreter ABI Platform
sigfox_manager-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 148.0 kB

Release files / sigfox_manager-0.4.0.tar.gz

Download URL sigfox_manager-0.4.0.tar.gz
Size 135.6 kB
Tags Source
SHA-256 checksum
How to use checksums
60e8c8f3b7dcda83d14b55fa49da7a7aef0b719e31a32cdf3512353586e24b12
BLAKE2b-256 checksum
How to use checksums
2f665001c83a1bb7259395f147b146b347fdafcda0d8911ae8c67dc885ef028d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release files / sigfox_manager-0.4.0-py3-none-any.whl

Download URL sigfox_manager-0.4.0-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
09c3577be306ef7d7a46902ef1ae57e4dd3132dd995f91577789c5611b750602
BLAKE2b-256 checksum
How to use checksums
d42a4ad5dea2f5482316ae2b603a5fd5d1d60123883f58e5b73b37d4f1bb49a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page