Home Assistant获取DHT11温湿度

Home Assistant获取DHT11温湿度

1、准备所需工具

1、一块ESP8266,已经刷入MicroPython固件且能连WiFi
刷固件可以参考:https://blog.csdn.net/qq_25886111/article/details/106213625
连WiFi可以参考:https://blog.csdn.net/qq_25886111/article/details/106215795

2、一个温湿度模块(DHT11)
3、uPyLoader工具,用于上传代码
4、可以和Home Assistant通信的 MQTT服务器
MQTT服务器搭建参考:https://blog.csdn.net/qq_25886111/article/details/108831536

2、上传代码到ESP8266

1、将以下代码写入到ESP8266的main.py文件中,代码就不解释了,需要改的地方都有注释

import network
import time
import dht
import machine
import json
import ubinascii
from simple import MQTTClient

SSID="TP-LINK_8898"  # WiFi名称
PASSWORD="ljt198479"  # WiFi 密码

CLIENT_ID = ubinascii.hexlify(machine.unique_id())

CONFIG = {
    "server": "192.168.1.207",  # MQTT服务器IP
    "port":1883,  # MQTT服务器端口
    "mqtt_user": "hachina",  # MQTT服务器用户名
    "mqtt_password": "hachina",  # MQTT服务器密码
    "mqtt_topic_temperature": "dht11/temperature",  # 将温度发布到dht11/temperature主题
    "mqtt_topic_humidity": "dht11/humidity",  # # 将湿度发布到dht11/humidity主题
}


def connectWifi(ssid,passwd):
    global wlan
    wlan=network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.disconnect()
    wlan.connect(ssid,passwd)
    while(wlan.ifconfig()[0]=='0.0.0.0'):
        time.sleep(1)


def get_humiture():
    d = dht.DHT11(machine.Pin(2))
    d.measure()
    return d.temperature(),d.humidity()


def pub_humiture(humidity, temperature):
    global c
    data={'humidity':humidity, 'temperature':temperature} 
    c.publish(CONFIG["mqtt_topic_temperature"], json.dumps(data['temperature']))
    c.publish(CONFIG["mqtt_topic_humidity"], json.dumps(data['humidity']))


    '''向HomeAssistant发送温湿度'''
def main():
    connectWifi(SSID,PASSWORD)
    global c
    c = MQTTClient(CLIENT_ID, CONFIG["server"],CONFIG["port"], CONFIG["mqtt_user"], CONFIG["mqtt_password"])
    c.connect()
    print("Connected to %s, publish to %s and %s topic" % (CONFIG["server"], CONFIG["mqtt_topic_temperature"], CONFIG["mqtt_topic_humidity"]))
    while True:
        tem, hum=get_humiture()
        pub_humiture(hum, tem)
        time.sleep(3)    

if __name__ == "__main__":
    main()

在这里插入图片描述
2、此时执行main.py会报如下错,因为缺少MQTT模块

在这里插入图片描述
3、下载导入MQTT模块
下载MicroPython库:https://github.com/micropython/micropython-lib
解压后找到 umqtt.simple\umqtt\simple.py文件,上传到ESP8266中

在这里插入图片描述

3、连接DHT11获取温湿度

DHT11的 OUT 连接 ESP8266 的 IO2
电源要共用一个电源,否则可能无法驱动DHT11

在这里插入图片描述

4、在Home Assistant中测试

依次点击:配置——>集成——>MQTT下的配置
监听主题:dht11/temperature
出现下图就测试成功
在这里插入图片描述

5、Home Assistant添加视图查看温湿度

在 C:\Users\用户名\AppData\Roaming.homeassistant下的 configuration.yaml 中添加以下代码:

# 温度传感器
sensor 1:
  platform: mqtt
  name: "temperature"
  state_topic: "dht11/temperature"
  unit_of_measurement: "°C"

# 湿度传感器
sensor 2:
  platform: mqtt
  name: "humidity"
  state_topic: "dht11/humidity"
  unit_of_measurement: "%"

添加完成后重启Home Assistant
在这里插入图片描述

添加视图,添加两次,一个湿度 一个温度
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最显示为:
在这里插入图片描述
向DHT11吹口气湿度变化大,温度几乎不变
至此Home Assistant获取DHT11温湿度完成,下篇文章将介绍温湿度数据存到数据库中什么位置。

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值