Архив метки: IoBroker

Драйвер проигрывателя MPD (Music Player Daemon) для IoBroker

Написан очередной драйвер для умного дома на базе IoBroker.

Драйвер представляет собой клиента для управления проигрователем Music Player Daemon.

Music Player Daemon (MPD) — это музыкальный проигрыватель с клиент-серверной архитектурой, который воспроизводит музыку из указанного каталога. Воспроизведением управляют при помощи клиента. Управлять сервером (демоном) можно с любой машины из сети, но слушать музыку можно и на своём компьютере, если программу-клиент MPD настроить на подключение к локальному хосту (localhost).

Читать далее Драйвер проигрывателя MPD (Music Player Daemon) для IoBroker

Драйвер проигрывателя Foobar2000 для IoBroker

Написал очередной драйвер для своего умного дома. На этот раз драйвер для управления проигрывателем foobar2000.

Драйвер позволяет управлять и получать состояние проигрывателя установленного как локально, так и установленного на другой машине во внутренней сети. Если foobar установлен на удаленном компьютере то для его запуска и закрытия используется, написанная мною ранее, программа GetAdminЧитать далее Драйвер проигрывателя Foobar2000 для IoBroker

Драйвер KODI для IoBroker

Начал разработку драйвера KODI для своего умного дома на базе IoBroker.
Драйвер позволяет управлять мультимедиа-центром KODI через API JSON-RPC version 6, ознакомится с данным API можно по этой ссылке. В драйвере имеется несколько виджетов для управления проигрывателем и для вывода различной информации о проигрываемом контенте на странице вашего VIS проекта.

Читать далее Драйвер KODI для IoBroker

Вариант голосового меню для IoB на примере заказа воды

Научил УД заказывать воду в одной известной фирме нашего города. Представленный ниже код это часть моего скрипта для формирования заказа. Через голосовое меню формируется массив данных для заказа, которые используются другим скриптом уже непосредственно для самого заказа на сайте компании.

В массиве menu хранятся пункты голосового меню.
Если вариант ответа предполагает подпункт меню, то последним элементом массива указывается номера меню для подпунктов. Читать далее Вариант голосового меню для IoB на примере заказа воды

Драйвер для IoBroker — Starline Телематика 2.0

Написал драйвер который подключается к серверу старлайн телематика и парсит данные состояния автомобиля, координаты, а также позволяет управлять основными функциями автосигнализации.

Теперь в умный дом может быть интегрирован и ваш автомобиль)

Читать далее Драйвер для IoBroker — Starline Телематика 2.0

Парсим курсы валют с сайта ЦБ РФ

var url = 'http://www.cbr.ru/scripts/XML_daily.asp';
var request = require('request');

schedule("10 17 * * *", function () {
    parsevalute();
});

function parsevalute(){
    url = url;
    log('Идем на сайт ЦБ - '+url);
    var options = {
        url: url,
    };
    // Отправка данных методом POST.
    request(options, function (error, response, body, callback) {
        if (!error && response.statusCode == 200) {
          //  log('Код ответа от сервера'+response.statusCode);
           // log('Ответ от ЦБ: '+body);
        // Парсим данные
         var Valute = body.match(/<CharCode>(.*)<\/CharCode>/g);
         var Nominal = body.match(/<Nominal>(.*)<\/Nominal>/g);
         var Name = body.match(/<Name>(.*)<\/Name>/g);
         var Value = body.match(/<Value>(.*)<\/Value>/g);
         var result = [];
            for(var i = 0; i < Valute.length-1; i++) {
                result.push({
                    Valute: Valute[i].replace(/<CharCode>/g, "").replace(/<\/CharCode>/g, ""),
                    Nominal: Nominal[i].replace(/<Nominal>/g, "").replace(/<\/Nominal>/g, ""),
                    Name: Name[i].replace(/<Name>/g, "").replace(/<\/Name>/g, ""),
                    Value: Value[i].replace(/<Value>/g, "").replace(/[,]+/g, '.').replace(/<\/Value>/g, "")
                });
                //Course = parseFloat(result[i].Value)/parseFloat(result[i].Nominal);
                createState('Valuta.'+Valute[i].replace(/<CharCode>/g, "").replace(/<\/CharCode>/g, ""), '');
                setState ('Valuta.'+Valute[i].replace(/<CharCode>/g, "").replace(/<\/CharCode>/g, ""), (parseFloat(result[i].Value)/parseFloat(result[i].Nominal)));
                
            }
        }
    });
}

 

PS

Обновленная версия скрипта:

<pre class="codecontent">var url = 'https://www.cbr-xml-daily.ru/daily_json.js';
var request = require('request');

if(getState("javascript.0.Valuta.USD").val === null || !getState("javascript.0.Valuta.USD").val){
    log('Нет состояния javascript.0.Valuta.USD');
    parsevalute();
} 

schedule("0 7,16,20 * * 1-5", function () {//"0 * * * *"
    parsevalute();
});
 parsevalute();
function parsevalute(){
    url = url;
    log('Идем на сайт ЦБ - '+url);
    var options = {
        url: url
        
    }; 
    request(options, function (error, response, body) {
        log('Получен ответ от ЦБ (' + response.statusCode + ')');
        if (!error && response.statusCode == 200) {
            var obj;
            try {
                obj = JSON.parse(body);
                if (!obj.Valute.USD.Value || !obj.Valute.EUR.Value) {
                     throw new SyntaxError("Данные некорректны");
                } else {
                    //log('Ответ от ЦБ: ' + obj.Valute);
                    obj = obj.Valute;
                    for (var key in obj) {
                        if(obj.hasOwnProperty(key)){
                            var course = parseFloat(obj[key].Value)/parseFloat(obj[key].Nominal);
                            createState('Valuta.' + key, 0, {name: obj[key].Name});
                            setState ('Valuta.' + key, course);
                        }
                    }
                    log('Курсы валют обновлены');
                }
            } catch (err) {
                log("Ошибка парсинга! - " + JSON.stringify(err));
                result = null;
            }
        }
    });
}</pre>