A library for interacting with Wiliot's private Cloud API
Project description
PyWiliot: wiliot-api
wiliot-api is a python library for accessing Wiliot's cloud APIs from Python
Installing pyWiliot
pip install wiliot-api
Using pyWiliot
Wiliot package location can be found, by typing in the command line:
pip show wiliot-api
Code examples for using PyWiliot-api
For more documentation and instructions, please contact us: support@wiliot.com
Release Notes:
Version 4.6.4:
- Changed get_asset() implementation to use dedicated endpoint instead of metadataFetch
Version 4.6.3:
- Fixed a bug in functions to get all bridges and gateways that prevented all results from being returned on subsequent calls after the first one
Version 4.6.2:
- Added optional parameters to filter returned gateways and bridges
Version 4.5.0:
- Added option to change gateway name when updating its configuration
- Added functionality to filter the list of returned pixels by sub strings
- Implemented function to get pixel count
- Added function to batch create assets using a CSV file
- Added a function to get event counts in a time range
Version 4.4.4:
- Added support for updating bridges with ### Version 3.16 and newer (MEL)
Version 4.4.3:
- Added shipment api support
- Improved post function to handle different type of payload
Version 4.4.2:
- Improved support for alternate clouds and regions
Version 4.4.0:
- Forcing a token refresh when an access token is less than a minute from expiry
- Added support for alternate clouds and regions
- Streamlined API paths to match between the platform and edge modules
Version 4.3.2:
- Added an option to get a binary file from the API
- Added a function for sending actions to a gateway
Version 4.3.1:
* Added a function for sending actions to a gateway
Version 4.3.0:
- Change code to match the changes in asset label API endpoint
- All 2xx status code returned by the API are considered a success
Version 4.2.0:
- Changed API URLs to support new cloud environment
- Added support for pulling paginated bridge and gateway lists (when an owner has more than 100 bridges/gateways)
- Added a function to update multiple bridges' configuration in one call
- Removed GATEWAY as an association type for location - not supported by the platform
- Requiring at least one pixel to be provided when creating an asset
Version 4.1.2:
- Changed additional functions use the metadataFetch API to support larger returned data sets:
- Get Locations
- Get zones
- Get location associations
- Get zone associations
- Added the ability to associate pixels to zones
- Added the ability to associate bridges and gateways to locations
Version 4.1.0:
- Changed get_locations and get_categories to use the metadataFetch API endpoint to support:
- Fetching more than the first 100 items
- To return the underlying zones for each location when fetching locations
- Added calls to get, create and delete asset labels
- Changed get_asset function call to use the metdataFetch endpoint for compatibility with the get_assets call
- Removed an unsupported event type (geolocation)
Version 4.0.3:
- Changed logic for get_assets in Platform module to remove limitation of only getting back the first 100 assets
- Fixed bug in call to add pixel to asset
Version 4.0.2:
- First ### Version
The package previous content was published under the name 'wiliot' package. for more information please read 'wiliot' package's release notes
Examples
Platform API
# Import the library
from wiliot_api.platform.platform import *
import os
# Define an owner ID
owner_id = "test_owner1" # ToDo: add here your owner ID
# Initialise an Wiliot client object
platform = PlatformClient(api_key=os.environ.get("WILIOT_PLATFORM_API_KEY"), owner_id=owner_id)
# Get the first 50 pixels owned by the account
print(platform.get_pixels())
# Get a list of all pixels (not recommended on accounts with many pixels)
pixels = []
next_p = None
while True:
p, next_p = platform.get_pixels(next=next_p)
pixels += p
if next_p is None:
break
# Get a list of categories
platform.get_categories()
# Get a list of asset type
platform.get_asset_types()
# Create a category
platform.create_category(name="Black_box", asset_type_id='Default', category_id="black-box-sku",
description="A generic black box")
# Get a list of assets
platform.get_assets()
# Create an asset
platform.create_asset(name="Black-box-118763", category_id="black-box-sku",
tags=[{"tagId": "pixel-1-id", "role": TagRole.DEFAULT},
{"tagId": "pixel-2-id", "role": TagRole.DEFAULT}])
# Associate a pixel to an asset
platform.associate_pixel_to_asset("my-asset-id", pixel_id="pixel-id")
# Disassociate a pixel from an asset
platform.disassociate_pixel_from_asset(asset_id="my-asset-id", pixel_id="pixel-id")
# Delete an asset
platform.delete_asset(asset_id="my-asset-id")
# Locations and zones
# Get a list of locations
platform.get_locations()
# Get a list of zones in a location
platform.get_zones(location_id="my-location-id")
# Associate a bridge to a zone
platform.create_zone_association(location_id="my-location-id", zone_id="my-zone-id",
association_type=ZoneAssociationType.BRIDGE, association_value="my-bridge-id")
Edge API
# Import the library
from wiliot_api.edge.edge import *
import os
# Define an owner ID
owner_id = "test_owner" # ToDo: add here your owner ID
# Initialise an Wiliot edge client object
edge = EdgeClient(api_key=os.environ.get('WILIOT_EDGE_API_KEY'), owner_id=owner_id)
# Get a list of gateways owned by the owner
edge.get_gateways()
# Get details on a single gateway by its ID
edge.get_gateway(gateway_id="my-gateway-id")
# Update a gateway's configuration
# First get its current configuration
config = edge.get_gateway("my-gateway-id")["reportedConf"]
# Make the required change - for example, change the pacer interval
config["additional"]["pacerInterval"] = 15
# Update the gateway's configuration
edge.update_gateways_configuration(gateways=["my-gateway-id"], config=config)
# Register a new gateway
edge.register_gateway(gateways=["my-new-gateway-id"])
# Delete a gateway from the account (to move to another account, for example)
edge.delete_gateway(gateway_id="my-gateway-id")
# Bridges
# Get a list of all bridges registered under the account with their configuration
edge.get_bridges()
# Get a list of all online bridges
edge.get_bridges(online=True)
# Get a list of bridges connected to a certain gateway
edge.get_bridges(gateway_id="my-gateway-id")
# Update a bridge configuration
# First, get its current configuration
config = edge.get_bridge(bridge_id="my-bridge-id")["config"]
# Request the configuration change - single bridge
edge.update_bridge_configuration(bridge_id="my-bridge-id", config={'energyPattern': 63})
# Request the configuration change - multiple bridge
edge.update_bridges_configuration(bridge_ids=["bridge1-id", "bridge2-id"], config={'energyPattern': 63})
# Change a bridge's name
edge.update_bridge_configuration(bridge_id="my-bridge-id", name="my_bridge_name")
# Get bridges connected to gateway
edge.get_bridges_connected_to_gateway("gateway-id")
Manufacturing API
(for Wiliot's manufacturing clients)
# Import the library
from wiliot_api.manufacturing.manufacturing import *
import os
# Initialise an Wiliot client object
wiliot_manufacturing = ManufacturingClient(os.environ.get('WILIOT_MANUFACTURING_API_KEY'))
# Change the owner for a sequence of pixel IDs - useful for changing consecutive IDs - like part of a reel
req = wiliot_manufacturing.change_pixel_owner_by_range("first_pixel_id", "last_pixel_id", "from_owner_id",
"to_owner_id")
# Change the owner for a list of pixel IDs - When non-consecutive IDs need changing - up to 3000 pixels
req = wiliot_manufacturing.change_pixel_owner_by_list(["tag_1", "tag_2", "tag_3"], "from_owner_id", "to_owner_id")
# Change the owner of pixels by file - when needing to change more than 3000, non-consecutive IDs
#
# The file should be formatted as follows:
# tagId
# tag_1_id
# tag_2_id
# .....
req = wiliot_manufacturing.change_pixel_owner_by_file("from_owner_id", "to_owner_id", "/path/to/file")
# Each of the functions above returns a string representing a request ID. To check on the status of the request
print(wiliot_manufacturing.get_pixel_change_request_status(req))
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
wiliot-api-4.6.4.tar.gz
(35.3 kB
view hashes)
Built Distribution
wiliot_api-4.6.4-py3-none-any.whl
(46.8 kB
view hashes)
Close
Hashes for wiliot_api-4.6.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b507c3aa0adfe31bb4f2812b68ba0af5319bec29b43664778354ec2933d9047 |
|
MD5 | 32d4e9351ab4077693513218881dbffb |
|
BLAKE2b-256 | 13c95a935d1d039581d1e8437bb9d94bce3f044526a7e438b63dbf6e2f71807d |