UNPKG

node-red-contrib-s-tech-automation-tools

Version:
168 lines (159 loc) 8.02 kB
<script type="text/javascript"> RED.nodes.registerType('ST-Regulator', { category: 'S Tech tools', color: '#FFD09D', defaults: { name: {value:null, required: true}, title: {value:null, required: true}, regultype: {value:"thermostat"}, strategy: {value:null}, min:{value:null, required: true}, max:{value:null, required: true}, target:{value:null}, hysteresis:{value:null}, invertrelay:{value:false}, locale:{value:"en-EN"}, channel: {value: null, required: true}, wbserver: {value:"", type:"WB-MQTT-Server"} }, inputs:1, outputs:1, icon: "S-Tech.png", label: function(){ return "S-Tech Regulator" + (this.title?" : "+this.title:""); }, oneditprepare: function() { $('#node-config-input-name').val(this.name); $('#node-input-regultype').on('change',()=>{ var val = $('#node-input-regultype').find(":selected").val(); switch (val) { case 'thermostat': $('#node-input-strategy') .find('option') .remove() .end() .append('<option value="heating">Heating</option>') .append('<option value="cooling">Cooling</option>') .prop('disabled', false); $('#node-input-strategy').val(this.strategy || 'heating') $('#node-input-min').val(this.min || 15); $('#node-input-max').val(this.max || 30); $('#node-input-target').val(this.target || 20); $('#node-input-hysteresis').val(this.hysteresis || 0.5); break; case 'hygrostat': $('#node-input-strategy') .find('option') .remove() .end() .append('<option value="drying">Drying</option>') .append('<option value="humidification">Humidification</option>') .prop('disabled', false); $('#node-input-strategy').val(this.strategy || 'drying') $('#node-input-min').val(this.min || 20); $('#node-input-max').val(this.max || 80); $('#node-input-target').val(this.target || 35); $('#node-input-hysteresis').val(this.hysteresis || 1); break; default: $('#node-input-strategy') .find('option') .remove() .end() .prop('disabled', 'disabled'); break; } }); var userLocale = navigator.language || navigator.userLanguage; document.getElementById('node-input-locale').value = userLocale; }, oneditsave: function(){ this.name = $('#node-input-name').val(); this.title = $('#node-input-title').val(); this.regultype = $('#node-input-regultype').find(":selected").val(); this.strategy = $('#node-input-strategy').find(":selected").val(); this.min = $('#node-input-min').val(); this.max = $('#node-input-max').val(); this.target = $('#node-input-target').val(); this.hysteresis = ($('#node-input-hysteresis').val()); this.invertrelay = $('#node-input-invertrelay').prop('checked'); } }); </script> <script type="text/x-red" data-template-name="ST-Regulator"> <div class="form-row"> <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> <div class="form-row"> <label for="node-input-title"><i class="fa fa-book"></i> Title</label> <input type="text" id="node-input-title" placeholder="Title"> </div> <div class="form-row"> <label for="node-input-wbserver"><i class="fa fa-server"></i> Server</span></label> <input type="text" id="node-input-wbserver"> </div> <div class="form-row"> <label for="node-input-regultype"><i class="fa fa-bookmark"></i> Type</label> <select id="node-input-regultype" style="width: 70%;"> <option value="thermostat">Thermostat</option> <option value="hygrostat">Hygrostat</option> </select> </div> <div class="form-row"> <label for="node-input-strategy"><i class="fa fa-bullseye"></i> Strategy</label> <select id="node-input-strategy" style="width: 70%;"> <option value="heating">Heating</option> <option value="cooling">Cooling</option> <option value="drying">Drying</option> <option value="humidification">Humidification</option> </select> </div> <div class="form-row"> <label for="node-input-min"><i class="fa fa-minus"></i> Min</label> <input type="number" id="node-input-min"> </div> <div class="form-row"> <label for="node-input-max"><i class="fa fa-plus"></i> Max</label> <input type="number" id="node-input-max"> </div> <div class="form-row"> <label for="node-input-target"><i class="fa fa-crosshairs"></i> Target</label> <input type="number" id="node-input-target"> </div> <div class="form-row"> <label for="node-input-hysteresis"><i class="fa fa-compress"></i> Hysteresis</label> <input type="number" id="node-input-hysteresis" step="0.1"> </div> <div class="form-row"> <input id="node-input-locale" name="locale" type="hidden"> </div> <label for="node-input-invertrelay" style="width:70%"> <input type="checkbox" id="node-input-invertrelay" style="display:inline-block; width:22px; vertical-align:baseline;" autocomplete="off"> <span> Relay inverted control</span> </label> </script> <script type="text/x-red" data-help-name="ST-Regulator"> <p>Этот узел создает устройство MQTT в нотации Wiren Board - виртуальный регулятор. Термостат или гигростат.</p> <h3>Конфигурация:</h3> <ul> <li><strong>Name</strong> - Выберете любое имя для виртуального устройства. Это имя будет использоваться для MQTT топика.</li> <li><strong>Title</strong> - Удобное для идентификации имя, будет показываться в интерфейсе Wirenboard.</li> <li><strong>Server</strong> - Выберете экземпляр сервера MQTT для использования.</li> <li><strong>Type</strong> - Выберете тип устройства.</li> <li><strong>Strategy</strong> - Выберете стратегию регулировки.</li> <li><strong>Min</strong> - Минимальное значение регулировки.</li> <li><strong>Max</strong> - Максимальное значение регулировки.</li> <li><strong>Target</strong> - Целевое значение по умолчанию.</li> <li><strong>Hysteresis</strong> - Гистерезис регулирования.</li> <li><strong>Relay inverted control</strong> - Инвертирование реле.</li> </ul> <h3>Вход:</h3> <ul> <li><strong>payload</strong> - Текущее значение температуры или влажности с датчика (Number).</li> </ul> <h3>Выход:</h3> <ul> <li><strong>payload</strong> - Отправляет команду (0 или 1) для реле нагрузки.</li> </ul> </script>