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см кабеля.Подключаем остальные провода:


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




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

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

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

Комментарии

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

    ОтветитьУдалить
  2. а после перепрошивки настройки сбрасывали?

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

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

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

    ОтветитьУдалить
  6. постучитесь ко мне в аську 393792463

    ОтветитьУдалить
  7. авторизируйте меня

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

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

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

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

    ОтветитьУдалить
  12. Подскажите пожалуйста как настроить DynDNS

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

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

    ОтветитьУдалить
  15. Пишите на admin@kibermaster.net. C доставкой в Россию проблем нет (как и в любую другую страну)

    ОтветитьУдалить
  16. Добавление кириллицы в названия девайсов, у меня сокращено до 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));

    }

    ОтветитьУдалить
  17. 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] = ''; // завершаем строку

    ОтветитьУдалить
  18. 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));
    }

    ОтветитьУдалить
  19. это с пробелом вместо плюса
    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] = ''; // завершаем строку

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

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

    ОтветитьУдалить
  22. Спасибо! Заработало.

    ОтветитьУдалить
  23. Добрый день,заранее прошу прощения за объемный текст,но в ходе испытаний было замечено следующее:
    Прошивка из архива «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» ведет себя аналогичным образом. Плюс отсутствует возможность изменить в браузере состояние состояние выхода кликая по ссылке, как было в одной из первых версий.

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

    ОтветитьУдалить
  25. Да, был включен термостат.После его выключения стала доступна опция управления выходами через кнопку браузера.
    Но при этом проблема вышеописанная проблема с путаницей выходов сохранилась. Так например на 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

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

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

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

    ОтветитьУдалить
  29. 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

    ОтветитьУдалить
  30. resistors 2,4 between 14 and 15 pin atmega don't work.

    ОтветитьУдалить
  31. Вот и первый с английским, а ты говорил не нужно переводить :)

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

    ОтветитьУдалить
  33. Почему не выставляете английскую прошивку

    ОтветитьУдалить
  34. Доброго дня.

    Прочёл о Вашей разработке: 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?

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

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

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

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

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

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

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

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

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

    ОтветитьУдалить
  41. А купить устройство? в Запорожье.

    ОтветитьУдалить
  42. admin@kibermaster.net сюда напишите

    ОтветитьУдалить
  43. Написал 2 дня назад.

    ОтветитьУдалить
  44. или Вы напишите tehnoinstyle@i.ua

    ОтветитьУдалить
  45. странно, у меня даже в спаме пусто))))

    ОтветитьУдалить
  46. добрый день, помогите пожалуйста,
    через веб интерфейс выхода правильно включаются и выключаются
    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

    ОтветитьУдалить
  47. так а что, собственно, не работает?

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

    невнимательно смотрел более ранние сообщения
    от 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

    ОтветитьУдалить
  49. Просьба посмотрите сами . адрес реальный. железка в сети http://90.189.110.91:8085/test/

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

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

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

    ОтветитьУдалить
  53. может прошивку нету залил. lc2.rar с ссылки скачал

    ОтветитьУдалить
  54. а возможно а прошивку вернуть десятые доли градуса? темпер маленько сдвигать :)

    ОтветитьУдалить
  55. Может когда то и сделаю, но когда не знаю

    ОтветитьУдалить
  56. Добрый день
    snmp trap - поддержку как то можно прикрутить ?

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

    ОтветитьУдалить
  58. неа, не было надобности

    ОтветитьУдалить
  59. подскажите плз направление движения ))

    ОтветитьУдалить
  60. Как минимум, изучить протокол)))))

    ОтветитьУдалить
  61. ну ето в процессе - мне больше работа меги или езер шилда с snmp

    ОтветитьУдалить
  62. Тогда это http://tuxgraphics.org/electronics/200606/article06061.shtml.
    Пишите через ответ, иначе буду удалять.

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

    ОтветитьУдалить
  64. Здравствуйте! Нельзя.

    ОтветитьУдалить
  65. ДД! Отправляю из адресной строки браузера - адрес/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.
    к первому выходу прикручен термостат, ИК приёмника нет. Из-за чего так ?

    ОтветитьУдалить
  66. 90% что проблемы с браузером. Конкретно - кэширование.

    ОтветитьУдалить
  67. F5 не спасло. заход с другого компа и другого браузера тоже (

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

    ОтветитьУдалить
  69. На всякий случай - заходили с разных девайсов и разных браузеров, но только когда термостат отработал выход First1 обратно в "0", ответ на запрос стал корректным.

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

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

    ОтветитьУдалить
  72. Добрый день,
    подключил Ардуино 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)
    ...

    ОтветитьУдалить
  73. Подключил по Схеме: https://drive.google.com/file/d/0B_3QZXaVhUToUzJLOEFMS1ZiQkU/view?usp=sharing

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

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

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

    ОтветитьУдалить

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

Популярные сообщения из этого блога

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

STM32F4. Обновление прошивки с карты памяти (Bootloader SD)

Работа с шиной 1-wire. Подключение термодатчика DS18B20 к AVR