mirror of https://github.com/arendst/Tasmota.git
Fix sensor coexistence
This commit is contained in:
parent
0e40de58dd
commit
dd4f16526e
|
@ -826,6 +826,7 @@ const char HTTP_SNS_GPM[] PROGMEM = "{s}%s " D_FLOW_RATE "{
|
|||
const char HTTP_SNS_MOISTURE[] PROGMEM = "{s}%s " D_MOISTURE "{m}%d " D_UNIT_PERCENT "{e}";
|
||||
const char HTTP_SNS_RANGE[] PROGMEM = "{s}%s " D_RANGE "{m}%d" "{e}";
|
||||
const char HTTP_SNS_DISTANCE[] PROGMEM = "{s}%s " D_DISTANCE "{m}%d " D_UNIT_MILLIMETER "{e}";
|
||||
const char HTTP_SNS_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{m}%s " D_UNIT_CENTIMETER "{e}";
|
||||
const char HTTP_SNS_VOLTAGE[] PROGMEM = "{s}" D_VOLTAGE "{m}%s " D_UNIT_VOLT "{e}";
|
||||
const char HTTP_SNS_CURRENT[] PROGMEM = "{s}" D_CURRENT "{m}%s " D_UNIT_AMPERE "{e}";
|
||||
const char HTTP_SNS_POWER[] PROGMEM = "{s}" D_POWERUSAGE "{m}%s " D_UNIT_WATT "{e}";
|
||||
|
|
|
@ -725,11 +725,18 @@ void ResponseAppendFeatures(void)
|
|||
|
||||
static uint32_t feature8 = 0x00000000;
|
||||
if (!feature8) { // Only fill this once
|
||||
// feature8 |= 0x00000001;
|
||||
// feature8 |= 0x00000002;
|
||||
// feature8 |= 0x00000004;
|
||||
// feature8 |= 0x00000008;
|
||||
|
||||
#if defined(USE_I2C) && defined(USE_MPU6886)
|
||||
feature8 |= 0x00000001; // xsns_85_mpu6886.ino
|
||||
#endif
|
||||
#ifdef USE_TFMINIPLUS
|
||||
feature8 |= 0x00000002; // xsns_86_tfminiplus.ino
|
||||
#endif
|
||||
#if defined(USE_ENERGY_SENSOR) && defined(USE_CSE7761)
|
||||
feature8 |= 0x00000004; // xnrg_19_cse7761.ino
|
||||
#endif
|
||||
#ifdef USE_BERRY
|
||||
feature8 |= 0x00000008; // xdrv_52_9_berry.ino
|
||||
#endif
|
||||
// feature8 |= 0x00000010;
|
||||
// feature8 |= 0x00000020;
|
||||
// feature8 |= 0x00000040;
|
||||
|
|
|
@ -159,11 +159,6 @@ void Sr04TReading(void) {
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef USE_WEBSERVER
|
||||
const char HTTP_SNS_DISTANCE_CM[] PROGMEM =
|
||||
"{s}SR04 " D_DISTANCE "{m}%s" D_UNIT_CENTIMETER "{e}"; // {s} = <tr><th>, {m} = </th><td>, {e} = </td></tr>
|
||||
#endif // USE_WEBSERVER
|
||||
|
||||
void Sr04Show(bool json)
|
||||
{
|
||||
|
||||
|
@ -180,7 +175,7 @@ void Sr04Show(bool json)
|
|||
#endif // USE_DOMOTICZ
|
||||
#ifdef USE_WEBSERVER
|
||||
} else {
|
||||
WSContentSend_PD(HTTP_SNS_DISTANCE_CM, distance_chr);
|
||||
WSContentSend_PD(HTTP_SNS_DISTANCE_CM, "SR04", distance_chr);
|
||||
#endif // USE_WEBSERVER
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
/*
|
||||
xsns_86_tfminiplus.ino - TFmini Plus interface for Tasmota
|
||||
|
||||
Created by Raphael Breiting on 12.11.2020.
|
||||
|
||||
Copyright (C) 2021 Raphael Breiting and Theo Arends
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -19,9 +17,7 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// Conditional compilation of driver
|
||||
#ifdef USE_TFMINIPLUS
|
||||
|
||||
/*****************************************************************************\
|
||||
* TFmini, TFmini Plus, TFmini Plus (Indoor Version), TFmini-S - LiDAR Module
|
||||
* Manufacturer: Benewake (Beijing) Co. Ltd.
|
||||
|
@ -65,22 +61,16 @@
|
|||
* - https://de.aliexpress.com/item/4001076614996.html?spm=a2g0s.9042311.0.0.27424c4d5Edizk
|
||||
\*****************************************************************************/
|
||||
|
||||
#include <TasmotaSerial.h>
|
||||
|
||||
// Define driver ID
|
||||
#define XSNS_86 86
|
||||
|
||||
// Use special no wait serial driver, should be always on
|
||||
#ifndef ESP32
|
||||
#define SPECIAL_SS
|
||||
#endif
|
||||
|
||||
// Default baudrate
|
||||
#define BAUDRATE 9600
|
||||
#define TFMP_SPEED 9600
|
||||
|
||||
// Serial buffer length for incoming data
|
||||
#define TFMP_MAX_DATA_LEN 9
|
||||
|
||||
#include <TasmotaSerial.h>
|
||||
|
||||
char Tfmp_buffer[TFMP_MAX_DATA_LEN + 1];
|
||||
|
||||
struct xsns_86_tfminiplus
|
||||
|
@ -101,7 +91,7 @@ void TfmpInit(void)
|
|||
if (PinUsed(GPIO_TFMINIPLUS_RX) && PinUsed(GPIO_TFMINIPLUS_TX))
|
||||
{
|
||||
TfmpSerial = new TasmotaSerial(Pin(GPIO_TFMINIPLUS_RX), Pin(GPIO_TFMINIPLUS_TX), 1);
|
||||
if (TfmpSerial->begin(BAUDRATE))
|
||||
if (TfmpSerial->begin(TFMP_SPEED))
|
||||
{
|
||||
if (TfmpSerial->hardwareSerial())
|
||||
{
|
||||
|
@ -187,27 +177,30 @@ bool TfmpAddData(char nextChar)
|
|||
|
||||
#ifdef USE_WEBSERVER
|
||||
// {s} = <tr><th>, {m} = </th><td>, {e} = </td></tr>
|
||||
const char HTTP_SNS_DISTANCE_CM[] PROGMEM = "{s} " D_DISTANCE "{m}%d" D_UNIT_CENTIMETER "{e}";
|
||||
const char HTTP_SNS_SIGNALSTRENGTH[] PROGMEM = "{s} " D_SIGNALSTRENGTH "{m}%d{e}";
|
||||
const char HTTP_SNS_CHIPTEMPERATURE[] PROGMEM = "{s} " D_CHIPTEMPERATURE "{m}%d" D_UNIT_DEGREE D_UNIT_CELSIUS "{e}";
|
||||
const char HTTP_SNS_SIGNALSTRENGTH[] PROGMEM = "{s}%s " D_SIGNALSTRENGTH "{m}%d{e}";
|
||||
const char HTTP_SNS_CHIPTEMPERATURE[] PROGMEM = "{s}%s " D_CHIPTEMPERATURE "{m}%d " D_UNIT_DEGREE "%c{e}";
|
||||
#endif // USE_WEBSERVER
|
||||
|
||||
void TfmpShow(bool json)
|
||||
{
|
||||
char sensor_name[12];
|
||||
strcpy_P(sensor_name, "TFminiPlus");
|
||||
char distance_chr[FLOATSZ];
|
||||
dtostrfd(tfminiplus_sensor.distance, 3, distance_chr);
|
||||
|
||||
if (json) {
|
||||
ResponseAppend_P(PSTR(",\"TFmini Plus\":{\"" D_JSON_DISTANCE "\":\"%d\",\"" D_JSON_SIGNALSTRENGTH "\":\"%d\",\"" D_JSON_CHIPTEMPERATURE "\":%d}"),
|
||||
tfminiplus_sensor.distance, tfminiplus_sensor.sigstrength, tfminiplus_sensor.chiptemp);
|
||||
ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":\"%s\",\"" D_JSON_SIGNALSTRENGTH "\":\"%d\",\"" D_JSON_CHIPTEMPERATURE "\":%d}"),
|
||||
sensor_name, distance_chr, tfminiplus_sensor.sigstrength, tfminiplus_sensor.chiptemp);
|
||||
#ifdef USE_DOMOTICZ
|
||||
if (0 == TasmotaGlobal.tele_period) {
|
||||
DomoticzFloatSensor(DZ_COUNT, tfminiplus_sensor.distance);
|
||||
DomoticzSensor(DZ_COUNT, distance_chr);
|
||||
}
|
||||
#endif // USE_DOMOTICZ
|
||||
#ifdef USE_WEBSERVER
|
||||
} else {
|
||||
WSContentSend_P("{s}TFmini Plus");
|
||||
WSContentSend_P(HTTP_SNS_DISTANCE_CM, tfminiplus_sensor.distance);
|
||||
WSContentSend_P(HTTP_SNS_SIGNALSTRENGTH, tfminiplus_sensor.sigstrength);
|
||||
WSContentSend_P(HTTP_SNS_CHIPTEMPERATURE, tfminiplus_sensor.chiptemp);
|
||||
WSContentSend_P(HTTP_SNS_DISTANCE_CM, sensor_name, distance_chr);
|
||||
WSContentSend_P(HTTP_SNS_SIGNALSTRENGTH, sensor_name, tfminiplus_sensor.sigstrength);
|
||||
WSContentSend_P(HTTP_SNS_CHIPTEMPERATURE, sensor_name, tfminiplus_sensor.chiptemp, TempUnit());
|
||||
#endif // USE_WEBSERVER
|
||||
}
|
||||
}
|
||||
|
|
|
@ -177,7 +177,9 @@ a_setoption = [[
|
|||
"(Zigbee) Append endpoint number to topic if device dependent (use with SetOption89)",
|
||||
"(MQTT) Retain on State",
|
||||
"(MQTT) Retain on Info",
|
||||
"","","",
|
||||
"(Wiegand) switch tag number output to hex format (1)",
|
||||
"(Wiegand) send key pad stroke as single char (0) or one tag (ending char #) (1)",
|
||||
"(Zigbee) Hide bridge topic from zigbee topic (use with SetOption89) (1)",
|
||||
"","","","",
|
||||
"","","","",
|
||||
"","","","",
|
||||
|
@ -249,7 +251,7 @@ a_features = [[
|
|||
"USE_BS814A2","USE_SEESAW_SOIL","USE_WIEGAND","USE_NEOPOOL",
|
||||
"USE_TOF10120","USE_SDM72","USE_DISPLAY_TM1637","USE_PROJECTOR_CTRL"
|
||||
],[
|
||||
"USE_TFMINIPLUS","","","",
|
||||
"USE_MPU6886","USE_TFMINIPLUS","USE_CSE7761","USE_BERRY",
|
||||
"","","","",
|
||||
"","","","",
|
||||
"","","","",
|
||||
|
@ -284,7 +286,7 @@ else:
|
|||
obj = json.load(fp)
|
||||
|
||||
def StartDecode():
|
||||
print ("\n*** decode-status.py v20210222 by Theo Arends and Jacek Ziolkowski ***")
|
||||
print ("\n*** decode-status.py v20210323 by Theo Arends and Jacek Ziolkowski ***")
|
||||
|
||||
# print("Decoding\n{}".format(obj))
|
||||
|
||||
|
|
Loading…
Reference in New Issue