diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h
index 167a5315b..459031962 100644
--- a/tasmota/language/bg_BG.h
+++ b/tasmota/language/bg_BG.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h
index b4f3251fb..d87650ec9 100644
--- a/tasmota/language/cs_CZ.h
+++ b/tasmota/language/cs_CZ.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h
index 241bb8a8f..9e25dfdaa 100644
--- a/tasmota/language/de_DE.h
+++ b/tasmota/language/de_DE.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h
index 024466885..9dbaf45f5 100644
--- a/tasmota/language/el_GR.h
+++ b/tasmota/language/el_GR.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h
index 64969eca8..7a9b45b43 100644
--- a/tasmota/language/en_GB.h
+++ b/tasmota/language/en_GB.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h
index fc0be8df1..81e2248b4 100644
--- a/tasmota/language/es_ES.h
+++ b/tasmota/language/es_ES.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h
index e6e086509..85b9648b8 100644
--- a/tasmota/language/fr_FR.h
+++ b/tasmota/language/fr_FR.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h
index a241a074a..fb073ee3a 100644
--- a/tasmota/language/he_HE.h
+++ b/tasmota/language/he_HE.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h
index ecc93125d..2171d2fba 100644
--- a/tasmota/language/hu_HU.h
+++ b/tasmota/language/hu_HU.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h
index d25ff5e94..066370728 100644
--- a/tasmota/language/it_IT.h
+++ b/tasmota/language/it_IT.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 - GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 - GDO2"
#define D_SENSOR_HRXL_RX "HRXL - RX"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL - TX"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "Velocità vento"
diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h
index e554c1d01..94b4de66f 100644
--- a/tasmota/language/ko_KO.h
+++ b/tasmota/language/ko_KO.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h
index d4ad9e0ea..7f49f0f5f 100644
--- a/tasmota/language/nl_NL.h
+++ b/tasmota/language/nl_NL.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h
index 36f751d86..f67fdefcc 100644
--- a/tasmota/language/pl_PL.h
+++ b/tasmota/language/pl_PL.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h
index 85e3707de..3d669b19a 100644
--- a/tasmota/language/pt_BR.h
+++ b/tasmota/language/pt_BR.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h
index 131e6f72d..7dbfe4858 100644
--- a/tasmota/language/pt_PT.h
+++ b/tasmota/language/pt_PT.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h
index 366288e21..cbfd882b2 100644
--- a/tasmota/language/ro_RO.h
+++ b/tasmota/language/ro_RO.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h
index 4f61ccf85..eae73b248 100644
--- a/tasmota/language/ru_RU.h
+++ b/tasmota/language/ru_RU.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h
index 459e18f53..32deed082 100644
--- a/tasmota/language/sk_SK.h
+++ b/tasmota/language/sk_SK.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h
index 2b41cd231..e335a856b 100644
--- a/tasmota/language/sv_SE.h
+++ b/tasmota/language/sv_SE.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h
index db9774276..1582c21c0 100644
--- a/tasmota/language/tr_TR.h
+++ b/tasmota/language/tr_TR.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h
index e55a92a28..5d0560e4e 100644
--- a/tasmota/language/uk_UA.h
+++ b/tasmota/language/uk_UA.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h
index 26c534009..560d804a8 100644
--- a/tasmota/language/zh_CN.h
+++ b/tasmota/language/zh_CN.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h
index e92e68ad2..3f1dfa7ba 100644
--- a/tasmota/language/zh_TW.h
+++ b/tasmota/language/zh_TW.h
@@ -684,6 +684,7 @@
#define D_SENSOR_CC1101_GDO0 "CC1101 GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 GDO2"
#define D_SENSOR_HRXL_RX "HRXL Rx"
+#define D_SENSOR_DYP_RX "DYP Rx"
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
#define D_SENSOR_AS3935 "AS3935"
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h
index 030d21b63..e532e93de 100644
--- a/tasmota/my_user_config.h
+++ b/tasmota/my_user_config.h
@@ -619,6 +619,7 @@
// #define USE_FLOG // Add support for GPS logging in OTA's Flash (Experimental) (+2k9 code, +8 bytes RAM)
//#define USE_HM10 // (ESP8266 only) Add support for HM-10 as a BLE-bridge (+9k3 code)
//#define USE_HRXL // Add support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7)
+//#define USE_DYP // Add support for DYP ME-007 ultrasonic distance sensor, serial port version (+0k5 code)
//#define USE_TASMOTA_CLIENT // Add support for Arduino Uno/Pro Mini via serial interface including flashing (+2k6 code, 64 mem)
#define USE_TASMOTA_CLIENT_FLASH_SPEED 57600 // Usually 57600 for 3.3V variants and 115200 for 5V variants
#define USE_TASMOTA_CLIENT_SERIAL_SPEED 57600 // Depends on the sketch that is running on the Uno/Pro Mini
diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h
index 1c38f0420..c53cf4709 100644
--- a/tasmota/tasmota_template.h
+++ b/tasmota/tasmota_template.h
@@ -242,6 +242,7 @@ enum UserSelectablePins {
GPIO_IEM3000_TX, // IEM3000 Serial interface
GPIO_IEM3000_RX, // IEM3000 Serial interface
GPIO_ZIGBEE_RST, // Zigbee reset
+ GPIO_DYP_RX,
GPIO_SENSOR_END };
// Programmer selectable GPIO functionality
@@ -337,7 +338,8 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|"
D_SENSOR_LMT01_PULSE "|"
D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|"
- D_SENSOR_ZIGBEE_RST
+ D_SENSOR_ZIGBEE_RST "|"
+ D_SENSOR_DYP_RX
;
const char kSensorNamesFixed[] PROGMEM =
@@ -704,6 +706,9 @@ const uint8_t kGpioNiceList[] PROGMEM = {
#ifdef USE_HRXL
GPIO_HRXL_RX,
#endif
+#ifdef USE_DYP
+ GPIO_DYP_RX,
+#endif
#ifdef USE_AS3935
GPIO_AS3935,
#endif
diff --git a/tasmota/tasmota_template_ESP32.h b/tasmota/tasmota_template_ESP32.h
index 858cc14d3..698862f15 100644
--- a/tasmota/tasmota_template_ESP32.h
+++ b/tasmota/tasmota_template_ESP32.h
@@ -138,6 +138,7 @@ enum UserSelectablePins {
GPIO_LMT01, // LMT01 input counting pin
GPIO_IEM3000_TX, GPIO_IEM3000_RX, // IEM3000 Serial interface
GPIO_ZIGBEE_RST, // Zigbee reset
+ GPIO_DYP_RX,
GPIO_SENSOR_END };
enum ProgramSelectablePins {
@@ -238,7 +239,8 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|"
D_SENSOR_LMT01_PULSE "|"
D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|"
- D_SENSOR_ZIGBEE_RST
+ D_SENSOR_ZIGBEE_RST "|"
+ D_SENSOR_DYP_RX
;
const char kSensorNamesFixed[] PROGMEM =
@@ -551,6 +553,9 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#ifdef USE_HRXL
AGPIO(GPIO_HRXL_RX),
#endif
+#ifdef USE_DYP
+ AGPIO(GPIO_DYP_RX),
+#endif
#ifdef USE_AS3935
AGPIO(GPIO_AS3935),
#endif
diff --git a/tasmota/xsns_76_dyp.ino b/tasmota/xsns_76_dyp.ino
new file mode 100644
index 000000000..e068b67e8
--- /dev/null
+++ b/tasmota/xsns_76_dyp.ino
@@ -0,0 +1,157 @@
+/*
+ xsns_76_dyp.ino - DYP ME007 serial interface
+
+ Copyright (C) 2020 Janusz Kostorz
+
+ This program is free software: you can reDYPDistanceribute 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.
+
+ This program is DYPDistanceributed 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 .
+*/
+
+#ifdef USE_DYP
+
+/*********************************************************************************************\
+ * DYP ME007 ultrasonic distanceance sensor (300...4000mm), serial version
+ *
+ * Every one second code check last received value from sensor via serial port and return:
+ * -1 for checksum error
+ * 0 for distance below 300mm
+ * 300...4000 for measured distance
+ * 4999 for distance above 4000mm
+ * 5999 for not connected sensor
+ *
+\*********************************************************************************************/
+
+#define XSNS_76 76
+
+#include
+
+TasmotaSerial *DYPSerial = nullptr;
+
+#define DYP_CRCERROR -1
+#define DYP_BELOWMIN 0
+#define DYP_MIN 300
+#define DYP_MAX 4000
+#define DYP_ABOVEMAX 4999
+#define DYP_NOSENSOR 5999
+
+uint16_t DYPDistance = 0; // distance in milimeters
+bool DYPSensor = false; // sensor available
+
+/*********************************************************************************************/
+
+void DYPInit(void)
+{
+ DYPSensor = false;
+ if (PinUsed(GPIO_DYP_RX))
+ {
+ DYPSerial = new TasmotaSerial(Pin(GPIO_DYP_RX), -1, 1);
+ if (DYPSerial->begin(9600))
+ {
+ if (DYPSerial->hardwareSerial())
+ ClaimSerial();
+ DYPSensor = true;
+ }
+ }
+}
+
+void DYPEverySecond(void)
+{
+ if (!DYPSensor)
+ return;
+
+ // check for serial data
+ if (DYPSerial->available() < 6)
+ {
+ DYPDistance = DYP_NOSENSOR;
+ return;
+ }
+
+ // trash old data (only 7 last bytes are needed for calculate distance)
+ while (DYPSerial->available() > 7)
+ DYPSerial->read();
+
+
+ // read data from serial port - * 0xFF MSB LSB CRC *
+ while (DYPSerial->available() > 3)
+ {
+ // check for start byte signature
+ if (DYPSerial->read() != 0xFF)
+ continue;
+
+ // check for data bytes
+ if (DYPSerial->available() > 2)
+ {
+ uint8_t msb = DYPSerial->read();
+ uint8_t lsb = DYPSerial->read();
+ if (((uint16_t)(0xFF + msb + lsb) & 0xFF) == DYPSerial->read()) {
+ uint16_t data = (msb << 8) | lsb;
+ if (data < DYP_MIN)
+ data = DYP_BELOWMIN;
+ if (data > DYP_MAX)
+ data = DYP_ABOVEMAX;
+ DYPDistance = data;
+ }
+ else {
+ DYPDistance = DYP_CRCERROR;
+ }
+ }
+ }
+
+
+}
+
+void DYPShow(bool json)
+{
+ char types[5] = "DYP";
+ if (json)
+ {
+ ResponseAppend_P(PSTR(",\"%s\":{\"" D_DISTANCE "\":%d}"), types, DYPDistance);
+ #ifdef USE_WEBSERVER
+ }
+ else
+ {
+ WSContentSend_PD(HTTP_SNS_RANGE, types, DYPDistance);
+ #endif // USE_WEBSERVER
+ }
+}
+
+/*********************************************************************************************\
+ * Interface
+\*********************************************************************************************/
+
+bool Xsns76(uint8_t function)
+{
+ if (!PinUsed(GPIO_DYP_RX))
+ return false;
+
+ switch (function)
+ {
+ case FUNC_INIT:
+ DYPInit();
+ break;
+ case FUNC_EVERY_SECOND:
+ DYPEverySecond();
+ break;
+ case FUNC_JSON_APPEND:
+ DYPShow(1);
+ break;
+ #ifdef USE_WEBSERVER
+ case FUNC_WEB_SENSOR:
+ DYPShow(0);
+ break;
+ #endif // USE_WEBSERVER
+ }
+ return false;
+}
+
+#endif // USE_DYP