Add dry contact support for IO Remote and Relays #165

This commit is contained in:
Robert Strouse 2023-10-10 11:41:21 -07:00
parent 87995bf707
commit bb36ed0f82
9 changed files with 194 additions and 122 deletions

View file

@ -293,8 +293,8 @@
<option value="0">RTS</option>
<option value="1">RTW</option>
<option value="2">RTV</option>
<option value="8">Relay</option>
<option value="9">Remote</option>
<option value="8">IO-Relay</option>
<option value="9">IO-Remote</option>
</select>
<label for="selShadeProto">Protocol</label>
</div>
@ -306,12 +306,12 @@
<label for="selShadeBitLength">Bit Length</label>
</div>
<div id="divGPIOControl" class="field-group">
<div class="field-group" style="">
<div id="divGPIOUp" class="field-group" style="">
<select id="selShadeGPIOUp" data-bind="gpioUp" data-datatype="int" style="width:70px;">
</select>
<label for="selShadeGPIOUp">UP</label>
</div>
<div class="field-group" style="">
<div id="divGPIODown" class="field-group" style="">
<select id="selShadeGPIODown" data-bind="gpioDown" data-datatype="int" style="width:70px;">
</select>
<label for="selShadeGPIODown">Down</label>

View file

@ -1,7 +1,7 @@
var errors = [
{ code: -10, desc: "Pin setting in use for Transceiver" },
{ code: -11, desc: "Pin setting in use for Ethernet Adapter" },
{ code: -12, desc: "Pin setting in use on another motor" }
{ code: -10, desc: "Pin setting in use for Transceiver. Output pins cannot be re-used." },
{ code: -11, desc: "Pin setting in use for Ethernet Adapter. Output pins cannot be re-used." },
{ code: -12, desc: "Pin setting in use on another motor. Output pins cannot be re-used." }
]
document.oncontextmenu = (event) => {
if (event.target && event.target.tagName.toLowerCase() === 'input' && (event.target.type.toLowerCase() === 'text' || event.target.type.toLowerCase() === 'password'))
@ -3112,15 +3112,25 @@ class Somfy {
valid = false;
}
if (obj.proto === 8 || obj.proto === 9) {
if (obj.gpioUp === obj.gpioDown) {
ui.errorMessage(document.getElementById('divSomfySettings'), 'For GPIO controlled motors the up and down GPIO selections must be unique.');
valid = false;
}
}
if (obj.proto === 9) {
if (obj.gpioMy === obj.gpioUp || obj.gpioMy === obj.gpioDown) {
ui.errorMessage(document.getElementById('divSomfySettings'), 'For GPIO controlled motors the up and down and my GPIO selections must be unique.');
valid = false;
switch (obj.shadeType) {
case 5: // Garage 1-button
if (obj.proto !== 9 && obj.gpioUp === obj.gpioDown) {
ui.errorMessage(document.getElementById('divSomfySettings'), 'For GPIO controlled motors the up and down GPIO selections must be unique.');
valid = false;
}
break;
case 9: // Dry contact.
break;
default:
if (obj.gpioUp === obj.gpioDown) {
ui.errorMessage(document.getElementById('divSomfySettings'), 'For GPIO controlled motors the up and down GPIO selections must be unique.');
valid = false;
}
else if (obj.proto === 9 && (obj.gpioMy === obj.gpioUp || obj.gpioMy === obj.gpioDown)) {
ui.errorMessage(document.getElementById('divSomfySettings'), 'For GPIO controlled motors the up and down and my GPIO selections must be unique.');
valid = false;
}
break;
}
}
if (valid) {

View file

@ -167,20 +167,27 @@
#somfyShade[data-shadetype="6"] #divStepSettings {
display: none;
}
#somfyShade[data-proto="9"][data-shadetype="5"] #divGPIOUp,
#somfyShade[data-proto="9"][data-shadetype="5"] #divGPIOMy,
#somfyShade[data-proto="8"][data-shadetype="5"] #divGPIOMy,
#somfyShade[data-proto="9"][data-shadetype="9"] #divGPIOUp,
#somfyShade[data-proto="9"][data-shadetype="9"] #divGPIOMy,
#somfyShade[data-proto="8"][data-shadetype="9"] #divGPIOUp {
display: none;
}
.group-draggable,
.shade-draggable {
height:32px;
border-top:solid 2px transparent;
cursor:grab;
height: 32px;
border-top: solid 2px transparent;
cursor: grab;
}
.group-draggable.dragging *,
.group-draggable.over *,
.shade-draggable.dragging *,
.shade-draggable.over * {
pointer-events: none;
}
.group-draggable.over,
.shade-draggable.over {
border-top: solid 2px var(--shade-color, '#00bcd4');
}
.group-draggable.dragging *,
.group-draggable.over *,
.shade-draggable.dragging *,
.shade-draggable.over * {
pointer-events: none;
}
.group-draggable.over,
.shade-draggable.over {
border-top: solid 2px var(--shade-color, '#00bcd4');
}