sw:openhab:examples:heating:3pa

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
sw:openhab:examples:heating:3pa [2023/12/26 17:56] lazygattosw:openhab:examples:heating:3pa [2023/12/26 18:07] (текущий) lazygatto
Строка 131: Строка 131:
 Логика следующая. Есть отдельный Item (''tp_3pA_status''), в который будет писаться уровень открытия клапана. \\ Логика следующая. Есть отдельный Item (''tp_3pA_status''), в который будет писаться уровень открытия клапана. \\
 И отдельное правило, которое отслеживает работу реле открытия/закрытия клапана, считает время, на которое соответствующее реле было открыто или закрыто, и обновляет собственно статус в нужный нам Item. И отдельное правило, которое отслеживает работу реле открытия/закрытия клапана, считает время, на которое соответствующее реле было открыто или закрыто, и обновляет собственно статус в нужный нам Item.
 +
 +Экспериментальным путем было установлено, что полное время открытия/закрытия клапана составляет в моем случае 127 сек. (при заявленных 120 сек. производителем). Именно это значение используется в дальнейшем.
  
 Код правила для обновления статуса клапана: Код правила для обновления статуса клапана:
Строка 230: Строка 232:
             break             break
         }         }
 +    type: script.ScriptAction
 +
 +</sxh>
 +
 +4. Ну и в завершение есть еще небольшое правило, для сброса статуса уровня открытия клапана. Оно вращает клапан до крайнего положения закрытия, и обновляет статус в ноль. Ну а на время своей работы отключает другие правила, которые могут попытаться как то с клапаном работать.
 +
 +<sxh>
 +configuration: {}
 +triggers: []
 +conditions: []
 +actions:
 +  - inputs: {}
 +    id: "1"
 +    configuration:
 +      type: application/javascript
 +      script: >+
 +        console.log("=== Resetting 3 point actuator Status ===")
 +
 +
 +        var maxRotationTime = 127000 // 127 sec
 +
 +
 +        var rulesToDisable = [
 +          'pidTest',
 +          'update3pAStatus',
 +          'rotate_3p_actuator_with_pid',
 +        ]
 +
 +
 +        // Disable rules
 +
 +        console.log('Disabling needed rules, to prevent their runnig:')
 +
 +        rulesToDisable.forEach((rule) => {
 +          rules.setEnabled(rule, false);
 +          console.log('Rule ' + rule + ' disabled.')
 +        });
 +
 +
 +        items.three_way_close.sendCommand('ON')
 +
 +        console.log('Starting closing 3pA for ' + Math.round(maxRotationTime/1000) + ' sec.')
 +
 +
 +        setTimeout(() => {
 +          items.three_way_close.sendCommand('OFF')
 +          console.log('Closing 3pA done')
 +          items.tp_3pA_status.postUpdate(0)
 +          console.log('Status of 3pA updated to 0')
 +          // Enable rules
 +          console.log('Resetting complete. Enabling rules:')
 +          rulesToDisable.forEach((rule) => {
 +            rules.setEnabled(rule, true);
 +            console.log('Rule ' + rule + ' enabled.')
 +          });
 +        }, maxRotationTime);
 +
     type: script.ScriptAction     type: script.ScriptAction
  
 </sxh> </sxh>
  • sw/openhab/examples/heating/3pa.1703602570.txt.gz
  • Последнее изменение: 2023/12/26 17:56
  • lazygatto