Здравствуйте, возникла задача описать виртуальное устройство как функцию в одном файле, а использовать его в другом. Реализация файла с виртуальном устройством такая:
Цель: описать виртуальный клапан коллектора так, чтобы параметры можно было загружать в него из другого правила. Это другое правило будет главным и из него будет передаваться все ссылки на коллекторы, которые будут потом занесены в виртуальную комнату.
Да, пока к сожалению, не сделали возможности создания и редактирования файлов модуля из веб интерфейса, только подключение к контроллеру по ssh, включая облако WB (там есть файловый менеджер)
Так и сделал, ещё такой вопрос, возможно ли из одного модуля вызвать другой модуль?
При вызове выводит ошибку: SyntaxError: unterminated statement (line 1)
Вызов:
var workspaceLight = require("allLight").namespaceLightgroup();
Подскажите пожалуйста как это сделать, попробовал несколько вариантов и получил ошибки. var workspaceLight = require(“allLight”).namespaceLightgroup();
После точки, это название функции, которую я хочу вызывать из файла allLight
Во время тестов возник такой вопрос: как получить данные массива в модуле и записать их в модуль? У меня есть модуль комнаты, которая состоит из массивов света, штор, тёплых полов и тд, когда я добавляю свет в массив света абстрактной комнаты:
var workspaceRoom = require("Room");
var svet_test1_1 = workspaceLight.lightGroup("group1-1123123", "group1-1123123", "sdss", "*", "K1");
var room_test = workspaceRoom.Room("250", "garage", 1);
log(workspaceRoom.Room()); // undefined
rooms.push(room_test);
workspaceRoom.bindItem({
device: svet_test1_1,
type: workspaceRoom.light,
});
var scene_test = workspaceScene.Scene("scene_test");
log("это комната " + room_test); // выводит: это комната undefined
room_test.workspaceRoom.aLightGroups.forEach(function(item){ // тут возникает ошибка unvalid base value
scene_test.workspaceScene.bindItem(item);
});
Файл модуля комнаты:
function Room(name, tittle, priority){
var light = 1;
var blind = 2;
var thermostat = 3;
var floorValves = 4;
var batValves = 5;
var termometers = 6;
this.temperatureActual = 0;
this.temperatureSetpoint = 22;
this.aLightGroups = new Array();
this.aBlindGroups = new Array();
this.aThermostats = new Array();
this.aFloorValves = new Array();
this.aBatValves = new Array();
this.aTermometers = new Array();
this.name = name || "";
this.tittle = tittle || "";
};
Room.prototype.bindBatValves = function(item){
this.aBatValves.push(item);
};
Room.prototype.openBatValves = function(item){
this.aBatValves.forEach(item, function(){
this.aBatValves.channelSwitch1 = false;
});
};
Room.prototype.closeBatValves = function(item){
this.aBatValves.forEach(item, function(){
this.aBatValves.channelSwitch1 = true;
});
};
Room.prototype.bindFloorValves = function(item){
this.aFloorValves.push(item);
};
Room.prototype.openFloorValves = function(item){
this.aFloorValves.forEach(item, function(){
this.aFloorValves.channelSwitch1 = true;
});
};
Room.prototype.closeFloorValves = function(item){
this.aFloorValves.forEach(item, function(){
this.aFloorValves.channelSwitch1 = false;
});
};
Room.prototype.setpoint = function(item){
var set_point = 22;
if (this.aThermostats.length == 0)
{
return 0;
};
this.aThermostats.forEach(item, function()
{
set_point = item;
});
this.temperatureSetpoint = set_point;
var climatController = require("climat_controller");
climatController.control(this, set_point, this.temperatureActual);
};
Room.prototype.calculate = function(item){
var temp_sum = 0;
var average_temp = 0;
if (this.aThermostats.length == 0)
{
return 0;
};
this.aThermostats.forEach(item, function()
{
temp_sum += item;
});
this.temperatureActual = temp_sum / this.aThermostats.length;
var climatController = require("climat_controller");
climatController.control(this, set_point, this.temperatureActual);
};
Room.prototype.bindItem = function(item){
switch (item.type){
case this.light:
this.aLightGroups.push(item.device);
break;
case this.blind:
aBlindGroups.push(item.device);
break;
case this.thermostat:
this.aThermostats.push(item.device);
break;
case this.floorValves:
this.aFloorValves.push(item.device);
break;
case this.batValves:
this.aBatValves.push(item.device);
case this.termometers:
this.aTermometers.push(item.device);
}
};
exports.Room = Room;
exports.addRoom = Room.prototype.addRoom;
exports.bindBatValves = Room.prototype.bindBatValves;
exports.openBatValves = Room.prototype.openBatValves;
exports.closeBatValves = Room.prototype.closeBatValves;
exports.bindFloorValves = Room.prototype.bindFloorValves;
exports.openFloorValves = Room.prototype.openFloorValves;
exports.closeFloorValves = Room.prototype.closeFloorValves;
exports.setpoint = Room.prototype.setpoint;
exports.calculate = Room.prototype.calculate;
exports.bindItem = Room.prototype.bindItem;
Почему так происходит? Почему не получается в массив света комнаты записать свет?