Skip to content
Core python tools for building and using IOTile based devices
Branch: master
Clone or download
Latest commit ba57285 Jul 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc/source
iotile_ext_cloud Fix cloud_uploader app and add save_locally method (#840) Jun 10, 2019
iotilebuild upgrade scons-local to 3.0.5 (#862) Jul 19, 2019
iotilecore Move argument in the tile_based_device to the proper place (within th… Jul 23, 2019
iotileemulate Promote components to full release May 17, 2019
iotilegateway Promote components to full release May 17, 2019
iotilesensorgraph
iotileship Promote components to full release May 17, 2019
iotiletest Feat jlink upgrade (#856) Jul 18, 2019
scripts Completely remove past.builtins and future Mar 5, 2019
transport_plugins Feat jlink upgrade (#856) Jul 18, 2019
.editorconfig Add consistent linting and editor settings Apr 4, 2017
.gitattributes Add support for RemoteBridge update scripts (#388) Mar 7, 2018
.gitignore
.pylintrc Move argument in the tile_based_device to the proper place (within th… Jul 23, 2019
.travis.yml Migrate all packages to py3 Feb 28, 2019
CODE_OF_CONDUCT.md Complete the left out checklist to complete CoreTools' community prof… Feb 14, 2019
CONTRIBUTING.md Promote components to full release May 17, 2019
LICENSE.md Update license to LGPLv3 Dec 5, 2016
PULL_REQUEST_TEMPLATE.md Complete the left out checklist to complete CoreTools' community prof… Feb 14, 2019
README.md Move windows and mac builds from appveyor to azure's open source free… Mar 1, 2019
RELEASING.md Update RELEASE guidelines to introduce a standardized process, May 17, 2019
azure-pipelines.yml Fix cloud_uploader app and add save_locally method (#840) Jun 10, 2019
bug_report.md Complete the left out checklist to complete CoreTools' community prof… Feb 14, 2019
build_requirements.txt Migrate all packages to py3 Feb 28, 2019
doc_requirements.txt Migrate the ServiceStatusClient to use asynchronous behavior. Mar 15, 2019
feature_request.md Complete the left out checklist to complete CoreTools' community prof… Feb 14, 2019
tox.ini Fix cloud_uploader app and add save_locally method (#840) Jun 10, 2019

README.md

Core IOTile Tools

Build Status Build Status

This repository contains the basic infrastructure needed build and interact with IOTile based devices. It is divided into a set of python packages that work together to create an extensible but easy to use framework that supports any IOTile device.

Read the latest Documentation!

Build Status

Core Packages

These are the building blocks that make up CoreTools. Depending on your particular use case, you may need just one of them or you may use them all.

Tool Description PyPI Version
iotile-core The central package of CoreTools, includes the core plugin architecture and device communication system PyPI version
iotile-build A build system for creating IOTile device firmware that is controllable from CoreTools PyPI version
iotile-gateway A multi-user, multi-device transparent proxy for IOTile devices PyPI version
iotile-sensorgraph A simulator for the embedded sensorgraph engine included in some IOTile device firmware PyPI version
iotile-emulate A complete set of emulation tools for emulating physical iotile devices PyPI version
iotile-ship A manufacturing tool that lets you define repeatable recipes to bring up IOTile based hardware at a factory PyPI version
iotile-test Internal test harnesses and mocks to test the rest of CoreTools and applications built using CoreTools PyPI version
iotile-ext-cloud A CoreTools-like wrapper for interacting with IOTile.cloud, a cloud based device management system that works well with IOTile based devices PyPI version

Built-in Device Transport Protocols

CoreTools is inherently agnostic in how it connects to an IOTile Device. Many physical IOTile devices use Bluetooth Low Energy to communicate with the external world but this is not an intrinsic assumption of how CoreTools works.

The currently included protocols are shown below.

Tranport Plugin Description PyPI Version
iotile-transport-nativeble Connects to IOTile devices over BLE using the cross-platform baBLE project to use your computers native bluetooth stack PyPI version
iotile-transport-websocket Connects to IOTile devices over websockets PyPI version
iotile-transport-bled112 Connects to IOTile devices over BLE using the BLED112 USB dongle by Silicon Labs PyPI version
iotile-transport-jlink Connects to an IOTile device using a physical SWD debug connection through a Segger JLink emulator PyPI version

Installation (from PyPI)

The core set of tools is divided into three pip installable packages

pip install iotile-core iotile-emulate iotile-transport-bled112

If you also wish to use the IOTile build system to build IOTile components, you should also install IOTile-Build

pip install iotile-build

If you want to use the IOTile testing tools (necessary for testing CoreTools among other uses,

pip install iotile-test

Installation (for development)

You can install any given package if you have the repository cloned locally in the normal way. For example, to install a development (i.e. master / your branch tip) of iotile-core:

pip install -e coretools/iotilecore

Working with Encrypted Device Data

If your devices are configured to protect the report data that they produce, you need to install pycrypto in order to CoreTools to be able to decrypt report data. This is only necessary to view encrypted report data and, obviously, also requires that you have access to the device in question's signing key.

Pycrypto can be installed using:

pip install pycrypto

If you are running on Windows, you may not have a compiler installed that is able to compile the PyCrypto package. Microsoft provides a free compiler that is easily installed here.

Installing Support for IOTile Based Devices

CoreTools just gives you the framework to interact with IOTile based devices. In order to control any given IOTile device, you need to also install a support package that contains support for that device. Support packages extend CoreTools to provide support for specific tiles.

There are currently no publicly available support packages, so please contact Arch to get access to private support packages.

Continuous Deployment

Automatic release to pypi is handled by Travis CI every time a new tag is created on the master branch. The tags must have a specific naming format:

<distribution_name>-<version>

Where <distribution_name> is the name of a specific component of CoreTools. Currently, the known components are:

iotilecore
iotilebuild
iotilegateway
iotiletest
iotilesensorgraph
iotileemulate

iotile_transport_bled112
iotile_transport_awsiot
iotile_transport_nativeble
iotile_transport_jlink
iotile_transport_websocket

The version must match the version that is encoded in version.py in the corresponding python distribution to be released and is checked in the release.py script before attempting to release.

Manually Releasing

Releasing new builds to pypi is handled by the scripts/release.py script. The script should be called with one argument, which is the name and version of the distribution being released.

First, make sure all build requirements are satisfied:

> pip install -r build_requirements.txt

Then, release (for example iotilecore-X.Y.Z) using

> python scripts/release iotilecore-X.Y.Z

You need to have the following environment variables set correctly with pypi and slack secrets:

PYPI_USER
PYPI_PASS
SLACK_WEB_HOOK

Contributing

If you are interesting in contributing to CoreTools, please see the Contributing guide!

Code of Conduct

Please familiarize yourself with our Code of Conduct

License

This software is released under the terms of the LGPL v3 license. It includes pieces that are distributed under the terms of their own licenses. A list of included 3rd party software is described in the README files for each component of IOTile CoreTools.

You can’t perform that action at this time.