diff --git a/main/WidgetManager.cpp b/main/WidgetManager.cpp index ef2e451..a363438 100644 --- a/main/WidgetManager.cpp +++ b/main/WidgetManager.cpp @@ -306,6 +306,8 @@ void WidgetManager::applyScreen(uint8_t screenId) { return; } + ensureButtonLabels(*screen); + if (modalContainer_) { ESP_LOGI(TAG, "Closing modal first"); closeModal(); diff --git a/prodxml/Display.h b/prodxml/Display.h new file mode 100644 index 0000000..a75412b --- /dev/null +++ b/prodxml/Display.h @@ -0,0 +1,66 @@ +#pragma once + + +#define paramDelay(time) (uint32_t)( \ + (time & 0xC000) == 0xC000 ? (time & 0x3FFF) * 100 : \ + (time & 0xC000) == 0x0000 ? (time & 0x3FFF) * 1000 : \ + (time & 0xC000) == 0x4000 ? (time & 0x3FFF) * 60000 : \ + (time & 0xC000) == 0x8000 ? ((time & 0x3FFF) > 1000 ? 3600000 : \ + (time & 0x3FFF) * 3600000 ) : 0 ) + +// Parameter with single occurrence +#define StartupDelay 0 // int32_t +#define StartupDelaySelection 4 // 16 Bits, Bit 15-0 +#define Heartbeat 6 // int32_t +#define TemperatureSensor 10 // 1 Bit, Bit 7 +#define TemperatureSensorMask 0x80 +#define TemperatureSensorShift 7 +#define HumiditySensor 10 // 1 Bit, Bit 6 +#define HumiditySensorMask 0x40 +#define HumiditySensorShift 6 +#define TemperatureAlign 11 // float +#define HumidityAlign 13 // float +#define HumiditySend 15 // 8 Bits, Bit 7-0 + +// Zeit (Sekundengenau) +#define ParamStartupDelay ((int32_t)knx.paramInt(StartupDelay)) +// Zeit bis das Gerät nach einem Neustart aktiv wird +#define ParamStartupDelaySelection (knx.paramWord(StartupDelaySelection)) +// 'In Betrieb'-Telegramm senden alle +#define ParamHeartbeat ((int32_t)knx.paramInt(Heartbeat)) +// Temperatursensor +#define ParamTemperatureSensor ((bool)(knx.paramByte(TemperatureSensor) & TemperatureSensorMask)) +// Luftfeuchtesensor +#define ParamHumiditySensor ((bool)(knx.paramByte(HumiditySensor) & HumiditySensorMask)) +// Temperaturwert anpassen +#define ParamTemperatureAlign (knx.paramFloat(TemperatureAlign, Float_Enc_IEEE754Single)) +// Luftfeuchte anpassen +#define ParamHumidityAlign (knx.paramFloat(HumidityAlign, Float_Enc_IEEE754Single)) +// Wert senden als +#define ParamHumiditySend (knx.paramByte(HumiditySend)) + +// Communication objects with single occurrence +#define KoHeartbeat 1 +#define KoTemperature 2 +#define KoHumidity 3 +#define KoRequest 4 + +// In Betieb +#define KoHeartbeat (knx.getGroupObject(KoHeartbeat)) +// Temperaturmesswert +#define KoTemperature (knx.getGroupObject(KoTemperature)) +// Luftfeuchtemesswert +#define KoHumidity (knx.getGroupObject(KoHumidity)) +// Alle Messwerte anfordern +#define KoRequest (knx.getGroupObject(KoRequest)) + +#ifdef MAIN_FirmwareRevision +#ifndef FIRMWARE_REVISION +#define FIRMWARE_REVISION MAIN_FirmwareRevision +#endif +#endif +#ifdef MAIN_FirmwareName +#ifndef FIRMWARE_NAME +#define FIRMWARE_NAME MAIN_FirmwareName +#endif +#endif diff --git a/prodxml/Display.xml b/prodxml/Display.xml new file mode 100644 index 0000000..16d427a --- /dev/null +++ b/prodxml/Display.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web-interface/src/components/CanvasArea.vue b/web-interface/src/components/CanvasArea.vue index 23a912e..f09339d 100644 --- a/web-interface/src/components/CanvasArea.vue +++ b/web-interface/src/components/CanvasArea.vue @@ -1,16 +1,16 @@ - + - Bildschirme + Bildschirme {{ store.config.screens.length }} - Einstellungen - + - + Einstellungen + + + {{ screensOpen ? 'expand_less' : 'expand_more' }} @@ -19,12 +19,17 @@ {{ screen.name }} - {{ screen.mode === 1 ? 'Modal' : 'Fullscreen' }} + + {{ screen.mode === 1 ? 'Modal' : 'Fullscreen' }} + diff --git a/web-interface/src/components/IconPicker.vue b/web-interface/src/components/IconPicker.vue index f4904ed..2cd33ac 100644 --- a/web-interface/src/components/IconPicker.vue +++ b/web-interface/src/components/IconPicker.vue @@ -3,12 +3,12 @@ class="fixed inset-0 bg-black/60 flex items-center justify-center z-50" @click.self="$emit('close')" > - + - Icon auswaehlen + Icon auswaehlen x @@ -33,7 +33,7 @@ {{ String.fromCodePoint(modelValue) }} {{ currentIconName }} Entfernen diff --git a/web-interface/src/components/ScreenSettingsModal.vue b/web-interface/src/components/ScreenSettingsModal.vue index e3e6caa..f111747 100644 --- a/web-interface/src/components/ScreenSettingsModal.vue +++ b/web-interface/src/components/ScreenSettingsModal.vue @@ -1,13 +1,13 @@ - + - Bildschirm - x + Bildschirm + x - Allgemein + Allgemein Name @@ -26,7 +26,7 @@ - Modal + Modal X Y Breite @@ -42,8 +42,8 @@ Kein Bildschirm ausgewaehlt. - Schliessen - Screen loeschen + Schliessen + Screen loeschen diff --git a/web-interface/src/components/SettingsModal.vue b/web-interface/src/components/SettingsModal.vue index 9471927..257d08b 100644 --- a/web-interface/src/components/SettingsModal.vue +++ b/web-interface/src/components/SettingsModal.vue @@ -1,13 +1,13 @@ - + - Einstellungen - x + Einstellungen + x - Allgemein + Allgemein Startscreen @@ -32,7 +32,7 @@ - Schliessen + Schliessen diff --git a/web-interface/src/components/SidebarLeft.vue b/web-interface/src/components/SidebarLeft.vue index 36fbb65..20bcdd3 100644 --- a/web-interface/src/components/SidebarLeft.vue +++ b/web-interface/src/components/SidebarLeft.vue @@ -1,8 +1,8 @@ - Einstellungen - USB-Modus - Zuruecksetzen - Speichern & Anwenden + Einstellungen + USB-Modus + Zuruecksetzen + Speichern & Anwenden diff --git a/web-interface/src/style.css b/web-interface/src/style.css index 1a70a2a..8b59db9 100644 --- a/web-interface/src/style.css +++ b/web-interface/src/style.css @@ -6,7 +6,7 @@ --bg-2: #e6edf3; --panel: #ffffff; --panel-2: #f3f6f9; - --border: #d5dce3; + --border: #c8d2dc; --text: #1f2a33; --muted: #6b7885; --accent: #5a93da;
+ +