Popular blog tags

How to implement a custom MQTT device on home assistant via c# .net -开源库:MQTTnet

Published

我们将介绍如何在.NET 中使用MQTTnet来创建一个简单的MQTT发布和订阅示例。这个示例包括一个树莓派上运行的MQTT服务端(home assistant)和一个MQTT客户端。

 

本次选用的类库为c# MQTTnet

MQTTnet的源码托管在GitHub上,地址为:https://github.com/dotnet/MQTTnet

https://github.com/dotnet/MQTTnet

 

C#的MQTT系列


​ ​MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信​​

​ ​MQTT(二)在windows64位上安装Python环境​​

​ ​MQTT(三)Python客户端+net客户端+net服务端 简单通信​​

​ ​MQTT(四)树莓派开机自动运行Python客户端​​

​ ​MQTT(五)实现开源MQTT消息服务器​​

 

可以通过MQTT协议实现设备之间的通信,包括设备的发现、状态更新等功能。

使用.NET为Home Assistant添加自定义设备,实现电脑远程关机的功能

 

利用 MQTT auto discovery 特点来自动创建实体

 

 

使用MQTTnet

官网项目网址:https://github.com/chkr1011/MQTTnet

首先我们需要在 .NET 中实现 MQTT 客户端

 

一种是更新ha中已有的实体;

一种是用自动发现直接在ha中创建实体

 

项目准备

首先,我们需要创建1个.NET 控制台项目,用作客户端。这个项目将实现MQTT消息发布和订阅功能。

然后,我们需要安装MQTTnet包。在本示例中,我们选择安装MQTTnet。

 

step 1.客户端-新建一个控制台项目

step 2.添加Nuget包:安装MQTTnet

<ItemGroup>
  <PackageReference Include="MQTTnet" Version="5.0.1.1416" />
</ItemGroup>

 

 

设备需要通过 MQTT 发送一条配置消息,HA会自动识别:
温度传感器配置消息:
发布到主题:homeassistant/sensor/temp_sensor/config

{
   
  "name": "Temperature Sensor",
  "device_class": "temperature",
  "state_topic": "homeassistant/all/esp8266/state",
  "unit_of_measurement": "°C",
  "value_template": "{
   { value_json.temperature }}",
  "unique_id": "temp_sensor",
  "device": {
   
    "identifiers": ["esp8266_sensor"],
    "name": "ESP8266 Sensor",
    "manufacturer": "Espressif",
    "model": "ESP8266EX",
    "sw_version": "1.0.0"
  }
}

 

useful links

https://www.cnblogs.com/duhaoran/p/12718305.html

ASP.NET Core 实现 MQTT通讯协议 Demo(开源库:MQTTnet)

 

MQTTnet:在.NET 7中实现MQTT消息传输

https://www.mqtt.cn/616.html