用于二氧化碳数据记录的简单http服务器
co2logserver的Python项目详细描述
co2logserver python包
这个包提供了一个简单的服务器来记录数据。
文档
您可以找到这个包here on on Gitlab的详细文档。
本地安装
通过pip
:
# local user library under ~/.local pip3 install --user . # also install msgpack support pip3 install --user '.[msgpack]'# also install OpenSenseMap support pip3 install --user '.[opensensemap]'
运行
开发
要在开发模式下运行服务器,请在安装后运行:
python3 -m co2logserver
您可能需要添加选项-v -t -d
。
生产
要在生产环境中运行服务器,请使用gunicorn
wsgi服务器例如:
pip3 install --user gunicon
gunicorn co2logserver
配置
您始终可以通过
CO2LOGSERVER_CONFIG
环境变量。查看文件
co2logserver/config_default.py
用于默认设置。
数据管理
要将数据上载到服务器,您可以向
/upload
路径:
Type | ^{ | data example |
---|---|---|
JSON | ^{ | ^{ |
CSV | ^{ | ^{ |
FORM | ^{ | ^{ |
MSGPACK | ^{ | ^{ |
新的数据列将自动添加到数据库中。每一列 名称转换为小写。
身份验证
如果要控制允许谁将数据上载到服务器,则 可以使用内置在 服务器。
设置CO2LOGSERVER_UPLOAD_REQUIRES_AUTH=True
并指定一个或多个psk盐
字符串,例如CO2LOGSERVER_CHECKSUM_SALTS = ["my-super-secret-psk"]
。
默认情况下,服务器只接受包含至少一个头的请求 包含 发送的有效载荷,附带用hashAlgorithm计算的salt(例如md5, SHA1、SHA256等)。
例如,如果要上载json数据
{"time_utc":[43,23],"co2":[1223,2351]}
你的盐串是
my-super-secret-psk
,您的头字段Content-MD5-Salted
b71e91feb2be18ccca019914a1da5b1d
这是
{"time_utc":[43,23],"co2":[1223,2351]}my-super-secret-psk
。
这是一种简单而有效的防止垃圾邮件上传的方法。
Security Note
Note, however, that communication to the server is still unencrypted (only HTTP, not HTTPS). The reason for this is that embedded devices like Arduinos do not have the capabilities for encrypted web traffic. Thus, the sent data including the checksums can theoretically be intercepted and reused to reupload the exact same dataset.
opensensemap上传
使用sensemapi package,
co2logserver
能够将上载的数据重定向到
OpenSenseMap。为了让它工作,一个opensensemap
帐户是必需的,其登录凭据在co2logserver
中设置。
配置。默认配置从
环境变量SENSEMAP_EMAIL
,SENSEMAP_USERNAME
和
SENSEMAP_PASSWORD
。还将中的CO2LOGSERVER_OSEM_UPLOAD
设置为True
。
配置还允许将上载的数据重定向到opensensemap。
config_default.py
包含进一步定制的解释
选项。