Zipato RGBW

Данный раздел предназначен для русскоязычных пользователей. Если вы владеете английским, рекомендуем также просмотреть общую ветку обсуждений на английском.
alv1home
Posts: 91
Joined: 24 Jun 2015 22:04

Zipato RGBW

Post by alv1home »

Пытаюсь понять, как "прикрутить" Zipato RGBW. Новые версии zway вроде работают с лампой, но как-то...
В версии r41 появляются 4-е устройства: Dimmer, Color, ColdWhite, SoftWhite. Сколько не крутил их - все чушь.
мой тестик wrote:
Zipato.png
Zipato.png (48.57 KiB) Viewed 13941 times
Может кто подскажет как с этим чудом (Zipato) работать.
В идеале: цвет плавно меняется (RGB), по событию RGB отключается - включается белый. И обратно.
User avatar
PoltoS
Posts: 7579
Joined: 26 Jan 2011 19:36

Re: Zipato RGBW

Post by PoltoS »

Вообще последний раз, когда тестировали, работало из коробки - Dimmer - это общий на всё, Color - цвет, ColdWhite и SoftWhite - два разных белых. А в экспертном режиме работает?
alv1home
Posts: 91
Joined: 24 Jun 2015 22:04

Re: Zipato RGBW

Post by alv1home »

В эксрертном работает как бинарный переключатель вкл/откл (белый). Хотя приссутствует полоса прокрутки от 0 до 99, но не активна.
И для справки (может пригодится): Application version 1.6, SDK version 6.51.01.
alv1home
Posts: 91
Joined: 24 Jun 2015 22:04

Re: Zipato RGBW

Post by alv1home »

И ещё.

Если по циклу (setInterval) вызывать vDev.performCommand("exact", args) (кстати, работает только после Basic.Set(255)) каждые 5сек и меньше, то razberry фактически умирает, хотя нагрузка на процессор маленькая. Думаю: логирование. Пишет так много, что железка не справляется (cd карта хорошая).
User avatar
PoltoS
Posts: 7579
Joined: 26 Jan 2011 19:36

Re: Zipato RGBW

Post by PoltoS »

не должен умирать. код в студию!
alv1home
Posts: 91
Joined: 24 Jun 2015 22:04

Re: Zipato RGBW

Post by alv1home »

Код простой - пока проба пера
index.js wrote:

Code: Select all

// ----------------------------------------------------------------------------
// --- Class definition, inheritance and setup
// ----------------------------------------------------------------------------

function WWRGB (id, controller) {
	WWRGB.super_.call(this, id, controller);
}

inherits(WWRGB, AutomationModule);

_module = WWRGB;

// ----------------------------------------------------------------------------
// --- Module instance initialized
// ----------------------------------------------------------------------------

WWRGB.prototype.init = function (config) {
	WWRGB.super_.prototype.init.call(this, config); 
	
	var self = this;

	this.iStep = 0;
	this.iWhiteSoft = 0;
	this.iWhiteCold = 0;
	this.iRed = 0;
	this.iGreen = 0;
	this.iBlue = 0;
    
	this.vDev = self.controller.devices.create({
		deviceId: "GroupWWRGB_" + this.id,
		defaults: {
			deviceType: "switchBinary",
			metrics: {
				icon: 'switch',
				title: 'Group WWRGB ' + this.id,
				level: 'off'
			}
		},
		overlay: {
			deviceType: "switchBinary",
        	metrics: {}
        },
		handler:  function (command, args) {
            if (command === "off") {
				console.log(" *** WWRGB *** Вызов clearInterval");
				if (this.timer) clearInterval(this.timer);   
       	    }   
			
            self.config.devices.forEach(function(dev) {    
				if (dev.active) {
                	var vDev = self.controller.devices.get(dev.device);
	                if (vDev) {
    	                if (command === "on") {
							vDev.performCommand("exact", { red:0,green:0,blue:0 });
							vDev.performCommand("on");
                	    }
						if (command === "off") {
							vDev.performCommand("exact", { red:0,green:0,blue:0 });
							vDev.performCommand("off");
        	            }
            	    }
				}
            }); 

            this.set("metrics:level", command);

            if (command === "on") {  
				console.log(" *** WWRGB *** Вызов setInterval");
				this.timer = setInterval(function() {
					self.NextStep(self);
				},
				self.config.frequency);                   
       	    }
        }, 
		moduleId: this.id
	});       
};

WWRGB.prototype.stop = function () {        
	if (this.vDev) {
		this.controller.devices.remove(this.vDev.id);
		this.vDev = null;
	}

	WWRGB.super_.prototype.stop.call(this);
};

// ----------------------------------------------------------------------------
// --- Module methods
// ----------------------------------------------------------------------------

WWRGB.prototype.NextStep = function(instance) {
    var self = instance,
        moduleName = "WWRGB",
        langFile = self.controller.loadModuleLang(moduleName); 
	
	if ((self.iStep >= 0) && (self.iStep <= 510)) {   
		if (self.iStep <= 255) self.iRed = self.iStep; 
		else self.iRed = 510 - self.iStep; 
	}                                        
	if ((self.iStep >= 511) && (self.iStep <= 1021)) {   
		if (self.iStep <= 766) self.iGreen = self.iStep - 511; 
		else self.iGreen = 1021 - self.iStep; 
	}                                        
	if ((self.iStep >= 1022) && (self.iStep <= 1532)) {   
		if (self.iStep <= 1277) self.iBlue = self.iStep - 1022; 
		else self.iBlue = 1532 - self.iStep; 
	}                                        
		
	console.log(" *** WWRGB *** MyTime \'" + (new Date()).getTime() + "\':"); 
	self.config.devices.forEach(function(dev) {
		if (dev.active) {
           	var vDev = self.controller.devices.get(dev.device);
			if (vDev) {           
				console.log(" *** WWRGB *** set on " + self.iStep + ": "
					+ self.iWhiteSoft + ", "
					+ self.iWhiteCold + ", "	   
					+ self.iRed + ", "	   
					+ self.iGreen + ", "	   
					+ self.iBlue
				);	                                                                                       
				//zway.devices[3].instances[0].SwitchColor.SetMultiple([2,3,4],[self.iRed,self.iGreen,self.iBlue],2);
				//zway.devices[3].instances[0].SwitchColor.Set(0,self.iWhiteSoft);
				//zway.devices[3].instances[0].SwitchColor.Set(1,self.iWhiteCold);
				//zway.devices[3].instances[0].SwitchColor.Set(2,self.iRed);
				//zway.devices[3].instances[0].SwitchColor.Set(3,self.iGreen);
				//zway.devices[3].instances[0].SwitchColor.Set(4,self.iBlue);
				var args = { red:self.iRed,green:self.iGreen,blue:self.iBlue }; 
				vDev.performCommand("exact", args);
			}
		}
		self.iStep += 15;
		
		if (self.iStep > 1532) self.iStep = 0;
	});
};
User avatar
PoltoS
Posts: 7579
Joined: 26 Jan 2011 19:36

Re: Zipato RGBW

Post by PoltoS »

А self.config.frequency чему равно?
alv1home
Posts: 91
Joined: 24 Jun 2015 22:04

Re: Zipato RGBW

Post by alv1home »

Сейчас ставлю 5000. Еще терпимо - просто "тормоза". На 1000 - пришлось пустить железку в ребут. Файл z-way-server.log растет сумасшедшими темпами: последний был более 1M в архиве (потер уже, размер самого файла не скажу). Каждый вызов performCommand - это несколько десятков строчек в логе.
User avatar
PoltoS
Posts: 7579
Joined: 26 Jan 2011 19:36

Re: Zipato RGBW

Post by PoltoS »

Может у Вас карточка медленная и логи тормозят, а не софт. Попробуйте логи в syslog отправлять или просто log-level изменить на 4 или даже 6.
alv1home
Posts: 91
Joined: 24 Jun 2015 22:04

Re: Zipato RGBW

Post by alv1home »

Zipato заработало в v2.0.2-rc1.
Post Reply