Python binding for ThingSpeak API

ThingSpeak is an open source “Internet of Things” application and API to store and retrieve data from things using HTTP over the Internet or via a Local Area Network. With ThingSpeak, you can create sensor logging applications, location tracking applications, and a social network of things with status updates. https://github.com/iobridge/ThingSpeak

This repository is contains Python module that helps in talking to ThingSpeak API.

Say thanks! master: masterbadge develop: developbadge

Contents

Installation

This part of the documentation covers the installation of thingspeak package. The first step to using any software package is getting it properly installed.

Pip Install thingspeak API

To install thingspeak, simply run this simple command in your terminal of choice:

$ pip install thingspeak

If you don’t have pip installed (tisk tisk!), this Python installation guide can guide you through the process.

Get the Source Code

Requests is developed on GitHub, where the code is always available.

You can either clone the public repository:

$ git clone git@github.com:mchwalisz/thingspeak.git

Or, download the tarball:

$ curl -OL https://github.com/mchwalisz/thingspeak/tarball/master
  # optionally, zipball is also available (for Windows users).

Once you have a copy of the source, you can embed it in your own Python package, or install it into your site-packages easily:

$ python setup.py install

Basic usage

Command line

It is possible to view the channel directly:

$ thingspeak -q -r 2 9
{
  "channel": {
    "created_at": "2010-12-14T01:20:06Z",
    "description": "Netduino Plus connected to sensors around the house",
    "field1": "Light",
    "field2": "Outside Temperature",
    "id": 9,
    "last_entry_id": 9680334,
    "latitude": "40.44",
    "longitude": "-79.9965",
    "name": "my_house",
    "updated_at": "2016-02-09T20:11:45Z"
  },
  "feeds": [
    {
      "created_at": "2016-02-09T20:11:31Z",
      "entry_id": 9680333,
      "field1": "199",
      "field2": "29.978768577494691"
    },
    {
      "created_at": "2016-02-09T20:11:45Z",
      "entry_id": 9680334,
      "field1": "213",
      "field2": "29.723991507430998"
    }
  ]
}

Python interface

Or through Python interface:

>>> import thingspeak
>>> ch = thingspeak.Channel(9)
>>> ch.get({'results': 2})
u'{"channel":{"id":9,"name":"my_house",
"description":"Netduino Plus connected to sensors around the house",
"latitude":"40.44","longitude":"-79.9965",
"field1":"Light","field2":"Outside Temperature",
"created_at":"2010-12-14T01:20:06Z",
"updated_at":"2016-02-09T20:13:45Z","last_entry_id":9680342},
"feeds":[
{"created_at":"2016-02-09T20:13:30Z","entry_id":9680341,
"field1":"199","field2":"29.554140127388536"},
{"created_at":"2016-02-09T20:13:45Z","entry_id":9680342,
"field1":"193","field2":"27.855626326963908"}
]}'

For valid parameters refer to https://mathworks.com/help/thingspeak/channels-and-charts.html

Changelog

v1.0.0

Warning

  • read_key and write_key have been replaced with api_key

    The user needs to decide which key should be used. The change is inline with thingspeak API design.

  • Upated examples
  • Added tests, using vcrpy to store http responses.
  • Switched to use poetry for deployment and requirements management

v0.4.0

  • Added thingspeak.get_field()
  • Added examples
  • Added timeout option

v0.3.6

  • First releases

v0.1.1

  • Original version of thingspeak library from @bergey

API

class thingspeak.Channel(id, api_key=None, fmt='json', timeout=None, server_url='https://api.thingspeak.com')[source]

ThingSpeak channel object

get(options=None)[source]

Get a channel feed.

get-a-channel-feed

get_field(field=None, options=None)[source]

Get particular field

get-channel-field-feed

get_field_last(field=None, options=None)[source]

To get the age of the most recent entry in a channel’s field feed

get-channel-field-feed field_last_data

get_last_data_age(field=None, options=None)[source]

Get last result from particular field in text format

get-channel-field-feed field_last_data_age

update(data)[source]

Update channel feed.

update-channel-feed

view()[source]

View a Channel

view-a-channel

Warning

This is a complete redesign of the library as compared to v0.1.1. Previous version is available in https://github.com/bergey/thingspeak and is no longer maintained.

To install old version you can still use:

pip install thingspeak==0.1.1

Indices and tables