diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md
index 442112259..c0c2c852e 100644
--- a/CHANGELOG_LATEST.md
+++ b/CHANGELOG_LATEST.md
@@ -23,5 +23,6 @@ For more details go to [www.emsesp.org](https://www.emsesp.org/).
- lastCode character check [#2189](https://github.com/emsesp/EMS-ESP32/issues/2189)
- reading too many telegram parts
- heatpump cost UOMs [#2188](https://github.com/emsesp/EMS-ESP32/issues/2188)
+- analog dac output and inputs on dac pins [#2201](https://github.com/emsesp/EMS-ESP32/discussions/2201)
## Changed
diff --git a/interface/src/app/main/Sensors.tsx b/interface/src/app/main/Sensors.tsx
index 876499770..f063a3343 100644
--- a/interface/src/app/main/Sensors.tsx
+++ b/interface/src/app/main/Sensors.tsx
@@ -438,7 +438,8 @@ const Sensors = () => {
| {a.g} |
{a.n} |
{AnalogTypeNames[a.t]} |
- {a.t === AnalogType.DIGITAL_OUT || a.t === AnalogType.DIGITAL_IN ? (
+ {(a.t === AnalogType.DIGITAL_OUT && a.g !== 25 && a.g !== 26) ||
+ a.t === AnalogType.DIGITAL_IN ? (
{a.v ? LL.ON() : LL.OFF()} |
) : (
{a.t ? formatValue(a.v, a.u) : ''} |
diff --git a/src/analogsensor.cpp b/src/analogsensor.cpp
index daa1562ca..54807e7cb 100644
--- a/src/analogsensor.cpp
+++ b/src/analogsensor.cpp
@@ -147,7 +147,7 @@ void AnalogSensor::reload(bool get_nvs) {
dacWrite(sensor.gpio(), 255);
}
#elif CONFIG_IDF_TARGET_ESP32S2
- if (sensor.gpio() == 23 || sensor.gpio() == 24) {
+ if (sensor.gpio() == 17 || sensor.gpio() == 18) {
dacWrite(sensor.gpio(), 255);
}
#endif
@@ -197,7 +197,7 @@ void AnalogSensor::reload(bool get_nvs) {
sensor.set_value(sensor.offset());
} else
#elif CONFIG_IDF_TARGET_ESP32S2
- if (sensor.gpio() == 23 || sensor.gpio() == 24) {
+ if (sensor.gpio() == 17 || sensor.gpio() == 18) {
if (sensor.offset() > 255) {
sensor.set_offset(255);
} else if (sensor.offset() < 0) {
@@ -750,7 +750,7 @@ bool AnalogSensor::command_setvalue(const char * value, const int8_t gpio) {
dacWrite(sensor.gpio(), sensor.offset());
} else
#elif CONFIG_IDF_TARGET_ESP32S2
- if ((sensor.gpio() == 23 || sensor.gpio() == 24) && v <= 255) {
+ if ((sensor.gpio() == 17 || sensor.gpio() == 18) && v <= 255) {
sensor.set_offset(v);
sensor.set_value(v);
pinMode(sensor.gpio(), OUTPUT);
diff --git a/src/version.h b/src/version.h
index 9e1b03802..77e31278c 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define EMSESP_APP_VERSION "3.7.1-dev.6"
\ No newline at end of file
+#define EMSESP_APP_VERSION "3.7.1-dev.7"
\ No newline at end of file
diff --git a/src/web/WebDataService.cpp b/src/web/WebDataService.cpp
index 7a17c5698..4b97c9737 100644
--- a/src/web/WebDataService.cpp
+++ b/src/web/WebDataService.cpp
@@ -415,7 +415,16 @@ void WebDataService::dashboard_data(AsyncWebServerRequest * request) {
JsonObject dv = node["dv"].to();
dv["id"] = "00" + sensor.name();
- if (sensor.type() == AnalogSensor::AnalogType::DIGITAL_OUT || sensor.type() == AnalogSensor::AnalogType::DIGITAL_IN) {
+#if CONFIG_IDF_TARGET_ESP32
+ if (sensor.type() == AnalogSensor::AnalogType::DIGITAL_OUT && (sensor.gpio() == 25 || sensor.gpio() == 26)) {
+ obj["v"] = Helpers::transformNumFloat(sensor.value(), 0);
+ } else
+#elif CONFIG_IDF_TARGET_ESP32S2
+ if (sensor.type() == AnalogSensor::AnalogType::DIGITAL_OUT && (sensor.gpio() == 17 || sensor.gpio() == 18)) {
+ obj["v"] = Helpers::transformNumFloat(sensor.value(), 0);
+ } else
+#endif
+ if (sensor.type() == AnalogSensor::AnalogType::DIGITAL_OUT || sensor.type() == AnalogSensor::AnalogType::DIGITAL_IN) {
char s[12];
dv["v"] = Helpers::render_boolean(s, sensor.value() != 0, true);
JsonArray l = dv["l"].to();