diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md
index 00772509b..60c16392b 100644
--- a/CHANGELOG_LATEST.md
+++ b/CHANGELOG_LATEST.md
@@ -15,6 +15,7 @@ For more details go to [emsesp.org](https://emsesp.org/).
- 2.nd freshwater module (dhw4, dhw5) [#2991](https://github.com/emsesp/EMS-ESP32/issues/2991)
- full system backup and restore
- auto-logic to set ht3/ems+ tx-mode
+- polariity for digital_in sensors [#3070](https://github.com/emsesp/EMS-ESP32/discussions/3070)
## Fixed
diff --git a/interface/src/app/main/SensorsAnalogDialog.tsx b/interface/src/app/main/SensorsAnalogDialog.tsx
index ffc5a4485..877d7914f 100644
--- a/interface/src/app/main/SensorsAnalogDialog.tsx
+++ b/interface/src/app/main/SensorsAnalogDialog.tsx
@@ -242,6 +242,23 @@ const SensorsAnalogDialog = ({
)}
+ {editItem.t === AnalogType.DIGITAL_IN && (
+
+
+
+
+
+
+ )}
{editItem.t === AnalogType.ADC && (
= 15 && sensor.poll_ != sensor.last_reading_) {
sensor.last_reading_ = sensor.poll_;
if (sensor.type() == AnalogType::DIGITAL_IN) {
- sensor.set_value(sensor.poll_);
+ sensor.set_value(sensor.factor() == 0 ? !sensor.poll_ : sensor.poll_);
} else if (!sensor.poll_) { // falling edge
if (sensor.type() == AnalogType::COUNTER) {
sensor.set_value(old_value + sensor.factor());
diff --git a/src/emsesp_version.h b/src/emsesp_version.h
index cd5b26d88..3972166a4 100644
--- a/src/emsesp_version.h
+++ b/src/emsesp_version.h
@@ -1 +1 @@
-#define EMSESP_APP_VERSION "3.8.2-dev.22"
+#define EMSESP_APP_VERSION "3.8.2-dev.23"