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(); } }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden