diff --git a/README.md b/README.md index d4badb85..ccef6a23 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ _Bitte etwas Geduld haben - je nach Geschwindigkeit der SD Karte kann die Instal | | [HB-UNI-Sen-PH-ORP](https://github.com/jp112sdl/HB-UNI-Sen-PH-ORP) | PH-+ORP-Sensor | ⚡️ | | | [HB-UNI-Sen-POOL](https://github.com/jp112sdl/HB-UNI-Sen-POOL) | Pool Multidevice (4x Aktor-, 2x Schließerkontakt-
und 1 Messkanal (PH, ORP, 2x Temperatur, Druck, Durchflussrate)| ⚡️ | | | [HB-OU-RGBW-LED-FX](https://github.com/jp112sdl/HB-OU-RGBW-LED-FX) | [WS2812FX](https://github.com/kitesurfer1404/WS2812FX) Implementierung für SK6812 LED Stripes| ⚡️ | +| | [HB-LC-SwX-TP](https://github.com/jp112sdl/HB-LC-SwX-TP) | 1-/2-/4-fach Aktor mit Zeitprofil| ⚡️ | **Hinweis für Entwickler** _(verwendete Device Model meiner bzw. fremd-eingebundener HB-Geräte)_ **:** @@ -137,6 +138,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/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..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'; @@ -350,7 +374,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 +449,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]; @@ -24270,7 +24296,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/VERSION b/src/addon/VERSION index ef425ca9..d346e2ab 100644 --- a/src/addon/VERSION +++ b/src/addon/VERSION @@ -1 +1 @@ -5.2 +5.3 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-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/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/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", 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/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 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/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/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..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,14 +98,14 @@ append HTML_PARAMS(separate_$prn) "" incr pref set id "separate_${special_input_id}_$prn\_$pref" -append HTML_PARAMS(separate_$prn) "\${signal_speed} ($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" -append HTML_PARAMS(separate_$prn) "\${signal_intens} ($min - $max)" -append HTML_PARAMS(separate_$prn) "" +append HTML_PARAMS(separate_$prn) "\${signal_speed} ($min - $max)" +append HTML_PARAMS(separate_$prn) "" append HTML_PARAMS(separate_$prn) "" incr pref @@ -106,7 +120,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/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 00000000..78fc7383 Binary files /dev/null and b/src/addon/www/config/img/devices/250/hb-lc-sw1-tp.png differ diff --git a/src/addon/www/config/img/devices/250/hb-lc-sw2-tp.png b/src/addon/www/config/img/devices/250/hb-lc-sw2-tp.png new file mode 100755 index 00000000..ea8b531a Binary files /dev/null and b/src/addon/www/config/img/devices/250/hb-lc-sw2-tp.png differ 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 00000000..81cc03a8 Binary files /dev/null and b/src/addon/www/config/img/devices/250/hb-lc-sw4-tp.png differ 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 00000000..96a52649 Binary files /dev/null and b/src/addon/www/config/img/devices/250/hb-lc-swx-tp.png differ 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 00000000..f195a1ac Binary files /dev/null and b/src/addon/www/config/img/devices/50/hb-lc-sw1-tp_thumb.png differ 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 00000000..8255758c Binary files /dev/null and b/src/addon/www/config/img/devices/50/hb-lc-sw2-tp_thumb.png differ diff --git a/src/addon/www/config/img/devices/50/hb-lc-sw4-tp_thumb.png b/src/addon/www/config/img/devices/50/hb-lc-sw4-tp_thumb.png new file mode 100755 index 00000000..77d32bea Binary files /dev/null and b/src/addon/www/config/img/devices/50/hb-lc-sw4-tp_thumb.png differ 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 00000000..f195a1ac Binary files /dev/null and b/src/addon/www/config/img/devices/50/hb-lc-swx-tp_thumb.png differ diff --git a/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm b/src/addon/www/rega/pages/msg/setHBOURGBWLEDFXMode.htm index ed2795f8..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") ); %>