Делаем розетки HDMI

В серии UNICA нет розеток для HDMI. Пришлось их изготовить самому. Покупаем модуль-заглушку из серии UNICA. Покупаем в Китае переходник HDMI — HDMI

DHHDMIR_1

И закрепляем с помощью термоклея его с обратной стороны заглушки. Заодно сделал разъем для видеосигнала с камеры установленной на подъездном домофоне. Читать далее Делаем розетки HDMI

Установка сервопривода на приточный клапан инфильтрации воздуха КИП-125 (КИВ-125)

Для автоматического управления приточкой свежего воздуха установил сервоприводы на клапаны. От ручной регулировки пришлось отказаться.

 

Укоротив ось ручки для ручного управления заслонками клапана установил сервопривод SG90. Сервопривод очень миниатюрный и не мешает закрыть крышку клапана. Сервопривод управляется с помощью Arduino UNO. Читать далее Установка сервопривода на приточный клапан инфильтрации воздуха КИП-125 (КИВ-125)

Переделка подсветки выключателей Schneider Electric UNICA

Для умного дома потребовалось переделать подсветку выключателей под 5 вольт для управления яркостью подсветки с помощью ШИМ, так как в ночное время подсветка была слишком яркая. Для Iobrokera написал простейший скрипт который в ночное время убавляет подсветку выключателей на минимальный уровень яркости.

Для начала разбираем выключатели

IMG_1036 IMG_1037 IMG_1038 IMG_1039

Читать далее Переделка подсветки выключателей Schneider Electric UNICA

Небольшая колекция винила

« 1 из 5 »

Программа для управления компьютером с помощью RESTfull

Моему умному дому понадобилось управление компьютером. Немного поковыряв Delphi, написал небольшую программку, через которую с помощью обычных GET запросов можно отправлять горячие клавиши удаленному компьютеру, запускать процессы (команды для запуска и сами процессы настраиваются в программе), получать информацию о всех запущенных процессах, выключать\перезагружать компьютер.

Программа запускает http сервер, висит в трее и принимает GET запросы:

Например:
http://192.168.1.1:8580/?cmd=foobar
http://192.168.1.1:8580/?cmd=shutdown
http://192.168.1.1:8580/?cmd=process
http://192.168.1.1:8580/?chk=foobar2000.exe (начиная с версии 2.6 — http://192.168.1.1:8580/?chk=foobar2000)
http://192.168.1.1:8580/?key=CTRL+ALT+DOWN

Читать далее Программа для управления компьютером с помощью RESTfull

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

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>