从倾斜比重计接收和传输蓝牙事件的可插拔系统
Tilt的Python项目详细描述
倾斜的
python模块和CLI,用于从tilt hydrometer捕获和发出事件
我对我所看到的随机脚本的质量/不一致性很不满意。 没有测试,没有可插拔的发射器,很难找到等等
tilt实际上是广播iBeacon包来发送uuid(哪种类型的tilt)、major(F中的temp)和minor(比重)。在
这将在每次传输它们时捕获它们,并将它们发送到您选择的后端,以便您可以异步地绘制它。在
Tilt支持写入google文档,您可以使用IFTTT或Zapier之类的东西,但这要轻得多,可以让您决定如何使用可插拔的后端系统来实现这一点。在
支撑发射器
- 标准输出
- 网络挂钩
- 泛型(发送到任何类型的终结点)
- 在美国布鲁斯特(以下示例)
- BrewersFriend(示例如下)
- 流入DB(1.8+)
- 数据狗(dogstatsd)
- SQLite公司
- Google Sheets(实验/高级)
- 普罗米修斯(通过pushgateway)
使用
生成配置
$ cat <<EOF >config.ini
[general]
sleep_interval = 2 # defaults to 1
logging_level = DEBUG # defaults to INFO
logfile = /var/log/foo.log # defaults to stdout
# stdout example
[stdout]
[google]
# This is advanced. TODO: write up how to provide an access/refresh token
refresh_token = 11111111111111111111111111
client_id = 111111-1111.apps.googleusercontent.com
client_secret = 1111111111111111
spreadsheet_id = 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms
# SQLite example
[sqlite]
file = /etc/tilty/tilt.sqlite
# Generic application/json example
[webhook]
url = http://www.foo.com
headers = {"Content-Type": "application/json"}
payload_template = {"color": "{{ color }}", "gravity": {{ gravity }}, "mac": "{{ mac }}", "temp": {{ temp }}, "timestamp": "{{ timestamp }}"}
method = POST
delay_minutes = 1 # cause a minimum delay between webhook emits
# 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
# Brewers Friend example
[webhook]
url = https://log.brewersfriend.com/tilt/3009ec67c6d81276185c90824951bd32bg
headers = {"Content-Type": "application/x-www-form-urlencoded"}
payload_template = {"SG": {{ gravity }}, "Temp": {{ temp }}, "Color": "{{ color }}"}
method = POST
# Brewfather custom stream example
[webhook]
url = https://log.brewfather.net/stream?id=aTHF9WlXKrAb1C
headers = {"Content-Type": "application/json"}
payload_template = {"name": "Tilt {{ color }}", "gravity": {{ gravity }}, "gravity_unit": "G", "temp": {{ temp }}, "temp_unit": "F"}
method = POST
[influxdb]
url = http://localhost:8086
verify_ssl = True # defaults to False, only used if url is https://
bucket = tilty
org = Mine
token = mytoken # if using influx cloud
token = myuser:password # if using self hosted
gravity_payload_template = gravity,color={{ color }},mac={{ mac }} sg={{ gravity }}
temperature_payload_template = temperature,color={{ color }},mac={{ mac }} temp={{ temp }}
[datadog]
# Note: make sure that the dd agent has DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true
host = statsdhost.corp.com
port = 8125
[prometheus]
url = localhost:80
gravity_gauge_name = tilty_gravity_g
temp_gauge_name = tilty_temperature_f
labels = {"color": "{{ color }}", "mac": "{{ mac }}"}
job_name = tilty
EOF
运行
^{pr2}$安装
$ git clone https://github.com/myoung34/tilty
$ pip install -e .
发展
$ 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
功能开发
本地测试(不使用我的tilty):我在android上使用iBeacon并设置:
- UUID到here中列出的其中一个
- 大到华氏温度
- 小到SG*1000
- 项目
标签: