add htu21d sensor
This commit is contained in:
parent
f786cbd77c
commit
fe29b238ff
|
@ -16,8 +16,9 @@
|
||||||
#data_dir=data_sensoresp1
|
#data_dir=data_sensoresp1
|
||||||
#data_dir=data_sensoresp2
|
#data_dir=data_sensoresp2
|
||||||
#data_dir=data_sensoresp3
|
#data_dir=data_sensoresp3
|
||||||
data_dir=data_sensoresp4
|
#data_dir=data_sensoresp4
|
||||||
#data_dir=data_sensoresp5
|
#data_dir=data_sensoresp5
|
||||||
|
data_dir=data_sensoresp3dprinter
|
||||||
|
|
||||||
|
|
||||||
#Outdoor
|
#Outdoor
|
||||||
|
@ -244,3 +245,28 @@ lib_deps =
|
||||||
Homie@3.0.0
|
Homie@3.0.0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#3D Printer
|
||||||
|
[env:sensoresp3dprinter]
|
||||||
|
platform = espressif8266
|
||||||
|
board = d1_mini
|
||||||
|
framework = arduino
|
||||||
|
|
||||||
|
monitor_port = /dev/ttyUSB0
|
||||||
|
monitor_speed = 115200
|
||||||
|
|
||||||
|
build_flags =
|
||||||
|
-D SENSOR_HTU21D
|
||||||
|
-D dataHTU21D_temperature_minchange=0.2
|
||||||
|
-D dataHTU21D_temperature_senddelaymax=1000*60*10
|
||||||
|
-D dataHTU21D_humidity_minchange=1.0
|
||||||
|
-D dataHTU21D_humidity_senddelaymax=1000*60*10
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
adafruit/Adafruit HTU21DF Library @ ^1.0.5
|
||||||
|
ArduinoJson@6.16.1 #dependency of homie. using older version because of "ambiguous overload for operator|" error
|
||||||
|
Homie@3.0.0
|
||||||
|
|
||||||
|
|
||||||
|
|
111
src/main.cpp
111
src/main.cpp
|
@ -53,6 +53,21 @@ struct sensordata
|
||||||
float value_pressureBMP=0;
|
float value_pressureBMP=0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SENSOR_HTU21D
|
||||||
|
//Connect SCL to D1, SDA to D2, GND and 3v3
|
||||||
|
#ifndef WIRE_H
|
||||||
|
#include <Wire.h>
|
||||||
|
#define WIRE_H
|
||||||
|
#endif
|
||||||
|
#include "Adafruit_HTU21DF.h"
|
||||||
|
bool htu21dinit_ok=false;
|
||||||
|
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
|
||||||
|
struct sensordata dataHTU21D_temperature; //struct values are changed in setup()
|
||||||
|
float value_temperatureHTU=0;
|
||||||
|
struct sensordata dataHTU21D_humidity; //struct values are changed in setup()
|
||||||
|
float value_humidityHTU=0;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef SENSOR_HS1101
|
#ifdef SENSOR_HS1101
|
||||||
struct sensordata dataHS1101;
|
struct sensordata dataHS1101;
|
||||||
float value_humidityHS1101=0;
|
float value_humidityHS1101=0;
|
||||||
|
@ -66,7 +81,10 @@ struct sensordata
|
||||||
|
|
||||||
#ifdef SENSOR_BH1750
|
#ifdef SENSOR_BH1750
|
||||||
//SCL=D1, SDA=D2
|
//SCL=D1, SDA=D2
|
||||||
|
#ifndef WIRE_H
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
|
#define WIRE_H
|
||||||
|
#endif
|
||||||
#include <BH1750.h>
|
#include <BH1750.h>
|
||||||
BH1750 lightMeter(0x23); //0x23 if addr connected to ground (=pin open), 0x5c if addr pulled high
|
BH1750 lightMeter(0x23); //0x23 if addr connected to ground (=pin open), 0x5c if addr pulled high
|
||||||
bool bh1750init_ok=false;
|
bool bh1750init_ok=false;
|
||||||
|
@ -297,6 +315,29 @@ void setup() {
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SENSOR_HTU21D
|
||||||
|
Serial.println("initializing htu21d");
|
||||||
|
if (!htu.begin()) {
|
||||||
|
Serial.println("#ERROR: HTU21D init fail\n");
|
||||||
|
}else{
|
||||||
|
htu21dinit_ok=true; //stays false if init failed, sensor will not be read in loop
|
||||||
|
}
|
||||||
|
#ifdef dataHTU21D_temperature_minchange
|
||||||
|
dataHTU21D_temperature.minchange=dataHTU21D_temperature_minchange;
|
||||||
|
#endif
|
||||||
|
#ifdef dataHTU21D_temperature_senddelaymax
|
||||||
|
dataHTU21D_temperature.senddelaymax=dataHTU21D_temperature_senddelaymax;
|
||||||
|
#endif
|
||||||
|
#ifdef dataHTU21D_humidity_minchange
|
||||||
|
dataHTU21D_humidity.minchange=dataHTU21D_humidity_minchange;
|
||||||
|
#endif
|
||||||
|
#ifdef dataHTU21D_humidity_senddelaymax
|
||||||
|
dataHTU21D_humidity.senddelaymax=dataHTU21D_humidity_senddelaymax;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef SENSOR_HS1101
|
#ifdef SENSOR_HS1101
|
||||||
Serial.println("initializing hs1101");
|
Serial.println("initializing hs1101");
|
||||||
#ifdef dataHS1101_minchange
|
#ifdef dataHS1101_minchange
|
||||||
|
@ -507,6 +548,11 @@ void setup() {
|
||||||
sensorNode.advertise("pressure");
|
sensorNode.advertise("pressure");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SENSOR_HTU21D
|
||||||
|
sensorNode.advertise("temperature_htu");
|
||||||
|
sensorNode.advertise("humidity_htu");
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef SENSOR_MHZ19
|
#ifdef SENSOR_MHZ19
|
||||||
sensorNode.advertise("co2");
|
sensorNode.advertise("co2");
|
||||||
#ifdef MHZ19CALIBRATIONTOPIC
|
#ifdef MHZ19CALIBRATIONTOPIC
|
||||||
|
@ -671,6 +717,64 @@ void loop_BMP180_pressure()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SENSOR_HTU21D
|
||||||
|
void loop_HTU21D_temperature()
|
||||||
|
{
|
||||||
|
sensordata &d=dataHTU21D_temperature;
|
||||||
|
bool _changed=false;
|
||||||
|
|
||||||
|
if (millis() >= (d.lastreadtime+d.readdelay)) {
|
||||||
|
value_temperatureHTU = htu.readTemperature();
|
||||||
|
if (fabs(d.lastsentvalue-value_temperatureHTU)>=d.minchange){
|
||||||
|
_changed=true;
|
||||||
|
}
|
||||||
|
d.lastreadtime=millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_changed || millis() >= (d.lastsent+d.senddelaymax)) {
|
||||||
|
Serial.print("Sending HTU21D_temperature. reason=");
|
||||||
|
if (_changed) Serial.println("change"); else Serial.println("time");
|
||||||
|
checkESPStatus();
|
||||||
|
|
||||||
|
if (!(isnan(value_temperatureHTU) == 1)){ //success
|
||||||
|
sensorNode.setProperty("temperature_htu").send(String(value_temperatureHTU));
|
||||||
|
Homie.getLogger() << "temperature_htu " << ": " << value_temperatureHTU << endl;
|
||||||
|
d.lastsentvalue=value_temperatureHTU;
|
||||||
|
}
|
||||||
|
|
||||||
|
d.lastsent=millis();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop_HTU21D_humidity()
|
||||||
|
{
|
||||||
|
sensordata &d=dataHTU21D_humidity;
|
||||||
|
bool _changed=false;
|
||||||
|
|
||||||
|
if (millis() >= (d.lastreadtime+d.readdelay)) {
|
||||||
|
value_humidityHTU = htu.readHumidity();
|
||||||
|
if (fabs(d.lastsentvalue-value_humidityHTU)>=d.minchange){
|
||||||
|
_changed=true;
|
||||||
|
}
|
||||||
|
d.lastreadtime=millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_changed || millis() >= (d.lastsent+d.senddelaymax)) {
|
||||||
|
Serial.print("Sending HTU21D_humidity. reason=");
|
||||||
|
if (_changed) Serial.println("change"); else Serial.println("time");
|
||||||
|
checkESPStatus();
|
||||||
|
|
||||||
|
if (!(isnan(value_humidityHTU) == 1)){ //success
|
||||||
|
sensorNode.setProperty("humidity_htu").send(String(value_humidityHTU));
|
||||||
|
Homie.getLogger() << "humidity_htu " << ": " << value_humidityHTU << endl;
|
||||||
|
d.lastsentvalue=value_humidityHTU;
|
||||||
|
}
|
||||||
|
|
||||||
|
d.lastsent=millis();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef SENSOR_HS1101
|
#ifdef SENSOR_HS1101
|
||||||
void loop_HS1101() {
|
void loop_HS1101() {
|
||||||
|
|
||||||
|
@ -1156,6 +1260,13 @@ void loopHandler() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SENSOR_HTU21D
|
||||||
|
if (htu21dinit_ok) {
|
||||||
|
loop_HTU21D_temperature();
|
||||||
|
loop_HTU21D_humidity();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef SENSOR_HS1101
|
#ifdef SENSOR_HS1101
|
||||||
loop_HS1101();
|
loop_HS1101();
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue