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) ] )在

{0x5e: "FL_b0040", 48: Decimal("234567.982"), 49: Decimal("222222.982")}

^{pr2}$

读取数据库

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[猛拉]

添加

  • 向康力斯设备读写数据的初步实现。在

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

推荐PyPI第三方库


热门话题
Java Hibernate@ManyToMany mapping只在一个方向上在数据库中添加记录   java将文件上载到tomcat服务器外部的文件夹   java将摄像头捕获的图像上传到服务器   java如何创建Rest API并为进程添加时间延迟?   springmodulesvalidation0中缺少java注释包。8a源文件   如何在java中打印SOAP头   Spring security中的java自定义消息,包括UserDetailsService实现和异常   java如何使用Htmlunit中的表单数据登录站点   web如何在WildFly上自动运行java文件   java如何从已经使用另一个方法传递的参数的方法中获取返回值?   java我在JFrame上有一个索引越界。setContentPane   java中的循环序列/系列打印   java maven 3 webapp没有要运行的测试吗?   java CORS不允许POST请求   java再次在派生类中的Jackson中添加字段,该字段在基类中被忽略   爪哇坑测试显示仆从由于超时而异常退出   java寻找第10001个素数   java jboss是否更改web应用程序上下文根?