NEWS
Нужен скрипт для сдруживания ioBroker и Laitis
-
Добрый день! прошу помочь составить скрипт для Laitis:
есть примерный скрипт для iobroker
// Принимаем команды через порт 8090 var http = require('http'); // Подключаем модуль http var querystring = require('querystring'); // Подключаем модуль querysting в настройках драйвера javascript var port = 8090; var s = http.createServer(); s.listen(port); // Если поступил запрос s.on('request', function(request, response) { if(request.method == 'POST') { processPostData(request, response, function() { // Расшифровываем JSON запрос, и если ошибка, то выводим её в лог iobroker var data; try { data = JSON.parse(Object.keys(request.post)[0]); }catch(e) { console.log('Не удалось разобрать JSON'); console.error(e.name); console.error(e.message); console.error(e.stack); return; } // Команда расшифрована, передаем её в функцию обработки... do_voice_command(data, function(answer){ console.warn(answer); // Выводим в консоль ответ... response.writeHead(100, "OK", {'Content-Type': 'text/plain;charset=utf-8'}); response.end(answer); }); }); } else { //console.log(JSON.stringify(request)) response.writeHead(100, "OK", {'Content-Type': 'text/plain;charset=utf-8'}); response.end("Принимаем только POST запросы", "UTF-8"); } }); // Основная функция обработки голосовых команд function do_voice_command(data, callback){ // Для начала ответ равен ничему... var answer = '5555555'; var cmd = data.cmd.toLowerCase(); console.warn("Команда = " + cmd); // что ты умеешь? if(cmd == 'что ты умеешь' || cmd == 'что ты умеешь?' || cmd == 'помощь' || cmd == 'команды' || cmd == 'список команд'){ answer = 'Привет. Я помощник умный дом.' + "\n\n" + 'Я умею, контроллировать температуру, открывать закрывать шторы, управлять пылесосом начиная и завершая уборку, и многое другое. Просто назови команду, и я, исполню её.'; callback(answer); } if(cmd == `включи телевизор`) {setState("lgtv.0.states.power"/*Switch TV power*/, true); answer = `телевизор включен`;callback(answer); } if(cmd == `включить телевизор`) {setState("lgtv.0.states.power"/*Switch TV power*/, true); answer = `телевизор включен`;callback(answer); } if(cmd == `выключи телевизор`) {setState("lgtv.0.remote.power"/*Remote key power*/, true); answer = `телевизор выключен`;callback(answer); } if(cmd == `выключить телевизор`) {setState("lgtv.0.remote.power"/*Remote key power*/, true); answer = `телевизор выключен`;callback(answer); } if(!answer.length){ callback('Я не понимаю эту команду.'); } } // Функция получения POST запроса function processPostData(request, response, callback) { var queryData = ""; if(typeof callback !== 'function') return null; if(request.method == 'POST') { request.on('data', function(data) { queryData += data; if(queryData.length > 1e6) { queryData = ""; response.writeHead(413, {'Content-Type': 'text/plain'}).end(); request.connection.destroy(); } }); request.on('end', function() { request.post = querystring.parse(queryData); callback(); }); } else { callback(); response.writeHead(405, {'Content-Type': 'text/plain'}); response.end(); } }