Feature/add shtc3 (#843)

* Add SHTC3

* remove adc config
This commit is contained in:
白月秋见心 authored and GitHub committed 2021-01-05 19:17:39 -06:00
1 parent 1c18e83c98
commit d84f64b23f
5 files changed
+139

No files matched your search

+1
View File
@@ -233,6 +233,7 @@ uint8_t wifiProtocol = 0; // default mode, automatic selection
//#define ZboardM5STACK "ZboardM5STACK"
//#define ZradioCC1101 "CC1101" //ESP8266, ESP32
//#define ZactuatorPWM "PWM" //ESP8266, ESP32
//#define ZsensorSHTC3 "SHTC3" //ESP8266, Arduino, ESP32, Sonoff RF Bridge
//#define ZactuatorSomfy "Somfy" //ESP8266, Arduino, ESP32
//#define ZgatewayRS232 "RS232" //ESP8266, Arduino, ESP32
+75
View File
@@ -0,0 +1,75 @@
#include "User_config.h"
#ifdef ZsensorSHTC3
# include <SparkFun_SHTC3.h>
SHTC3 mySHTC3;
//Time used to wait for an interval before resending temp and hum
unsigned long timedht = 0;
void errorDecoder(SHTC3_Status_TypeDef message);
void errorDecoder(SHTC3_Status_TypeDef message) // The errorDecoder function prints "SHTC3_Status_TypeDef" resultsin a human-friendly way
{
switch (message) {
case SHTC3_Status_Nominal:
Log.notice("Nominal");
break;
case SHTC3_Status_Error:
Log.error("Error");
break;
case SHTC3_Status_CRC_Fail:
Log.error("CRC Fail");
break;
default:
Log.error("Unknown return code");
break;
}
}
void setupSHTC3() {
Wire.begin();
errorDecoder(mySHTC3.begin()); // To start the sensor you must call "begin()", the default settings use Wire (default Arduino I2C port)
}
void MeasureTempAndHum() {
if (millis() > (timedht + TimeBetweenReadingSHTC3)) { //retrieving value of temperature and humidity of the box from SHTC3 every xUL
timedht = millis();
static float persistedh;
static float persistedt;
SHTC3_Status_TypeDef result = mySHTC3.update();
if (mySHTC3.lastStatus == SHTC3_Status_Nominal) {
// Read temperature as Celsius (the default)
float t = mySHTC3.toDegC();
float h = mySHTC3.toPercent();
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
Log.error(F("Failed to read from SHTC3 sensor!" CR));
} else {
Log.trace(F("Creating SHTC3 buffer" CR));
StaticJsonBuffer<JSON_MSG_BUFFER> jsonBuffer;
JsonObject& SHTC3data = jsonBuffer.createObject();
if (h != persistedh || shtc3_always) {
SHTC3data.set("hum", (float)h);
} else {
Log.trace(F("Same hum don't send it" CR));
}
if (t != persistedt || shtc3_always) {
SHTC3data.set("temp", (float)t); // remove for 0.9.6 release
SHTC3data.set("tempc", (float)t);
SHTC3data.set("tempf", mySHTC3.toDegF());
} else {
Log.trace(F("Same temp don't send it" CR));
}
if (SHTC3data.size() > 0)
pub(SHTC3TOPIC, SHTC3data);
}
persistedh = h;
persistedt = t;
} else {
errorDecoder(mySHTC3.lastStatus);
Log.error(F("Failed to read from SHTC3 sensor!" CR));
}
}
}
#endif
+52
View File
@@ -0,0 +1,52 @@
/*
OpenMQTTGateway - ESP8266 or Arduino program for home automation
Act as a wifi or ethernet gateway between your 433mhz/infrared IR signal and a MQTT broker
Send and receiving command by MQTT
This files enables to set your parameter for the SHTC311/22 sensor
Copyright: (c)Florian ROBERT
This file is part of OpenMQTTGateway.
OpenMQTTGateway is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenMQTTGateway is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef config_SHTC3_h
#define config_SHTC3_h
extern void setupSHTC3();
extern void SHTC3toMQTT();
/*----------------------------USER PARAMETERS-----------------------------*/
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
#define SHTC3TOPIC "/SHTC3toMQTT/shtc31"
#define shtc3_always true // if false when the current value for temp or hum is the same as previous one don't send it by MQTT
#define TimeBetweenReadingSHTC3 30000 // time between 2 SHTC3 readings
/*-------------SHTC3 SENSOR TYPE-------------*/
//#define SHTC3_SENSOR_TYPE SHTC311 //uncomment for SHTC311 Sensor
//#define SHTC3_SENSOR_TYPE SHTC321 //uncomment for SHTC321 Sensor
#define SHTC3_SENSOR_TYPE SHTC322 //uncomment for SHTC322 Sensor (default for backwards compatibility)
/*-------------------PIN DEFINITIONS----------------------*/
#ifndef SHTC3_RECEIVER_GPIO
# if defined(ESP8266)
# define SHTC3_RECEIVER_GPIO 5 //5 = D1 you can put 14 = D5 if you don't use HCSR501 sensor and the RFM69
# elif defined(ESP32)
# define SHTC3_RECEIVER_GPIO 16
# else
# define SHTC3_RECEIVER_GPIO 8
# endif
#endif
#endif
+9
View File
@@ -111,6 +111,9 @@ JsonArray& modules = modulesBuffer.createArray();
#ifdef ZsensorDHT
# include "config_DHT.h"
#endif
#ifdef ZsensorSHTC3
# include "config_SHTC3.h"
#endif
#ifdef ZsensorDS1820
# include "config_DS1820.h"
#endif
@@ -715,6 +718,9 @@ void setup() {
#endif
#ifdef ZmqttDiscovery
modules.add(ZmqttDiscovery);
#endif
#ifdef ZsensorSHTC3
setupSHTC3();
#endif
Log.trace(F("mqtt_max_packet_size: %d" CR), mqtt_max_packet_size);
Log.notice(F("Setup OpenMQTTGateway end" CR));
@@ -1273,6 +1279,9 @@ void loop() {
#ifdef ZsensorDHT
MeasureTempAndHum(); //Addon to measure the temperature with a DHT
#endif
#ifdef ZsensorSHTC3
MeasureTempAndHum(); //Addon to measure the temperature with a DHT
#endif
#ifdef ZsensorDS1820
MeasureDS1820Temp(); //Addon to measure the temperature with DS1820 sensor(s)
#endif
+2
View File
@@ -113,6 +113,7 @@ m5stickcp = https://github.com/m5stack/M5StickC-Plus.git
m5stack = M5Stack@0.3.0
smartrc-cc1101-driver-lib = SmartRC-CC1101-Driver-Lib@2.3.5
stl = https://github.com/mike-matera/ArduinoSTL.git#7411816
shtc3 = https://github.com/sparkfun/SparkFun_SHTC3_Arduino_Library
somfy_remote=Somfy_Remote_Lib@0.2.0
[env]
@@ -205,6 +206,7 @@ lib_deps =
${libraries.onewire}
${libraries.dallastemperature}
${libraries.rfWeatherStation}
${libraries.shtc3}
build_flags =
${com-esp.build_flags}
'-DZgatewayRF="RF"'