Skip to main content

A pluggable system to receive and transmit bluetooth events from the Tilt Hydrometer

Project description

Tilty

Coverage Status PyPI version Docker Pulls

A python module and CLI to capture and emit events from your tilt hydrometer

I've been unhappy with the quality/inconsistency of what I've seen out there in terms of random scripts that capture. No tests, no pluggable emitters, hard to find, etc.

The tilt essentially broadcasts iBeacon packets to send out a uuid (which type of tilt it is), a major (the temp in F), and a minor (the specific gravity).

This will capture those whenever theyre transmitted and emit them to a backend of your choosing so that you can graph it over time asynchronously.

The Tilt supports writing to a google doc which you could use with something like IFTTT or Zapier, but this is much lighter and lets you decide how you want to push that out with a pluggable backend system.

Supported Emitters

  • Webhooks
  • InfluxDB
  • Datadog (dogstatsd)

Usage

Generate Config

$ cat <<EOF >config.ini
[general]
sleep_interval = 1

# Generic application/json example
[webhook]
url = http://www.foo.com
headers = {"Content-Type": "application/json"}
payload_template = {"color": "{{ color }}", "gravity": {{ gravity }}, "temp": {{ temp }}, "timestamp": "{{ timestamp }}"}
method = POST

# Brewstat.us example
[webhook]
url = https://www.brewstat.us/tilt/0yjRbGd2/log
headers = {"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"}
payload_template = {"Color": "{{ color }}", "SG": {{ gravity }}, "Temp": {{ temp }}, "Timepoint": "{{ timestamp }}"}
method = POST

[influxdb]
url = influxdb.corp.com
port = 80
database = tilty
gravity_payload_template = {"measurement": "gravity", "tags": {"color": "{{ color }}"}, "fields": {"value": {{ gravity }}}}
temperature_payload_template = {"measurement": "temperature", "tags": {"color": "{{ color }}"}, "fields": {"value": {{ temp }}}}

[datadog]
# Note: make sure that the dd agent has DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true
host = statsdhost.corp.com
port = 8125
EOF

Run

$ tilty
$ # Or from docker ( generate config into $cwd/config/config.ini )
$ docker run -it \
  -v $(pwd)/config:/etc/tilty \
  --net=host \
  myoung34/tilty:latest \
  -r --config-file /etc/tilty/config.ini

Installation

$ git clone https://github.com/myoung34/tilty
$ pip install -e .

Development

$ docker run -it -v $(pwd):/src -w /src --entrypoint /bin/sh python:3.7-alpine
$ apk add -U openssl-dev alpine-sdk libffi-dev python3-dev py3-bluez bluez-dev
$ pip3 install poetry
$ poetry install
$ poetry run tox

Functional Development

To test locally (and without using my tilty): I use iBeacon on android and set:

  • UUID to one of the ones listed in here
  • Major to a temperature in F
  • Minor to an SG*1000

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Tilty-0.3.3.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Tilty-0.3.3-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file Tilty-0.3.3.tar.gz.

File metadata

  • Download URL: Tilty-0.3.3.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for Tilty-0.3.3.tar.gz
Algorithm Hash digest
SHA256 ed1d6e8cf0f0aec3ddc7adddfbe345f209e0102111c3b73b261d2d4109944597
MD5 b122ec862f2bf5d78cc018f728c92122
BLAKE2b-256 87a50602e6f089d534887f9af1e87a27554df4acf07834b653886e7f9e7717e3

See more details on using hashes here.

File details

Details for the file Tilty-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: Tilty-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for Tilty-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 deeebe84f769457e6ac83c89bc22f8adc6a986b1085d2395047cd5b0f72001bd
MD5 41f7daea49cf403ad262d51eb1730394
BLAKE2b-256 209c7daf10e2cbef50b8c2bdc935a547b62cd2837129a6310d9fe1db04315f0d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page