From e59978dc9cfd7bee05ffb14e2a4bc543cec17ac5 Mon Sep 17 00:00:00 2001
From: you69man <maschin@gmx.net>
Date: Wed, 17 Jan 2024 20:18:09 +0100
Subject: [PATCH 1/5] solve dependencies of hidden display parameters

---
 src/web/html/setup.html |  3 +--
 src/web/web.h           | 37 +++++++++++++++++++++++++------------
 2 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/src/web/html/setup.html b/src/web/html/setup.html
index 127adce2..3b168b7f 100644
--- a/src/web/html/setup.html
+++ b/src/web/html/setup.html
@@ -1130,8 +1130,7 @@
 
             function hideDispPins(pins, dispType) {
                 // create pin map for each display type.
-                // It depends on fix pin array (see var pins)
-                // var pins = [['clock', 'disp_clk'], ['data', 'disp_data'], ['cs', 'disp_cs'], ['dc', 'disp_dc'], ['reset', 'disp_rst']];
+                // It depends on fix pin array, see var pins: ['clock', 'data', 'cs', 'dc', 'reset', 'busy']
                 const pinMap = new Map([
                     [0,  [0,0,0,0,0,0]], //none
                     [1,  [1,1,0,0,0,0]], //SSD1306_128X64
diff --git a/src/web/web.h b/src/web/web.h
index 13f1f4ae..a387e224 100644
--- a/src/web/web.h
+++ b/src/web/web.h
@@ -596,19 +596,32 @@ class Web {
 
             // display
             mConfig->plugin.display.pwrSaveAtIvOffline = (request->arg("disp_pwr") == "on");
-            mConfig->plugin.display.screenSaver = request->arg("disp_screensaver").toInt();
-            mConfig->plugin.display.graph_ratio = request->arg("disp_graph_ratio").toInt();
             mConfig->plugin.display.graph_size  = request->arg("disp_graph_size").toInt();
-            mConfig->plugin.display.rot        = request->arg("disp_rot").toInt();
-            mConfig->plugin.display.type       = request->arg("disp_typ").toInt();
-            mConfig->plugin.display.contrast   = (mConfig->plugin.display.type == 0) ? 60 : request->arg("disp_cont").toInt();
-            mConfig->plugin.display.disp_data  = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_data").toInt();
-            mConfig->plugin.display.disp_clk   = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_clk").toInt();
-            mConfig->plugin.display.disp_cs    = (mConfig->plugin.display.type < 3)  ? DEF_PIN_OFF : request->arg("disp_cs").toInt();
-            mConfig->plugin.display.disp_reset = (mConfig->plugin.display.type < 3)  ? DEF_PIN_OFF : request->arg("disp_rst").toInt();
-            mConfig->plugin.display.disp_dc    = (mConfig->plugin.display.type < 3)  ? DEF_PIN_OFF : request->arg("disp_dc").toInt();
-            mConfig->plugin.display.disp_busy  = (mConfig->plugin.display.type < 10) ? DEF_PIN_OFF : request->arg("disp_bsy").toInt();
-            mConfig->plugin.display.pirPin     = request->arg("pir_pin").toInt();
+            mConfig->plugin.display.rot         = request->arg("disp_rot").toInt();
+            mConfig->plugin.display.type        = request->arg("disp_typ").toInt();
+            mConfig->plugin.display.contrast    = (mConfig->plugin.display.type == 0) ||   // contrast available only according optionsMap in setup.html, otherwise default value
+                                                  (mConfig->plugin.display.type == 10) ? 60 : request->arg("disp_cont").toInt();
+            mConfig->plugin.display.screenSaver = ((mConfig->plugin.display.type == 1) ||  // screensaver available only according optionsMap in setup.html, otherwise default value
+                                                   (mConfig->plugin.display.type == 2) ||
+                                                   (mConfig->plugin.display.type == 4) ||
+                                                   (mConfig->plugin.display.type == 5) ||
+                                                   (mConfig->plugin.display.type == 6)) ? request->arg("disp_screensaver").toInt() : 1;
+            mConfig->plugin.display.graph_ratio = ((mConfig->plugin.display.type == 1) ||  // display graph available only according optionsMap in setup.html, otherwise has to be 0
+                                                   (mConfig->plugin.display.type == 2) ||
+                                                   (mConfig->plugin.display.type == 3) ||
+                                                   (mConfig->plugin.display.type == 6)) ? request->arg("disp_graph_ratio").toInt() : 0;
+
+                                                                                           // available pins according pinMap in setup.html, otherwise default value
+            mConfig->plugin.display.disp_data   = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_data").toInt();
+            mConfig->plugin.display.disp_clk    = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_clk").toInt();
+            mConfig->plugin.display.disp_cs     = (mConfig->plugin.display.type != 3) &&
+                                                  (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_cs").toInt();
+            mConfig->plugin.display.disp_dc     = (mConfig->plugin.display.type != 3) &&
+                                                  (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_dc").toInt();
+            mConfig->plugin.display.disp_reset  = (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_rst").toInt();
+            mConfig->plugin.display.disp_busy   = (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_bsy").toInt();
+            mConfig->plugin.display.pirPin      = (mConfig->plugin.display.screenSaver != 2) ? DEF_PIN_OFF : request->arg("pir_pin").toInt(); // pir pin only for motion screensaver
+                                                                                                                                              // otherweise default value
 
             mApp->saveSettings((request->arg("reboot") == "on"));
 

From 815a6f344484aa6f6718d655d32a93ad9109646a Mon Sep 17 00:00:00 2001
From: you69man <maschin@gmx.net>
Date: Wed, 17 Jan 2024 20:22:57 +0100
Subject: [PATCH 2/5] set graph ratio to first position of display graph (main
 setting to activate graph)

---
 src/web/html/setup.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/web/html/setup.html b/src/web/html/setup.html
index 3b168b7f..c66bc0b6 100644
--- a/src/web/html/setup.html
+++ b/src/web/html/setup.html
@@ -309,11 +309,11 @@
                             <div id="pirPin"></div>
                             <div id="graphOptions">
                                 <p class="des">{#GRAPH_OPTIONS}</p>
-                                <div id="graphSize"></div>
                                 <div class="row mb-3">
                                     <div class="col-12 col-sm-3 my-2">{#GRAPH_SHOW_RATIO}</div>
                                     <div class="col-12 col-sm-9"><input type="number" name="disp_graph_ratio" min="0" max="100"></select></div>
                                 </div>
+                                <div id="graphSize"></div>
                             </div>
                         </fieldset>
                     </div>

From 276b3dca42f05a7b705da873ee76b0a73ce9a4b2 Mon Sep 17 00:00:00 2001
From: you69man <maschin@gmx.net>
Date: Wed, 17 Jan 2024 20:26:39 +0100
Subject: [PATCH 3/5] change default value of display luminance/contrast to
 140. The previous value 60 is way too low and seems to stem from times where
 it was interpreted as % instead of now 0-255

---
 src/config/settings.h | 4 ++--
 src/web/web.h         | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/config/settings.h b/src/config/settings.h
index db545e38..3a2f217c 100644
--- a/src/config/settings.h
+++ b/src/config/settings.h
@@ -465,7 +465,7 @@ class settings {
             mCfg.led.luminance   = 255;
 
             mCfg.plugin.display.pwrSaveAtIvOffline = false;
-            mCfg.plugin.display.contrast = 60;
+            mCfg.plugin.display.contrast = 140;
             mCfg.plugin.display.screenSaver = 1;  // default: 1 .. pixelshift for OLED for downward compatibility
             mCfg.plugin.display.graph_ratio = 0;
             mCfg.plugin.display.graph_size  = 2;
@@ -476,7 +476,7 @@ class settings {
             mCfg.plugin.display.disp_reset = DEF_PIN_OFF;
             mCfg.plugin.display.disp_busy  = DEF_PIN_OFF;
             mCfg.plugin.display.disp_dc    = DEF_PIN_OFF;
-            mCfg.plugin.display.pirPin     = DEF_MOTION_SENSOR_PIN;
+            mCfg.plugin.display.pirPin     = DEF_PIN_OFF;
         }
 
         void loadAddedDefaults() {
diff --git a/src/web/web.h b/src/web/web.h
index a387e224..b0688d83 100644
--- a/src/web/web.h
+++ b/src/web/web.h
@@ -600,7 +600,7 @@ class Web {
             mConfig->plugin.display.rot         = request->arg("disp_rot").toInt();
             mConfig->plugin.display.type        = request->arg("disp_typ").toInt();
             mConfig->plugin.display.contrast    = (mConfig->plugin.display.type == 0) ||   // contrast available only according optionsMap in setup.html, otherwise default value
-                                                  (mConfig->plugin.display.type == 10) ? 60 : request->arg("disp_cont").toInt();
+                                                  (mConfig->plugin.display.type == 10) ? 140 : request->arg("disp_cont").toInt();
             mConfig->plugin.display.screenSaver = ((mConfig->plugin.display.type == 1) ||  // screensaver available only according optionsMap in setup.html, otherwise default value
                                                    (mConfig->plugin.display.type == 2) ||
                                                    (mConfig->plugin.display.type == 4) ||

From 47e30b3398594c93b927fc956fe15a7a76052745 Mon Sep 17 00:00:00 2001
From: you69man <maschin@gmx.net>
Date: Wed, 17 Jan 2024 20:05:34 +0100
Subject: [PATCH 4/5] fix typos

---
 src/web/html/setup.html | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/web/html/setup.html b/src/web/html/setup.html
index c66bc0b6..b4c72069 100644
--- a/src/web/html/setup.html
+++ b/src/web/html/setup.html
@@ -1060,8 +1060,8 @@
                             [5, "SSD1306 64x48 (0.66\" Wemos OLED Shield)"],
                             [4, "SSD1306 128x32 (0.91\")"],
                             [1, "SSD1306 128x64 (0.96\", 1.54\")"],
-                            [6, "SSD1309 128X64 (2.42\")"],
-                            [3, "PCD8544 84X48 (1.6\" Nokia 5110)"]];
+                            [6, "SSD1309 128x64 (2.42\")"],
+                            [3, "PCD8544 84x48 (1.6\" Nokia 5110)"]];
                 /*IF_ESP32*/
                 opts.push([10, "ePaper"]);
                 /*ENDIF_ESP32*/

From 21234d2ecea06638b341ae98af72476f34c0938e Mon Sep 17 00:00:00 2001
From: you69man <maschin@gmx.net>
Date: Thu, 18 Jan 2024 19:56:22 +0100
Subject: [PATCH 5/5] replace display numbers by enums

---
 src/app.cpp                               |  4 +--
 src/app.h                                 |  2 +-
 src/defines.h                             | 12 +++++++
 src/plugins/Display/Display.h             | 20 ++++++------
 src/plugins/Display/Display_Mono_128X64.h |  7 ++--
 src/plugins/Display/Display_ePaper.cpp    |  3 +-
 src/web/RestApi.h                         | 12 +++----
 src/web/web.h                             | 40 +++++++++++------------
 8 files changed, 57 insertions(+), 43 deletions(-)

diff --git a/src/app.cpp b/src/app.cpp
index c2a1fd6e..32a94cea 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -108,7 +108,7 @@ void app::setup() {
     #endif
     // Plugins
     #if defined(PLUGIN_DISPLAY)
-    if (mConfig->plugin.display.type != 0)
+    if (mConfig->plugin.display.type != DISP_TYPE_T0_NONE)
         #if defined(ESP32)
         mDisplay.setup(this, &mConfig->plugin.display, &mSys, &mNrfRadio, &mCmtRadio, &mTimestamp);
         #else
@@ -186,7 +186,7 @@ void app::regularTickers(void) {
     everySec(std::bind(&WebType::tickSecond, &mWeb), "webSc");
     // Plugins
     #if defined(PLUGIN_DISPLAY)
-    if (mConfig->plugin.display.type != 0)
+    if (mConfig->plugin.display.type != DISP_TYPE_T0_NONE)
         everySec(std::bind(&DisplayType::tickerSecond, &mDisplay), "disp");
     #endif
     every(std::bind(&PubSerialType::tick, &mPubSerial), 5, "uart");
diff --git a/src/app.h b/src/app.h
index e6630219..c9a2a9cc 100644
--- a/src/app.h
+++ b/src/app.h
@@ -319,7 +319,7 @@ class app : public IApp, public ah::Scheduler {
             #endif /*ENABLE_MQTT*/
             #endif
             #if defined(PLUGIN_DISPLAY)
-            if(mConfig->plugin.display.type != 0)
+            if(mConfig->plugin.display.type != DISP_TYPE_T0_NONE)
                mDisplay.payloadEventListener(cmd);
             #endif
            updateLed();
diff --git a/src/defines.h b/src/defines.h
index 792080d6..5e479970 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -78,6 +78,18 @@ union serial_u {
 
 enum {MQTT_STATUS_OFFLINE = 0, MQTT_STATUS_PARTIAL, MQTT_STATUS_ONLINE};
 
+enum {
+    DISP_TYPE_T0_NONE           = 0,
+    DISP_TYPE_T1_SSD1306_128X64 = 1,
+    DISP_TYPE_T2_SH1106_128X64  = 2,
+    DISP_TYPE_T3_PCD8544_84X48  = 3,
+    DISP_TYPE_T4_SSD1306_128X32 = 4,
+    DISP_TYPE_T5_SSD1306_64X48  = 5,
+    DISP_TYPE_T6_SSD1309_128X64 = 6,
+    DISP_TYPE_T10_EPAPER        = 10
+};
+
+
 //-------------------------------------
 // EEPROM
 //-------------------------------------
diff --git a/src/plugins/Display/Display.h b/src/plugins/Display/Display.h
index 7780afef..1748f4dd 100644
--- a/src/plugins/Display/Display.h
+++ b/src/plugins/Display/Display.h
@@ -37,15 +37,15 @@ class Display {
         mDisplayData.version = app->getVersion();  // version never changes, so only set once
 
         switch (mCfg->type) {
-            case 0: mMono = NULL; break;                    // None
-            case 1: mMono = new DisplayMono128X64(); break; // SSD1306_128X64 (0.96", 1.54")
-            case 2: mMono = new DisplayMono128X64(); break; // SH1106_128X64 (1.3")
-            case 3: mMono = new DisplayMono84X48(); break;  // PCD8544_84X48 (1.6" - Nokia 5110)
-            case 4: mMono = new DisplayMono128X32(); break; // SSD1306_128X32 (0.91")
-            case 5: mMono = new DisplayMono64X48(); break;  // SSD1306_64X48 (0.66" - Wemos OLED Shield)
-            case 6: mMono = new DisplayMono128X64(); break; // SSD1309_128X64 (2.42")
+            case DISP_TYPE_T0_NONE:             mMono = NULL; break;                    // None
+            case DISP_TYPE_T1_SSD1306_128X64:   mMono = new DisplayMono128X64(); break; // SSD1306_128X64 (0.96", 1.54")
+            case DISP_TYPE_T2_SH1106_128X64:    mMono = new DisplayMono128X64(); break; // SH1106_128X64 (1.3")
+            case DISP_TYPE_T3_PCD8544_84X48:    mMono = new DisplayMono84X48();  break; // PCD8544_84X48 (1.6" - Nokia 5110)
+            case DISP_TYPE_T4_SSD1306_128X32:   mMono = new DisplayMono128X32(); break; // SSD1306_128X32 (0.91")
+            case DISP_TYPE_T5_SSD1306_64X48:    mMono = new DisplayMono64X48();  break; // SSD1306_64X48 (0.66" - Wemos OLED Shield)
+            case DISP_TYPE_T6_SSD1309_128X64:   mMono = new DisplayMono128X64(); break; // SSD1309_128X64 (2.42")
 #if defined(ESP32) && !defined(ETHERNET)
-            case 10:
+            case DISP_TYPE_T10_EPAPER:
                 mMono = NULL;   // ePaper does not use this
                 mRefreshCycle = 0;
                 mEpaper.config(mCfg->rot, mCfg->pwrSaveAtIvOffline);
@@ -93,7 +93,7 @@ class Display {
 
     private:
     void DataScreen() {
-        if (mCfg->type == 0)
+        if (mCfg->type == DISP_TYPE_T0_NONE)
             return;
 
         float totalPower = 0.0;
@@ -175,7 +175,7 @@ class Display {
             mMono->disp();
         }
 #if defined(ESP32) && !defined(ETHERNET)
-        else if (mCfg->type == 10) {
+        else if (mCfg->type == DISP_TYPE_T10_EPAPER) {
             mEpaper.loop((totalPower), totalYieldDay, totalYieldTotal, nrprod);
             mRefreshCycle++;
         }
diff --git a/src/plugins/Display/Display_Mono_128X64.h b/src/plugins/Display/Display_Mono_128X64.h
index b4aa08cc..a2518e4a 100644
--- a/src/plugins/Display/Display_Mono_128X64.h
+++ b/src/plugins/Display/Display_Mono_128X64.h
@@ -4,6 +4,7 @@
 //-----------------------------------------------------------------------------
 
 #pragma once
+#include "Display.h"
 #include "Display_Mono.h"
 
 class DisplayMono128X64 : public DisplayMono {
@@ -19,13 +20,13 @@ class DisplayMono128X64 : public DisplayMono {
         void init(DisplayData *displayData) {
             u8g2_cb_t *rot = (u8g2_cb_t *)(( mCfg->rot != 0x00) ? U8G2_R2 : U8G2_R0);
             switch (mCfg->type) {
-                case 1:
+                case DISP_TYPE_T1_SSD1306_128X64:
                     monoInit(new U8G2_SSD1306_128X64_NONAME_F_HW_I2C(rot, 0xff, mCfg->disp_clk, mCfg->disp_data), displayData);
                     break;
-                case 2:
+                case DISP_TYPE_T2_SH1106_128X64:
                     monoInit(new U8G2_SH1106_128X64_NONAME_F_HW_I2C(rot, 0xff, mCfg->disp_clk, mCfg->disp_data), displayData);
                     break;
-                case 6:
+                case DISP_TYPE_T6_SSD1309_128X64:
                 default:
                     monoInit(new U8G2_SSD1309_128X64_NONAME0_F_HW_I2C(rot, 0xff, mCfg->disp_clk, mCfg->disp_data), displayData);
                     break;
diff --git a/src/plugins/Display/Display_ePaper.cpp b/src/plugins/Display/Display_ePaper.cpp
index 36d7a901..b59e2f36 100644
--- a/src/plugins/Display/Display_ePaper.cpp
+++ b/src/plugins/Display/Display_ePaper.cpp
@@ -7,6 +7,7 @@
 #endif
 #include "../../utils/helper.h"
 #include "imagedata.h"
+#include "defines.h"
 
 #if defined(ESP32)
 
@@ -29,7 +30,7 @@ void DisplayEPaper::init(uint8_t type, uint8_t _CS, uint8_t _DC, uint8_t _RST, u
     mRefreshState = RefreshStatus::BLACK;
     mSecondCnt = 2;
 
-    if (type == 10) {
+    if (type == DISP_TYPE_T10_EPAPER) {
         Serial.begin(115200);
         _display = new GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT>(GxEPD2_150_BN(_CS, _DC, _RST, _BUSY));
 
diff --git a/src/web/RestApi.h b/src/web/RestApi.h
index 6a9e1e2b..2b808361 100644
--- a/src/web/RestApi.h
+++ b/src/web/RestApi.h
@@ -689,12 +689,12 @@ class RestApi {
             obj[F("disp_cont")]         = (uint8_t)mConfig->plugin.display.contrast;
             obj[F("disp_graph_ratio")]  = (uint8_t)mConfig->plugin.display.graph_ratio;
             obj[F("disp_graph_size")]   = (uint8_t)mConfig->plugin.display.graph_size;
-            obj[F("disp_clk")]          = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_clk;
-            obj[F("disp_data")]         = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_data;
-            obj[F("disp_cs")]           = (mConfig->plugin.display.type < 3)  ? DEF_PIN_OFF : mConfig->plugin.display.disp_cs;
-            obj[F("disp_dc")]           = (mConfig->plugin.display.type < 3)  ? DEF_PIN_OFF : mConfig->plugin.display.disp_dc;
-            obj[F("disp_rst")]          = (mConfig->plugin.display.type < 3)  ? DEF_PIN_OFF : mConfig->plugin.display.disp_reset;
-            obj[F("disp_bsy")]          = (mConfig->plugin.display.type < 10) ? DEF_PIN_OFF : mConfig->plugin.display.disp_busy;
+            obj[F("disp_clk")]          = (mConfig->plugin.display.type == DISP_TYPE_T0_NONE) ? DEF_PIN_OFF : mConfig->plugin.display.disp_clk;
+            obj[F("disp_data")]         = (mConfig->plugin.display.type == DISP_TYPE_T0_NONE) ? DEF_PIN_OFF : mConfig->plugin.display.disp_data;
+            obj[F("disp_cs")]           = (mConfig->plugin.display.type < DISP_TYPE_T3_PCD8544_84X48) ? DEF_PIN_OFF : mConfig->plugin.display.disp_cs;
+            obj[F("disp_dc")]           = (mConfig->plugin.display.type < DISP_TYPE_T3_PCD8544_84X48) ? DEF_PIN_OFF : mConfig->plugin.display.disp_dc;
+            obj[F("disp_rst")]          = (mConfig->plugin.display.type < DISP_TYPE_T3_PCD8544_84X48) ? DEF_PIN_OFF : mConfig->plugin.display.disp_reset;
+            obj[F("disp_bsy")]          = (mConfig->plugin.display.type < DISP_TYPE_T10_EPAPER) ? DEF_PIN_OFF : mConfig->plugin.display.disp_busy;
             obj[F("pir_pin")]           =  mConfig->plugin.display.pirPin;
         }
 
diff --git a/src/web/web.h b/src/web/web.h
index b0688d83..0391e449 100644
--- a/src/web/web.h
+++ b/src/web/web.h
@@ -599,28 +599,28 @@ class Web {
             mConfig->plugin.display.graph_size  = request->arg("disp_graph_size").toInt();
             mConfig->plugin.display.rot         = request->arg("disp_rot").toInt();
             mConfig->plugin.display.type        = request->arg("disp_typ").toInt();
-            mConfig->plugin.display.contrast    = (mConfig->plugin.display.type == 0) ||   // contrast available only according optionsMap in setup.html, otherwise default value
-                                                  (mConfig->plugin.display.type == 10) ? 140 : request->arg("disp_cont").toInt();
-            mConfig->plugin.display.screenSaver = ((mConfig->plugin.display.type == 1) ||  // screensaver available only according optionsMap in setup.html, otherwise default value
-                                                   (mConfig->plugin.display.type == 2) ||
-                                                   (mConfig->plugin.display.type == 4) ||
-                                                   (mConfig->plugin.display.type == 5) ||
-                                                   (mConfig->plugin.display.type == 6)) ? request->arg("disp_screensaver").toInt() : 1;
-            mConfig->plugin.display.graph_ratio = ((mConfig->plugin.display.type == 1) ||  // display graph available only according optionsMap in setup.html, otherwise has to be 0
-                                                   (mConfig->plugin.display.type == 2) ||
-                                                   (mConfig->plugin.display.type == 3) ||
-                                                   (mConfig->plugin.display.type == 6)) ? request->arg("disp_graph_ratio").toInt() : 0;
+            mConfig->plugin.display.contrast    = (mConfig->plugin.display.type  == DISP_TYPE_T0_NONE) ||   // contrast available only according optionsMap in setup.html, otherwise default value
+                                                  (mConfig->plugin.display.type  == DISP_TYPE_T10_EPAPER) ? 140 : request->arg("disp_cont").toInt();
+            mConfig->plugin.display.screenSaver = ((mConfig->plugin.display.type == DISP_TYPE_T1_SSD1306_128X64) ||  // screensaver available only according optionsMap in setup.html, otherwise default value
+                                                   (mConfig->plugin.display.type == DISP_TYPE_T2_SH1106_128X64) ||
+                                                   (mConfig->plugin.display.type == DISP_TYPE_T4_SSD1306_128X32) ||
+                                                   (mConfig->plugin.display.type == DISP_TYPE_T5_SSD1306_64X48) ||
+                                                   (mConfig->plugin.display.type == DISP_TYPE_T6_SSD1309_128X64)) ? request->arg("disp_screensaver").toInt() : 1;
+            mConfig->plugin.display.graph_ratio = ((mConfig->plugin.display.type == DISP_TYPE_T1_SSD1306_128X64) ||  // display graph available only according optionsMap in setup.html, otherwise has to be 0
+                                                   (mConfig->plugin.display.type == DISP_TYPE_T2_SH1106_128X64) ||
+                                                   (mConfig->plugin.display.type == DISP_TYPE_T3_PCD8544_84X48) ||
+                                                   (mConfig->plugin.display.type == DISP_TYPE_T6_SSD1309_128X64)) ? request->arg("disp_graph_ratio").toInt() : 0;
 
                                                                                            // available pins according pinMap in setup.html, otherwise default value
-            mConfig->plugin.display.disp_data   = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_data").toInt();
-            mConfig->plugin.display.disp_clk    = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_clk").toInt();
-            mConfig->plugin.display.disp_cs     = (mConfig->plugin.display.type != 3) &&
-                                                  (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_cs").toInt();
-            mConfig->plugin.display.disp_dc     = (mConfig->plugin.display.type != 3) &&
-                                                  (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_dc").toInt();
-            mConfig->plugin.display.disp_reset  = (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_rst").toInt();
-            mConfig->plugin.display.disp_busy   = (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_bsy").toInt();
-            mConfig->plugin.display.pirPin      = (mConfig->plugin.display.screenSaver != 2) ? DEF_PIN_OFF : request->arg("pir_pin").toInt(); // pir pin only for motion screensaver
+            mConfig->plugin.display.disp_data   = (mConfig->plugin.display.type == DISP_TYPE_T0_NONE) ? DEF_PIN_OFF : request->arg("disp_data").toInt();
+            mConfig->plugin.display.disp_clk    = (mConfig->plugin.display.type == DISP_TYPE_T0_NONE) ? DEF_PIN_OFF : request->arg("disp_clk").toInt();
+            mConfig->plugin.display.disp_cs     = (mConfig->plugin.display.type != DISP_TYPE_T3_PCD8544_84X48) &&
+                                                  (mConfig->plugin.display.type != DISP_TYPE_T10_EPAPER) ? DEF_PIN_OFF : request->arg("disp_cs").toInt();
+            mConfig->plugin.display.disp_dc     = (mConfig->plugin.display.type != DISP_TYPE_T3_PCD8544_84X48) &&
+                                                  (mConfig->plugin.display.type != DISP_TYPE_T10_EPAPER) ? DEF_PIN_OFF : request->arg("disp_dc").toInt();
+            mConfig->plugin.display.disp_reset  = (mConfig->plugin.display.type != DISP_TYPE_T10_EPAPER) ? DEF_PIN_OFF : request->arg("disp_rst").toInt();
+            mConfig->plugin.display.disp_busy   = (mConfig->plugin.display.type != DISP_TYPE_T10_EPAPER) ? DEF_PIN_OFF : request->arg("disp_bsy").toInt();
+            mConfig->plugin.display.pirPin      = (mConfig->plugin.display.screenSaver != DISP_TYPE_T2_SH1106_128X64) ? DEF_PIN_OFF : request->arg("pir_pin").toInt(); // pir pin only for motion screensaver
                                                                                                                                               // otherweise default value
 
             mApp->saveSettings((request->arg("reboot") == "on"));