Skip to content
Module to get/extract cavelink data, written in Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cavelink
.gitignore
.travis.yml
LICENSE
README.rst
_config.yml
setup.py

README.rst

README

Build Status

About Cave-Link

Cave-link is a radio device able to transmit data from a cave. You can add some measurement sensors. The data is consolidated on creator’s server (database) and displayed through a webpage where the data is dump to, as this example shows.

If you own a Cavelink, you should ask Felix Ziegler to get your specific URL, for the sensors you have.

If you know nothing about Cavelink system, the official website is the good place to start. Or maybe, you can also begin with Wikipedia.

What is this repository for?

This python module gather the data by parsing the webpage. You will then be able to display the data on your dashboard or store it to your own database. I also provide code samples to better explain this -see directory ‘samples’-.

How do I get set up?

To ensure a proper setup, I recommend the use of virtualenv (but optionnal).

sudo pip install cavelink

Then you can use the module that way:

from cavelink import cavelink
webpage="http://www.cavelink.com/cl/da.php?s=142&g=10&w=1&l=10"
nb_rows = 5
cvlnk = cavelink.Sensor(webpage, nb_rows)
motiers = cvlnk.getJSON(datefmt='human')  # or datefmt='epoch'
print(motiers)

You will get a the measurements and the sensor details formatted in JSON.

{
   "measures": {
      "22.12.2018 16:00": 6.3,
      "22.12.2018 16:30": 5.67,
      "22.12.2018 17:00": 6.0,
      "22.12.2018 17:30": 5.45,
      "22.12.2018 18:00": 5.87
   },
   "sensor": {
      "group": "10",
      "number": "1",
      "station": "142",
      "unit": "C"
   }
}

You can also fetch additionnal information, also available from the page. Please note that the following data is provided in JSON object as well. This is:

>>> print(cvlnk.station)
>>> print(cvlnk.group)
>>> print(cvlnk.number)
>>> print(cvlnk.unit)

To parse the measures, you can use this sample:

import json

# convert the json-formatted string to a python dictionnay
motiers_json = json.loads(motiers)

# parse measures
for timestamp in motiers_json['measures']:
   print('%s -> %s %s' % (timestamp,
                        motiers_json['measures'][timestamp],
                        motiers_json['sensor']['unit']))

Contribution guidelines

Feel free to submit issue or better, some pull requests !

Contributors

  • Sébastien Pittet (main contributor)
  • Loïc, Bruno and other friends at exoscale.com

Who do I talk to?

sebastien at pittet dot org

You can’t perform that action at this time.