前言
最近是真的热!
写完论文宅在家,想要做点什么缓解一些焦虑的心情。从之前大学寄回家至今没有拆开过的元件箱中找到了一个ESP8266 的arduino D1的板子以及一个s17021温湿度传感器,遂萌发做一个实时记录自己卧室温湿度的小作品,来记录家里是究竟多热~。
实验准备
ESP8266 arduino D1
s17021温湿度传感器
ubuntu一台(树莓派低功耗更好)
步骤
硬件连接
D15----SCL
D14---SDA
软件安装
ubuntu1604 + Homeassistant + mqtt
Homeassistant 安装
https://www.hachina.io/docs/355.html
注:安装Homeassistant的时候提示缺少什么就去sudo apt install 什么~
mqtt安装
https://www.jianshu.com/p/a13e888c93fb
代码与脚本
arduino 代码
/**
* 订阅mqtt/cmd可以从hass获取指令控制板子上的led灯
* 向mqtt/state发布on、off上传led等的状态
* 向mqtt/temp发布环境温度
* 向mqtt/humi发布环境湿度
*/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#define ADDRESS_SI7021 0x40
#define MEASURE_RH_HOLD 0xE5
#define READ_T_FROM_PRE_RH_MEASUREMENT 0xE0
byte buffer[] = {0, 0, 0};
byte crcHumi;
word outHumi = 0;
word outTemp = 0;
float valueHumi = 0;
float valueTemp = 0;
const char* ssid = "SSID";//你要让板子链接的WiFi的名字
const char* password = "..XXXXX..";//该WiFi的密码
const char* mqtt_server = "192.168.31.175";//mqtt服务器地址
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, passw