Правила и anon native strict preventsyield

Помогите с правилами плз

Код
function thermostat(ThermoDevice, ThermoDeviceNo, TempDevice) {
  	
  	var VirtualDeviceName = TempDevice + "_thermostat";
  	defineVirtualDevice(VirtualDeviceName, {
	title:"Термостат " + TempDevice,
	cells: {
      	"Температура": {
        	type:"temperature",
          	value:""
        },
		"Установка": {
			type:"range",
			value: 18,
      		min: 10,
			max: 26
		},
      	"Конвектор": {
	    	type: "switch",
          	readonly: true,
	    	value: false
        },
        "Управление": {
	    	type: "switch",
          	readonly: false,
	    	value: false
        }
	}
	});
  
 	var ruleName = TempDevice.replace("/", "_") + "_rule";
  	defineRule ("ruleName", {
		whenChanged: TempDevice + "/temperature",
      	then: function (newValue, devName, cellName) {
          dev[TempDevice + "_thermostat"]["Температура"] = newValue;
          if (newValue > dev[TempDevice + "_thermostat/Установка"]) {
          	dev[ThermoDevice][ThermoDeviceNo] = 0;
          } else { dev[ThermoDevice][ThermoDeviceNo] = 1; }
          dev[TempDevice + "_thermostat/Конвектор"] = dev[ThermoDevice][ThermoDeviceNo];
        }
    });
};

thermostat ("wb-mr3_79", "K2", "temp_kitchen");
thermostat ("wb-mr3_62", "K3", "temp_bathroom");
thermostat ("wb-mr3_79", "K1", "temp_bath_small");

Если оставляю только одно устройства (строки в самом низу), все хорошо. Два и больше:

Ошибка правила: Error: error error (rc -100)
anon native strict preventsyield
anon /usr/share/wb-rules-system/scripts/lib.js:251
thermostat /etc/wb-rules/thermo.js:40
anon /etc/wb-rules/thermo.js:45 preventsyield

Здравствуйте!
Вы в функции создаете несколько раз правило с одним и тем же именем “ruleName”, что недопустимо. Либо нужно как-то изменять название создаваемого правила “ruleName” при каждом вызове, либо создавать анонимные правила ( правила без названия). Если открыть отладочную консоль на странице правил, то там отображается ошибка:

Измените в коде строчку

defineRule ("ruleName", {

на

defineRule ({

Будут созданы правила без названий.

Но у меня же есть

ruleName = TempDevice.replace("/", “_”) + “_rule”;

И я думал что названия правил будут разными каждый раз

Ой, я похоже немного туплю, стоит кавычки наверное убрать с переменной ruleName )))

Спасибо

Да, все правильно, можно просто без кавычек (я упустил из виду, что содержимое переменной ruleName вы изменяете). Все, что в кавычках - это фиксированно заданная строка.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.