LAN Control V2

Обновление №1 (19.03.2013). Обновил описание.

Более функциональное устройство, рекомендую посмотреть XControl

Итак, сделал вторую версию LAN Control, о первой можно почитать здесь.

Судя по комментам, пользователям очень не хватает двух функций — пароля и гистерезиса, в этой версии они добавлены. И самое приятное — схема и плата не изменилась.

Гистерезис

Здесь появилась новая опция — Гистерезис. Он является одинаковым для верхнего и нижнего пределов.

Пароль

Для входа в режим администрирования, нужно установить перемычку Bootloader при включенном устройстве. Устанавливаем и переходим по адресу адрес/admin (у меня http://192.168.1.170/admin).

Отправку данных на сервер я убрал, так как с нее мало толку, лучше использовать DynDNS.

В поле «Пароль» нужно вести, собственно, пароль. Его длина может быть от 1 до 5 латинских буков, если поле оставить пустым, то пароль будет отключенным. Итак, установим пароль, к примеру, «pas». Теперь, чтобы получить доступ к устройству, нужно в адресной строке после адреса написать /pass/, к примеру, для открытия главной страницы: http://192.168.1.170/pas/ (в конце ОБЯЗАТЕЛЬНО «/»). Страница нормально загрузится, если пароль будет не верный, то страница будет долго грузится, пока браузер не покажет ошибку.

XMLHTTPRequest

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

Для XMLHTTPRequest запроса нужно открыть ссылку по таком адресу: адрес/пароль/cgi/параметры. Параметры могут быть такими: «t» — получить температуру, i — получить входы, o — получить/установить выходы.

Получаем температуру. У меня подключено 2 датчика с именами Home и out. Для этого оправляем адрес/пароль/cgi/t, у меня это 192.168.1.170/pas/cgi/t . В ответ придут данные в таком виде: «Home:28.5|out:1.2». Тоесть, формат такой: «имя_датчика:температура|», как видите, термодатчики разделены вертикальной чертой, а имя датчика и температура разделены двоеточием. В PHP и JavaScripts для разделения данных можно использовать стандартную функцию split.

Получаем входы. Почти то же самое, что и для температуры, отправляем адрес/пароль/cgi/i . В ответ приходит текст в таком формате: one:0|two:0|three:1|four:0 . Здесь имя:состояние. Если состояние равно 0 — значит, вход не замкнут (не активен), если 1 — активен.

Получаем выходы. Почти то же самое, что и для температуры, отправляем адрес/пароль/cgi/o . В ответ приходит текст в таком формате: first:0|two:0|three:0|four:0|five:0|six:0|seven:0 . Здесь так само — имя:состояние. Если состояние равно 0 — выход не активен, 1 — активен. Так же, выходами можно управлять, формат такой адрес/пароль/cgi/o+выход+состояние . К примеру: 192.168.1.170/pas/cgi/o21 — установить выход 2 в 1 (активировать), для отключения нужно вместо 1 отправить 0. В ответ приходит тот же текст, что и при запросе.

Пример получения температуры на JavaScripts:

// Функция для создания объекта XMLHttpRequest. Подходит для любого браузера
function getXmlHttp()
{
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}
 
// А вот так делается сам запрос
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', "192.168.1.170/pas/cgi/t", true);
xmlhttp.onreadystatechange = function() {
	if (xmlhttp.readyState == 4) {
		if(xmlhttp.status == 200) {
			var text = xmlhttp.responseText;
			// здесь обрабатываем принятые данные, они находятся в переменной text
		}
	}
}
xmlhttp.send(null);

ИК-приемник

Чего то часто стали меня спрашивать, зачем он тут))).
Он предназначен для приема команд с пульта с кодировкой RC5. При нажатии кнопки на ПДУ в цифрами 1-7 изменяется состояние соответствующего выхода (1-7), термостат для данного выхода должен быть отключен. При получении команды с пульта зажигается красный светодиод.

Корпус

Плату на заводе сделал, теперь нужно сделать красивый корпус)). Для этого отлично подошел корпус Z-29.

Ставим плату на нижнюю часть корпуса и как можно ближе USB разъемом к краю, так как коннектор Ethernet достаточно большой.

 На плате имеется 4 крепежных отверстия, вот ориентируясь по ним сверлим в корпусе отверстия:

Теперь прикручиваем болтами с гайками


Убедившись, что плата встала  нормально, отпаиваем ИК-приемник и светодиоды и устанавливаем их на корпус

Соединяем проводами

Теперь сверлим на краях корпуса отверстия для кабелей. Так как разъем ethernet находится очень близко к краю корпуса, нужно будет загнуть провод прямо на начале разъема в обратную сторону, поэтому при обжиме разъема оставляем без изоляции примерно 3см кабеля.Подключаем остальные провода:

 И крепим на стену:

Исходники будут закрытыми.

Приобрести устройство можно в нашем интернет-магазине.

Скачать прошивку и бутлоадер

Вливайтесь в общение

85 комментариев

  1. Добрый день! Что-то с этой прошивкой не могу войти в устройство( ни с паролем,ни без пароля, ни админом), перепрошиваю первой тогда все нормально.

    1. а после перепрошивки настройки сбрасывали?

      1. Спасибо за напоминание, забыл. Все заработало. Большое спасибо за прошивку. А новое устройство которое планировали ожидается?

        1. Угу, я над ним постоянно работаю. Просто постоянно появляются новые идеи, поэтому точно сказать, когда оно будет готово я не могу

    1. Тестирую прошивку. Не могу настроить термостат. Работает только на 1-й выход. Другие выходы не срабатывают. Датчик у меня подключен один, чтобы термостат работал приходится в настройках ставить номер датчика 0. Гистерезис у меня не заработал. Настройки сбрасывал, но не помогло.

  2. Что то у меня после прошивки осталась старая версия. хотя прошился нормально, настройки сбросил. нечего не пойму…

    1. странно, у остальных прошивается новая прошивка))) я перезалил, попробуйте еще раз.
      PS: в новой прошивке при получении комманды с пульта зажигается светодиод

  3. не помогло, а бутлоадер тоже залить?

    1. можно и без бутлоадера. Но лучше, залить бутлоадер (можно и с первой версии, они одинаковы), затем, прошивку.
      Пишите через Reply, иначе буду удалять

  4. Подскажите пожалуйста как настроить DynDNS

    1. в гугле об этом куча инфы с картинками и подробнейшим описанием

  5. Есть жедание приобрести плату или устройство. Но есть вопрос с доставкой и способом оплаты из России.К сожалению ваш личный Е-Mail сдесь на сайте не нашел.Как с вами связаться? Из страницы вашего магазина есть вопросы по оплате и доставке.

  6. Добавление кириллицы в названия девайсов, у меня сокращено до 15 символов под жки, еще можно ‘+’ заменять на пробел
    tmp — тоже uint8_t
    uint8_t i; tmp = 0;
    for (i=0; (params[i]!=’ ‘) && (tmp 47) & ( a 64) & ( a<71 )) return a-55;
    }

    char strtohex(unsigned char a, unsigned char b)
    {
    return (ch2hex(a)<<4) | (ch2hex(b));

    }

  7. uint8_t i; tmp = 0;
    for (i=0; (params[i]!=’ ‘) && (tmp<16); i++)
    {
    if(params[i] == '%')
    {str[tmp] = strtohex(params[i+1], params[i+2]); i = i+2;}
    else str[tmp] = params[i];
    tmp++;
    }
    str[tmp] = ''; // завершаем строку

  8. char ch2hex(char a)
    {
    //символы 0..9 48-57
    if((a > 47) & ( a 64) & ( a<71 )) return a-55;
    }

    char strtohex(unsigned char a, unsigned char b)
    {
    return (ch2hex(a)<<4) | (ch2hex(b));
    }

  9. это с пробелом вместо плюса
    uint8_t i; tmp = 0;
    for (i=0; (params[i]!=’ ‘) && (tmp<16); i++)
    {
    if(params[i] == '%') {str[tmp] = strtohex(params[i+1], params[i+2]); i = i+2;}
    else if(params[i] == '+')str[tmp]=' ';
    else str[tmp] = params[i];
    tmp++;
    }
    str[tmp] = ''; // завершаем строку

  10. Добрый вечер! Протестировал вашу прошивку. Термостат работает как надо с гистерезисом, но только с датчиком №1. С датчиком №2 никак не могу настроить. В настройках пробовал устанавливать датчик 1 или 2. С 1 всё нормально, а с 2 никакой реакции. Датчики работают нормально.

    1. У человека, который тестировал девайс, такая проблема была, но потом я ее исправил. Я перезалил файлы, скачайте заново (теперь называется lc2.rar)

  11. Добрый день,заранее прошу прощения за объемный текст,но в ходе испытаний было замечено следующее:
    Прошивка из архива «lc»
    После включения проверяем состояние выходов: http://192.168.1.170//cgi/o
    В ответ получаем:LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:0
    Все верно,все выходы отключены.
    Отправляем команду включения первого канала: http://192.168.1.170//cgi/o11
    В ответ получаем: LED:1|test:1|out3:1|out4:0|out5:0|out6:0|out7:0
    Если верить ответу устройства,то оно включило сразу три первых канала, хотя в реальности оно все-таки отработало команду правильно и включило только первый канал.
    При отключении первого канала: http://192.168.1.170//cgi/o10
    Получаем ответ: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:0
    Физически канал отключается.
    При включении второго канала: http://192.168.1.170//cgi/o21
    Получаем ответ: LED:0|test:0|out3:0|out4:1|out5:0|out6:0|out7:0
    Физически включился второй канал
    И так до пятого канала.
    Когда включаем пятый канал: http://192.168.1.170//cgi/o51
    Приходит ответ: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:1
    Физически срабатывает пятый канал.
    А вот при включении шестого канала: http://192.168.1.170//cgi/o61
    Получаем ответ: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:0
    Хотя физически канал включился.
    На попытку включить седьмой канал: http://192.168.1.170//cgi/o71
    Ответ тоже пустой: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:0
    А Физически устройство никак не реагирует
    Прошивка из архива «lc2» ведет себя аналогичным образом. Плюс отсутствует возможность изменить в браузере состояние состояние выхода кликая по ссылке, как было в одной из первых версий.

    1. а у вас часом на эти выходы термостат не включен?

  12. Да, был включен термостат.После его выключения стала доступна опция управления выходами через кнопку браузера.
    Но при этом проблема вышеописанная проблема с путаницей выходов сохранилась. Так например на http://192.168.0.170//cgi/o11 получаю ответ channel1:1|channel2:1|channel3:1|channel4:0|channel5:0|channel6:0|channel7:0
    Хотя по адресу http://192.168.0.170/oc?1 состояние каналов отображается правильно. Проблема только где-то в куске отвечающем за CGI

    1. у меня все правильно работало, сейчас работающего девайса нет, чтобы проверить. Если есть возможность, проверьте, плиз на другом компе. Так же, стоит учесть, что эти функции стабильно работают только при использовании XMLHTTPRequest, просто через строку браузера не всегда работает. Правда, когда не работает, то в ответ вообще ничего не приходит.

  13. Плюс еще замечена особенность,которая заставила меня немного поразвлечься. При любой проблеме в обвязке отвечающей за 1-ware, устройство не будет работать с ethernet

    1. Если не поставить 2 транзистора и 2 резистора 1wire, то девайс вообще запускаться не будет. Это не особенность, а так и должно быть

  14. Hi how to run project without transistors 2n7002 and ds18b20.
    This is possible?
    I ask because, I have only 2n7000 and I don’t have diode 1812 — I can’t found this diode any other symbol?
    Thanks

      1. Вот и первый с английским, а ты говорил не нужно переводить 🙂

        1. это уже не первый, на было уже несколько писали))

          1. Почему не выставляете английскую прошивку

  15. Доброго дня.

    Прочёл о Вашей разработке: http://kibermaster.net/lan-control-v2/
    Есть вопросы:
    1. Легко ли, и корректно считываются ик коды ПДУ, для использования их со сторонними системами контроля (URC, Control4) для управления девайсом?
    2. Возможно ли управлять девайсом с помощью IP кодов для использования их со сторонними системами контроля (URC, Control4) для управления девайсом?
    3. Возможно ли прикрутить к девайсу WiFi модуль и п.2?
    4. Возможно ли прикрутить к девайсу PoE?
    5. «Количество выходящих каналов: 7 (максимальный ток 500мА на каждый), выходящее напряжение равно напряжению питания.» — возможен ли, так скажем – силовой блок (реле, для управлением нагрузкой 220В (освещение, что-то вкл./выкл.), ну и как вариант – димирование) отд. готовым блоком/блоками, сразу готовым к сопряжению с устройством lan-control-v2?

  16. 1. Понимает только кодировку RC5.
    2. Нет, но возможно через XMLHTTPRequest.
    3. Неа, это уже не влезет.
    4. Тоже не получится.
    5. В данном случае, силовой блок — это обычная релюшка, подключаете ее катушку к любому выходу и можете управлять любой силовой нагрузкой, хоть 220, хоть 380))))

  17. 2. А как будет выглядеть такая команда, допустим для 1-го выхода на вкл/выкл?

    Для URC пультов управление по IP, допустим ресивером Пионер, выглядит так: указывается IP адрес устройства, порт. И собственно — код: включить: PO, выкл.: PF, вход ДВД: 04FN, вход СД: 01FN.

    Интересна возможность передачи кода управления по IP с таких пультов, для управления Вашим устройством.

    1. 2. В статье есть описание и пример.
      У этого девайса нет возможности управления по IP (хотя я и не совсем понимаю, как работает URC ).

      PS: Пишите через Reply, иначе комменты буду удалять.

      1. Пульты URC програмятся с РС, с помощью их софта. Пульт может отправлять: IR команды — напрямую управляемым устройствам (или по 433мГц на контроллер, или по WiFi на LAN контроллер, а контроллеры уже рулят устройствами IR, RS232 командами), или IP команды напрямую. Т.е. при программировании пульта, если добавляемое в проект устройство поддерживает управление по IP, в его свойствах указывается IP адрес устройства, порт. Затем на нужные кнопки навешиваются нужные команды, как писал выше. Пульт по WiFi (подключен к сети) передает команду на управляемое устройство.

        1. Да, на самих пультах крутится или W CE или W Mobile, т.к. пульт для программирования подкл-ся к РС по ЮСБ, и определяется как синхронизация с W CE или W Mobile устройством.

          1. просто я с ними ни разу не работал и подсказать ничего не смогу))))

      1. странно, у меня даже в спаме пусто))))

  18. добрый день, помогите пожалуйста,
    через веб интерфейс выхода правильно включаются и выключаются
    http://90.189.110.91:8085/test/cgi/o показывает 111:1|222:1|333:1|444:0|555:0|666:0|777:0 (включен только первый выход)ну соответственно остальные выхода по нумерации не совпадают.
    прошивка которая выложена на сайте.
    хотелось бы вернуть десятые доли градусов в гистерезис если конечно возможно.
    адрес устройства http://90.189.110.91:8085/test/th

    1. так а что, собственно, не работает?

  19. Здравствуйте
    через вебку работает все на отлично,

    невнимательно смотрел более ранние сообщения
    от 29.03.2013
    там та же проблема
    Отправляем команду включения первого канала: http://192.168.1.170//cgi/o11
    В ответ получаем: LED:1|test:1|out3:1|out4:0|out5:0|out6:0|out7:0
    Если верить ответу устройства,то оно включило сразу три первых канала, хотя в реальности оно все-таки отработало команду правильно и включило только первый канал.
    При отключении первого канала: http://192.168.1.170//cgi/o10
    Получаем ответ: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:0
    Физически канал отключается.
    При включении второго канала: http://192.168.1.170//cgi/o21
    Получаем ответ: LED:0|test:0|out3:0|out4:1|out5:0|out6:0|out7:0
    Физически включился второй канал
    И так до пятого канала.
    Когда включаем пятый канал: http://192.168.1.170//cgi/o51
    Приходит ответ: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:1
    Физически срабатывает пятый канал.
    А вот при включении шестого канала: http://192.168.1.170//cgi/o61
    Получаем ответ: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:0
    Хотя физически канал включился.
    На попытку включить седьмой канал: http://192.168.1.170//cgi/o71
    Ответ тоже пустой: LED:0|test:0|out3:0|out4:0|out5:0|out6:0|out7:0

    1. где то выше эта проблема обсуждалась (возможно, в первой версии), было связано с кешированием браузера.

      1. может прошивку нету залил. lc2.rar с ссылки скачал

  20. у вас эффект этот проявился ??? включение 1 выхода сразу врубает 2 и 3

    1. ага. Если кнопки «он-офф» норм работаю, то проблема именно с браузером.
      Пишите через «ответ», иначе буду удалять

      1. а возможно а прошивку вернуть десятые доли градуса? темпер маленько сдвигать 🙂

        1. Может когда то и сделаю, но когда не знаю

  21. Добрый день
    snmp trap — поддержку как то можно прикрутить ?

    1. Можно, если есть знания программирования.

      1. подскажите плз направление движения ))

        1. Как минимум, изучить протокол)))))

  22. ну ето в процессе — мне больше работа меги или езер шилда с snmp

  23. Добрый день! Можно ли как нибудь удалять t датчики по одному не сбрасывая все устройство (удаляя все датчики).

  24. ДД! Отправляю из адресной строки браузера — адрес/cgi/o — получаю — First:1|Second:1|Third:1|Fourth:0|Fifth:0|Sixth:0|Seventh:0, при этом 2-й и 3-й у меня не активированы, если просто зайти будет так —
    1. First: ON Auto
    2. Second: OFF Auto
    3. Third: OFF Auto
    4. Fourth: OFF Auto
    5. Fifth: OFF Auto
    6. Sixth: OFF Auto
    7. Seventh: OFF Auto

    если пробовать устанавливать -сбрасывать — адрес/cgi/o21 или o20 — то команда выполняется, но строка
    остаётся — First:1|Second:1|Third:1|Fourth:0|Fifth:0|Sixth:0|Seventh:0.
    к первому выходу прикручен термостат, ИК приёмника нет. Из-за чего так ?

    1. 90% что проблемы с браузером. Конкретно — кэширование.

      1. F5 не спасло. заход с другого компа и другого браузера тоже (

        1. Я не могу сказать в чем у Вас проблема, но у меня такое было именно из-за кэширования.
          F5 не поможет, попробуйте ctrl+F5

          1. На всякий случай — заходили с разных девайсов и разных браузеров, но только когда термостат отработал выход First1 обратно в «0», ответ на запрос стал корректным.

    2. У меня такая же ситуация.Пробовал с пяти разных компов.

  25. Добрый день вы не могли бы сделать три последних канала не тригерные, а импульсные 200мс (для пульта).
    Спасибо.

  26. Добрый день,
    подключил Ардуино UNO + ENC28J60.
    Простой лупчик отправляет «GET /» — запрос на мой вэб-сервер получает в ответ: «Hello!».
    Проблема в том что после 10 часов работы перестает устанавливать Соединение(: «connection failed».
    Задержка — 20 секунд.

    #include
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress server( 10, X, Y, Z );
    Ethernet.begin(mac);
    client.connect(server, 8080)

  27. Добрый день!
    Кто-нибудь пробовал прикрутить XMLHTTPRequest запрос с этого устройства к Микротику? Хочу написать скрипт для Микротика, в котором идет опрос входов устройства и запись ответа в переменную. Или киньте ссылку, где это обсуждается.

  28. как ни пробовал из архива LC2 cgi работает криво. браузеры возвращают не верное значение портов вывода, код данный в статье на xml тоже говорит, что не удается получить данные, так же ни один софт не смог вытянуть GETом данные. при чем просто в админки или страницы home информация вытягивается, а из cgi/o, cgi/i ни в какую

  29. странно, что при такой еепромине при отключении питания не сохраняются значения выходов !? можно поправить? а то не удобно, так как в меру места проживания свет часто пропадает 🙁 а использоать NC контакты реле не очень удобно

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *