Merge pull request #1603 from ElderJoy/thermostat

Add thermostat module
This commit is contained in:
Xose Pérez
2019-03-25 12:23:11 +01:00
committed by GitHub
16 changed files with 3657 additions and 5 deletions

View File

@@ -215,6 +215,10 @@ div.state {
margin-left: 5px;
}
.button-thermostat-reset-counters {
background: rgb(204, 139, 41);
}
/* -----------------------------------------------------------------------------
Sliders
-------------------------------------------------------------------------- */

View File

@@ -364,6 +364,31 @@ function getJson(str) {
}
}
<!-- removeIf(!thermostat)-->
function checkTempRangeMin() {
var min = parseInt($("#tempRangeMinInput").val(), 10);
var max = parseInt($("#tempRangeMaxInput").val(), 10);
if (min > max - 1) {
$("#tempRangeMinInput").val(max - 1);
}
}
function checkTempRangeMax() {
var min = parseInt($("#tempRangeMinInput").val(), 10);
var max = parseInt($("#tempRangeMaxInput").val(), 10);
if (max < min + 1) {
$("#tempRangeMaxInput").val(min + 1);
}
}
function doResetThermostatCounters(ask) {
var question = (typeof ask === "undefined" || false === ask) ?
null :
"Are you sure you want to reset burning counters?";
return doAction(question, "thermostat_reset_counters");
}
<!-- endRemoveIf(!thermostat)-->
// -----------------------------------------------------------------------------
// Actions
// -----------------------------------------------------------------------------
@@ -1625,6 +1650,11 @@ function processData(data) {
var days = uptime;
value = days + "d " + zeroPad(hours, 2) + "h " + zeroPad(minutes, 2) + "m " + zeroPad(seconds, 2) + "s";
}
<!-- removeIf(!thermostat)-->
if ("tmpUnits" == key) {
$("span.tmpUnit").html(data[key] == 1 ? "ºF" : "ºC");
}
<!-- endRemoveIf(!thermostat)-->
// ---------------------------------------------------------------------
// Matching
@@ -1799,6 +1829,10 @@ $(function() {
$("#uploader").on("change", onFileUpload);
$(".button-upgrade").on("click", doUpgrade);
<!-- removeIf(!thermostat)-->
$(".button-thermostat-reset-counters").on('click', doResetThermostatCounters);
<!-- endRemoveIf(!thermostat)-->
$(".button-apikey").on("click", generateAPIKey);
$(".button-upgrade-browse").on("click", function() {
$("input[name='upgrade']")[0].click();

View File

@@ -96,6 +96,12 @@
<a href="#" class="pure-menu-link" data="panel-general">GENERAL</a>
</li>
<!-- removeIf(!thermostat) -->
<li class="pure-menu-item module module-thermostat">
<a href="#" class="pure-menu-link" data="panel-thermostat">THERMOSTAT</a>
</li>
<!-- endRemoveIf(!thermostat) -->
<!-- removeIf(!lightfox) -->
<li class="pure-menu-item module module-lightfox">
<a href="#" class="pure-menu-link" data="panel-lightfox">LIGHTFOX RF</a>
@@ -1043,6 +1049,130 @@
</div>
</form>
<!-- removeIf(!thermostat) -->
<form id="form-thermostat" class="pure-form form-settings">
<div class="panel" id="panel-thermostat">
<div class="header">
<h1>THERMOSTAT</h1>
<h2>Thermostat configuration</h2>
</div>
<div class="page">
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="thermostatOperationMode">Operation mode</label>
<input class="pure-u-1 pure-u-lg-1-4" name="thermostatOperationMode" type="text" readonly />
</div>
<fieldset>
<legend>Temperature range</legend>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4">Max (<span class="tmpUnit"></span>)</label>
<input class="pure-u-1 pure-u-lg-1-4" id="tempRangeMaxInput" name="tempRangeMax" type="number" min="1" max="100" tabindex="32" data="20" onchange="checkTempRangeMax()" />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4">Min (<span class="tmpUnit"></span>)</label>
<input class="pure-u-1 pure-u-lg-1-4" id="tempRangeMinInput" name="tempRangeMin" type="number" min="0" max="99" tabindex="31" data="10" onchange="checkTempRangeMin()" />
</div>
</fieldset>
<fieldset>
<legend>Remote sensor</legend>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="remoteSensorName">Remote sensor name</label>
<input class="pure-u-1 pure-u-lg-1-4" name="remoteSensorName" type="text" />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="remoteTmp">Remote temperature (<span class="tmpUnit"></span>)</label>
<input class="pure-u-1 pure-u-lg-1-4" name="remoteTmp" type="text" readonly />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="remoteTempMaxWait">Remote temperature waiting (s)</label>
<input class="pure-u-1 pure-u-lg-1-4" name="remoteTempMaxWait" type="number" min="0" max="1800" tabindex="33" data="120" />
</div>
</fieldset>
<fieldset>
<legend>Operation mode</legend>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="maxOnTime">Max heating time (m)</label>
<input class="pure-u-1 pure-u-lg-1-4" name="maxOnTime" type="number" min="0" max="180" tabindex="34" data="30" />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="minOffTime">Min rest time (m)</label>
<input class="pure-u-1 pure-u-lg-1-4" name="minOffTime" type="number" min="0" max="60" tabindex="35" data="10" />
</div>
</fieldset>
<fieldset>
<legend>Autonomous mode</legend>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="aloneOnTime">Heating time (m)</label>
<input class="pure-u-1 pure-u-lg-1-4" name="aloneOnTime" type="number" min="0" max="180" tabindex="36" data="5" />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="aloneOffTime">Rest time (m)</label>
<input class="pure-u-1 pure-u-lg-1-4" name="aloneOffTime" type="number" min="0" max="180" tabindex="37" data="55" />
</div>
</fieldset>
<fieldset>
<legend>Time worked</legend>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="burnToday">Today</label>
<input class="pure-u-1 pure-u-lg-1-4" type="text" name="burnToday" readonly />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="burnYesterday">Yesterday</label>
<input class="pure-u-1 pure-u-lg-1-4" type="text" name="burnYesterday" readonly />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="burnThisMonth">Current month</label>
<input class="pure-u-1 pure-u-lg-1-4" type="text" name="burnThisMonth" readonly />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="burnPrevMonth">Previous month</label>
<input class="pure-u-1 pure-u-lg-1-4" type="text" name="burnPrevMonth" readonly />
</div>
<div class="pure-g">
<label class="pure-u-1 pure-u-lg-1-4" for="burnTotal">Total</label>
<input class="pure-u-1 pure-u-lg-1-4" type="text" name="burnTotal" readonly />
</div>
<div class="pure-g">
<button type="button" class="pure-button button-thermostat-reset-counters">Reset counters</button>
</div>
</fieldset>
</div>
</div>
</form>
<!-- endRemoveIf(!thermostat) -->
<form id="form-domoticz" class="pure-form form-settings">
<div class="panel" id="panel-domoticz">