Передача значений с датчиков в правила js

Переписал скрипт и отладил. В итоге получилось так

defineVirtualDevice('Vent', {
    title: 'Вентустановка',
    cells: {
     
      mode: {//режим 0-ручной 1-автомат
        title: 'Режим АВТ',
	    type: 'switch',
	    value: false,
	    },
      settemp: {//уставка
        title: 'Уставка температуры',
	    type: 'range',
	    value: 25,
        min: 0,
        max: 40
	    },
      sethim: {//уставка
        title: 'Уставка влажности',
	    type: 'range',
	    value: 60,
        min: 0,
        max: 80
	    },
      controltemp: {
        title: 'Температура',
        type: 'value',
        units: 'deg C',
        value: 0
        },
      controlhim: {
        title: 'Влажность',
        type: 'value',
        units: '%',
        value: 0
        },
      hysttemp: {
        title: 'Гистерезис температуры',
	    type: 'range',
	    value: 0.5,
        min: 0,
        max: 5
	    },
      hysthim: {
        title: 'Гистерезис влажности',
	    type: 'range',
	    value: 0.5,
        min: 0,
        max: 5
	    },

   },
});
  
 defineRule('gettemp', {   //правило - взять значения температуры
whenChanged: 'wb-mai6_55/IN 6 P Value',  //тип правила (при изменении значения с датчика температуры, отобразить его в контроле, отобразить в логе)
   then: function (newValue, devName, cellName) {
   dev['Vent/controltemp'] = newValue;
   log('Изменилось значение температуры с датчика = {}', newValue);
   },
 });

 defineRule('gethim', {   //правило - взять значения влажности
whenChanged: 'wb-mai6_55/IN 6 N Value',  //тип правила (при изменении значения с датчика ВЛАЖНОСТИ, отобразить его в контроле, отобразить в логе)
   then: function (newValue, devName, cellName) {
   dev['Vent/controlhim'] = newValue;
   log('Изменилось значение влажности с датчика = {}', newValue);
   },
 });
  
     
 defineRule('rulevent', {   //правило вентилятора 
    
  whenChanged: ['wb-mai6_55/IN 6 P Value','wb-mai6_55/IN 6 N Value'],  //тип правила (при изменении значения с датчика температуры, отобразить его в контроле, отобразить в логе)
   then: function () {
   
    if (dev['Vent/mode'] == true) { //Если включен АВТ режим
    	if ((dev['Vent/controlhim'] >= dev['Vent/sethim'] + dev['Vent/hysthim']) || (dev['Vent/controltemp'] >= dev['Vent/settemp'] + dev['Vent/hysttemp'])) { //если температура или влажность датчика больше уставки + гистерезис
      	 dev["wb-modbus-1-0/START"] = true; //включить частотник
         dev['wb-modbus-1-0/SETPOINT'] = 500; //задать частоту 50Гц
         dev['wb-dac/EXT3_O5'] = 10000; //открыть возд клапан (жалюзи) на 100%
         dev['wb-gpio/EXT2_K5'] = false; //выключил увлажнитель 
         dev['wb-gpio/EXT2_K6'] = false; //выключил обогрев 
    	}
     if ((dev['Vent/controlhim'] < dev['Vent/sethim'] - dev['Vent/hysthim']) && (dev['Vent/controltemp'] < dev['Vent/settemp'] - dev['Vent/hysttemp'])) { //если температура и влажность датчика меньше уставки - гистерезис
      	 dev['wb-modbus-1-0/START'] = false; //выключить частотник
         dev['wb-modbus-1-0/SETPOINT'] = 200; //задать частоту 200Гц (по умолчанию будет записана для случая включения вручную)
         dev['wb-dac/EXT3_O5'] = 0; //закрыть возд клапан (жалюзи)
    	}
    }else { // Если режим РУЧ.
      dev['wb-modbus-1-0/SETPOINT'] = 200; // Задать частоту 0Гц (по умолчанию будет записана для случая включения вручную)
    }
    }, //закр функ
 }); //закр правило
1 лайк