Показать сообщение отдельно
  #3 (permalink)  
Старый 22.01.2019, 10:06
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

rw6miu, я с nodejs не знаком, но, думаю, ваш код можно так переписать:

on({
	id:'javascript.0.test',
	change:'any'
},function (obj) {
	if(obj.newState.from!='web.0' && obj.newState.from!='system.adapter.web.0')
		return;
	
	const value=[0,1].indexOf(+obj.newState.val)<0?0:+obj.newState.val;
	
	request('http://192.168.0.89/state?c=set&n=7&o='+value);
});


var http = require('http');
var urlParser=require('url');
var server = http.createServer().listen(8083); // на каком порту слушаем?

server.on('request', function(req, res) {
	const requestGetParams=urlParser.parse(req.url,true).query;
    const idsAssocs={
		1:'braright',
		2:'braleft',
		3:'lightcenter',
		4:'lightdop'
	};
	
	const state=+!((+requestGetParams.on)===0 || [1,0].indexOf(+requestGetParams.on)<0);
	const stateName=idsAssocs[+requestGetParams.id]||requestGetParams[1];
	
	setState(`javascript.0.MegaLight1.braright.${stateName}`,state);
	res.writeHead(200);
	
	log(`Канал id=${requestGetParams.id}; Состояние ${state}`);
});
Ответить с цитированием