Modbus TCP协议介绍(ModbusTCP)
文章目录
- 理解Modbus TCP协议(Understanding Modbus TCP Protocol)
- 简介(Introduction to Modbus TCP)
- 历史背景(Historical Context)
- 关键特性(Key Features)
- Modbus TCP协议结构(Modbus TCP Protocol Structure)
- 帧格式(Frame Format)
- MBAP头部
- **Transaction Identifier (事务标识符)**
- **Protocol Identifier (协议标识符)**
- **Length (长度)**
- **Unit Identifier (单元标识符)**
- PDU部分
- 示例
- 请求帧示例
- 响应帧示例
- 数据模型(Data Model)
- 离散输入
- 线圈
- 输入寄存器
- 保持寄存器
- 通信过程(Communication Process)
- 建立连接(Establishing a Connection)(从设备默认监听端口502)
- 请求与响应(Request and Response)
- 实际实施(Practical Implementation)
- 设置Modbus TCP服务器(Setting Up a Modbus TCP Server)
- 注意:实际使用中,我们通常无需编写 modbus TCP 服务端代码,直接采购的支持 Modbus TCP 协议的设备出厂时就已包含
- 与Modbus TCP客户端通信(Communicating with a Modbus TCP Client)
- Modbus TCP的应用(Applications of Modbus TCP)
- 挑战与解决方案(Challenges and Solutions)
- 结论(Conclusion)
- 其他
- 关于Modbus TCP的“interoperability”(互操作性)
- 关于 modbus TCP 客户端服务端的模拟通信
理解Modbus TCP协议(Understanding Modbus TCP Protocol)
The Modbus TCP protocol is an essential communication standard that serves as a backbone(支柱;脊梁) for industrial(工业) and automation(自动化) systems worldwide.
Modbus TCP协议是一种至关重要的通信标准,它是全球工业和自动化系统的支柱。
It builds upon the legacy(遗留的;已停产的) Modbus protocol, extending it over TCP/IP networks to enable communication between devices on modern Ethernet networks.
它基于传统的Modbus协议,通过扩展到TCP/IP网络上,使得设备能够在现代以太网网络上进行通信。
This article delves into the technical intricacies, applications, and implementation examples of Modbus TCP, providing a comprehensive guide for engineers, developers, and enthusiasts(爱好者) in the field of industrial automation.
本文深入探讨了Modbus TCP的技术细节、应用和实现示例,为工业自动化领域的工程师、开发人员和爱好者提供了全面的指南。
简介(Introduction to Modbus TCP)
历史背景(Historical Context)
Modbus, originally developed by Modicon in 1979, is a communication protocol designed for industrial devices to communicate over serial lines(串行线路).
Modbus最初由Modicon在1979年开发,是一种为工业设备设计的通过串行线进行通信的通信协议。
With the advent(出现) of Ethernet and TCP/IP, the protocol was extended to operate over these networks as Modbus TCP, making it more relevant(相关的) in the context of modern industrial systems.
随着以太网和TCP/IP的出现,该协议被扩展为在这些网络上作为Modbus TCP运行,使其在现代工业系统的背景下更加相关。
关键特性(Key Features)
-
Simplicity and Openness: Modbus TCP inherits its predecessor’s(前身;前任) simplicity, making it easy to understand, implement, and integrate(整合;集成).
简单性和开放性:Modbus TCP继承了其前身的简单性,使其易于理解、实现和整合。 -
Scalability: It can be scaled(扩展) from small, single-processor devices to complex networked(联网的) systems.
可扩展性:它可以从小型的单处理器设备扩展到复杂的网络系统。 -
Interoperability: Being an open standard, it ensures interoperability(互操作性) among devices from different manufacturers(生产商).
互操作性:作为一个开放标准,它确保了来自不同制造商的设备之间的互操作性。
Modbus TCP协议结构(Modbus TCP Protocol Structure)
帧格式(Frame Format)
A Modbus TCP frame consists of a 7-byte header and a data section. The header includes fields for transaction(事务) identifier(标识符), protocol identifier, length, and unit identifier, facilitating(促进) the management of requests and responses over TCP/IP.
Modbus TCP帧由一个7字节的头部和一个数据部分组成。头部包含事务标识符、协议标识符、长度和单元标识符等字段,便于在TCP/IP上管理请求和响应。
Modbus TCP的请求帧和响应帧在帧格式上是相同的。它们都包括一个MBAP头(Modbus Application Protocol header)和一个PDU(Protocol Data Unit)部分。MBAP头用于TCP/IP通信,而PDU部分与传统的Modbus RTU/ASCII帧的PDU相同。
MBAP头部
MBAP头部由以下几个部分组成:
Transaction Identifier (事务标识符)
2字节,用于协调请求和响应之间的事务处理。客户端发起的每个请求都有一个唯一的事务标识符,服务器的响应会使用相同的标识符。
Protocol Identifier (协议标识符)
2字节,用于识别上层协议。对于Modbus TCP来说,这个值是0。
Length (长度)
2字节,表示接下来的单元标识符、功能码和数据的总字节数。
Unit Identifier (单元标识符)
1字节,通常用于识别远程服务器,特别是在串行线路上通过网关连接到多个Modbus设备时。
PDU部分
PDU部分包括:
- Function Code (功能码): 1字节,指示请求的操作类型,如读取或写入数据。
- Data (数据): 随功能码而变,对于请求,它包含了请求的地址和数量等信息;对于响应,它包含了请求的数据或者状态信息。
示例
请求帧示例
假设需要从设备上读取保持寄存器的值,从地址100开始,读取3个寄存器。
- Transaction Identifier:
0x0001
- Protocol Identifier:
0x0000
- Length:
0x0006
(接下来的字节数,包括单元标识符、功能码和数据) - Unit Identifier:
0x01
- Function Code:
0x03
(读取保持寄存器) - Data: 开始地址
0x0064
(100),数量0x0003
(3)
响应帧示例
对上述请求的响应,假设读取的寄存器值分别为:0x000A
、0x000B
和0x000C
。
- Transaction Identifier:
0x0001
(与请求相同) - Protocol Identifier:
0x0000
- Length:
0x0009
(接下来的字节数,包括单元标识符、功能码、字节计数和数据) - Unit Identifier:
0x01
- Function Code:
0x03
- Byte Count:
0x06
(读取的字节数,3个寄存器*2字节/寄存器 = 6字节) - Data: 寄存器值
0x000A
、0x000B
、0x000C
通过这些示例,可以看到Modbus TCP请求和响应帧的结构是相似的,主要区别在于PDU部分的数据内容。
数据模型(Data Model)
Modbus TCP follows a simple data model with four primary tables:
Modbus TCP遵循一个简单的数据模型,包含四个主要表格:
离散输入
- Discrete Inputs: Read-only boolean values.
离散输入:只读布尔值。
线圈
- Coils: Read-write boolean values.
线圈:可读写布尔值。
在Modbus协议的数据模型中,“线圈”(Coils) 是用来表示可读写的布尔值(0或1)的内存位置。这个术语“线圈”来源于早期的继电器控制系统,在这些系统中,物理的继电器(或线圈)被用来打开或关闭电路,从而控制机械设备的开启和关闭。当继电器的线圈被激活(通电)时,相应的开关就会闭合,反之则断开。
在Modbus协议中,虚拟的“线圈”延续了这一概念,用于代表和控制设备的二进制状态。例如,一个线圈可以用来控制一个电机的启动/停止,或者表示一个传感器的开/关状态。每个线圈的状态都由单个比特表示,可以被设置(1)或重置(0)。
因此,尽管在数字通信和控制系统中我们不再直接操作物理的继电器线圈,这个术语仍然被用来描述可以被单独控制的逻辑单位。这样的命名保留了与早期自动化系统的联系,同时也提供了一个直观的方式来理解这些控制元素的作用。
在Modbus协议的上下文中,线圈的使用不仅限于控制继电器,它们可以用来控制或表示任何二进制输出/输入设备的状态,使得Modbus协议能够灵活地应用于各种工业自动化和控制场景中。
输入寄存器
- Input Registers: Read-only 16-bit values.
输入寄存器:只读的16位值。
保持寄存器
- Holding Registers: Read-write 16-bit values.
保持寄存器:可读写的16位值。
通信过程(Communication Process)
建立连接(Establishing a Connection)(从设备默认监听端口502)
A Modbus TCP connection is established over TCP/IP using the standard socket connection mechanism. The client (usually a master device) initiates a connection to the server (slave device) on port 502, which is the default port for Modbus TCP communications.
通过使用标准的套接字连接机制在TCP/IP上建立Modbus TCP连接。客户端(通常是主设备)通过502端口(这是Modbus TCP通信的默认端口)发起连接到服务器(从设备)。
请求与响应(Request and Response)
After establishing a connection, the client sends request packets to read or write to the data model. The server processes these requests and responds accordingly(相应地).
建立连接后,客户端发送请求包以读取或写入数据模型。服务器处理这些请求并做出相应的响应。
实际实施(Practical Implementation)
设置Modbus TCP服务器(Setting Up a Modbus TCP Server)
A basic example of setting up a Modbus TCP server using a hypothetical(假设的) library modbus-tcp
might look like this:
使用一个假想的库modbus-tcp
设置Modbus TCP服务器的基本示例可能如下所示:
from modbus_tcp import ModbusServer# Initialize the server with the IP address and port number
server = ModbusServer(host='192.168.1.100', port=502)# Define handling for read and write requests
def handle_request(request):# Process request and return responsereturn responseserver.on_request(handle_request)# Start the server
server.start()
注意:实际使用中,我们通常无需编写 modbus TCP 服务端代码,直接采购的支持 Modbus TCP 协议的设备出厂时就已包含
在实际应用中,通常我们会采购已经支持Modbus TCP协议的设备,如传感器、PLC(可编程逻辑控制器)、变频器等,这些设备在出厂时已经内置了Modbus TCP服务器的功能。这意味着它们能够监听网络上的请求,并且能够处理来自Modbus TCP客户端(通常是监控系统、SCADA系统或其他控制设备)的命令。
部署这些设备的步骤大致如下:
-
物理连接:将Modbus TCP支持的设备连接到网络中,这通常通过以太网线和交换机完成。
-
配置IP地址:为每个设备配置一个唯一的IP地址。这可以通过设备的控制面板、专用软件或网络协议如DHCP完成。在很多情况下,为了保证网络通信的可靠性,会给这些设备配置静态IP地址。
-
配置Modbus设置:根据需要,可能还需要在设备上配置Modbus相关的设置,如单元标识符(Unit ID)或其他参数。这一步骤依赖于具体设备的配置方法。
-
测试通信:配置完成后,使用Modbus客户端软件或设备测试与Modbus TCP服务器(即你的设备)的通信是否正常。这通常涉及读取或写入设备的寄存器来验证配置。
“设置Modbus TCP服务器”的步骤,更多的是在学习、测试或开发自定义解决方案时使用。例如,如果你正在开发一个新的Modbus TCP客户端应用,或者需要在没有实际硬件的情况下测试系统,你可能会使用模拟的Modbus TCP服务器软件来模拟真实设备的行为。
实际上,内置Modbus TCP功能的工业设备设计为即插即用,简化了现场的网络集成和设备配置过程。配置好IP地址并确保网络连接正常后,这些设备就可以作为Modbus TCP服务器,响应网络上Modbus客户端的请求了。
与Modbus TCP客户端通信(Communicating with a Modbus TCP Client)
Similarly, setting up a client to communicate with a Modbus TCP server can be demonstrated as follows:
同样,设置客户端与Modbus TCP服务器通信的示例可以如下所示:
from modbus_tcp import ModbusClient# Initialize the client with the server's IP address and port
client = ModbusClient(host='192.168.1.100', port=502)# Connect to the server
client.connect()# Read from holding registers starting at address 0, quantity of 10(读取十个保存寄存器)
registers = client.read_holding_registers(address=0, quantity=10)# Print the values
print(registers)# Close the connection
client.disconnect()
Modbus TCP的应用(Applications of Modbus TCP)
Modbus TCP is widely used in various industrial sectors(领域), including manufacturing, energy, building automation(建筑自动化), and more. Its applications range from monitoring and controlling devices, like sensors and actuators(执行器), to more complex scenarios like integrating with SCADA (Supervisory(监督的) Control and Data Acquisition) systems for comprehensive facility management.
Modbus TCP在各种工业领域广泛使用,包括制造业、能源、建筑自动化等。其应用范围从监控和控制设备(如传感器和执行器)到更复杂的场景,如与SCADA(监控控制和数据采集)系统集成,进行综合设施管理。
挑战与解决方案(Challenges and Solutions)
While Modbus TCP offers many benefits, it also faces challenges like security vulnerabilities(脆弱性) inherent(固有的、内在的) in its simplicity. Modern implementations often incorporate security measures such as VPNs, encryption, and secure authentication(认证) methods to mitigate(减轻) these risks.
虽然Modbus TCP提供了许多好处,但它也面临着由于其简单性而固有的安全漏洞等挑战。现代实施通常包括采取VPN、加密和安全认证方法等安全措施来减轻这些风险。
结论(Conclusion)
Modbus TCP continues to be a vital(至关重要的) protocol in the realm of industrial automation, offering a blend(和谐结合;融合) of simplicity, efficiency, and interoperability. Its widespread adoption(采用) and the community’s ongoing(持续的) efforts to address(设法解决) its limitations ensure its relevance(相关性) in the evolving(不断发展的) landscape(领域) of industrial communication technologies.
Modbus TCP继续在工业自动化领域内是一个至关重要的协议,它提供了简单性、效率和互操作性的完美结合。它的广泛采用以及社区持续努力解决其局限性,确保了它在不断发展的工业通信技术领域中的相关性。
其他
关于Modbus TCP的“interoperability”(互操作性)
Modbus TCP的 “interoperability”(互操作性) 指的是不同制造商生产的设备能够通过Modbus TCP协议无缝通信和协同工作的能力。互操作性是信息技术和工业自动化领域的一个关键概念,它确保了不同设备之间可以交换信息和使用对方的服务,即使这些设备来自不同的厂家、运行不同的软件或使用不同的硬件平台。
对于Modbus TCP而言,互操作性的实现基于几个关键因素:
开放标准:Modbus TCP是一个公开的协议标准,任何组织或个人都可以访问这些标准的细节,并在自己的设备或软件中实现这些标准。这种开放性促进了广泛的采用和支持,从而增强了不同设备间的互操作能力。
统一的通信协议:Modbus TCP定义了一组统一的通信规则,包括数据格式、功能码和错误检测机制等。这确保了所有遵循Modbus TCP标准的设备都能以相同的方式交换数据,无论制造商或设备类型。
简单性和灵活性:Modbus TCP的简单性和灵活性也有助于互操作性。它支持多种数据类型和操作,能够满足不同应用的需求,同时保持足够的简单性,以便于不同厂家的设备实现和理解。
广泛的支持:由于Modbus TCP的广泛应用,许多工具和库已经支持这个协议,提供了现成的解决方案来简化设备间的通信。这进一步降低了实现互操作性的障碍。
因此,Modbus TCP的互操作性意味着不同来源的设备和系统可以更容易地集成在一起,为用户提供更大的灵活性和选择性,同时降低了系统整合的复杂性和成本。这对于构建和维护大型、复杂的自动化系统尤其重要,因为它允许系统设计者从多个供应商中选择合适的设备,而不用担心兼容性问题。
关于 modbus TCP 客户端服务端的模拟通信
参考文章:Python Docker实现Modbus TCP协议客户端与服务端模拟通信
相关文章:
Modbus TCP协议介绍(ModbusTCP)
文章目录 理解Modbus TCP协议(Understanding Modbus TCP Protocol)简介(Introduction to Modbus TCP)历史背景(Historical Context)关键特性(Key Features) Modbus TCP协议结构&…...

【Java核心能力】一篇文章了解 ZooKeeper 底层运行原理
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…...
P2123皇后游戏
P2123皇后游戏 参考题解 #include <iostream> #include <algorithm> using namespace std;int T; int n; long long res;struct Person {int a,b,d; }p[20005];bool person_cmp(const Person& x,const Person& y) {if(x.d y.d){if(x.d < 0)return x.a …...
git之目前的主流版本
官方文档 简介 我们都知道,在开发过程中,版本控制是至关重要的。Git作为目前最为流行的版本控制系统,已经成为了开发者们的标配。出于好奇,本人对git目前主流几大版本(GitLab、GitHub、Gitee 和 GitCode)…...

PyQT5学习--新建窗体模板
目录 1 Dialog 2 Main Window 3 Widget Dialog 模板,基于 QDialog 类的窗体,具有一般对话框的特性,如可以模态显示、具有返回值等。 Main Window 模板,基于 QMainWindow 类的窗体,具有主窗口的特性,窗口…...
企业产品网络安全建设日志0328
文章目录 Actuator再次暴露域名上线基线检查初见效果WAF更新遇波折301跳转推进中 Actuator再次暴露 为了验证挖f的拦截效果,自己随手拼了个Actuator,结果可以访问到公司的actuator。。 据称是某网关更换新组件后未做防御,已要求全部做防御&a…...

QT(C++)-error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”
1、项目场景: 在VS中采用QT(C)调试时,出现error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”错误 2、解决方案: 在“解决方案资源管理器”中选中出现此类BUG的项目,右键-…...

【 MyBatis 】| 关于多表联查返回 List 集合只查到一条的 BUG
目录 一. 🦁 写在前面二. 🦁 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. 🦁 写在最后 一. 🦁 写在前面 今天又是 BUG 气满满的一天,一个 xxxMapper.xm…...

PL/SQL的词法单元
目录 字符集 标识符 分隔符 注释 oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 PL/SQL块中的每一条语句都必须以分号结束。 一个SQL语句可以跨多行,但分号表示该语句的结束:一行中也可以有多条 SQL语句&…...

第三十二天-PythonWeb主流框架-Django框架
目录 1.介绍 发展历史 介绍 2.使用 1.安装 2.创建项目 3.项目结构 4.启动 3.开发流程 1.设置ip可访问 2.创建模块 3.第一个页面 4.视图 5.include()参数 6.url与视图的关系 7.响应内容 4.视图处理业务逻辑 1.响应html 2.获取url参数 3.从文件响应html内容 …...

利用python搭建临时文件传输服务
场景 如果想从一台服务器上传输文件又多种方法,其中常见的是利用scp进行传输,但是需要知道服务器的账号密码才能进行传输,但有时候我们并不知道账号密码,这个时候我们就可以通过python -m SimpleHTTPServer 命令进行传输文件 启…...
详解 WebWorker 的概念、使用场景、示例
前言 提到 WebWorker,可能有些小伙伴比较陌生,不知道是做什么的,甚至不知道使用场景,今天这篇文章就带大家一起简单了解一下什么是 webworker! 概念 WebWorker 实际上是运行在浏览器后台的一个单独的线程,因此可以执行一些耗时的操作而不会阻塞主线程。WebWorker 通过…...
IOS面试题编程机制 6-10
6. 如何理解MVVM设计模式?MVVM即 Model-View-ViewModel 1.View主要用于界面呈现,与用户输入设备进行交互 2.ViewModel是MVVM架构中最重要的部分,ViewModel中包含属性,方法,事件,属性验证等逻辑,负责View与Model之间的通讯 3.Model就是我们常说的数据模型,用于数据的构造…...
seleniumui自动化实例-邮箱登录
1.登录163邮箱源码: from selenium import webdriver driver webdriver.Firefox() driver.get("http://www.163.com") driver.find_element_by_id("id").clear() driver.find_element_by_id("id").send_keys("用户名")…...
力扣练习 3.27
121. 买卖股票的最佳时机 贪婪思想:力争在最低成本买入,最高利润卖出。 [7,1,5,3,6,4] 可以先假设在第一天买入和卖出,这时最低成本是7,最大利润是7-70 然后假设在第二天买入和卖出,成本就是1,利润也是0 第…...

C 指向指针的指针
指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。 一个指向指针的指针变量…...
通俗易懂:新生代、老年代和永久代/元空间的具体含义是什么?
在Java虚拟机(JVM)的内存管理中,堆内存通常被划分为几个不同的区域,以便更有效地管理和回收内存。以下是新生代(Young Generation)、老年代(Old Generation)和永久代/元空间…...
Centos7.9备份mysql数据库
1. 备份 备份shell脚本 [rootiZoqvrzbtnzd6kZ local]# vi mysql_backup.sh #!/bin/bash #设置MySQL登录信息 MYSQL_USER"root" MYSQL_PASSWORD"**********" MYSQL_DATABASE"ubox" BACKUP_DIR"/usr/local/mysql_backup" MONTH"…...

Automatic Prompt Engineering
让大模型自己生成prompt,生成提示(prompt)存在两种不同的操作方式。第一种方式是在文本空间中进行,这种提示以离散的文本形式存在。第二种方式是将提示抽象成一个向量,在特征空间中进行操作,这种提示是抽象…...

Spring高级面试题-2024
Spring 框架中都用到了哪些设计模式? 1. 简单工厂: ○ BeanFactory:Spring的BeanFactory充当工厂,负责根据配置信息创建Bean实例。它是一种工厂模式的应用,根据指定的类名或ID创建Bean对象。2. 工厂方法ÿ…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...

【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...

使用homeassistant 插件将tasmota 接入到米家
我写一个一个 将本地tasmoat的的设备同通过ha集成到小爱同学的功能,利用了巴法接入小爱的功能,将本地mqtt转发给巴法以实现小爱控制的功能,前提条件。1需要tasmota 设备, 2.在本地搭建了mqtt服务可, 3.搭建了ha 4.在h…...