从倾斜比重计接收和传输蓝牙事件的可插拔系统

Tilt的Python项目详细描述


倾斜的

Coverage StatusPyPI versionDocker Pulls

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
导入扫描程序后出现java编译错误   java如何在字符串中查找元音,并在屏幕上打印元音最多的单词?   java Libgdx robovm生成错误   java Eclipse条件断点仅在其他断点之后   java IntelliJ Idea JavaFX调试问题   如果字符串*仅*包含字符集中的*所有*字符,再加上一个可选字符,则匹配java正则表达式   java禁用实体、DTO包上的声纳复制   java如何使用正则表达式获取HTML标记中的字符串数据   使用Enum和billpugh方法的java通用单例   java如何在我的安卓应用程序中建立VPN连接(Cisco IPSec Xauth PSK),而不是通过安卓内置的VPN工具激活它?   JavaWebSphere9:JaxWS在Workmanager中的调用第二次失败   java缺少openfaces树表的js   netbeans Java实体bean没有从数据库中删除行;仅从JTable   java JBoss AS 7.1数据源如何加密密码   批处理文件的替代方案,因为我无法在其中包含java代码   java ArrayList容量大小增加奇怪的行为   多个OneTONE自引用关系的java JPA注释   throttle(intPower)和getSpeed()之间的java差异:UML图中的int?   火花和值和计数不同值Java