From b40a694bce8ce657dfddbdaf0ef9921e8eece6dc Mon Sep 17 00:00:00 2001 From: jp112sdl Date: Fri, 21 May 2021 14:10:26 +0200 Subject: [PATCH 1/8] HB-UNI-Sen-CURRENT: fix option enumeration --- .../www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/addon/www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl b/src/addon/www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl index d4d0a2d5..7abc890c 100755 --- a/src/addon/www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl +++ b/src/addon/www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl @@ -119,8 +119,8 @@ proc set_htmlParams {iface address pps pps_descr special_input_id peer_type} { set options(2) "SCT-013-030" set options(3) "SCT-013-050" set options(4) "SCT-013-100" - set options(4) "INA219" - set options(4) "ACS712 or other" + set options(5) "INA219" + set options(6) "ACS712 or other" append HTML_PARAMS(separate_1) "\${stringTableHbGenericDistSensorType} " set cmb $chn append cmb $prn From 84f77cdde47c9f465563950882ec6d529450985f Mon Sep 17 00:00:00 2001 From: jp112sdl Date: Sun, 23 May 2021 09:49:35 +0200 Subject: [PATCH 2/8] HB-OU-RGBW-LED-FX: add "effect options" --- .../js/lang/de/translate.lang.extension.js | 1 + patchsource/www/webui/webui.js | 2 +- .../firmware/rftypes/hb-ou-rgbw-led-fx.xml | 4 +++ .../localization/de/GENERIC.txt | 1 + .../localization/en/GENERIC.txt | 1 + .../SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl | 7 +++- .../rega/pages/msg/setHBOURGBWLEDFXMode.htm | 33 +++++++++++++------ 7 files changed, 37 insertions(+), 12 deletions(-) diff --git a/patchsource/www/webui/js/lang/de/translate.lang.extension.js b/patchsource/www/webui/js/lang/de/translate.lang.extension.js index 839370f1..7abc521d 100755 --- a/patchsource/www/webui/js/lang/de/translate.lang.extension.js +++ b/patchsource/www/webui/js/lang/de/translate.lang.extension.js @@ -650,6 +650,7 @@ jQuery.extend(true,langJSON, { "iconChDirArrow":"Pfeil zum Taster", "lblHbIterations":"Anzahl der Durchl%E4ufe", "lblEffectNr":"Effekt", + "lblEffectOptions":"Effekt-Optionen", "lblEffectSpeed":"Effektgeschwindigkeit", "iconHbSprinkler":"Sprinkler", "iconHbValve":"Wasserhahn", diff --git a/patchsource/www/webui/webui.js b/patchsource/www/webui/webui.js index 1932860c..f1a9e8e8 100755 --- a/patchsource/www/webui/webui.js +++ b/patchsource/www/webui/webui.js @@ -24270,7 +24270,7 @@ iseMessageBox.prototype = case ID_SET_HBOURGBWLEDFX_MODE: this.setTitle( translateKey("dialogEnterValue") /*"Wert eingeben" */); this.addToPostBody( 'string type = "'+this.type+'";' ); - this.setWidth(400); + this.setWidth(480); this.setFile( "/pages/msg/setHBOURGBWLEDFXMode.htm" ); break; case ID_SET_STATUS_DISPLAY: diff --git a/src/addon/firmware/rftypes/hb-ou-rgbw-led-fx.xml b/src/addon/firmware/rftypes/hb-ou-rgbw-led-fx.xml index 0cd25566..f8308292 100644 --- a/src/addon/firmware/rftypes/hb-ou-rgbw-led-fx.xml +++ b/src/addon/firmware/rftypes/hb-ou-rgbw-led-fx.xml @@ -413,6 +413,10 @@ + + + + diff --git a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/de/GENERIC.txt b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/de/GENERIC.txt index 98b42056..42f60deb 100755 --- a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/de/GENERIC.txt +++ b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/de/GENERIC.txt @@ -5,5 +5,6 @@ "signal_led_chime_on" : "Segment ein", "signal_led_chime_off" : "Segment aus", "signal_effect" : "Effekt", +"signal_effectoptions" : "Effektoptionen", "button_inactive" : "Taste deaktiviert", diff --git a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/en/GENERIC.txt b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/en/GENERIC.txt index f911134a..9b776dfb 100755 --- a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/en/GENERIC.txt +++ b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/localization/en/GENERIC.txt @@ -5,6 +5,7 @@ "signal_led_chime_off" : "Segment off", "signal_kind" : "Signal type", "signal_effect" : "Effect", +"signal_effectoptions" : "Effect options", "signal_speed" : "Speed", "signal_intens" : "Brightness", "button_inactive" : "Button deactivated", diff --git a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl index 7982a4c0..7cab815c 100755 --- a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl +++ b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl @@ -82,6 +82,12 @@ set options(64) "Custom 7" append HTML_PARAMS(separate_$prn) [get_ComboBox options SHORT_ACT_TYPE|LONG_ACT_TYPE separate_${special_input_id}_$prn\_$pref PROFILE_$prn SHORT_ACT_TYPE] append HTML_PARAMS(separate_$prn) "" +incr pref +set id "separate_${special_input_id}_$prn\_$pref" +append HTML_PARAMS(separate_$prn) "\${signal_effectoptions} ($min - $max)" +append HTML_PARAMS(separate_$prn) "" +append HTML_PARAMS(separate_$prn) "" + incr pref set id "separate_${special_input_id}_$prn\_$pref" append HTML_PARAMS(separate_$prn) "\${signal_speed} ($min - $max)" @@ -106,7 +112,6 @@ append HTML_PARAMS(separate_$prn) "G ($min - $max)" append HTML_PARAMS(separate_$prn) "" append HTML_PARAMS(separate_$prn) "" - incr pref set id "separate_${special_input_id}_$prn\_$pref" append HTML_PARAMS(separate_$prn) "B ($min - $max)" diff --git a/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm b/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm index ed2795f8..dedf11bc 100755 --- a/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm +++ b/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm @@ -72,20 +72,20 @@ <% Write(''); Write(''); - Write(''); + Write(''); + Write(''); ! Helligkeit Write('${lblBrightnessLevel} '); Write(''); Write(''); + Write(''); ! Speed Write('${lblEffectSpeed} '); Write(''); Write(''); - - - Write(''); + Write(''); ! Effekt Write('${lblEffectNr} '); Write(''); @@ -158,26 +158,32 @@ Write(''); Write(''); Write(''); - + + Write(''); + ! Optionen + Write('${lblEffectOptions} '); + Write(''); Write(''); + + Write(''); ! Rot Write('${colorRED} '); Write(''); Write(''); - Write(''); + Write(''); ! Gruen Write('${colorGREEN} '); Write(''); Write(''); - Write(''); + Write(''); ! Blau Write('${colorBLUE} '); Write(''); Write(''); - Write(''); + Write(''); ! Weiss Write('${colorWHITE} '); Write(''); @@ -259,11 +265,13 @@ var green = parseInt(origValues[6]); // 0 - 255 var blue = parseInt(origValues[7]); // 0 - 255 var white = parseInt(origValues[8]); // 0 - 255 + var fxoptions = parseInt(origValues[9]); // 0 - 255 var oTime = convertSeconds2HHMMSS(duration, minMaxValues.max.duration); document.getElementById("ouSpeedLED").value = speed; document.getElementById("ouBrightnessLED").value = brightness; document.getElementById("ouEffectLED").value = effect; + document.getElementById("ouEffectOptionsLED").value = fxoptions; document.getElementById("ouRedLED").value = red; document.getElementById("ouGreenLED").value = green; document.getElementById("ouBlueLED").value = blue; @@ -278,7 +286,7 @@ }; function getDefaultValue(ch) { - return "0,128,0,128,1,255,0,0,0,0"; + return "0,128,0,128,1,255,0,0,0,0,0"; }; function setHintMinMax(minMax) { @@ -386,6 +394,7 @@ minMax.min.red = 0; minMax.min.green = 0; minMax.min.blue = 0; + minMax.min.fxoptions = 0; minMax.max.brightness = 255; minMax.max.duration = 108000; @@ -395,6 +404,7 @@ minMax.max.green = 255; minMax.max.blue = 255; minMax.max.white = 255; + minMax.max.fxoptions = 255; return minMax; }; @@ -422,6 +432,7 @@ oVal["green"] = setMinMax("green", oVal.green); oVal["blue"] = setMinMax("blue", oVal.blue); oVal["white"] = setMinMax("white", oVal.white); + oVal["fxoptions"] = setMinMax("fxoptions", oVal.fxoptions); oVal["duration"] = setMinMax("duration", oVal.duration); return oVal; @@ -468,6 +479,7 @@ oValues.green = document.getElementById("ouGreenLED").value; oValues.blue = document.getElementById("ouBlueLED").value; oValues.white = document.getElementById("ouWhiteLED").value; + oValues.fxoptions = document.getElementById("ouEffectOptionsLED").value; oValues.duration = getUserTime(1); @@ -480,7 +492,8 @@ settings += oValues.red +","; settings += oValues.green +","; settings += oValues.blue +","; - settings += oValues.white; + settings += oValues.white +","; + settings += oValues.fxoptions; console.log("settings: " + settings); return settings; From 1616add989430531edee72621468d88ccaa7e122 Mon Sep 17 00:00:00 2001 From: jp112sdl Date: Tue, 25 May 2021 21:01:15 +0200 Subject: [PATCH 3/8] code formatting --- patchsource/www/webui/webui.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patchsource/www/webui/webui.js b/patchsource/www/webui/webui.js index f1a9e8e8..5465ebfd 100755 --- a/patchsource/www/webui/webui.js +++ b/patchsource/www/webui/webui.js @@ -350,7 +350,8 @@ DEV_LIST.push('HB-RC-6-PBU-LED'); DEV_DESCRIPTION['HB-RC-6-PBU-LED']='6 remote channel push button with led'; DEV_PATHS['HB-RC-6-PBU-LED'] = new Object(); DEV_PATHS['HB-RC-6-PBU-LED']['50'] = '/config/img/devices/50/hb-rc-6-pbu-led_thumb.png'; -DEV_PATHS['HB-RC-6-PBU-LED']['250'] = '/config/img/devices/250/hb-rc-6-pbu-led.png';DEV_HIGHLIGHT['HB-RC-6-PBU-LED'] = new Object(); +DEV_PATHS['HB-RC-6-PBU-LED']['250'] = '/config/img/devices/250/hb-rc-6-pbu-led.png'; +DEV_HIGHLIGHT['HB-RC-6-PBU-LED'] = new Object(); DEV_HIGHLIGHT['HB-RC-6-PBU-LED']['Light_circle'] = [4, 0.8079999999999999, 0.656, 0.118, 0.112]; DEV_HIGHLIGHT['HB-RC-6-PBU-LED']['Light_beam_1'] = [6, 0.748, 0.712, 0.776, 0.712, 0.016]; DEV_HIGHLIGHT['HB-RC-6-PBU-LED']['Light_beam_2'] = [6, 0.776, 0.632, 0.8, 0.652, 0.016]; @@ -424,7 +425,8 @@ DEV_LIST.push('HB-OU-MP3-LED'); DEV_DESCRIPTION['HB-OU-MP3-LED']='MP3 Player with adressable LED'; DEV_PATHS['HB-OU-MP3-LED'] = new Object(); DEV_PATHS['HB-OU-MP3-LED']['50'] = '/config/img/devices/50/hb-ou-mp3-led_thumb.png'; -DEV_PATHS['HB-OU-MP3-LED']['250'] = '/config/img/devices/250/hb-ou-mp3-led.png';DEV_HIGHLIGHT['HB-OU-MP3-LED'] = new Object(); +DEV_PATHS['HB-OU-MP3-LED']['250'] = '/config/img/devices/250/hb-ou-mp3-led.png'; +DEV_HIGHLIGHT['HB-OU-MP3-LED'] = new Object(); DEV_HIGHLIGHT['HB-OU-MP3-LED']['Light_circle'] = [4, 0.8079999999999999, 0.656, 0.118, 0.112]; DEV_HIGHLIGHT['HB-OU-MP3-LED']['Light_beam_1'] = [6, 0.748, 0.712, 0.776, 0.712, 0.016]; DEV_HIGHLIGHT['HB-OU-MP3-LED']['Light_beam_2'] = [6, 0.776, 0.632, 0.8, 0.652, 0.016]; From 76ab5ddf43133b3078fb182dea5e086707a10fe1 Mon Sep 17 00:00:00 2001 From: jp112sdl Date: Tue, 25 May 2021 21:03:33 +0200 Subject: [PATCH 4/8] add HB-LC-SwX-TP --- README.md | 3 + .../www/config/ic_deviceparameters.cgi | 1 + patchsource/www/webui/webui.js | 24 + src/addon/devdb.csv | 4 + src/addon/firmware/rftypes/hb_switch_tp.xml | 1471 +++++++++++++++++ src/addon/js/jp_webui_inc.js | 457 +++++ .../common/ic_deviceparameters.cgi.patch | 10 +- src/addon/patch/common/webui.js.patch | 46 +- .../config/easymodes/MASTER_LANG/HB-SW-TP.js | 70 + .../easymodes/MASTER_LANG/HB-SW-TP_HELP.js | 10 + .../config/easymodes/hb_sw_tp_ch_master.tcl | 230 +++ .../easymodes/hb_sw_tp_ch_master_intkey.tcl | 16 + .../config/img/devices/250/hb-lc-sw1-tp.png | Bin 0 -> 14584 bytes .../config/img/devices/250/hb-lc-sw2-tp.png | Bin 0 -> 14418 bytes .../config/img/devices/250/hb-lc-sw4-tp.png | Bin 0 -> 15787 bytes .../config/img/devices/250/hb-lc-swx-tp.png | Bin 0 -> 14598 bytes .../img/devices/50/hb-lc-sw1-tp_thumb.png | Bin 0 -> 3475 bytes .../img/devices/50/hb-lc-sw2-tp_thumb.png | Bin 0 -> 3572 bytes .../img/devices/50/hb-lc-sw4-tp_thumb.png | Bin 0 -> 3494 bytes .../img/devices/50/hb-lc-swx-tp_thumb.png | Bin 0 -> 3475 bytes 20 files changed, 2331 insertions(+), 11 deletions(-) create mode 100644 src/addon/firmware/rftypes/hb_switch_tp.xml create mode 100755 src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP.js create mode 100755 src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP_HELP.js create mode 100755 src/addon/www/config/easymodes/hb_sw_tp_ch_master.tcl create mode 100755 src/addon/www/config/easymodes/hb_sw_tp_ch_master_intkey.tcl create mode 100755 src/addon/www/config/img/devices/250/hb-lc-sw1-tp.png create mode 100755 src/addon/www/config/img/devices/250/hb-lc-sw2-tp.png create mode 100755 src/addon/www/config/img/devices/250/hb-lc-sw4-tp.png create mode 100755 src/addon/www/config/img/devices/250/hb-lc-swx-tp.png create mode 100755 src/addon/www/config/img/devices/50/hb-lc-sw1-tp_thumb.png create mode 100755 src/addon/www/config/img/devices/50/hb-lc-sw2-tp_thumb.png create mode 100755 src/addon/www/config/img/devices/50/hb-lc-sw4-tp_thumb.png create mode 100755 src/addon/www/config/img/devices/50/hb-lc-swx-tp_thumb.png diff --git a/README.md b/README.md index d4badb85..f46cc30f 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,9 @@ _Bitte etwas Geduld haben - je nach Geschwindigkeit der SD Karte kann die Instal |F3 20 | HB-LC-SW12-FM | |F3 21 | HB-LC-Bl1-FM-BAT| |F3 22 | HB-LC-SwX-TP | +|F3 23 | HB-LC-Sw1-TP | +|F3 24 | HB-LC-Sw2-TP | +|F3 25 | HB-LC-Sw4-TP | |F3 2B | HB-RC-X-POS | |F3 2C | HB-RC-10-POS | |F3 2D | HB-RC-4-TOUCH | diff --git a/patchsource/www/config/ic_deviceparameters.cgi b/patchsource/www/config/ic_deviceparameters.cgi index 50e1e62f..0cd974f0 100755 --- a/patchsource/www/config/ic_deviceparameters.cgi +++ b/patchsource/www/config/ic_deviceparameters.cgi @@ -891,6 +891,7 @@ proc put_channel_parameters {} { || ([string equal $ch_paramid "dw_controller_color_virt_ch_master"] == 1) || ([string equal $ch_paramid "dw_controller_brightness_ch_master"] == 1) || ([string equal $ch_paramid "dw_controller_brightness_virt_ch_master"] == 1) + || ([string equal $ch_paramid "hb_sw_tp_ch_master"] == 1) } { setInternalDeviceKey $ch_paramid } diff --git a/patchsource/www/webui/webui.js b/patchsource/www/webui/webui.js index 5465ebfd..50d9c24c 100755 --- a/patchsource/www/webui/webui.js +++ b/patchsource/www/webui/webui.js @@ -328,6 +328,30 @@ DEV_DESCRIPTION['HB-UNI-DMX-Master']='Universal Simple DMX Controller (Master)'; DEV_PATHS['HB-UNI-DMX-Master'] = new Object(); DEV_PATHS['HB-UNI-DMX-Master']['50'] = '/config/img/devices/50/hb-uni-dmx-master_thumb.png'; DEV_PATHS['HB-UNI-DMX-Master']['250'] = '/config/img/devices/250/hb-uni-dmx-master.png'; +DEV_HIGHLIGHT['HB-LC-SwX-TP'] = new Object(); +DEV_LIST.push('HB-LC-SwX-TP'); +DEV_DESCRIPTION['HB-LC-SwX-TP']='radio-controlled switch actuator X-channel, with time profile'; +DEV_PATHS['HB-LC-SwX-TP'] = new Object(); +DEV_PATHS['HB-LC-SwX-TP']['50'] = '/config/img/devices/50/hb-lc-swx-tp_thumb.png'; +DEV_PATHS['HB-LC-SwX-TP']['250'] = '/config/img/devices/250/hb-lc-swx-tp.png'; +DEV_HIGHLIGHT['HB-LC-Sw1-TP'] = new Object(); +DEV_LIST.push('HB-LC-Sw1-TP'); +DEV_DESCRIPTION['HB-LC-Sw1-TP']='radio-controlled switch actuator 1-channel, with time profile'; +DEV_PATHS['HB-LC-Sw1-TP'] = new Object(); +DEV_PATHS['HB-LC-Sw1-TP']['50'] = '/config/img/devices/50/hb-lc-sw1-tp_thumb.png'; +DEV_PATHS['HB-LC-Sw1-TP']['250'] = '/config/img/devices/250/hb-lc-sw1-tp.png'; +DEV_HIGHLIGHT['HB-LC-Sw2-TP'] = new Object(); +DEV_LIST.push('HB-LC-Sw2-TP'); +DEV_DESCRIPTION['HB-LC-Sw2-TP']='radio-controlled switch actuator 2-channel, with time profile'; +DEV_PATHS['HB-LC-Sw2-TP'] = new Object(); +DEV_PATHS['HB-LC-Sw2-TP']['50'] = '/config/img/devices/50/hb-lc-sw2-tp_thumb.png'; +DEV_PATHS['HB-LC-Sw2-TP']['250'] = '/config/img/devices/250/hb-lc-sw2-tp.png'; +DEV_HIGHLIGHT['HB-LC-Sw4-TP'] = new Object(); +DEV_LIST.push('HB-LC-Sw4-TP'); +DEV_DESCRIPTION['HB-LC-Sw4-TP']='radio-controlled switch actuator 4-channel, with time profile'; +DEV_PATHS['HB-LC-Sw4-TP'] = new Object(); +DEV_PATHS['HB-LC-Sw4-TP']['50'] = '/config/img/devices/50/hb-lc-sw4-tp_thumb.png'; +DEV_PATHS['HB-LC-Sw4-TP']['250'] = '/config/img/devices/250/hb-lc-sw4-tp.png'; DEV_HIGHLIGHT['HB-Sec-RHS-3'] = new Object(); DEV_LIST.push('HB-Sec-RHS-3'); DEV_DESCRIPTION['HB-Sec-RHS-3']='HB Rotary Handle Sensor with battery state'; diff --git a/src/addon/devdb.csv b/src/addon/devdb.csv index 04db13ee..158cbeec 100644 --- a/src/addon/devdb.csv +++ b/src/addon/devdb.csv @@ -16,6 +16,10 @@ HB-LC-Sw1PBU-FM;PushButton-2ch-wm HB-LC-Sw2-FM;5_hm-lc-sw2-fm HB-LC-Sw2PBU-FM;PushButton-2ch-wm HB-LC-Sw12-FM;hb-lc-sw12-fm +HB-LC-SwX-TP;hb-lc-swx-tp +HB-LC-Sw1-TP;hb-lc-sw1-tp +HB-LC-Sw2-TP;hb-lc-sw2-tp +HB-LC-Sw4-TP;hb-lc-sw4-tp HB-OU-AF-SEN-TEMP;hb-ou-af-sen-temp HB-OU-MOT-FAN;hb-ou-mot-fan HB-OU-MOT-FAN-RPM;hb-ou-mot-fan diff --git a/src/addon/firmware/rftypes/hb_switch_tp.xml b/src/addon/firmware/rftypes/hb_switch_tp.xml new file mode 100644 index 00000000..bb21ed36 --- /dev/null +++ b/src/addon/firmware/rftypes/hb_switch_tp.xml @@ -0,0 +1,1471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/addon/js/jp_webui_inc.js b/src/addon/js/jp_webui_inc.js index 31e568ba..17cee1b6 100644 --- a/src/addon/js/jp_webui_inc.js +++ b/src/addon/js/jp_webui_inc.js @@ -1,3 +1,460 @@ +//Defines +/* +TOM_DAYIDX = new Array(); +TOM_DAYIDX['SATURDAY'] = 0; +TOM_DAYIDX['SUNDAY'] = 1; +TOM_DAYIDX['MONDAY'] = 2; +TOM_DAYIDX['TUESDAY'] = 3; +TOM_DAYIDX['WEDNESDAY'] = 4; +TOM_DAYIDX['THURSDAY'] = 5; +TOM_DAYIDX['FRIDAY'] = 6; + +TOM_DAY_ENG = new Array('SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY'); + +tom_endtime = 0; +tom_level = 1; + +tom_maxtimeout = 1440; +tom_mintimeout = 0; + +*/ + +//----- + + +CC_save_Level = function(prgName) +{ + var prg = (typeof prgName != "undefined" && prgName != null) ? prgName : ""; + for (loop = 0; loop <= (document.getElementsByName(prg+'level_tmp').length -1); loop++) + { + document.getElementsByName(prg + 'level')[loop].value = parseInt(document.getElementsByName(prg +'level_tmp')[loop].value); + } +}; + +HBTimeoutManager = Class.create(); + +HBTimeoutManager.prototype = Object.extend(new MsgBox(), { + + initialize: function (iface, address, isOldDevGeneration, prgName) { + + this.TOM_DAY = new Array ( + translateKey('timeModuleLblSelSerialPatternSaturday') , + translateKey('timeModuleLblSelSerialPatternSunday') , + translateKey('timeModuleLblSelSerialPatternMonday') , + translateKey('timeModuleLblSelSerialPatternTuesday') , + translateKey('timeModuleLblSelSerialPatternWednesday') , + translateKey('timeModuleLblSelSerialPatternThursday') , + translateKey('timeModuleLblSelSerialPatternFriday') + ); + + this.isOldDevGeneration = isOldDevGeneration; + this.iface = iface; + this.address = address; + + this.prg = (prgName != undefined && prgName != null) ? prgName : ""; + + //Woche anlegen und initialisieren + this.week = new Array(7); + this.divname = new Array(7); //DIV-Container + this.weekdirty = new Array(7); //Sind ƒnderungen erfolgt? + + this.setMaxTimouts(); + + for (var dayidx = 0; dayidx < 7; dayidx++) { + this.week[dayidx] = new Array(); + this.divname[dayidx] = ''; + this.weekdirty[dayidx] = false; + } + }, + + setMaxTimouts: function() { + this.maxTimeOuts = 13; + }, + + setDivname: function (day, divid) { + var dayidx = TOM_DAYIDX[day]; + this.divname[dayidx] = divid; + }, + + tom_toTime: function (timeout) { + + var h = parseInt(timeout / 60); + var m = timeout - h * 60; + + if (String(m).length == 1) m = "0" + m; + if (String(h).length == 1) h = "0" + h; + + return h + ":" + m; + }, + + tom_toTimeout: function (time) { + + var tokens; + var h, m; + var timeout = -1; + + if (this.tom_isTime(time)) { + tokens = time.split(':'); + h = tokens[0]; + m = tokens[1]; + + timeout = parseInt(h, 10) * 60 + parseInt(m, 10); + } + + return timeout; + }, + + tom_isTime: function (time) { + return time.match(/^[0-2]?[0-9]:[0-5][0,5]$/) != null; + }, + + tom_isLevel: function (level) { + return level.match(/\b([01]?[0-9][0-9]?|200)\b/) != null; + }, + + tom_checkAndSetTime: function (day, inputel, timeoutIdx) { + + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + var elem = inputel.id.split("_"); + var count = -1; + var inputelem; + var endtime; + var prev_endtime; + var next_endtime; + var time; + + if (!this.prg) { + while ($(elem[0] + '_' + elem[1] + '_' + (count + 1))) { + count++; + timeouts[count][tom_endtime] = this.tom_toTimeout($(elem[0] + '_' + elem[1] + '_' + count).value); + } + } else { + while ($(this.prg + elem[1] + '_' + elem[2] + '_' + (count + 1))) { + count++; + timeouts[count][tom_endtime] = this.tom_toTimeout($(this.prg + elem[1] + '_' + elem[2] + '_' + count).value); + } + } + + for (var loop = 0; loop <= (count - 1); loop++) { + timeoutIdx = loop; + if (!this.prg) { + inputelem = elem[0] + "_" + elem[1] + "_" + loop; + } else { + inputelem = this.prg + elem[1] + "_" + elem[2] + "_" + loop; + } + if (this.isOldDevGeneration) { + // Minuten der Zeit auf volle 10 pruefen und ggf. anpassen + $(inputelem).value = time = $(inputelem).value.replace(/[1-9]$/, "0"); + } else { + // Minuten der Zeit auf volle 5 pruefen und ggf. anpassen + var arTime = $(inputelem).value.split(":"), + hour = parseInt(arTime[0]), + min =Math.round(arTime[1] / 5) * 5 ; + if (min <= 9) {min = "0" + min;} + if (min == 60) {min = "00"; hour++;} + if (hour <= 9) {hour = "0" + hour;} + if (hour == 24) {hour = "23"; min = "55";} + + $(inputelem).value = time = hour + ":" + min; + } + endtime = this.tom_toTimeout(time); + prev_endtime = -1; + next_endtime = -1; + + + if (timeoutIdx != 0) prev_endtime = timeouts[timeoutIdx - 1][tom_endtime]; + if (timeoutIdx != timeouts.length - 1) next_endtime = timeouts[timeoutIdx + 1][tom_endtime]; + + + $(inputelem).style.backgroundColor = WebUI.getColor("transparent"); + if (endtime > 0 + && endtime <= 1440 + && (prev_endtime < 0 || prev_endtime < endtime) + && (next_endtime < 0 || next_endtime > endtime)) timeouts[timeoutIdx][tom_endtime] = parseInt(endtime); + else $(inputelem).style.backgroundColor = WebUI.getColor("red"); + + this.weekdirty[dayidx] = true; + } + }, + + tom_checkAndSetLevel: function (day, inputelem, timeoutIdx) { + + var level = inputelem.value; + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + + inputelem.style.backgroundColor = WebUI.getColor("transparent"); + + if (this.tom_isLevel(level) + && level >= 0 + && level <= 200) timeouts[timeoutIdx][tom_level] = parseInt(level); + else inputelem.style.backgroundColor = WebUI.getColor("red"); + + this.weekdirty[dayidx] = true; + }, + + tom_setDirty: function (day, inputelem, timeoutIdx) { + CC_save_Level(this.prg); + var tmp = inputelem.id.split("_"); + + if (this.prg) { + var id = this.prg + tmp[1] + "_" + tmp[2] + "_" + tmp[3]; + } else { + var id = tmp[0] + "_" + tmp[1] + "_" + tmp[2]; + } + var level = $F(id); + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + + inputelem.style.backgroundColor = WebUI.getColor("transparent"); + + if (this.tom_isLevel(level) + && level >= 0 + && level <= 200) timeouts[timeoutIdx][tom_level] = parseInt(level); + else inputelem.style.backgroundColor = WebUI.getColor("red"); + + this.weekdirty[dayidx] = true; + + }, + + tom_getPostStr: function () { + + var postStr = ""; + + for (var dayidx = 0; dayidx < 7; dayidx++) { + //Welcher Tag enth‰lt die relevanten Daten: "wie am Vortag"-Funktion? + var prev_day = $(this.prg + 'prevday_' + dayidx); + var p = dayidx; + while (prev_day.checked) { + p--; + prev_day = $(this.prg+ 'prevday_' + p); + } + //----- + + if (this.weekdirty[dayidx] || this.weekdirty[p]) //Dieser Tag oder der Vortag "dirty"? + { + var timeouts = this.week[p]; + + if (timeouts && timeouts.length > 0) { + for (var i = 0; i < timeouts.length; i++) { + if (this.isOldDevGeneration) { + postStr += "&LEVEL" + TOM_DAY_ENG[dayidx] +"_" + (i+1) + "=" + timeouts[i][tom_level]; + postStr += "&TIMEOUT_" + TOM_DAY_ENG[dayidx] +"_" + (i+1) + "=" + timeouts[i][tom_endtime]; + } else { + postStr += "&" + this.prg + "LEVEL_" + TOM_DAY_ENG[dayidx] + "_" + (i + 1) + "=" + timeouts[i][tom_level]; + postStr += "&" + this.prg + "ENDTIME_" + TOM_DAY_ENG[dayidx] + "_" + (i + 1) + "=" + timeouts[i][tom_endtime]; + } + } + } + } + } + + return postStr; + }, + + tom_isDirty: function () { + + for (var dayidx = 0; dayidx < 7; dayidx++) { + if (this.weekdirty[dayidx]) return true; + } + return false; + }, + + //day: MONDAY, TUESDAY, ... + //endtime: 0..1440 + setLevel: function (day, endtime, level) { + + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + var i = 0; + if (!timeouts) timeouts = new Array(); + + while (i < timeouts.length && endtime >= timeouts[i][tom_endtime]) { + if (timeouts[i][tom_endtime] == endtime) { + return; + } + + i++; + } + + if (i < timeouts.length) { + //Es muss einsortiert werden. + //Platz da!!! + for (j = timeouts.length; j > i; j--) { + timeouts[j] = timeouts[j - 1]; + } + } + + timeouts[i] = new Array(2); + timeouts[i][tom_endtime] = endtime; + timeouts[i][tom_level] = level; + }, + + delLevel: function (day, endtime) { + + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + + for (var i = 0; i < timeouts.length; i++) { + if (timeouts[i][tom_endtime] == endtime) { + timeouts.splice(i, 1); + break; + } + } + }, + + delLevelByIdx: function (day, timeoutIdx) { + + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + timeouts.splice(timeoutIdx, 1); + + this.weekdirty[dayidx] = true; + }, + + addLevelByIdx: function (day, timeoutIdx) { + + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + + if (timeouts.length >= this.maxTimeOuts ) { + //alert('Der Zeitabschnitt kann nicht angelegt werden. Es kˆnnen nur bis zu '+this.maxTimeOuts+' Zeitabschnitte angelegt werden.'); + alert(translateKey('errorCreateTimePeriod') + translateKey('maxTimePeriodReachedA') + this.maxTimeOuts+translateKey('maxTimePeriodReachedB')); + return; + } + else if (timeouts[timeoutIdx][tom_endtime] - 10 == 0) { + //alert('Der Zeitabschnitt kann nicht angelegt werden. Die Endzeit kann nicht 00:00 Uhr sein.'); + alert(translateKey('errorCreateTimePeriod') + translateKey('endtimeReached')); + return; + } + else if (timeoutIdx > 0 && timeouts[timeoutIdx][tom_endtime] - 10 <= timeouts[timeoutIdx - 1][tom_endtime]) { + //alert('Der Zeitabschnitt kann nicht angelegt werden. Er existiert schon.'); + alert(translateKey('errorCreateTimePeriod') + translateKey('timePeriodAlreadyExists')); + return; + } + this.setLevel(day, timeouts[timeoutIdx][tom_endtime] - 10, timeouts[timeoutIdx][tom_level]); + + this.weekdirty[dayidx] = true; + }, + + OnClickPrevDay: function (day) { + var dayidx = TOM_DAYIDX[day]; + var elem = $(this.prg + 'prevday_' + dayidx); + + if (elem.checked) { + $(this.prg+'levelprofile_' + dayidx).style.display = "none"; + $(this.prg+'levelprofile_' + dayidx).style.visibility = "hidden"; + } + else { + $(this.prg+'levelprofile_' + dayidx).style.display = ""; + $(this.prg+'levelprofile_' + dayidx).style.visibility = "visible"; + } + this.tom_setDirty('SATURDAY', $(this.prg + 'level_0_0_tmp'), 0); + this.weekdirty[dayidx] = true; + }, + + tom_equals_prevday: function (day) { + + var dayidx = TOM_DAYIDX[day]; + + if (dayidx == 0) return false; //Starttag ist immer ungleich des Vortages + + var this_timeouts = this.week[dayidx ]; + var prev_timeouts = this.week[dayidx - 1]; + + if (!prev_timeouts || !this_timeouts || prev_timeouts.length != this_timeouts.length) return false; + + for (var i = 0; i < this_timeouts.length; i++) { + if (this_timeouts[i][tom_level] != prev_timeouts[i][tom_level] + || this_timeouts[i][tom_endtime] != prev_timeouts[i][tom_endtime]) return false; + } + return true; + }, + + checkDayTimeouts: function (dayidx) { + var timeouts = this.week[dayidx]; + + for (i = 1; i < timeouts.length; i++) { + if (timeouts[i][tom_endtime] <= timeouts[i - 1][tom_endtime]) { + alert("Der " + i + ". Zeitabschnitt hat eine ung¸ltige Dauer"); + } + } + }, + + checkTimeouts: function () { + + for (i = 0; i < this.week.length; i++) { + checkDayTimeouts(i); + } + }, + + writeDay: function (day) { + + var prgNr = this.prg; + + var dayidx = TOM_DAYIDX[day]; + var timeouts = this.week[dayidx]; + var endtime; + + if (!timeouts) return; + + var equals_prevday = this.tom_equals_prevday(day); + + msg = "
"; + msg += ""; + msg += ""; + msg += ""; + + msg += ""; + msg += ""; + msg += ""; + msg += ""; + msg += "
" + translateKey('lblProgramLevelProfile') + " " + this.TOM_DAY[dayidx] + ": "; + if (dayidx == 0) msg += "
"; + + msg += "" + translateKey('lblProgramPreviousDay'); + if (dayidx == 0) msg += "
"; + msg += "
"; + + msg += ""; + msg += ""; + + msg += ""; + msg += ""; + msg += ""; + + for (var i = 0; i < timeouts.length; i++) { + if (i == 0) endtime = tom_mintimeout; + else endtime = timeouts[i - 1][tom_endtime]; + + var selectedOff = ""; + var selectedOn = ""; + if (timeouts[i][tom_level] == 0) { + selectedOff = "selected"; + } else { + selectedOn = "selected"; + } + + msg += ""; + msg += ""; + msg += ""; + msg += ""; + msg += ""; + msg += ""; + msg += ""; + msg += ""; + } + msg += ""; + msg += "
   " + translateKey('lblProgramTimeStart') + "" + translateKey('lblProgramTimeEnd') + "" + translateKey('lblLevel') + "
\"Zeitabschnitt\"Zeitabschnitt" + (i + 1) + ". " + translateKey('lblProgramPeriod') + "" + translateKey('lblProgramTimeExtension') + "" + translateKey('lblProgramTimeExtension') + "" + msg += "
"; + $(this.divname[dayidx]).innerHTML = msg; + } + +}); + + + /** * ise/iseButtonsWindowHB.js **/ diff --git a/src/addon/patch/common/ic_deviceparameters.cgi.patch b/src/addon/patch/common/ic_deviceparameters.cgi.patch index 4f7022d5..37ff09a8 100644 --- a/src/addon/patch/common/ic_deviceparameters.cgi.patch +++ b/src/addon/patch/common/ic_deviceparameters.cgi.patch @@ -1,6 +1,14 @@ --- ./patchsource/www/config/ic_deviceparameters.cgi.orig +++ ./patchsource/www/config/ic_deviceparameters.cgi -@@ -909,7 +909,8 @@ +@@ -891,6 +891,7 @@ + || ([string equal $ch_paramid "dw_controller_color_virt_ch_master"] == 1) + || ([string equal $ch_paramid "dw_controller_brightness_ch_master"] == 1) + || ([string equal $ch_paramid "dw_controller_brightness_virt_ch_master"] == 1) ++ || ([string equal $ch_paramid "hb_sw_tp_ch_master"] == 1) + } { + setInternalDeviceKey $ch_paramid + } +@@ -909,7 +910,8 @@ global receiver_address sender_address dev_descr_sender set sender_address $ch_address set receiver_address $ch_address diff --git a/src/addon/patch/common/webui.js.patch b/src/addon/patch/common/webui.js.patch index c1dca142..bcab44a5 100644 --- a/src/addon/patch/common/webui.js.patch +++ b/src/addon/patch/common/webui.js.patch @@ -1,6 +1,6 @@ --- ./patchsource/www/webui/webui.js.orig +++ ./patchsource/www/webui/webui.js -@@ -88,6 +88,490 @@ +@@ -88,6 +88,516 @@ DEV_PATHS["HM-RC-4-3"] = new Object(); DEV_PATHS["HM-RC-4-3"]["50"] = "/config/img/devices/50/84_hm-rc-4-x_thumb.png"; DEV_PATHS["HM-RC-4-3"]["250"] = "/config/img/devices/250/84_hm-rc-4-3.png"; @@ -244,6 +244,30 @@ +DEV_PATHS['HB-UNI-DMX-Master'] = new Object(); +DEV_PATHS['HB-UNI-DMX-Master']['50'] = '/config/img/devices/50/hb-uni-dmx-master_thumb.png'; +DEV_PATHS['HB-UNI-DMX-Master']['250'] = '/config/img/devices/250/hb-uni-dmx-master.png'; ++DEV_HIGHLIGHT['HB-LC-SwX-TP'] = new Object(); ++DEV_LIST.push('HB-LC-SwX-TP'); ++DEV_DESCRIPTION['HB-LC-SwX-TP']='radio-controlled switch actuator X-channel, with time profile'; ++DEV_PATHS['HB-LC-SwX-TP'] = new Object(); ++DEV_PATHS['HB-LC-SwX-TP']['50'] = '/config/img/devices/50/hb-lc-swx-tp_thumb.png'; ++DEV_PATHS['HB-LC-SwX-TP']['250'] = '/config/img/devices/250/hb-lc-swx-tp.png'; ++DEV_HIGHLIGHT['HB-LC-Sw1-TP'] = new Object(); ++DEV_LIST.push('HB-LC-Sw1-TP'); ++DEV_DESCRIPTION['HB-LC-Sw1-TP']='radio-controlled switch actuator 1-channel, with time profile'; ++DEV_PATHS['HB-LC-Sw1-TP'] = new Object(); ++DEV_PATHS['HB-LC-Sw1-TP']['50'] = '/config/img/devices/50/hb-lc-sw1-tp_thumb.png'; ++DEV_PATHS['HB-LC-Sw1-TP']['250'] = '/config/img/devices/250/hb-lc-sw1-tp.png'; ++DEV_HIGHLIGHT['HB-LC-Sw2-TP'] = new Object(); ++DEV_LIST.push('HB-LC-Sw2-TP'); ++DEV_DESCRIPTION['HB-LC-Sw2-TP']='radio-controlled switch actuator 2-channel, with time profile'; ++DEV_PATHS['HB-LC-Sw2-TP'] = new Object(); ++DEV_PATHS['HB-LC-Sw2-TP']['50'] = '/config/img/devices/50/hb-lc-sw2-tp_thumb.png'; ++DEV_PATHS['HB-LC-Sw2-TP']['250'] = '/config/img/devices/250/hb-lc-sw2-tp.png'; ++DEV_HIGHLIGHT['HB-LC-Sw4-TP'] = new Object(); ++DEV_LIST.push('HB-LC-Sw4-TP'); ++DEV_DESCRIPTION['HB-LC-Sw4-TP']='radio-controlled switch actuator 4-channel, with time profile'; ++DEV_PATHS['HB-LC-Sw4-TP'] = new Object(); ++DEV_PATHS['HB-LC-Sw4-TP']['50'] = '/config/img/devices/50/hb-lc-sw4-tp_thumb.png'; ++DEV_PATHS['HB-LC-Sw4-TP']['250'] = '/config/img/devices/250/hb-lc-sw4-tp.png'; +DEV_HIGHLIGHT['HB-Sec-RHS-3'] = new Object(); +DEV_LIST.push('HB-Sec-RHS-3'); +DEV_DESCRIPTION['HB-Sec-RHS-3']='HB Rotary Handle Sensor with battery state'; @@ -266,7 +290,8 @@ +DEV_DESCRIPTION['HB-RC-6-PBU-LED']='6 remote channel push button with led'; +DEV_PATHS['HB-RC-6-PBU-LED'] = new Object(); +DEV_PATHS['HB-RC-6-PBU-LED']['50'] = '/config/img/devices/50/hb-rc-6-pbu-led_thumb.png'; -+DEV_PATHS['HB-RC-6-PBU-LED']['250'] = '/config/img/devices/250/hb-rc-6-pbu-led.png';DEV_HIGHLIGHT['HB-RC-6-PBU-LED'] = new Object(); ++DEV_PATHS['HB-RC-6-PBU-LED']['250'] = '/config/img/devices/250/hb-rc-6-pbu-led.png'; ++DEV_HIGHLIGHT['HB-RC-6-PBU-LED'] = new Object(); +DEV_HIGHLIGHT['HB-RC-6-PBU-LED']['Light_circle'] = [4, 0.8079999999999999, 0.656, 0.118, 0.112]; +DEV_HIGHLIGHT['HB-RC-6-PBU-LED']['Light_beam_1'] = [6, 0.748, 0.712, 0.776, 0.712, 0.016]; +DEV_HIGHLIGHT['HB-RC-6-PBU-LED']['Light_beam_2'] = [6, 0.776, 0.632, 0.8, 0.652, 0.016]; @@ -340,7 +365,8 @@ +DEV_DESCRIPTION['HB-OU-MP3-LED']='MP3 Player with adressable LED'; +DEV_PATHS['HB-OU-MP3-LED'] = new Object(); +DEV_PATHS['HB-OU-MP3-LED']['50'] = '/config/img/devices/50/hb-ou-mp3-led_thumb.png'; -+DEV_PATHS['HB-OU-MP3-LED']['250'] = '/config/img/devices/250/hb-ou-mp3-led.png';DEV_HIGHLIGHT['HB-OU-MP3-LED'] = new Object(); ++DEV_PATHS['HB-OU-MP3-LED']['250'] = '/config/img/devices/250/hb-ou-mp3-led.png'; ++DEV_HIGHLIGHT['HB-OU-MP3-LED'] = new Object(); +DEV_HIGHLIGHT['HB-OU-MP3-LED']['Light_circle'] = [4, 0.8079999999999999, 0.656, 0.118, 0.112]; +DEV_HIGHLIGHT['HB-OU-MP3-LED']['Light_beam_1'] = [6, 0.748, 0.712, 0.776, 0.712, 0.016]; +DEV_HIGHLIGHT['HB-OU-MP3-LED']['Light_beam_2'] = [6, 0.776, 0.632, 0.8, 0.652, 0.016]; @@ -491,7 +517,7 @@ DEV_HIGHLIGHT["HM-RC-4-3"] = new Object(); DEV_HIGHLIGHT["HM-RC-4-3"]["arrow_part1"] = [6, 0.312, 0.288, 0.416, 0.288, 0.012]; DEV_HIGHLIGHT["HM-RC-4-3"]["arrow_part2"] = [6, 0.312, 0.288, 0.352, 0.248, 0.012]; -@@ -3843,6 +4327,217 @@ +@@ -3843,6 +4353,217 @@ elvST['CAPACITIVE_FILLING_LEVEL_SENSOR|CASE_HIGH'] = '${stringTableCapacitiveFillingSensorCaseHeight}'; elvST['CAPACITIVE_FILLING_LEVEL_SENSOR|CASE_LENGTH'] = '${stringTableCapacitiveFillingSensorCaseLength}'; elvST['CAPACITIVE_FILLING_LEVEL_SENSOR|CASE_WIDTH'] = '${stringTableCapacitiveFillingSensorCaseWidth}'; @@ -709,7 +735,7 @@ elvST['CAPACITIVE_FILLING_LEVEL_SENSOR|CONTROLTEXT_CALC_FILLINGLEVEL'] = '${stringTableCapacitiveFillingSensorTextCalcFillingLevel}'; elvST['CAPACITIVE_FILLING_LEVEL_SENSOR|CONTROLTEXT_FILLINGLEVEL'] = '${stringTableCapacitiveFillingSensorTextFillingLevel}'; elvST['CAPACITIVE_FILLING_LEVEL_SENSOR|FILLING_LEVEL'] = '${stringTableCapacitiveFillingSensorFillingLevel}'; -@@ -13664,7 +14359,7 @@ +@@ -13664,7 +14385,7 @@ // Check each line if the free text mode is active. // If yes switch on the appropriate text input field // and set the variable freeTextActive to true @@ -718,7 +744,7 @@ var jLine = jQuery("#textSelect_" + line), jCellFreeText = jQuery("#cellFreeText_"+line); -@@ -13680,7 +14375,7 @@ +@@ -13680,7 +14401,7 @@ // If at least one line has an active free text mode // we have to activate the placeholder for the other lines and the header (color and icon are moving up) if (freeTextActive) { @@ -727,7 +753,7 @@ var jLine = jQuery("#textSelect_" + line), jPlaceHolder = jQuery("#placeHolder_"+line); -@@ -13692,7 +14387,7 @@ +@@ -13692,7 +14413,7 @@ } } else { jHeadFreeText.hide().css("display", "none"); @@ -736,7 +762,7 @@ jQuery("#placeHolder_"+line).hide().css("display", "none"); } } -@@ -23560,6 +24255,24 @@ +@@ -23560,6 +24281,24 @@ this.setWidth(400); this.setFile( "/pages/msg/setOUCFMMode.htm" ); break; @@ -755,13 +781,13 @@ + case ID_SET_HBOURGBWLEDFX_MODE: + this.setTitle( translateKey("dialogEnterValue") /*"Wert eingeben" */); + this.addToPostBody( 'string type = "'+this.type+'";' ); -+ this.setWidth(400); ++ this.setWidth(480); + this.setFile( "/pages/msg/setHBOURGBWLEDFXMode.htm" ); + break; case ID_SET_STATUS_DISPLAY: this.setTitle( translateKey("dialogEnterValue") /*"Wert eingeben" */); this.addToPostBody( 'string type = "'+this.type+'";' ); -@@ -24363,6 +25076,9 @@ +@@ -24363,6 +25102,9 @@ ID_AUTO_LOGIN_CONFIG = 1018; ID_PROGRAM_CHOOSER = 1019; ID_EDIT_SYSVAR = 1021; diff --git a/src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP.js b/src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP.js new file mode 100755 index 00000000..85d07a64 --- /dev/null +++ b/src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP.js @@ -0,0 +1,70 @@ +jQuery.extend(true,langJSON, { + "de" : { + "optionSat" : "Samstag", + "optionSun" : "Sonntag", + "optionMon" : "Montag", + "optionTue" : "Dienstag", + "optionWed" : "Mittwoch", + "optionThu" : "Donnerstag", + "optionFri" : "Freitag", + + "optionWeeklyProgramStateOn" : "EIN", + "optionWeeklyProgramStateOff" : "AUS", + + "lblProgramLevelProfile" : "Schaltprofil", + "lblProgramProfile" : "Profil", + "lblProgramTimeStart": "Startzeit", + "lblProgramTimeEnd": "Endzeit", + "lblLevel" : "Zustand", + "lblProgramState" : "Schaltzustand", + "lblProgramPeriod" : "Zeitabschnitt", + "lblProgramPreviousDay" : "wie am Vortag", + "lblProgramTimeExtension" : "Uhr", + + "toolTipProgramAddPeriod" : "Zeitabschnitt einfügen", + "toolTipProgramDelPeriod" : "Diesen Zeitabschnitt löschen", + + "errorCreateTimePeriod" : "Der Zeitabschnitt kann nicht angelegt werden. ", + "maxTimePeriodReachedA" : "Es k%F6nnen nur bis zu ", + "maxTimePeriodReachedB" : " Zeitabschnitte angelegt werden.", + "endtimeReached" : "Die Endzeit kann nicht 00:00 Uhr sein.", + "timePeriodAlreadyExists" : "Er existiert schon.", + + "dummy" : "" + }, + + "en" : { + "optionSat" : "Saturday", + "optionSun" : "Sunday", + "optionMon" : "Monday", + "optionTue" : "Tuesday", + "optionWed" : "Wednesday", + "optionThu" : "Thursday", + "optionFri" : "Friday", + + "optionWeeklyProgramStateOn" : "ON", + "optionWeeklyProgramStateOff" : "OFF", + + "lblProgramLevelProfile" : "Switching profile", + "lblProgramProfile" : "Profile", + "lblProgramTimeStart" : "Start time", + "lblProgramTimeEnd" : "End time", + "lblLevel" : "State", + "lblProgramState" : "Switching status", + "lblProgramPeriod" : "Time period", + "lblProgramPreviousDay" : "apply from previous day", + "lblProgramTimeExtension" : "o'clock", + "toolTipProgramAddPeriod" : "Enter time period", + "toolTipProgramDelPeriod" : "Delete this time period", + + "errorCreateTimePeriod" : "The period can not be created. ", + "maxTimePeriodReachedA" : "Only a maximum number of ", + "maxTimePeriodReachedB" : " periods can be created.", + + "endtimeReached" : "The end time can not be set to 00:00 h.", + "timePeriodAlreadyExists" : "It already exits.", + + "dummy" : "" + } +}); + diff --git a/src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP_HELP.js b/src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP_HELP.js new file mode 100755 index 00000000..b9040add --- /dev/null +++ b/src/addon/www/config/easymodes/MASTER_LANG/HB-SW-TP_HELP.js @@ -0,0 +1,10 @@ +jQuery.extend(true,langJSON, { + "de" : { + "HelpTitle" : "Hilfe" + }, + + "en" : { + "HelpTitle" : "Help" + } +}); + diff --git a/src/addon/www/config/easymodes/hb_sw_tp_ch_master.tcl b/src/addon/www/config/easymodes/hb_sw_tp_ch_master.tcl new file mode 100755 index 00000000..16b5d7dc --- /dev/null +++ b/src/addon/www/config/easymodes/hb_sw_tp_ch_master.tcl @@ -0,0 +1,230 @@ +#!/bin/tclsh + +#Kanal-EasyMode! + +source [file join $env(DOCUMENT_ROOT) config/easymodes/em_common.tcl] +source [file join $env(DOCUMENT_ROOT) config/easymodes/etc/uiElements.tcl] +source [file join $env(DOCUMENT_ROOT) config/easymodes/etc/options.tcl] + +#Namen der EasyModes tauchen nicht mehr auf. Der Durchgngkeit werden sie hier noch definiert. +set PROFILES_MAP(0) "Experte" +set PROFILES_MAP(1) "TheOneAndOnlyEasyMode" + +proc getCheckBox {type param value prn} { + set checked "" + if { $value } then { set checked "checked=\"checked\"" } + set s "" + return $s +} + +proc getMinValue {param} { + global psDescr + upvar psDescr descr + array_clear param_descr + array set param_descr $descr($param) + set min [format {%1.1f} $param_descr(MIN)] + return "$min" +} + +proc getMaxValue {param} { + global psDescr + upvar psDescr descr + array_clear param_descr + array set param_descr $descr($param) + set max [format {%1.1f} $param_descr(MAX)] + return "$max" +} + +proc getTextField {type param value prn} { + global psDescr + set elemId 'separate_$type\_$prn' + # Limit float to 2 decimal places + if {[llength [split $value "."]] == 2} { + set value [format {%1.2f} $value] + } + set s "" + + + return $s +} + +proc getUnit {param} { + global psDescr + upvar psDescr descr + array_clear param_descr + array set param_descr $descr($param) + set unit $param_descr(UNIT) + + if {$unit == "minutes"} { + set unit "\${lblMinutes}" + } + + if {$unit == "K"} { + set unit "°C" + } + + return "$unit" +} + +proc getMinMaxValueDescr {param} { + global psDescr + upvar psDescr descr + array_clear param_descr + array set param_descr $descr($param) + set min $param_descr(MIN) + set max $param_descr(MAX) + + # Limit float to 2 decimal places + if {[llength [split $min "."]] == 2} { + set min [format {%1.2f} $min] + set max [format {%1.2f} $max] + } + return "($min - $max)" +} + +proc getHelpIcon {topic x y} { + set ret "" + return $ret +} + +proc set_htmlParams {iface address pps pps_descr special_input_id peer_type} { + global env iface_url psDescr ch_ps_descr + + puts "" + + upvar PROFILES_MAP PROFILES_MAP + upvar HTML_PARAMS HTML_PARAMS + upvar PROFILE_PNAME PROFILE_PNAME + upvar $pps ps + upvar $pps_descr ps_descr + + #upvar PROFILE_0 PROFILE_0 + upvar PROFILE_1 PROFILE_1 + + set CHANNEL "CHANNEL" + + set ch [lindex [split $special_input_id _] 1] + + + set hlpBoxWidth 450 + set hlpBoxHeight 160 + + array set psDescr [xmlrpc $iface_url($iface) getParamsetDescription [list string $address] [list string MASTER]] + + puts "" + + + + ## Wochenprogramm ## + + append HTML_PARAMS(separate_1) "
" + + foreach day {SATURDAY SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY} { + append HTML_PARAMS(separate_1) "
" + } + append HTML_PARAMS(separate_1) "
" + + append HTML_PARAMS(separate_1) "" + + ## Ende Wochenprogramm ## + + + #append HTML_PARAMS(separate_0) [cmd_link_paramset $iface $address MASTER MASTER CHANNEL] + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + + append HTML_PARAMS(separate_1) "
" + + append HTML_PARAMS(separate_1) "" + + set prn 3 + # set param POWERUP_ACTION + # array set param_descr $ch_ps_descr($param) + # append HTML_PARAMS(separate_1) "" + # append HTML_PARAMS(separate_1) "" + # append HTML_PARAMS(separate_1) "" + # append HTML_PARAMS(separate_1) "" + + # incr prn + set param "STATUSINFO_MINDELAY" + set min [getMinValue $param] + set max [getMaxValue $param] + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + + incr prn + set param "STATUSINFO_RANDOM" + set min [getMinValue $param] + set max [getMaxValue $param] + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + + incr prn + set param "TRANSMIT_TRY_MAX" + set min [getMinValue $param] + set max [getMaxValue $param] + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + append HTML_PARAMS(separate_1) "" + + + append HTML_PARAMS(separate_1) "
\${stringTablePowerUpAction}
\${stringTableStatusInfoMinDelay} [getUnit $param] [getMinMaxValueDescr $param]
\${stringTableStatusInfoRandom} [getUnit $param] [getMinMaxValueDescr $param]
\${stringTableTransmitTryMax} [getUnit $param] [getMinMaxValueDescr $param]
" + append HTML_PARAMS(separate_1) "
" + + +} + +constructor diff --git a/src/addon/www/config/easymodes/hb_sw_tp_ch_master_intkey.tcl b/src/addon/www/config/easymodes/hb_sw_tp_ch_master_intkey.tcl new file mode 100755 index 00000000..32df7897 --- /dev/null +++ b/src/addon/www/config/easymodes/hb_sw_tp_ch_master_intkey.tcl @@ -0,0 +1,16 @@ +#!/bin/tclsh + +# dev_descr(TYPE) enthaelt den Sendertype (KEY, WATERDETECTIONSENSOR usw.) + +global env dev_descr internalKey + +set internalKey 1 + +set addr $dev_descr(ADDRESS) + +puts "" +puts "" + +source [file join $env(DOCUMENT_ROOT) config/easymodes/SWITCH/SWITCH.tcl] + + diff --git a/src/addon/www/config/img/devices/250/hb-lc-sw1-tp.png b/src/addon/www/config/img/devices/250/hb-lc-sw1-tp.png new file mode 100755 index 0000000000000000000000000000000000000000..78fc73834043066527cdc62c0ad37790bc260d91 GIT binary patch literal 14584 zcmZ9z1zc3y7dAW$-8Iq(!qDA zD+vi@8wr?%gRO(Jnxm148O+Sy%-PCB6($Y>J&%e~*R!Nhhlr-tRAmi2WHSEhMG5T&TPepw~jZI_U{GW~V!}ptuE(eR4u{EqZiHme#REh?TG^=Ky z`zM`0^!$-t-SnVO8DF7yys%BDUL|O+0%?+D;vW4NN{Qo!8%VJ-7DnE8%)wDNX)m;q zP+gAZqJ{asl`zrtN&Vt4N>!vCYYe>c`zf_x(=ivQ6jQD4y`J7XM+c9^JpH&AT378DAMw6J^~PqDyT3iNPm74Gdi zki4zpGDyd8d#{>~wSoH-w7km9R_=94`?OraiW%M)rD@6EeFDF#*&s3p`yQ}aSP4xH z3+9=JzhXUzSUbVj_$u0=S&*3|erLc|4e6p23DHl-a_!-CyFI^trvvfhu8NSG40va@4PvtwEl9PdE(; zC1a^^t$cJ0bG~AbZCQTV%Cr1(HL<+6)W-DZ9#s9t`o3p(YlKrg|AF>sxUlWeQk}K| z>%FICk=ro3xg+g3mn?^DeBc!YO~P+Z(q}o;@eIGzOe0N4gkIzDbtlren4Z>-jC&%` zs%8m9G(>Er9O`_XC4e_QG(BX~`)SHvU&z;9GooHvBddPWW!n{ML1xY7 z+A}+z;XL%vX0SO`Zm=n!jdhRu9?@@iPNSM{m$zR7!?(^srvr8>qG&3b$EI#;RFRXd z#iwx%rs@Ov)_T;VS)l0L{=WPr7H{+GGMZvw;(p zOBT#}-1Csv=AbO+JI01plFEFRxb`%gFr#U(NLzcGshrZ*laL^EBMz^30!4&T#Cr88 z-Q^CZMZU%U#04&U_Qe&GD`Ib?6Hyp^^4AV|5Ebp$f@o#MNNIxY>b-*Y&-35CmlK&S z3+Qq=wiQM;_A&6`6@`ekIR=t0MKr1G9gjP2|LDV6jkLJ&X`e>@hnqVu-&4f#B~Z=h z2gC4=Ti^q@``>TyXYhY5RzD;DcYOWW_VaJC3g8RfQAW!J1k#m$ zd?P?UO1uIjXj#2^>-ttfUdY73j@`)A!Pt!5!_M*XE|9Q?5O8Q`=4wRkVP|XaBIF@L z^S6Z%aQt|hgNFKV6IUA%nzstd)DjNPX4L%boa~%5q8QZF)WXiD=0d8H(*NEL{3k+V z>FVkz#KGb2?#}Mc!|vd0!NDacD9FLd&B4vh2DD&v@w9g}@?f)fq5Vh5|Kv!TxtKUx zIl5Xo*i%2sH8OT^a}}YXdF<%F*FVqcYGwX^da`%x{S{OYi2JLo zThRw@*5cTc)60i{4UFQLW+N@F%wTwvti^-evy&Y|I}Ti3y^Rqg3!&7>PQF z;C#kW-=5JBVO?~Tk|?}?xUs*#IbB?so4Y))U#h=c?B6`SS!k@ETbQZMNXwX+NvXZR zS$g=%gz&{*`Ex1cN>)!NsVf*Pj-Y^GBuR=U9spK;N%9@U@k$vF1C6$q1P=q^4{n1a zd!T>#09;Y&0&W9AuCx#w9kY*4`Z$V6dCb4nZluapRaN~`*;3weDsM$0{}xU8La5vA zDxi&f)%SAYD~{N$t%2Ho=|qp~Chwfyz@?$^3^ z`-Sw1>B(^86<0~<(yUEciTO|_n|$)s&TsP(rt&ex7X>k5_iqP8F6YCytqCCE_?mid z>U@SRAh-RhDf$)G%OEheR6q)kMPZESwM>TVsH{fACUbZh)0hg0)86!V4b$}y<BZo~lrCuk$7);Q5k-xmmQT^$`>I&FoAt8OvtQ+A9JVE(ljIjzST-MT5=Ew?qTvUbdiJR z8bF6$mO_`L%Z=Hjs==sCg27ojqjoha$MI=F?k#rqVo5%dTbtWHFdg`1Db|aT!a5!p z#oxQg!mX^HE*kO|S=sjy_p#R(*WI4_vpp^ARh4W6(k10H-t6T#?$GDX``w>XosVVR^J3Zq{Vqp=Bb9W=;(@`x3PdTmzq?@&N$hLv zkF06Od9hW?gWw#3Ls^&-L*3$!j>fwAfEmf^%1A^hAE}$4Sv~J8C!5PBPECWXBzEVj zuVcU5X zXCH!a%e55L6ciMSNwvx^j|+1Ly;MHCYz_+TkkxPbzOvU)Yl0x6;*8@*`aWYh$3V7L zKuBbW7Th2aX{S9&Ws!Wpc%{zAM>pBeUcZ;!j_^AQKF$F7MvVOS+u>ZbgLiRC{Xw1F z%Cw%`w`6>+#J7HT=M!T}Vt_hS`ACc=YGN$&No3Q$Q%!!$^Sj_`IS?1}jPnE~ZKBdx z8rli@PBsNtQiD^%br9I?ON+pgPfnv5yn}MU0>07}+De}=@iACwQVT7Bks4x2gh8zf z=aWDRV~ma4o3Y4>(jUBiQ8fW6BQ>_Y-4JM2@x4C#6$yVs4f#fgd=xEsP_uTX?Ovl- zO1L~rWMf{to;YR`zQXO9K3AL{)<^6?^tp$CX!&=7Qld|=X9IdcPCmrY%X2l1!CLNN zEk>-gn^T{sgW8O39;M?`!8*Sv3++>neyHUoJx;UmaUbSqQC( z$RWw`^a%E;UC8X)wG9WK%sQObx(b-o@;_o@XKJ>q#wdSIgtU+ZB4T9nm{JuX`Pga$ zOJfq*Gl))87N@N8l5yA;@=|E^)#-YY0sXtE1=8Df>?b-3p}16~B3Qj@80&-vjA>&RBHC3!N5DPF#8W=4>X|_LPjmJGJK5;mZO&90WVP5a$ zCIbe0Zm@_Z<0~GJtqckr2&HPrT0O>9N~ zvTQ>6ou-H>dO?&d)N#*P! zL>Wo_k}}WZXQ33T{C}ifa2dAsv@!7NVhx+*pY_q%$?B9bbyvD%dTwxunZOQiv|+qF zEsi;KU1auGv2YlbZ>7*GoVIPhw^q4D79nx?{dtiA6YC#OM0pK%C8HWjlX^6RJ}>>a ziI37gHRmLL&BYn9CnYch(bZ30ZEqwflO$OgstOC5XDw`K@KcOyjAb+;YJ``_AT45N zz@|0SSiv5)B?qf?gLc71q1iFpr6m&1jkS#B{oH*XDoMHo_{`U%_2(f=zq+xNGuFiV-IGvuhlL*52Mskzvbd_uDiYt60ru{W%St3}pONmY>JLcW4 zHQ#yb{6v$yXOj~X(C3?M+O}fPK)cZQKnGiJ&*s6&!l6)8XIV+cJ(Ky#32SB{V;e5T z#m16QN!!;3YE%Z54F*5QHFYtrNW|E~;JjxerBS`#3kqVoe0@f2DdTqsV2@9oM=LI6 zAe4QT%D+Tn7xwfI9u9jLTF&)bSaH$B8`qA+Wnzbn;!sJ5fto{^8ngWyjByE?>+)pr z2LL1hg2>#I(HAGwTDq^Cw&C+->+ldtBYPrqgkJ^p%HU3EXW86s-aoMI3JRFC2KO$0gN^z1n#n9q=&l3`v-r zk2{GsL%z$=BqnIr^6BT(lo2?sf6~-&UvSe*F(1>r-YF_`y>iR1Z+V28@Bj1}6b9mo zzI|A9o6FW$uy-F@^_GQn6j>hH%KKk*Nn1Dd`#;lmrpmHXpF3sWvps|>AtXB$ z;0syLZXQ95jWWTWNux2f~P%epm|Hapvv+bN7 z!*c*ZS>}8Hj)Or|J=%iMcQ(=-G?rh5Z^Y5UnB!9;Nw~zTWsMUYn(s790HCbCMvc59 z5dh$sH$~573Wddw>Y+4^K$jakHoeOXa=5bMM0&0&cc^h!v>l@4)G2eD=()~w0GgZF z%RH5u|^uB z&oOy%kO!ZyVcmV;?iyOk3Cj^Pkn4+z#foHtW523ckAPi;Q{!oqK6l zo04HH($i7IFENxFHLMGZVXy-5X$NrWlTS`?{wyN~ty@Ts7pO7txo#=DEqZQl@BZ`y zG(6#kgz6{dHJ7w2pQ0BZH>Th9_Sc`HUbTaj9~BMD5n4_GG%yw!YASkr)P8<$SG}O& zwmYdn>Am+ooLkuaV#Z<@saRS(!Ki0KNiXG=g%{Z))Li(ebsd*}Z}>}K=3TmD8@k4= z9>GXxC&bjbBGnl5=X$rSg!0TSu)q|;*?UABBAYD!!a*s9d_i(rICR#xz z;1TN$4aSpo?tt?{_?4HuHpwwB~@$$Xduhy)v7@8!~$;IlUV90P) z)pL4nO+f*`DSNvSv)QQo2-90Y2jjzkHDWNeJU45YZK1>WEujUlle(;=kQ8b-ioEQ1 z=Qz0`5Yc3AL6~Q$e)n!!vp%Kk@GH6j6IbT1m`TD=G3NZ2@zI;{@cB!wNjr@(5?XpK zLc4igE;C_~9&MU_k`N$XVixue$EewpIu~ahiQ>#-XI5zUsC5-ilFVhNN>odm;O&CT zX7V|@2$uPCBJ8+DC-rl6Q;aPNN8A9ATleNLJ7ceEN*`l)Uyh?OSH&cQkmFe-7I=oq zUs8^MnLVrrt0)oAh7J8s_G?Kre!E%Tl4de+=KJgILd`P$s$4U5yJwvSzUS&CeKZ4H zykWH7>QH$flCUJ`8(o5tq-aYCA)x;rVlA4{R!x1+&dDKh{ce29%NGH+Ov|Ikfa*sY zPByf5NqjG`%6Z+|`L*eQ~O8luv4HqT!xkq3ii8lYcRAYE6cCc}%zp&P(bV5;!m>MN16seqM9Pv56Gjvw5Fg!0dA4Gs_Uh!|IZh96Pziy(%Bk>bDYNOI}J`o)Y zWU}7g9kt_L$0$=h*Q!`UNEUJ{jNTzy5R!lh{TvTkscyb2S!6o~fb33RO#!~k6KZ{2 z5MqVE58aQ}2e0~&iQc~Sp7I|9AaKc@nWt>mzJez7K~<$CZ><(e6LnplezNGfqypzM zj(_f8N*TvNQEG~af;Ak8++H4Vb+r~VrLuf<>;pLbi9{WHE%BW0r{41WwVRpyQ*Z*9 z9_I|e9~741l5$JxxlO3ghNa!5ateB5i(PNgHV&0HIy#;JGK!jfZ>&)o59)Tu0fM5; z!F_L9C5rNehC-I8o?XLnm(X*Kn)Gx{7{a1Tyz)vDu)Ea}RftfUbU=TTYtf`yVcZaf zU39Xeu4Wv;AecHIP9!vocN|2tuzcQj^tc|x=PkD|U>%p0Z{fKm`&iJAf z6cReV+r78hwZ$(>Yd|+={>2N#=8-IKxgF}Z>4RUD zTp^n$J}GeAiPHvxf=!lt>iW@SbgN?P3w@=}S?29KH4uGJitTbdycBRZWBM_Vop{pj z!b4t?7`Ca#`jE1&0($qy`u6JBD^7&0o=;fHbl+)0U6XI301+%gzyu$cY)f@axQzze zeARMJaP7}eZN^nRpM9htTjBIL@`B}|K z0#kmn(fjh^IwhLs33ho$D{m6kn{kukTyop;0MFdtJ>!tC0hUMtr+8GzN6Fk~;kD3i z2xQs!uiP^r7)ev_%FmbW5eSroqIQ|5+2!|CcV`RRgcZ-V`j8l0VY2K9EP9xPA$77H z0JO@u9M!nQ?Hi(tU-F$F$B~OMe;77DvMvhzGm_X8&y`;QDVlcxIamnrik8FzQ`$L2 z85+$o9f33dnV`R+gi_^_H}9( z372g8+(z}!!Ctp7FB<_ZX_M!7l$F%<)M>OT>;8L{Rn&?+$ypr10OF6H5EL#)6JAzO zCO~`s6M`ITDJ$Oj52P^vM1!wm?eSC5BJLkc8Bzc14+f?lxBk`nu7T37^(N)dlMu&k z4*=#hiL!n*<|{duiM`l)jR4htoG8g-zLMSDgs!y5EtF;l&VT(^p&};6rKM~2c`<7K z0tzu%A@kY$Sr5iXxw@_$mA{jmtMXrJQ2rAw{y!5I|M&e+FZiPT&Je1g7bu6-OZcU(eUGF_!H*#rgcbJ?9~hLx~$~2SQ3$ z$s%VIOoI9o7}0wDVUv#c=h*2_Z(Ls-)a1+pA=E@TOX=Gw#db+q@!%V&a2v8mr3HYX zX1Ls13e(ZN%TU46-GRIHYDbt*qi)rcwqjHDOkS(_dvZbN+{dU%QE)0xF3Gy6Z`~8B z|Bq!*eHO+G4DB@wB%tKN-Ql;SENi~6BjYsmp9NSzw_ayw;aPv%9(h?=z3#Xr{?AWU zKdW(^k13WQ{0~eS$Qh``!G8)&bWHuBF>wAxxAOs$eORsEQj^r*rlcxyXSS+HarL#c zdVc2VkXUo{o2YQ{Nz?pNc_mq?`@M>x!tJrIN%Cf%2a`Gu>bN3ju|g|BgyX|sB-Be1 zkqyO@e*p+^i`fCdYv%y)4Raa6AB(SjzP{*tspkf8?L{{S^&BDN00&$0Zpqg@Bgic$ zivRUTFNnVPe$@mZvm{#hMCN?IdZ`cy+VmHk``E1KYn*m+VnnUWsC-Xy6BJdIgpY&j zR>N7+!*u5`&7TLLCycZH_0(7$N!h<3R{#ZH$U_H9iQT53i7@b3K^|a~XG+M=T-RRl z>}|Cim+&1YN13Hl~E2DILk(^;Gj@JO*MP z0Ei5nIredPzKBAp&qD()xPJS`D7{>5wf&#{m+tm6_bChk*cLiyH@|1CdoYy*=4ihC zk?Gv@aDTH8|9q(DIwIvo7KXEh_$|qbd4D();m8mJOTXzKl;`oMJUx73e2SdIqj4(; z2+%_H^*O(>H(jmnJjQTcgf0V{__WyjBc%w5FIq5feLw_kvfpZ;#)1Xwh)QZ-Wh5oS z=!M?{+x-rlHd-0T3Q2n(8iqXbtQ-y12F0!Dn0J-r=F&%Cv7>(SSP!Xje7n0yE@Ofd zW4@}m@5xgf^?TgsEr__4w4twp&l}l(PG{d~vng37U9^W#A0ZAkwEjh-SJ3TbtK+Ii z#{uBqEx6S$gBxd=w9~;CWw|Q=I*~iynJD_LohO#Bm{B-|q!r!+uEc$61R5$I$61o| z&Qym5sr>09w-tt%NXEfE6PiTNv8hCLS8D7&D`kmVA1$|TSg6Bvr@Suq3K~tzKMbbu zd@Vc~32jC6!SZLg+Cb+7;3weyTsv}4tel<{S!wt38440jcE?aHMGJb(1QY8gdl@bO z(WX~xCdR`_QnP8IK9=JV`fkKB=A!4Tr$Wa1H9@=hMOMjV3h$!_pYZ!H%Z`0F=^k&y zdBL>ibmCi1l=!3twE@fDA+wH#fJ3(1MOO0Q=7=viah>%C5c9-84@rBa{J92_EaLrh zvCEXR!w#Fck`<3K)&-e>4Hv|5#M5%Yax{c!*p}<|@_?bUc%>=kI}Txpm~DO;S2+DP zd<#YP>2O!kL<*M+D5qjVEbx1{@08+i!Mbfj6pi#F>iDXVmM`SCV_MP%>@?S@ z=85ntWBw=cSn`|VdLdbqQ|iU z-c*8}z-dfDK>aaHoMGejq-8xT#x~TPB zjD%aW-sc7b%(;GsQx_>6PoT3K5Wflbnb&$1Hu67$4S=ZX4)2WQTlwR)x4jHDAf<4d zaYy+!Dmj??IOkdNp%?H!9O26rz$|Gc#1h-C=hC7mbro)aSFKB1G zY|0w*L$Jy7yVFR$WnOmC?xyb@I7XTL1r^4z7>ANvzBeg?T;0&30#9>*?HZ4dTjFRu zi|0o?4fX`6qbdhlql+UJAHb0*;0sRrgM);5{lzR)O7c)(E=Wp8W=Udr2ce!JYs3aV zUueP0INgKTlh3B!nqW8fmoI<7v<|>~FSF94Gl+LI8btqM z0itvUl3pr6I-|lkyaix%L^gIt2uV8K(gsNP`-ioz~teu<@PSba2aPt82~|NxD~5fm@|g8V9;-EFAUD3fde!W6gAJMc>JJa zr^k3QeM0nN+Qh3`nr;nUxIM9h5iw^KPfNHcRGGvoNfPT)P?vpQu+Db+K|oun|7}8& zBro>e{bjS}&0%x%A0}7~#IT&K#kWuXyuYfl8;F%Z?_?vfm7Ym}GL76T9K|gEl6gSP zRX`S+3kK+qJLph)Ze7kL|C}ukvfsejdy78NfO4lwqn5M+y@t zgJ@F_Py|*OPyFvL7BqFbNy)Jkr>KOWFAg^|+!w=BQHPFTwDY*kS3t_=wJrV=^&O9% zM_M8@+AAmj z;CJgghGF1&zSx_T@`xxuIA2TX6hss|;sxEGwS!E$yOUl2nz?xnr6I{WCV5W zirSP6%;!ydLRbpK7W)g(KXRG%i*qc4$4IwrveqqPsTL!D@2s;lCz^0gvSLK|2qdca z!`)1G08$(`|M*ppHGJ&#Pzak#gPgMpgtUc2c%$u#yrKPapsE-KEOnWU#w?K>Ouh&` zU3Z^X6i9L;(+?!&jSlv?zsl=(qcRz#!!Me^ zM?e4m7huY_07Eg4vbHF^U0>ovt8#z!$9Vz{;e z)m4s)Mq7MdZVTkTRL)qg^$5eZ0%MX&MXE9`a%z9>m zN#L0BH3SXSqpE-yF0HU=%l2;FZkv#pj_L0v19{`!B(&F8*8se}zRP8YCx~cywL1dz zapLbbw56g6!CLkfTCC-iN~V^77M3AOhrgu)U9e0z2FMc~p9AZ16!G!&1oCndW3#R$ z%Vnv>;q17Zio>AgRDCw@uH1m>YQ|L}F#7Lw%~x;3b6_zVfU|ci^>PQYMx0T&;;Bhc z*b8J%e_en;q8mkNjJ$naG1e%}6K~X*T6Z z-%9F*b|iiuU*=C|HAPndqs&riYFp8{0mhXWG~iEqF>AviRav18+8@?WMn{i9&|lsJ z|6T9C651ciN^l(T%XRF(!;nq2*<5&5z@do1pGUBnka3FA^k;*d^4$l>?58~(&h-h zqEF2A*ispS-&u+6CF?i+94!*<%9W#8JvMn4P)_^%_H;;TpHFQz?WEcI2i1s=R&Nfq zrj0CuE4T62&((U4t;lp5d=Bgj_9UW4|5o$Zm>?{s#PGG+uV;N{25{AF}?lY;1DqU+uD_ z_46%V;{%&48xBASy0E&FR@!B4RqpKpC>fQD?%4y9PJKf_h??JN62jm1hplkG>aW5e zHPg@_M0xAKxx#-^0_@x^A&cI=Zn(8dUdWU z0`rc6G+&p4&MS4d-tGuYJNFxf=i0o93DUJ#9pV$wn8z{I+vN|vx zXjO;T2+>}qMSxMMe9ALvxc3LhvkCCqu|_Fv3SzXrU_Ox0p5z@N@R;`xzYl)Q`wRWAQVfH zbB18>(jgBAaLM4?gxtlQj|V<;M5lEQ_%<(v`x-M7EFQoLF_aD3X1p(#S@M#Qhe?Kd zAGMsjTA+#Qe{+t?s{# z-KwhztRqNJ4cgU&&TZ7vAl`j=x>pu-eC0c-Wl;bW^*kZkmkcB6O4W6EzD!UNsF*r< zLg48s_29dmm$XCu^Z8kb6FvII(MtP77(-@q9o1PzmF8KrQG1A0MEaLs;+Sl?Jrr_x zpsDtKiN4$=6fyA8V@fOaV#AYvp1Y-oYpB+0Ox@y4^!&%+5dcEiTNf%7`bn?fvK@@P zv%X8q3j;{N+-E_s&PWpTUTI+g%$jva3ju_Bj31yE6JfXgKQkCvYnDHxj3!mYT>=Fh zaE&6r3X>1tjJ0lQodirbMR`6m{(hBanQ`($F(7$@_g=3R#~vIz8u#vUNqVAk&A^| z!A|i?*0pc8^y5Pun5`Wy>*O+O8hRHO^zfpcjT1K?KDm3HL3}!w|5Mi0WrhBdK7E`tt&wjrsCf;a(~)op$FxRDV#(pI zHsakNVKT_FR)FTZ67{{T8etCo$y{{m!E>y&DxJ8=c*5A9-47a02d~M#oFH4j3|OYC ztQuVc60fsFoccN~AMH>nU1JZt4X=mf1F5lObnt=-*x>u4M8(xR{6MK>QtjeVJ$hn{ zYh&x1I=1Peue&(>!yBV0=ScURcCUUYFGwHZ|H@nBymz+Wtm;6%BlAJEUPKznce*kY z;C~hWcGF}w^vpPe6`NY2C+ekt-eVGZ0bp#dIS!BZmK%2pioZlqWs~uF~r(_t+?u;X@_bIN06s^vhEIz6;Ao8zyO}<34jyaXd53 zpeitc4x1)z^V4XAF< zWy3hJxADi58U#;E-j$h6;%lwxc&>kPd#A%=1`Whd(?@6gC^Z_(mGp7EX0Y*UHR77E zx9vsT(R6Ze73&SDc_0yNZOuJkV(|iT7*t36Y})&5>kC+bW8meAFxr&?!A%e& zGEhvI<%WhLtjq`l6835z%4!w^z7O!vZDm|jAgtakdnOR|$SRp4fx4dg`~u>Y8GTBl zoiLc(20cwx1$(cw0b(&G!7ETV@=3IEH-K&mrqs~!q?wTj-;h~^K9dMx6pjTEUH93M z03ibx6-Ff%?a3#OB%%W#y*yS&K@iZ|^Et!{y<0I_IJplLNHCP5_ijcCRzs^d4UlxD zjmln^2PLSS_QopIg}k*yqhQPnzw5Cq<7ZS?<>@Yif{*N-mkXz=F94aw2(Y?v%LIXf zz#p@x7C<_F$`jjYFN~1E+MQqgb!=~1j56fMd&%tcUk;ea+GgxeWzfEs5@HSVyULz% zQdB$P#f+j-GRJeZfc)NoY|G4wlN@&834$5=u?GeCw=XCsj1(`!;yh zN=#x(YBtZ8?z{j*Tw!IdJWLe#)K#yUXA$2~?rr+Fp6yM_Aae65NL20g zRrU)R6BRL_;O2((Xea#_AB6)zMIvlN}g&v+z*OT`B#o*8#9n($K>9* z;n@c+E84D_UA`blrabLH)fYx$G}9KwLMGE1TdtjrMMi&>6hJ zg-9L}&Q15qH%CpaO<@mUe7(M>*YNK3GuUHq1}(pgm(LWQ;Z5s1UX9?G^f<-W0?@Rp zD=2<*uj%H14EG43jPv8z@fOt`6am-Qz^U`e1duc=79)|-7dJ~DrdX-_Jx_}auJGt2 zS4`WV@kgKgfKcLIiTZ`;oc+o_;Owx4T*@JrE>#OpS{$ZG%ch+r>U(Bx^zP_k1=nx5 z(&X!l?fz+yPv;ZO@t{nEwMt|H`3HPi>evgr)^Qzx`jc=3>e6TRJ=dQ!syzT@Y~$Oj z;E)L*%igM#i?C>c*PR~)v9e68*G^td|GKsCV6U>T$-^XbVB;A z`{WE_88NWj`Tm?HYG54@QJza%L21U6Qa(&x4}AK`5c&2su3bt4z$2cIN5+02F&Jh; z@8~e>8kYE70VLLZnmke1A@3o@Tvmo%Y8cf*9$4qMq%C;7QwV hRI~WnkYL`L2gFf%? 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 PSM&0Pg48#O_kRBa<}3%} literal 0 HcmV?d00001 diff --git a/src/addon/www/config/img/devices/250/hb-lc-sw4-tp.png b/src/addon/www/config/img/devices/250/hb-lc-sw4-tp.png new file mode 100755 index 0000000000000000000000000000000000000000..81cc03a8fb872bd6dc2bbb35bd42768d2b2d9a8d GIT binary patch literal 15787 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 literal 0 HcmV?d00001 diff --git a/src/addon/www/config/img/devices/250/hb-lc-swx-tp.png b/src/addon/www/config/img/devices/250/hb-lc-swx-tp.png new file mode 100755 index 0000000000000000000000000000000000000000..96a5264955296ce1c155b8e9785dbd8c8905b154 GIT binary patch literal 14598 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 O0?A4$NmPm%2mK#J5selA literal 0 HcmV?d00001 diff --git a/src/addon/www/config/img/devices/50/hb-lc-sw1-tp_thumb.png b/src/addon/www/config/img/devices/50/hb-lc-sw1-tp_thumb.png new file mode 100755 index 0000000000000000000000000000000000000000..f195a1acc122e2672e6d74a87b3a4ffd82145a99 GIT binary patch literal 3475 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 literal 0 HcmV?d00001 diff --git a/src/addon/www/config/img/devices/50/hb-lc-sw2-tp_thumb.png b/src/addon/www/config/img/devices/50/hb-lc-sw2-tp_thumb.png new file mode 100755 index 0000000000000000000000000000000000000000..8255758c4528500ae5d5a6494e026de55bfc0d53 GIT binary patch literal 3572 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 CQ*12& literal 0 HcmV?d00001 diff --git a/src/addon/www/config/img/devices/50/hb-lc-swx-tp_thumb.png b/src/addon/www/config/img/devices/50/hb-lc-swx-tp_thumb.png new file mode 100755 index 0000000000000000000000000000000000000000..f195a1acc122e2672e6d74a87b3a4ffd82145a99 GIT binary patch literal 3475 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 literal 0 HcmV?d00001 From 2d04eddc4a914a10357d260ef4c728d03ea9ada8 Mon Sep 17 00:00:00 2001 From: jp112sdl Date: Tue, 25 May 2021 21:04:00 +0200 Subject: [PATCH 5/8] add translation --- src/addon/patch/common/translate.lang.extension.js.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/addon/patch/common/translate.lang.extension.js.patch b/src/addon/patch/common/translate.lang.extension.js.patch index 25b0ccac..34e21051 100644 --- a/src/addon/patch/common/translate.lang.extension.js.patch +++ b/src/addon/patch/common/translate.lang.extension.js.patch @@ -1,6 +1,6 @@ --- ./patchsource/www/webui/js/lang/de/translate.lang.extension.js.orig +++ ./patchsource/www/webui/js/lang/de/translate.lang.extension.js -@@ -634,6 +634,41 @@ +@@ -634,6 +634,42 @@ "iconOK":"Alles okay", "iconNewMessage":"Neue Nachricht", "iconServiceMessage":"Servicemeldung", @@ -20,6 +20,7 @@ + "iconChDirArrow":"Pfeil zum Taster", + "lblHbIterations":"Anzahl der Durchl%E4ufe", + "lblEffectNr":"Effekt", ++ "lblEffectOptions":"Effekt-Optionen", + "lblEffectSpeed":"Effektgeschwindigkeit", + "iconHbSprinkler":"Sprinkler", + "iconHbValve":"Wasserhahn", From c719106c6a9e8f958fdc1a27327c68515f45083d Mon Sep 17 00:00:00 2001 From: jp112sdl Date: Tue, 25 May 2021 21:04:12 +0200 Subject: [PATCH 6/8] new version --- src/addon/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addon/VERSION b/src/addon/VERSION index ef425ca9..d346e2ab 100644 --- a/src/addon/VERSION +++ b/src/addon/VERSION @@ -1 +1 @@ -5.2 +5.3 From b32b95b16f1f158d20cf757fbe0ceebadfd04da9 Mon Sep 17 00:00:00 2001 From: jp112sdl Date: Tue, 25 May 2021 21:59:35 +0200 Subject: [PATCH 7/8] HB-OU-RGBW-LED-FX: - re-ordered items - add some help icons --- .../MASTER_LANG/HB-OU-RGBW-LED-FX_HELP.js | 14 ++++++ .../SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl | 26 +++++++---- .../rega/pages/msg/setHBOURGBWLEDFXMode.htm | 44 ++++++------------- 3 files changed, 44 insertions(+), 40 deletions(-) create mode 100755 src/addon/www/config/easymodes/MASTER_LANG/HB-OU-RGBW-LED-FX_HELP.js diff --git a/src/addon/www/config/easymodes/MASTER_LANG/HB-OU-RGBW-LED-FX_HELP.js b/src/addon/www/config/easymodes/MASTER_LANG/HB-OU-RGBW-LED-FX_HELP.js new file mode 100755 index 00000000..c0c3cecd --- /dev/null +++ b/src/addon/www/config/easymodes/MASTER_LANG/HB-OU-RGBW-LED-FX_HELP.js @@ -0,0 +1,14 @@ +jQuery.extend(true,langJSON, { + "de" : { + "HelpTitle" : "Hilfe", + "SHORT_ACT_OPTIONS" : "Optionen sind wie folgt zu berechnen: siehe WS2812FX Users Guide", + "SHORT_ACT_INTENS" : "Die Helligkeit bezieht sich auf den gesamten Stripe" + }, + + "en" : { + "HelpTitle" : "Help", + "SHORT_ACT_OPTIONS" : "how to calculate options: see WS2812FX Users Guide", + "SHORT_ACT_INTENS" : "brightness is for the whole stripe" + } +}); + diff --git a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl index 7cab815c..8e6140c5 100755 --- a/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl +++ b/src/addon/www/config/easymodes/SIGNAL_LEDHBOURGBWLEDFX/signal_type.tcl @@ -10,6 +10,20 @@ if {$dev_descr_sender(TYPE) != "SMOKE_DETECTOR_TEAM"} { append HTML_PARAMS(separate_$prn) "
" } +set hlpBoxWidth 450 +set hlpBoxHeight 60 +proc getHelpIcon {topic x y} { + set ret "" + return $ret +} +puts "" + +incr pref +set id "separate_${special_input_id}_$prn\_$pref" +append HTML_PARAMS(separate_$prn) "\${signal_intens} ($min - $max)" +append HTML_PARAMS(separate_$prn) " [getHelpIcon SHORT_ACT_INTENS $hlpBoxWidth $hlpBoxHeight]" +append HTML_PARAMS(separate_$prn) "" + incr pref append HTML_PARAMS(separate_$prn) "\${signal_effect}" array_clear options @@ -84,9 +98,9 @@ append HTML_PARAMS(separate_$prn) "" incr pref set id "separate_${special_input_id}_$prn\_$pref" -append HTML_PARAMS(separate_$prn) "\${signal_effectoptions} ($min - $max)" -append HTML_PARAMS(separate_$prn) "" -append HTML_PARAMS(separate_$prn) "" +append HTML_PARAMS(separate_$prn) "\${signal_effectoptions} ($min - $max)" +append HTML_PARAMS(separate_$prn) " [getHelpIcon SHORT_ACT_OPTIONS $hlpBoxWidth $hlpBoxHeight]" +append HTML_PARAMS(separate_$prn) "" incr pref set id "separate_${special_input_id}_$prn\_$pref" @@ -94,12 +108,6 @@ append HTML_PARAMS(separate_$prn) "\${signal_speed} ($min - $max)" append HTML_PARAMS(separate_$prn) "" -incr pref -set id "separate_${special_input_id}_$prn\_$pref" -append HTML_PARAMS(separate_$prn) "\${signal_intens} ($min - $max)" -append HTML_PARAMS(separate_$prn) "" -append HTML_PARAMS(separate_$prn) "" - incr pref set id "separate_${special_input_id}_$prn\_$pref" append HTML_PARAMS(separate_$prn) "R ($min - $max)" diff --git a/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm b/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm index dedf11bc..59bee2ae 100755 --- a/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm +++ b/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm @@ -1,6 +1,8 @@
<% Write( system.GetVar("title") ); %>