303|0

27

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第2期】+通过Wi-Fi,利用MQTT协议接入到开源的智能家居平台HA [复制链接]

  本帖最后由 王嘉辉 于 2024-9-9 23:32 编辑
此次主要就是想借此次活动来学习HA相关的知识,之前有了解到HA是一个功能非常庞大的物联网平台,但是由于自己的知识储备不足(大部分是没有学习的动力,hhh),一直没有接触到相关的知识。正好有这次活动,让我能够“被迫”学习HA相关的内容,发现要是实现数据的上传功能也不是很难,但是HA的庞大还需要继续进行探索。这篇就是简单介绍一下在Windows中使用VMware搭建HA的过程,以及怎么在HA中安装MQTT相关的内容和与Arduino R4 WIFI板子进行数据的交互。
首先是在Windows中安装VMware,我用的是VMware PRO 17的版本,这个的安装过程我参考了网上的一篇博客,相关的内容还是很多,大家可以自行去搜索安装。(当然其他版本的VMware应该也是可以的,网上相关的信息较多,大家可以自行尝试)
然后就是安装HomeAssistant,打开官网https://www.home-assistant.io/,按照下图中的顺序,依次点击,就可以下载到最新的版本。
然后打开安装好的VMware开始进行HA平台的搭建。详细的过程大家可以去网上搜索帖子学习搭建,需要注意的两个地方(被坑了一个多小时),第一个是网络类型要选择桥接网络,第二个是要修改虚拟机的固件类型为UEFI。(我是被卡了一个小时,然后找到一篇帖子改了这两项后,就可以用了,具体的原理还没有深究,有懂的大佬可以指点一下)完成虚拟机的创建和配置后,直接一键开机。。。然后就会虚拟机就会打印出当前虚拟机的网络相关的信息,找到ipv4的地址,然后在浏览器中输入ipv4地址:8123就会进入到虚拟机中创建的HA的网页,大概需要等待20分钟的时间(网上的普遍说法,但是我大概等了几分钟的样子)就会进入HA的登陆界面,点击创建账户,输入一些信息,就可以创建属于自己的HA账户。
进入HA网页后,点击设置,选择加载项
点击右下角的加载项商店,搜索Mosquitto进行下载。
下载完后,点击设置->设备与服务->MQTT->配置对MQTT进行一些配置。用户名和密码填写创建HA的用户名和密码即可,也可以添加成员,使用新成员的用户名和密码。其余的可以保持默认不变。完成后,可以在MQTT设置页面进行PUB和SUB的测试。
下图所示,配置两个的主题保持一致,然后开启监听主题的开始监听,在上面发送信息,就会在下面收到。
然后就是怎么把Arduino的数据上传到HA中了,这第一步就是要在HA中创建一个设备。(这一步也难了一个小时,因为网上大部分的方案都是用NAS或者树莓派搭建的HA,使用命令行和修改yaml文件就实现了新建设备的功能,但是我使用虚拟机加网页的形式,没有找到yaml文件,所以找了很多的资料)最终,发现可以开启MQTT的自发现功能,然后向这个代理发送符合规则的PUB就可以添加设备。
下载一个MQTTX(也可以使用其他的相关模拟软件),免费、有中文。然后建立一个新的连接。填入的信息和创建的HA信息保持一致即可。
然后发送一个标准的PUB就可以添加设备到HA中了。topic填写在输入栏上方的topic栏中,信息填写在输入栏中,然后点击右下角的小飞机,就可以了。
topic:homeassistant/sensor/sensorBedroomH/config
{
    "device_class":"humidity",
    "name":"Humidity",
    "state_topic":"homeassistant/sensor/sensorBedroom/state",
    "unit_of_measurement":"%",
    "value_template":"{{ value_json.humidity}}",
    "unique_id":"hum01ae",
    "device":{
        "identifiers":[
            "bedroom01ae"
        ],
        "name":"Bedroom"
    }
}

 

然后打开HA的网页,设置->设备与服务->MQTT->1个设备就可以看到传感器栏上有一个新的条目信息。说明添加设备成功了。
然后我们开始使用Arduino更新这个条目信息。先安装两个MQTT相关的库。
 
复制下面的代码,记得更改WIFI和MQTT相关的配置信息,然后下载到板子上,打开串口查看打印信息。并打开HA查看数据是否更新。(数据应该是21.5)
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>

// 替换为你的网络信息
const char* ssid = "WIFI名称";
const char* password = "WIFI密码";

// 替换为你的Mosquitto broker信息
const char* mqtt_server = "IPV4地址";
const int mqtt_port = 1883;
const char* mqtt_user = "HA用户名";
const char* mqtt_password = "HA密码";

// 初始化WiFi和MQTT客户端
WiFiClient espClient;
PubSubClient client(espClient);

// 传感器数据发布主题
const char* topic = "homeassistant/sensor/sensorBedroom/state";

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  // 假设你有一个温度传感器,获取温度数据
  float temperature = readTemperature();

  StaticJsonDocument<200> jsonDoc;
  jsonDoc["humidity"] = temperature;

  char jsonBuffer[512];
  serializeJson(jsonDoc, jsonBuffer);

  client.publish(topic, jsonBuffer);

  // 每隔5秒发送一次数据
  delay(5000);
}

void setup_wifi() {
  delay(10);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected!");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    if (client.connect("ArduinoClient", mqtt_user, mqtt_password)) {
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

float readTemperature() {
  // 在这里读取实际传感器的数据
  // 示例中返回一个固定值
  return 21.5;
}

 

 

这样就完成了HA的搭建以及Arduino R4 WIFI上传数据到HA平台。
在HA学习过程中遇到很多问题,借助了强大的AI工具,帮助我解决了很多疑惑,大家可以擅用AI工具,帮助自己对代码进行分析以及对问题进行处理。

 

点赞(1) 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
应用技巧/用68HC908GP32单片机实现EPP增强并口的接口技术

摘要:本文介绍了计算机并口的几种操作模式,给出了实现EPP接口设计的几种方案;着重介绍用Motorola公司的68HC908GP32单片机 ...

常用网络命令

常用网络命令 计算机网络的主要优点是能够实 ...

友善之臂嵌入式浏览器中文支持移植成功

经过本人的改造,友善之臂的qtopia自带的浏览器终于支持中文网页了,也就是,如果能把应用程序再汉化下,就可以应用到开发中。空 ...

谈谈我写书的经历

写书,在一些人看来是一个非常光荣而又伟大的事情;在又一些人看来却是一件赚钱的行当。为了让大家真正认识到写书的痛苦与艰辛, ...

留住身边的美景,2015年春天

本帖最后由 mmmllb 于 2015-4-9 12:28 编辑 不知道说现在是春天是否合适:Sweat:,先这么叫着。 话说最近各路的花都开了,有 ...

【DIY创意LED】参考设计(原理图+PCB)

本帖最后由 dcexpert 于 2020-9-15 17:05 编辑 这次使用了立创EDA进行设计,一个原因是立创EDA是国产免费软件,容易查找器件 ...

AD-DC整流、精密整流

AD-DC整流、精密整流: 1.整流桥、四个二极管整流和运放整流有哪些区别? 2.整流之后,为何把正半周信号丢弃了,并且 ...

直流转换电源电感下的铺铜

本帖最后由 qwqwqw2088 于 2022-7-18 09:08 编辑 对DC/DC 电源的电感底部是否应该铺铜这个问题,常常有意见分歧。 一种认为, ...

【Follow me第二季第1期】 开发环境的搭建-基于CircuitPython

二、开发环境的搭建(基于CircuitPython) 安装或更新CircuitPython 单击上面的链接并下载最新的 UF2 文件这里选择中 ...

MOSFET栅极振荡

那么是不是栅极驱动电流越大越好呢也就是我们的驱动电阻的内阻是不是越小越好这也有可能带来问题我们来对驱动电路进行定量仿真用 ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表