Skip to main content

aioiotprov

A library/utility to provision IoT devices

PyPI version fury.io MIT license GITHUB-BADGE

This is early day. Currently it can provision TP-Link smartplugs, Broadlink IR blasters, Sonoff switches running the Tasmota firmware, Shelly devices and E-Trix power monitors, Xiaomi Yeelights (Possibly other Xiaomi too)

This uses nmcli or wpa_cli to control and configure WIFI access. This means this will work only with Linux, and then again not all. It is working on a RaspberryPi running Debian Stretch (No NetworkManager) and works on a laptop ruunning Ubuntu 18.10 to 20.04

When using nmcli, it is possible to use a connected WiFi adapter, this has not yet been tested with wpa_cli

Installation

We are on PyPi so

pip3 install aioiotprov

Running

You can just run it by doing

python3 -m aioiotprov "My SSID" "My Secret Key"

If you want to set user, password and for sonoff, MQTT, do something like

python3 -m aioiotprov -u user -p password "My SSID" "My Secret Key" \
-o "sonoff::mqtt==on||user=mqttuser||password=mqttpass||host=somehost||port=1883||client=DVES_XXXXXX||topic=sonoff-XXXXXX||full topic=blabla/%prefix%/%topic%/"

For Shellies,

python3 -m aioiotprov -u user -p password "My SSID" "My Secret Key" \
-o "shelly::mqtt==on||user==mqttuser||password==mqttpass||host==somehost||port==1883"

For Tasmota,

python3 -m aioiotprov -d -u user -p passwd -o 'tasmota::mqtt==on||template=={"NAME":"Sonoff T1 3CH","GPIO":[17,255,255,255,23,22,18,19,21,56,0,0,0],"FLAG":0,"BASE":30}||host==somehost||user==mqttuser||password==mqttpasswd'
-- SSID KEY

Setting option will only works with plugins that can handle those. Use '::' after name of the plugin. Use '==' to set value and use '||' to separate options

Plugins

broadlink

This is a plugin to provision Broadlink devices, like the A1 sensor or the RM4 Mini IR blaster.

The device cannot be secured (no user/password setting) nor is any option available for this plugin.

e-trix

This is a plugin to provision E-Trix electrix metering devices.

The device cannot be secured (no user/password setting) nor is any option available for this plugin.

shelly

This is a plugin to provision Shelly devices.

If you set the user and the password, the device will be secured with those.

The plugin supports the following options:

mqtt:    on or off Use MQTT or not
    host: mqtt host URI (with port if needed) (only if mqtt=='on'
    user: mqtt username
    password: mqtt password

tasmota

This is a plugin to provision devices running the Tasmota software.

If you set the user and the password, the device will be secured with those.

The plugin supports the following options:

module:  The index of the module to use (e.g. 29 is for Sonoff T1 2CH)
template: A device template. See the Tasmota documentation for details.
mqtt:    on or off Use MQTT or not
    host: mqtt host (only if mqtt=='on'
    user: mqtt username
    password: mqtt password
    port: mqtt port
    client: see tasmota documentation for details
    topic: define the device unique id for MQTT
    full topic: : full topic e.g. mystuff/%prefix%/%topic%

For 'client', 'topic' and 'full topic'  the string '{mac}' in the value will be replaced by
the last 6 hexadigits of the MAC address in lowercase format.

tp-link

This is a plugin to provision TP-Link smart plugs devices. It may work with other smart home devices, but this has not been tested. The device cannot be secured (no user/password setting) nor is any option available for this plugin.

yeelight

This plugin is based on the protocol description and the code from OpenMiHome

This plugin provision Xiaomi Yeelight.

Upon successful provisioning, the token, used to encrypt subsequent communications, is returned.

By default, the key will be saved in the file ~/.aioyeelight. It can then be used with aioyeelight. If you do not wish to persist keys, use the nopersist option.

Note: The plugin accepts the option 'owner' but this does not seem to have any effect.

How it works

Mostly each plugin knows what SSID to look for. If one of the needed SSID is found, aioiotprov will connect to the SSID and hand over provisioning duties to the plugin.

Metadata

Release files for aioiotprov 0.0.8

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

Source distribution (sdist)

Source distribution for aioiotprov 0.0.8
File Size Uploaded
aioiotprov-0.0.8.tar.gz 20.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aioiotprov 0.0.8
File Interpreter ABI Platform
aioiotprov-0.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 50.5 kB

Release files / aioiotprov-0.0.8.tar.gz

Download URL aioiotprov-0.0.8.tar.gz
Size 20.2 kB
Tags Source
SHA-256 checksum
How to use checksums
b04dfc9921f26f7bb32b9f3d88eb6a63f4e367050208488b3c0f968fca576803
BLAKE2b-256 checksum
How to use checksums
c51e8ddbd869bb82b652400f751bb60b2e025759c3a377d47243dd0bcd6df07a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.5

Release files / aioiotprov-0.0.8-py3-none-any.whl

Download URL aioiotprov-0.0.8-py3-none-any.whl
Size 30.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e3e9d7ab2c368d997ff9751cc83231d76d33f079bff69f75278f98092da721c
BLAKE2b-256 checksum
How to use checksums
d1a268fce9567985a478bd44a4f8de3da2470a2d49a9de2a445a742af39ab40a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.5

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

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