Itron/Actaris IFLAG和Corus协议的Python库
iflag的Python项目详细描述
iflag公司
用于Itron/Actaris IFLAG和Corus协议的Python库
安装
仅通过pip、python 3.6+安装
pip install iflag
关于
iflag是一个专注于使用iflag或向设备读写数据的库 康力斯协议。主要是Itron/Actaris气体体积转换器。沟通结束了 TCP/IP协议
特点
这个库现在只专注于使用Corus协议的单地址模式(SAM) 访问数据。不支持I-FLAG的SEVC-D参数。在
- 读取参数
- 写入参数
- 读取数据库(日志),尚未实现事件日志
使用
- 在
不同的固件版本对每个参数有不同的ID。但是 参数_id_map总是在id
在0x5e
上。 所以映射应该事先知道,或者应该在之前从设备中读取 读取更多值。在 - 在
不同的固件版本也有不同的数据库记录布局。你需要 提供数据库对于您要读取的仪表的外观的映射。 不提供默认映射,因为它会推断 一些价值观。在
您应该创建如下映射:
Dict[str, Dict[int, List[DatabaseRecordParameter]]]
interval
是数据库,52
是数据库记录的长度。一份清单DatabaseRecordParameter
按它们在数据库记录中出现的顺序 将使字节转换成python值成为可能。在例如:
在
{"interval":{52:[DatabaseRecordParameter(name="record_duration",data_class=data.Byte),DatabaseRecordParameter(name="status",data_class=data.Byte),DatabaseRecordParameter(name="end_date",data_class=data.Date),DatabaseRecordParameter(name="consumption_interval_unconverted",data_class=data.Word,affected_by_pulse_input=True,),DatabaseRecordParameter(name="consumption_interval_converted",data_class=data.ULong,affected_by_pulse_input=True,),DatabaseRecordParameter(name="counter_interval_unconverted",data_class=data.Word,affected_by_pulse_input=True,),DatabaseRecordParameter(name="counter_interval_converted",data_class=data.ULong,affected_by_pulse_input=True,),DatabaseRecordParameter(name="temperature_interval_minimum",data_class=data.Float1),DatabaseRecordParameter(name="temperature_interval_maximum",data_class=data.Float1),DatabaseRecordParameter(name="temperature_interval_average",data_class=data.Float1),DatabaseRecordParameter(name="pressure_interval_minimum",data_class=data.Float2),DatabaseRecordParameter(name="pressure_interval_maximum",data_class=data.Float2),DatabaseRecordParameter(name="pressure_interval_average",data_class=data.Float2),DatabaseRecordParameter(name="flowrate_unconverted_interval_minimum",data_class=data.Float3,affected_by_pulse_input=True,),DatabaseRecordParameter(name="flowrate_unconverted_interval_maximum",data_class=data.Float3,affected_by_pulse_input=True,),DatabaseRecordParameter(name="flowrate_converted_interval_minimum",data_class=data.Float3,affected_by_pulse_input=True,),DatabaseRecordParameter(name="flowrate_converted_interval_maximum",data_class=data.Float3,affected_by_pulse_input=True,),DatabaseRecordParameter(name="none_data_1",data_class=data.Null4),DatabaseRecordParameter(name="flowrate_unconverted_interval_average",data_class=data.Float3,affected_by_pulse_input=True,),DatabaseRecordParameter(name="flowrate_converted_interval_average",data_class=data.Float3,affected_by_pulse_input=True,),DatabaseRecordParameter(name="start_date",data_class=data.Date),DatabaseRecordParameter(name="none_data_2",data_class=data.Null2),]}}
- 很高兴知道:由于内存限制,有几种不同的浮点格式
协议和设备。在Python中,所有float都作为
decimal.Decimal
来处理 没有浮点舍入错误。在
读取参数:
``Python
从iflag import CorusClient 从iflag.数据导入字符串,索引 从iflag.parse文件导入IFlagParameter 从十进制导入十进制
客户端=CorusClient.with\u-tcp\u传输(地址=(“本地主机”,4000))
读取单个值
在client.read_参数([IFlagParameter(id=0x5e,data_class=CorusString)])
{0x5e: "FL_b0040"}
读取多个值
在client.read_参数( [ IFlagParameter(id=0x5e,data_class=CorusString), IFlagParameter(id=48,data_class=Index)时, IFlagParameter(id=49,data_class=Index) ] )在
^{pr2}${0x5e: "FL_b0040", 48: Decimal("234567.982"), 49: Decimal("222222.982")}
读取数据库
fromiflagimportCorusClientfromdatetimeimportdatetime,timedeltaclient=CorusClient.with_tcp_transport(address=('localhost',4000),database_layout=MY_DATABASE_LAYOUT)client.read_database(database='interval',start=datetime.now(),stop=(datetime.now()-timedelta(hours=4)))
- 在读取数据库时,您需要知道
input_pulse_weight
。如果不是的话 启动时在客户端上设置或在read_database
调用上设置客户端将读取它 自动从仪表上。在
变更日志
这个项目的所有显著变化都将记录在这个文件中。在
格式基于Keep a Changelog, 这个项目遵循Semantic Versioning。在
[未发布]
添加
更改
已弃用
移除
固定
安全
[1.0.1]-2020年10月7日
固定
- 由于对文档的解释错误,未正确解析。在
[1.0.0]-2020年10月7日
更改
- 因为不同的康力斯固件版本有不同的参数ID和不同的 数据数据库布局库被重写为不那么固执己见,可以使用 所有的固件。这意味着用户需要知道什么ID代表什么数据和 它是如何解释的,以及它们将要读取的数据库是如何结构化的。在
[0.2.0]-2020-01-14
移除
- 删除了内部会话处理,因为它是优化运行多个操作的方式
一个接一个。现在您需要在
开始和
client.shutdown()
完成后。在
[0.1.2]-2020-01-14
更改
- 在分析不同数据库的配置时使用分离值标识,以便 例如,可以知道平均值是月平均值还是小时平均值。在
[0.1.1]-2020-01-08
已修复
- 固定误差设置.py列出了错误的依赖关系。(attr代替attrs)
[0.1.0]-2020-01-08[猛拉]
添加
- 向康力斯设备读写数据的初步实现。在
- 项目
标签: