欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > DuodooBMS源码解读之 odoo_phoenix_alarm模块

DuodooBMS源码解读之 odoo_phoenix_alarm模块

2025/2/22 18:44:55 来源:https://blog.csdn.net/weixin_38708145/article/details/145788074  浏览:    关键词:DuodooBMS源码解读之 odoo_phoenix_alarm模块

Odoo18 扩展模块声光报警器用户使用手册

一、模块概述

本扩展模块是基于 Odoo18 原生系统进行开发的,主要用于实现与上位声光报警设备的通讯功能。通过该模块,用户可以方便地向设备发送指令,控制设备的声音、灯光等操作。本手册将详细介绍该扩展模块的功能及使用方法。

二、模块功能介绍

(一)设备连接功能

模块提供了连接到指定上位声光报警设备的功能,用户需要输入设备的 IP 地址和端口号,模块将尝试与设备建立连接。

(二)指令发送功能

模块预设了一些指令,如打开声音和灯光、关闭声光、音量调为 1 级等,用户可以根据需要选择相应的指令发送给设备,并且可以接收到设备的响应信息。

(三)界面显示功能

在 Odoo 的看板视图中,用户可以清晰地看到指令的相关信息,包括指令名称、操作代码等,方便用户进行操作。

三、操作步骤

(一)设备信息配置

  1. 进入设备信息配置页面
    • 登录 Odoo18 系统,进入相关模块的主界面。
    • 在左侧导航栏中找到“Phoenix Audible Address”(上位声光报警设备地址)模块。
  2. 配置设备信息
    • 在设备信息列表中,找到“指定声光设备地址”对应的记录,如果没有则点击“创建”按钮新建一条记录。
    • 在记录的编辑页面中,填写或确认以下信息:
      • 设备名称:默认为“指定声光设备地址”,可根据实际情况修改。
      • 设备地址(IP):输入上位声光报警设备的 IP 地址,默认为“192.168.0.100”。
      • 接口端口:输入设备的端口号,默认为“8101”。
      • 启用:勾选该选项表示启用该设备记录。
      • 公司:选择该设备所属的公司。
    • 点击“保存”按钮保存配置信息。

(二)查看指令信息

  1. 进入指令看板视图
    • 在左侧导航栏中找到“485 通讯协议指令集”对应的看板视图。
  2. 查看指令信息
    • 在看板视图中,会显示一系列的指令卡片,每个卡片包含指令的相关信息,如指令名称、操作代码等。
    • 将鼠标悬停在卡片上,可以查看更详细的信息。

(三)发送指令

  1. 选择要发送的指令
    • 在指令看板视图中,找到需要发送的指令卡片。
  2. 点击“下发指令”按钮
    • 在指令卡片上,点击“下发指令”按钮,该按钮图标为“fa-tags”。
  3. 指令发送过程及结果
    • 点击按钮后,系统会自动获取之前配置的设备信息,尝试与设备建立连接。
    • 如果连接成功,系统将发送相应的指令给设备,并在控制台输出“已发送指令: [指令代码]”的信息。
    • 设备接收到指令后会返回响应信息,系统会接收并在控制台输出“接收到设备的响应:[响应代码]”的信息。
    • 如果在发送指令过程中出现异常,系统会在控制台输出“发送指令时发生异常: [异常信息]”的信息。
    • 无论指令发送是否成功,最终系统都会关闭与设备的连接,并在控制台输出“连接已关闭”的信息。

(四)代码实现原理(供开发者参考)

1. 连接设备

connect_to_device 函数中实现了与设备的连接功能,代码如下:

def connect_to_device(ip, port):"""连接到设备:param ip: 设备的 IP 地址:param port: 设备的端口号:return: 连接对象或 None"""try:# 创建 Socket 对象socket_server = socket.socket()# 绑定 IP 地址和端口socket_server.bind((ip, port))# 监听端口socket_server.listen(1)print(f"正在监听 {ip}:{port}...")# 等待客户端连接conn, address = socket_server.accept()print(f"接收到了客户端的连接,客户端的信息是:{address}")return conn, socket_serverexcept Exception as e:print(f"连接设备时发生异常: {e}")return None, None

该函数首先创建一个 Socket 对象,然后绑定指定的 IP 地址和端口号,开始监听该端口,等待客户端连接。如果连接成功,返回连接对象和 Socket 服务器对象;如果出现异常,返回 None

2. 发送指令

send_command_to_device 函数中实现了向设备发送指令的功能,代码如下:

def send_command_to_device(conn, command):"""向设备发送指令:param conn: 连接对象:param command: 要发送的指令"""try:# 发送指令conn.send(command)print(f"已发送指令: {command.hex()}")# 接收设备的响应response = conn.recv(1024)if response:print(f"接收到设备的响应:{response.hex()}")except Exception as e:print(f"发送指令时发生异常: {e}")

该函数接收一个连接对象和要发送的指令作为参数,首先将指令发送给设备,然后接收设备的响应信息并输出。如果发送或接收过程中出现异常,会输出异常信息。

3. 发送指令的主函数

send_value_to_socket 函数中实现了获取设备信息、连接设备、发送指令的完整流程,代码如下:

def send_value_to_socket(self):# 设备的 IP 地址和端口号device_obj = self.env['phoenix.audible.address']device_record = device_obj.search([('name', '=', '指定声光设备地址')])ip = device_record.ipport = int(device_record.port)# 连接到设备conn, socket_server = self.connect_to_device(ip, port)if conn and socket_server:try:# 发送指令self.send_command_to_device(conn, bytes.fromhex(self.name))except KeyboardInterrupt:print("用户手动中断程序")finally:# 关闭连接conn.close()socket_server.close()print("连接已关闭")

该函数首先从数据库中获取设备的 IP 地址和端口号,然后调用 connect_to_device 函数连接设备,如果连接成功,调用 send_command_to_device 函数发送指令,最后关闭连接。

四、注意事项

  1. 确保设备的 IP 地址和端口号配置正确,否则无法与设备建立连接。
  2. 在发送指令时,要确保设备处于正常工作状态,否则可能无法接收到设备的响应信息。
  3. 如果在使用过程中出现异常信息,可根据控制台输出的异常信息进行排查和解决。

五、常见问题及解决方法

(一)无法连接到设备

  • 问题描述:点击“下发指令”按钮后,控制台输出“连接设备时发生异常”的信息。
  • 可能原因
    • 设备的 IP 地址或端口号配置错误。
    • 设备未开启或网络不通。
  • 解决方法
    • 检查设备的 IP 地址和端口号是否正确,可通过设备的管理界面或相关文档获取正确信息。
    • 检查设备是否开启,网络是否正常。

(二)发送指令无响应

  • 问题描述:控制台输出“已发送指令”信息,但没有接收到设备的响应信息。
  • 可能原因
    • 设备未正确配置或出现故障。
    • 指令格式错误。
  • 解决方法
    • 检查设备的配置是否正确,可参考设备的说明书进行配置。
    • 检查指令格式是否正确,确保发送的指令符合设备的要求。

六、总结

本扩展模块为用户提供了方便的上位声光报警设备控制功能,通过简单的配置和操作,用户可以轻松地向设备发送指令,实现对设备的控制。在使用过程中,用户需要注意设备信息的配置和设备的状态,遇到问题时可根据本手册中的常见问题及解决方法进行排查和解决。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词