Skip to main content

WirelessSensorTags Build Status Coverage Status PyPI - Python Version PyPi - Version

A simple python wrapper library for Wireless Sensor Tag platform (http://wirelesstag.net).

Supports getting data for registered by end user sensor tags. wirelesstag.net account credentials are needed to use this lib. Enabling tags sharing is not required.

Verified with:

  • 13-bit motion/temperature/humidity tags (type 13)
  • Water/Moisture tags (type 32)
  • ALS Pro tag (type 26)
  • PIR Kumo sensor (type 72)

Installation

pip3 install wirelesstagpy

Development notes

See apidoc.html for API details.

Usage

Fetch all tags

import wirelesstagpy

api = wirelesstagpy.WirelessTags(username='login_email', password='your_password')
tags = api.load_tags()
for (uuid, tag) in tags.items():
    print('Loaded tag: {}, temp: {}, humidity: {} probe taken: {}'.format(
                tag.name, tag.temperature,
                tag.humidity, tag.time_since_last_update))

Install custom push notifications

Wireless Sensor Tags platforms allows to setup custom url calls for set of specific events.

import wirelesstagpy

api = wirelesstagpy.WirelessTags(username='login_email', password='your_password')
notifications = [
    NotificationConfig('update', {
        'url': 'http://some_local_ip/update_tags',
        'verb': 'POST'
        'disabled': False,
        'nat': True
    })
]

# install notification for tag with id=1 only
# use it you have only one tag manager
succeed = api.install_push_notification(1, notifications, False)

# if you have multiple tag managers you need specify its 'mac' stored in each tag as following
succeed = api.install_push_notification(sensor.tag_id, notifications, False,
                                        sensor.tag_manager_mac)

Monitor push events from cloud

Wireless Sensor Tags platform allows to monitor state of sensors with push notification on change right from cloud.

import wirelesstagspy

api = wirelesstagpy.WirelessTags(username='login_email', password='your_password')
def callback(tags_spec, events_spec):
    for (uuid, tag) in tags_spec.items():
        if uuid in events_spec:
            events = events_spec[uuid]
            print("triggered events: {}".format(events))
        print("updated tag: {}".format(tag))

# starts long running thread with getting updates from cloud immidiately when change happens.
# it is not a polling, but rather a similar to WebSockets get update logic
api.start_monitoring(callback)

Arm/Disarm sensor monitoring for specific event

Supported events include: motion, temperature, humidity, light

import wirelesstagpy

api = wirelesstagpy.WirelessTags(username='login_email', password='your_password')

# arm humidity monitoring for tag with id 1,
# returned instance is updated SensorTag
sensor = api.arm_humidity(1)

# Disarm it
sensor = api.disarm_humidity(1)

# Specify tag manager if you have multiple tag managers
sensor = api.arm_humidity(sensor.tag_id, sensor.tag_manager_mac)

Working with sensors and binary events

Single tag holds notion of multiple sensors and binary events. Each sensor is entity representing single sensing metric such as temperature, humidity, moisture, light or motion. You can get list of supported sensors and binary events by calling tag.allowed_sensor_types for sensors, tag.supported_binary_events_types for binary events. Also you can query tag on list of supported monitoring conditions that can be represented as switches to be armed/disarmed by calling tag.allowed_monitoring_types.

Handling sensors:

import wirelesstagpy
import wirelesstagpy.constants as CONST

api = wirelesstagpy.WirelessTags(username='login_email', password='your_password')
tags = api.load_tags()

# get temperature sensor value for tag
for (uuid, tag) in tags.items():
    sensor = tag.sensor[CONST.SENSOR_TEMPERATURE]
    if sensor is not None:
        print('{} temperature: {}'.format(tag.name, sensor.value))

Handling binary events:

import wirelesstagpy
import wirelesstagpy.constants as CONST

api = wirelesstagpy.WirelessTags(username='login_email', password='your_password')
tags = api.load_tags()

# get motion binary event state for each tag
for (uuid, tag) in tags.items():
    if CONST.EVENT_MOTION in tag.supported_binary_events_types:
        event = tag.event[CONST.EVENT_MOTION]
        print('tag {} event state: {}'.format(tag.name, event.is_state_on))

Use binary events to build custom push notifications configurations

import wirelesstagpy
import wirelesstagpy.constants as CONST

api = wirelesstagpy.WirelessTags(username='login_email', password='your_password')
tags = api.load_tags()
tag = tags['uuid-of-tag-in-question']
event = tag.event[CONST.EVENT_MOISTURE]
if event is not None:
    configs = event.build_notifications('http://path_to_post', tag.tag_manager_mac)
    # install it for any tags of tag manager
    succeed = api.install_push_notification(0, configs, True,
                                            tag.tag_manager_mac)

Disclaimer

"Wireless Sensor Tags", "KumoSensor" and "Kumostat" are trademarks of Cao Gadgets LLC, see www.wirelesstag.net for more information.

I am in no way affiliated with Cao Gadgets LLC.

See LICENSE

Metadata

Release files for wirelesstagpy 0.8.1

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

Source distribution (sdist)

Source distribution for wirelesstagpy 0.8.1
File Size Uploaded
wirelesstagpy-0.8.1.tar.gz 21.6 kB Details

Built distribution (wheel)

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

Total release size: 41.0 kB

Release files / wirelesstagpy-0.8.1.tar.gz

Download URL wirelesstagpy-0.8.1.tar.gz
Size 21.6 kB
Tags Source
SHA-256 checksum
How to use checksums
025f897c46f54b76b3fb0ca861f4176389edca96f0d49131732e2796c0e10aa9
BLAKE2b-256 checksum
How to use checksums
f6baffa6588000be0319adf3750273c150e48f5a15e167839867e277401fa68a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/58.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.4

Release files / wirelesstagpy-0.8.1-py3-none-any.whl

Download URL wirelesstagpy-0.8.1-py3-none-any.whl
Size 19.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8e7e1fcaaa56b92cb33898b983e34a536ed793d20b48c62adf7cca7c901a5eab
BLAKE2b-256 checksum
How to use checksums
e0d1084da3d301f7895a0271d408a3233c9065c712d0f29aff4b0f9df8789a81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/58.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.4

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

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