用于检查英国能源账单的Web应用程序。
项目描述
Chellow
用于检查具有大量供应和/或高消费的组织在英国电力和天然气账单的Web应用程序。
许可证
Chellow在GPL v3下发布。
简介
Chellow是一个检查英国电力和天然气账单的Web应用程序。它专为高电力消耗的组织设计。软件托管在https://github.com/WessexWater/chellow。
安装
Chellow是一个使用PostgreSQL数据库的Python Web应用程序。要安装Chellow,请按照以下步骤操作
- 安装PostgreSQL 12
- 将PostgreSQL时区设置为'UTC'。
- 创建PostgreSQL数据库:
createdb --encoding=UTF8 chellow
- 设置以下环境变量以配置Chellow
名称 | 默认 | 描述 |
---|---|---|
PGUSER |
postgres |
Postgres用户名 |
PGPASSWORD |
postgres |
Postgres密码 |
PGHOST |
localhost |
Postgres主机名 |
PGPORT |
5432 |
Postgres端口号 |
PGDATABASE |
chellow |
Postgres数据库名称 |
在bash中,可以通过以下方式设置环境变量
export PGUSER=postgres
在Windows中,可以通过以下操作设置环境变量:
set PGUSER=postgres
- 安装Python 3.9(已测试在CPython 3.9.8解释器上)
- 创建虚拟环境:
python3 -m venv venv
- 激活虚拟环境:
source venv/bin/activate
- 安装Chellow:
pip install chellow
- 启动Chellow:
waitress-serve --host=0.0.0.0 --port=8080 --call chellow:create_app
- 现在您应该能够在浏览器中访问
http://localhost:8080/
。您将需要输入用户名和密码。输入管理员用户名admin@example.com
和密码admin
,然后主页应该会显示。从users
页面更改管理员密码。
手动升级Chellow
要将Chellow升级到最新版本,请执行:pip install --upgrade chellow
自动升级Chellow
bash脚本chellow_upgrader.sh将检查Chellow的新版本,如果存在,则停止Chellow,然后进行升级,然后启动Chellow。
与systemd一起使用
将以下文件复制到/etc/systemd/system
目录
并根据需要进行修改。chellow_upgrader.service
使用上面的chellow_upgrader.sh
脚本。然后您可以使用以下命令
- 启动Chellow:
sudo systemctl start chellow
- 使Chellow在启动时运行:
sudo systemctl enable chellow
- 启动Chellow升级器:
sudo systemctl start chellow_upgrader.timer
- 使Chellow升级器在启动时运行:
sudo systemctl enable chellow_upgrader.timer
使用不同的Web服务器
Chellow附带Waitress Web服务器,但也是一个Python WSGI Web应用程序,因此Chellow可以与任何WSGI兼容的应用程序服务器一起使用,例如Gunicorn。应指定的WSGI应用程序是chellow.app
。
入门指南
这是在安装Chellow后设置事项的简要指南。它假设您对英国电力收费有基本的了解。它将指导您添加半小时(HH)计费供应,并为它生成虚拟账单,然后导入实际账单并运行账单检查。
Chellow可以处理非半小时供应以及半小时供应,它还可以处理天然气供应,但我们将使用半小时电力供应作为此示例。
查看Chellow主页
假设您已正确安装Chellow,您应该能够打开浏览器,输入Chellow应用程序的URL,并看到Chellow主页。
用户
在添加任何用户之前,如果您从localhost
访问Chellow,您将具有读写权限。一旦添加了用户,您必须登录为这些用户之一。用户是从“用户”页面添加的。
导入市场域数据
按照/e/mdd_imports
中的说明将市场域数据导入Chellow。
添加HHDC合同
每个供应都必须有一个数据收集器。通过转到“HHDC合同”页面然后点击“添加”链接来添加新的HHDC。
添加MOP合同
每个供应都必须有一个计量操作员。通过转到“MOP合同”页面然后点击“添加”链接来添加新的MOP。目前,只需为MOP输入一个简单的虚拟账单,因此在“脚本”字段中输入
from chellow.utils import reduce_bill_hhs
def virtual_bill_titles():
return ['net-gbp']
def virtual_bill(data_source):
for hh in data_source.hh_data:
bill_hh = data_source.mop_bill_hhs[hh['start-date']]
if hh['utc-is-month-end']:
bill_hh['net-gbp'] = 10
data_source.mop_bill = reduce_bills_hh(data_source.mop_bill_hhs)
添加供应商合同
单击“供应商合同”链接,然后填写“添加合同”表单。在“计费脚本”字段中输入
from chellow.utils import reduce_bill_hhs
def virtual_bill_titles():
return ['net-gbp', 'day-kwh', 'day-gbp', 'night-kwh', 'night-gbp']
def virtual_bill(data_source):
bill = data_source.supplier_bill
for hh in data_source.hh_data:
bill_hh = data_source.supplier_bill_hhs[hh['start-date']]
if 0 < hh['utc-decimal-hour'] < 8:
bill_hh['night-kwh'] = hh['msp-kwh']
bill_hh['night-gbp'] = hh['msp-kwh'] * 0.05
else:
bill_hh['day-kwh'] = hh['msp-kwh']
bill_hh['day-gbp'] = hh['msp-kwh'] * 0.1
bill_hh['net-gbp'] = sum(
v for k, v in bill_hh.items() if k[-4:] == '-gbp')
data_source.supplier_bill = reduce_bill_hhs(
data_source.supplier_bill_hhs)
这将基于日/夜电价生成一个简单的虚拟账单。供应商合同脚本可能比这复杂得多,包括DUoS、TNUoS、BSUoS、RO以及许多其他标准费用。这些将在本指南的后面部分讨论。
现在,不必担心“属性”字段。
添加一个站点
转到主页上的“站点”链接,然后点击“添加”。填写表格并创建站点。
添加一个供应
要向站点添加供应,转到站点页面并点击“编辑”。在页面中间部分有一个“插入电力供应”表单。对于标准电力供应,“来源”是“网络”。确保配置文件类(PC)是“00”,以向Chellow表明这是一个半小时计量的供应。半小时的SSC字段留空,因为它们没有SSC。
供应由一系列时期组成。每个时期都有不同的特性,以捕捉供应的历史。
运行虚拟账单
现在应该可以运行已添加的供应的虚拟账单。转到供应页面并点击“供应商虚拟账单”链接。这将返回显示供应虚拟账单的页面。
当然,消费量为零,因为我们还没有添加任何半小时数据。
添加一些半小时数据
在您创建的供应页面,您会看到一个“通道”链接,旁边有一个“添加”链接。添加一个活动进口通道,将半小时数据附加到。
回到供应页面,您刚刚创建的通道链接将出现。点击此链接并填写添加半小时数据的表格。
如果您重新运行您添加半小时数据的期间虚拟账单,它应该会显示在虚拟账单中。
逐个添加半小时数据很繁琐,因此如果您访问您创建的HHDC合同的页面,您将看到一个“HH数据导入”链接。点击此链接,您将看到一个用于以各种格式批量上传HH数据的表格。Chellow还可以设置从FTP服务器自动导入文件。
合同虚拟账单
要查看供应商合同的虚拟账单,请转到合同页面并遵循虚拟账单链接。
数据结构
- 站点
- 供应
- 供应时期
- 站点
- MOP合同
- DC合同
- 配置文件类
- 进口/出口供应商合同
- 进口/出口Mpan核心
- 进口/出口LLFC
- 进口/出口供应容量
- 进口/出口通道
- 半小时数据
- 供应时期
- 供应商合同(DC和MOP相同)
- 费率脚本
- 批次
- 账单
- 供应
- 登记读取
- 账单
- DNOs(配电网运营商)
- LLFCs(线路损耗系数类别)
一般进口
菜单中有一个名为“一般进口”的链接,它将您带到可以进行批量插入/更新/删除操作(例如站点、供应、LLFC等)的页面,使用CSV文件。
常见任务
合并两个供应
假设有两个供应A和B,您最终只想保留A。步骤如下
- 通过数据库快照备份数据。
- 检查A和B是否有相同的标题数据(LLFC、MTC等)。
- 查看是否有重叠的通道,例如,A和B都有进口kVArh吗?如果有,那么决定保留哪一个。
- 从备份文件加载所需通道的hh数据。首先复制文件,然后编辑掉您不想要的数据,然后进一步编辑文件,以便将其加载到新的供应中。
- 删除供应B。
本地报告
Chellow 内置核心报告,但用户也可以创建自定义报告。报告是用 Python 编写的,通常使用 Jinja2 模板。您可以通过在非核心合同 configuration
中添加 local_reports_id
来显示用户报告的链接。
默认用户
默认用户可以自动分配给来自某些 IP 地址的请求。要将 IP 地址关联到用户,请转到非核心合同 configuration
并在 'properties' 字段中添加类似于以下内容的行
{
'ips': {'127.0.0.1': 'implicit-user@localhost'}
}
注意,多个 IP 地址可以映射到同一用户。
还可以使用 Microsoft Active Directory 通过反向代理服务器验证用户。编辑非核心合同 configuration
并添加类似的内容
{
"ad_authentication": {
"default_user": "readonly@example.com",
"on": true
}
设计决策
为什么不用 +/- 无穷大值作为时间戳?问题是这并不清楚如何将其转换为 Python。所以我们目前使用空值表示无穷大,它在 Python 中自然转换为 None。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分发
chellow-1727274025.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8695bac564fe9fd58d38f1120dc9ef886b5f8efc45aa9562d8633970772085b1 |
|
MD5 | b7e1721cc5d1bc5175f444908ddbac4d |
|
BLAKE2b-256 | 01cd8c93ba59c04fd8d2417aa25e0bc25d0a5a11092c92fa7bab22046f2629a8 |
chellow-1727274025.0.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5e102966ebbf71c4ed29b0edc177a308e16c2ede54ab90d46c06a4975d2825c2 |
|
MD5 | 07e50aa92909e0ce66f97dd1a4faf017 |
|
BLAKE2b-256 | 0b0278c79d4ebb786d484d7f5ff6efc077f5df15d6c6592d8e964cea656cfff2 |