mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-27 12:46:34 +00:00
Redesign distance sensors VL53LXX, TOF10120, HRXL and DYP
Redesign distance sensors VL53LXX, TOF10120, HRXL and DYP to use cm instead of mm (#17021)
This commit is contained in:
parent
64ed79debc
commit
381bfbf5bd
@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Support for BP1658CJ RGBCW led bulbs like Orein OS0100411267 by Cossid (#17011)
|
- Support for BP1658CJ RGBCW led bulbs like Orein OS0100411267 by Cossid (#17011)
|
||||||
|
|
||||||
### Breaking Changed
|
### Breaking Changed
|
||||||
- Redesign distance sensors HRXL and DYP to use cm instead of mm (#17021)
|
- Redesign distance sensors VL53LXX, TOF10120, HRXL and DYP to use cm instead of mm (#17021)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Default Flash Mode changed from ``DOUT`` to ``DIO`` for ESP8266/ESP8285
|
- Default Flash Mode changed from ``DOUT`` to ``DIO`` for ESP8266/ESP8285
|
||||||
|
@ -123,7 +123,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
|
|||||||
- ESP32 Support for DMX ArtNet Led matrix animations [#16984](https://github.com/arendst/Tasmota/issues/16984)
|
- ESP32 Support for DMX ArtNet Led matrix animations [#16984](https://github.com/arendst/Tasmota/issues/16984)
|
||||||
|
|
||||||
### Breaking Changed
|
### Breaking Changed
|
||||||
- Redesign distance sensors HRXL and DYP to use cm instead of mm [#17021](https://github.com/arendst/Tasmota/issues/17021)
|
- Redesign distance sensors VL53LXX, TOF10120, HRXL and DYP to use cm instead of mm [#17021](https://github.com/arendst/Tasmota/issues/17021)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- ESP32 Framework (Core) from v2.0.5 to v2.0.5.2
|
- ESP32 Framework (Core) from v2.0.5 to v2.0.5.2
|
||||||
|
@ -886,6 +886,7 @@ const float kSpeedConversionFactor[] = {1, // none
|
|||||||
const char HTTP_SNS_F_TEMP[] PROGMEM = "{s}%s " D_TEMPERATURE "{m}%*_f " D_UNIT_DEGREE "%c{e}";
|
const char HTTP_SNS_F_TEMP[] PROGMEM = "{s}%s " D_TEMPERATURE "{m}%*_f " D_UNIT_DEGREE "%c{e}";
|
||||||
const char HTTP_SNS_F_VOLTAGE[] PROGMEM = "{s}%s " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}";
|
const char HTTP_SNS_F_VOLTAGE[] PROGMEM = "{s}%s " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}";
|
||||||
const char HTTP_SNS_F_CURRENT_MA[] PROGMEM = "{s}%s " D_CURRENT "{m}%*_f " D_UNIT_MILLIAMPERE "{e}";
|
const char HTTP_SNS_F_CURRENT_MA[] PROGMEM = "{s}%s " D_CURRENT "{m}%*_f " D_UNIT_MILLIAMPERE "{e}";
|
||||||
|
const char HTTP_SNS_F_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{m}%1_f " D_UNIT_CENTIMETER "{e}";
|
||||||
const char HTTP_SNS_HUM[] PROGMEM = "{s}%s " D_HUMIDITY "{m}%s " D_UNIT_PERCENT "{e}";
|
const char HTTP_SNS_HUM[] PROGMEM = "{s}%s " D_HUMIDITY "{m}%s " D_UNIT_PERCENT "{e}";
|
||||||
const char HTTP_SNS_DEW[] PROGMEM = "{s}%s " D_DEWPOINT "{m}%s " D_UNIT_DEGREE "%c{e}";
|
const char HTTP_SNS_DEW[] PROGMEM = "{s}%s " D_DEWPOINT "{m}%s " D_UNIT_DEGREE "%c{e}";
|
||||||
const char HTTP_SNS_PRESSURE[] PROGMEM = "{s}%s " D_PRESSURE "{m}%s " "%s{e}";
|
const char HTTP_SNS_PRESSURE[] PROGMEM = "{s}%s " D_PRESSURE "{m}%s " "%s{e}";
|
||||||
@ -899,9 +900,6 @@ 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_MOISTURE[] PROGMEM = "{s}%s " D_MOISTURE "{m}%d " D_UNIT_PERCENT "{e}";
|
||||||
const char HTTP_SNS_RANGE_CHR[] PROGMEM = "{s}%s " D_RANGE "{m}%s" "{e}";
|
const char HTTP_SNS_RANGE_CHR[] PROGMEM = "{s}%s " D_RANGE "{m}%s" "{e}";
|
||||||
const char HTTP_SNS_RANGE[] PROGMEM = "{s}%s " D_RANGE "{m}%d" "{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_F_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{m}%1_f " D_UNIT_CENTIMETER "{e}";
|
|
||||||
const char HTTP_SNS_HALL_EFFECT[] PROGMEM = "{s}%s " D_HALL_EFFECT "{m}%d" "{e}";
|
const char HTTP_SNS_HALL_EFFECT[] PROGMEM = "{s}%s " D_HALL_EFFECT "{m}%d" "{e}";
|
||||||
const char HTTP_SNS_VOLTAGE[] PROGMEM = "{s}" D_VOLTAGE "{m}%s " D_UNIT_VOLT "{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_CURRENT[] PROGMEM = "{s}" D_CURRENT "{m}%s " D_UNIT_AMPERE "{e}";
|
||||||
|
@ -190,53 +190,38 @@ void Vl53l0Every_250MSecond(void) {
|
|||||||
void Vl53l0Every_Second(void) {
|
void Vl53l0Every_Second(void) {
|
||||||
if (abs(Vl53l0x_data[0].distance - Vl53l0x_data[0].distance_prev) > 8) {
|
if (abs(Vl53l0x_data[0].distance - Vl53l0x_data[0].distance_prev) > 8) {
|
||||||
Vl53l0x_data[0].distance_prev = Vl53l0x_data[0].distance;
|
Vl53l0x_data[0].distance_prev = Vl53l0x_data[0].distance;
|
||||||
DomoticzSensor(DZ_ILLUMINANCE, Vl53l0x_data[0].distance);
|
float distance = (float)Vl53l0x_data[0].distance / 10; // cm
|
||||||
|
DomoticzFloatSensor(DZ_ILLUMINANCE, distance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // USE_DOMOTICZ
|
#endif // USE_DOMOTICZ
|
||||||
|
|
||||||
void Vl53l0Show(boolean json) {
|
void Vl53l0Show(boolean json) {
|
||||||
for (uint32_t i = 0; i < VL53LXX_MAX_SENSORS; i++) {
|
for (uint32_t i = 0; i < VL53LXX_MAX_SENSORS; i++) {
|
||||||
if (PinUsed(GPIO_VL53LXX_XSHUT1, i) || (!VL53L0X_xshut)) {
|
char types[12] = "VL53L0X";
|
||||||
if (json) {
|
if (VL53L0X_xshut) {
|
||||||
if (Vl53l0x_data[i].distance == 9999) {
|
snprintf_P(types, sizeof(types), PSTR("VL53L0X%c%d"), IndexSeparator(), i +1);
|
||||||
if (VL53L0X_xshut) {
|
}
|
||||||
ResponseAppend_P(PSTR(",\"VL53L0X_%d\":{\"" D_JSON_DISTANCE "\":null}"), i+1);
|
if (PinUsed(GPIO_VL53LXX_XSHUT1, i) || (!VL53L0X_xshut)) {
|
||||||
} else {
|
float distance = (Vl53l0x_data[i].distance == 9999) ? NAN : (float)Vl53l0x_data[i].distance / 10; // cm
|
||||||
ResponseAppend_P(PSTR(",\"VL53L0X\":{\"" D_JSON_DISTANCE "\":null}")); // For backwards compatibility when not using XSHUT GPIOs
|
if (json) {
|
||||||
}
|
ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":%1_f}"), types, &distance);
|
||||||
} else {
|
#ifdef USE_WEBSERVER
|
||||||
if (VL53L0X_xshut) {
|
} else {
|
||||||
ResponseAppend_P(PSTR(",\"VL53L0X_%d\":{\"" D_JSON_DISTANCE "\":%d}"), i+1, Vl53l0x_data[i].distance);
|
WSContentSend_PD(HTTP_SNS_F_DISTANCE_CM, types, &distance);
|
||||||
} else {
|
#endif
|
||||||
ResponseAppend_P(PSTR(",\"VL53L0X\":{\"" D_JSON_DISTANCE "\":%d}"), Vl53l0x_data[i].distance); // For backwards compatibility when not using XSHUT GPIOs
|
}
|
||||||
}
|
}
|
||||||
}
|
if (VL53L0X_device[i].timeoutOccurred()) {
|
||||||
#ifdef USE_WEBSERVER
|
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_I2C "Timeout waiting for %s"), types);
|
||||||
} else {
|
|
||||||
if (Vl53l0x_data[i].distance == 9999) {
|
|
||||||
if (VL53L0X_xshut) {
|
|
||||||
WSContentSend_PD("{s}%s_%d " D_DISTANCE "{m}%s {e}", PSTR("VL53L0X"), i+1, PSTR(D_OUT_OF_RANGE));
|
|
||||||
} else {
|
|
||||||
WSContentSend_PD("{s}%s " D_DISTANCE "{m}%s {e}", PSTR("VL53L0X"), PSTR(D_OUT_OF_RANGE)); // For backwards compatibility when not using XSHUT GPIOs
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (VL53L0X_xshut) {
|
|
||||||
WSContentSend_PD("{s}%s_%d " D_DISTANCE "{m}%d " D_UNIT_MILLIMETER "{e}", PSTR("VL53L0X"), i+1, Vl53l0x_data[i].distance);
|
|
||||||
} else {
|
|
||||||
WSContentSend_PD(HTTP_SNS_DISTANCE, PSTR("VL53L0X"), Vl53l0x_data[i].distance); // For backwards compatibility when not using XSHUT GPIOs
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (VL53L0X_device[i].timeoutOccurred()) { AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_I2C D_TIMEOUT_WAITING_FOR D_SENSOR " VL53L0X %d"), i+1); }
|
|
||||||
if (!VL53L0X_xshut) { break; }
|
if (!VL53L0X_xshut) { break; }
|
||||||
}
|
}
|
||||||
#ifdef USE_DOMOTICZ
|
#ifdef USE_DOMOTICZ
|
||||||
if ((json) && (0 == TasmotaGlobal.tele_period)){
|
if (json && (0 == TasmotaGlobal.tele_period)){
|
||||||
DomoticzSensor(DZ_ILLUMINANCE, Vl53l0x_data[0].distance);
|
float distance = (float)Vl53l0x_data[0].distance / 10; // cm
|
||||||
}
|
DomoticzFloatSensor(DZ_ILLUMINANCE, distance);
|
||||||
|
}
|
||||||
#endif // USE_DOMOTICZ
|
#endif // USE_DOMOTICZ
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,39 +123,30 @@ void Vl53l1Every_250MSecond(void) {
|
|||||||
|
|
||||||
#ifdef USE_DOMOTICZ
|
#ifdef USE_DOMOTICZ
|
||||||
void Vl53l1Every_Second(void) {
|
void Vl53l1Every_Second(void) {
|
||||||
char distance[FLOATSZ];
|
float distance = (float)vl53l1x_data[0].distance / 10; // cm
|
||||||
dtostrfd((float)vl53l1x_data[0].distance / 10, 1, distance);
|
DomoticzFloatSensor(DZ_ILLUMINANCE, distance);
|
||||||
DomoticzSensor(DZ_ILLUMINANCE, distance);
|
|
||||||
}
|
}
|
||||||
#endif // USE_DOMOTICZ
|
#endif // USE_DOMOTICZ
|
||||||
|
|
||||||
void Vl53l1Show(bool json) {
|
void Vl53l1Show(bool json) {
|
||||||
uint32_t i, xshut;
|
uint32_t i, xshut;
|
||||||
for (i = 0, xshut = 1 ; i < VL53LXX_MAX_SENSORS ; i++, xshut <<= 1) {
|
for (i = 0, xshut = 1 ; i < VL53LXX_MAX_SENSORS ; i++, xshut <<= 1) {
|
||||||
|
char types[12] = "VL53L1X";
|
||||||
|
if (VL53L0X_xshut) {
|
||||||
|
snprintf_P(types, sizeof(types), PSTR("VL53L1X%c%d"), IndexSeparator(), i +1);
|
||||||
|
}
|
||||||
|
float distance = (float)vl53l1x_data[i].distance / 10; // cm
|
||||||
if (xshut & VL53L1X_detected) {
|
if (xshut & VL53L1X_detected) {
|
||||||
if (json) {
|
if (json) {
|
||||||
if (0 == VL53L1X_xshut) {
|
ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":%1_f}"), types, &distance);
|
||||||
ResponseAppend_P(PSTR(",\"VL53L1X\":{\"" D_JSON_DISTANCE "\":%d}"), vl53l1x_data[i].distance);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ResponseAppend_P(PSTR(",\"VL53L1X%c%d\":{\"" D_JSON_DISTANCE "\":%d}"), IndexSeparator(), i+1, vl53l1x_data[i].distance);
|
|
||||||
}
|
|
||||||
#ifdef USE_DOMOTICZ
|
#ifdef USE_DOMOTICZ
|
||||||
if (0 == TasmotaGlobal.tele_period) {
|
if (0 == TasmotaGlobal.tele_period) {
|
||||||
Vl53l1Every_Second();
|
Vl53l1Every_Second();
|
||||||
}
|
}
|
||||||
#endif // USE_DOMOTICZ
|
#endif // USE_DOMOTICZ
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
}
|
} else {
|
||||||
else {
|
WSContentSend_PD(HTTP_SNS_F_DISTANCE_CM, types, &distance);
|
||||||
if (0 == VL53L1X_xshut) {
|
|
||||||
WSContentSend_PD(HTTP_SNS_DISTANCE, PSTR("VL53L1X"), vl53l1x_data[i].distance);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
char tmpstr[12];
|
|
||||||
sprintf(tmpstr, PSTR("VL53L1X%c%d"), IndexSeparator(), i+1);
|
|
||||||
WSContentSend_PD(HTTP_SNS_DISTANCE, tmpstr, vl53l1x_data[i].distance);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
} // if detected
|
} // if detected
|
||||||
|
@ -84,15 +84,15 @@ void Tof10120Every_250MSecond(void) {
|
|||||||
|
|
||||||
#ifdef USE_DOMOTICZ
|
#ifdef USE_DOMOTICZ
|
||||||
void Tof10120Every_Second(void) {
|
void Tof10120Every_Second(void) {
|
||||||
char distance[FLOATSZ];
|
float distance = (float)tof10120_sensor.distance / 10; // cm
|
||||||
dtostrfd((float)tof10120_sensor.distance / 10, 1, distance);
|
DomoticzFloatSensor(DZ_ILLUMINANCE, distance);
|
||||||
DomoticzSensor(DZ_ILLUMINANCE, distance);
|
|
||||||
}
|
}
|
||||||
#endif // USE_DOMOTICZ
|
#endif // USE_DOMOTICZ
|
||||||
|
|
||||||
void Tof10120Show(bool json) {
|
void Tof10120Show(bool json) {
|
||||||
|
float distance = (float)tof10120_sensor.distance / 10; // cm
|
||||||
if (json) {
|
if (json) {
|
||||||
ResponseAppend_P(PSTR(",\"TOF10120\":{\"" D_JSON_DISTANCE "\":%d}"), tof10120_sensor.distance);
|
ResponseAppend_P(PSTR(",\"TOF10120\":{\"" D_JSON_DISTANCE "\":%1_f}"), &distance);
|
||||||
#ifdef USE_DOMOTICZ
|
#ifdef USE_DOMOTICZ
|
||||||
if (0 == TasmotaGlobal.tele_period) {
|
if (0 == TasmotaGlobal.tele_period) {
|
||||||
Tof10120Every_Second();
|
Tof10120Every_Second();
|
||||||
@ -100,7 +100,7 @@ void Tof10120Show(bool json) {
|
|||||||
#endif // USE_DOMOTICZ
|
#endif // USE_DOMOTICZ
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
} else {
|
} else {
|
||||||
WSContentSend_PD(HTTP_SNS_DISTANCE, PSTR("TOF10120"), tof10120_sensor.distance);
|
WSContentSend_PD(HTTP_SNS_F_DISTANCE_CM, PSTR("TOF10120"), &distance);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user