LAN Control V2
Обновление №1 (19.03.2013). Обновил описание.
Более функциональное устройство, рекомендую посмотреть XControl
Итак, сделал вторую версию LAN Control, о первой можно почитать здесь.
Судя по комментам, пользователям очень не хватает двух функций - пароля и гистерезиса, в этой версии они добавлены. И самое приятное - схема и плата не изменилась.
Гистерезис

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

В поле "Пароль" нужно вести, собственно, пароль. Его длина может быть от 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-й выход. Другие выходы не срабатывают. Датчик у меня подключен один, чтобы термостат работал приходится в настройках ставить номер датчика 0. Гистерезис у меня не заработал. Настройки сбрасывал, но не помогло.
ОтветитьУдалитьпостучитесь ко мне в аську 393792463
ОтветитьУдалитьавторизируйте меня
ОтветитьУдалитьЧто то у меня после прошивки осталась старая версия. хотя прошился нормально, настройки сбросил. нечего не пойму...
ОтветитьУдалитьстранно, у остальных прошивается новая прошивка))) я перезалил, попробуйте еще раз.
ОтветитьУдалитьPS: в новой прошивке при получении комманды с пульта зажигается светодиод
не помогло, а бутлоадер тоже залить?
ОтветитьУдалитьможно и без бутлоадера. Но лучше, залить бутлоадер (можно и с первой версии, они одинаковы), затем, прошивку.
ОтветитьУдалитьПишите через Reply, иначе буду удалять
Подскажите пожалуйста как настроить DynDNS
ОтветитьУдалитьв гугле об этом куча инфы с картинками и подробнейшим описанием
ОтветитьУдалитьЕсть жедание приобрести плату или устройство. Но есть вопрос с доставкой и способом оплаты из России.К сожалению ваш личный Е-Mail сдесь на сайте не нашел.Как с вами связаться? Из страницы вашего магазина есть вопросы по оплате и доставке.
ОтветитьУдалитьПишите на admin@kibermaster.net. C доставкой в Россию проблем нет (как и в любую другую страну)
ОтветитьУдалитьДобавление кириллицы в названия девайсов, у меня сокращено до 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));
}
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] = ''; // завершаем строку
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));
}
это с пробелом вместо плюса
ОтветитьУдалить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] = ''; // завершаем строку
исправил
ОтветитьУдалитьДобрый вечер! Протестировал вашу прошивку. Термостат работает как надо с гистерезисом, но только с датчиком №1. С датчиком №2 никак не могу настроить. В настройках пробовал устанавливать датчик 1 или 2. С 1 всё нормально, а с 2 никакой реакции. Датчики работают нормально.
ОтветитьУдалитьУ человека, который тестировал девайс, такая проблема была, но потом я ее исправил. Я перезалил файлы, скачайте заново (теперь называется lc2.rar)
ОтветитьУдалитьСпасибо! Заработало.
ОтветитьУдалитьДобрый день,заранее прошу прощения за объемный текст,но в ходе испытаний было замечено следующее:
ОтветитьУдалитьПрошивка из архива «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» ведет себя аналогичным образом. Плюс отсутствует возможность изменить в браузере состояние состояние выхода кликая по ссылке, как было в одной из первых версий.
а у вас часом на эти выходы термостат не включен?
ОтветитьУдалитьДа, был включен термостат.После его выключения стала доступна опция управления выходами через кнопку браузера.
ОтветитьУдалитьНо при этом проблема вышеописанная проблема с путаницей выходов сохранилась. Так например на 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-ware, устройство не будет работать с ethernet
ОтветитьУдалитьЕсли не поставить 2 транзистора и 2 резистора 1wire, то девайс вообще запускаться не будет. Это не особенность, а так и должно быть
ОтветитьУдалитьу меня все правильно работало, сейчас работающего девайса нет, чтобы проверить. Если есть возможность, проверьте, плиз на другом компе. Так же, стоит учесть, что эти функции стабильно работают только при использовании XMLHTTPRequest, просто через строку браузера не всегда работает. Правда, когда не работает, то в ответ вообще ничего не приходит.
ОтветитьУдалитьНажми F5 в браузере
ОтветитьУдалить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
resistors 2,4 between 14 and 15 pin atmega don't work.
ОтветитьУдалитьshow me photo of board bottom
ОтветитьУдалитьВот и первый с английским, а ты говорил не нужно переводить :)
ОтветитьУдалитьэто уже не первый, на было уже несколько писали))
ОтветитьУдалитьПочему не выставляете английскую прошивку
ОтветитьУдалитьеще не время))))
ОтветитьУдалитьДоброго дня.
ОтветитьУдалитьПрочёл о Вашей разработке: 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?
1. Понимает только кодировку RC5.
ОтветитьУдалить2. Нет, но возможно через XMLHTTPRequest.
3. Неа, это уже не влезет.
4. Тоже не получится.
5. В данном случае, силовой блок - это обычная релюшка, подключаете ее катушку к любому выходу и можете управлять любой силовой нагрузкой, хоть 220, хоть 380))))
2. А как будет выглядеть такая команда, допустим для 1-го выхода на вкл/выкл?
ОтветитьУдалитьДля URC пультов управление по IP, допустим ресивером Пионер, выглядит так: указывается IP адрес устройства, порт. И собственно - код: включить: PO, выкл.: PF, вход ДВД: 04FN, вход СД: 01FN.
Интересна возможность передачи кода управления по IP с таких пультов, для управления Вашим устройством.
2. В статье есть описание и пример.
ОтветитьУдалитьУ этого девайса нет возможности управления по IP (хотя я и не совсем понимаю, как работает URC ).
PS: Пишите через Reply, иначе комменты буду удалять.
Пульты URC програмятся с РС, с помощью их софта. Пульт может отправлять: IR команды - напрямую управляемым устройствам (или по 433мГц на контроллер, или по WiFi на LAN контроллер, а контроллеры уже рулят устройствами IR, RS232 командами), или IP команды напрямую. Т.е. при программировании пульта, если добавляемое в проект устройство поддерживает управление по IP, в его свойствах указывается IP адрес устройства, порт. Затем на нужные кнопки навешиваются нужные команды, как писал выше. Пульт по WiFi (подключен к сети) передает команду на управляемое устройство.
ОтветитьУдалитьДа, на самих пультах крутится или W CE или W Mobile, т.к. пульт для программирования подкл-ся к РС по ЮСБ, и определяется как синхронизация с W CE или W Mobile устройством.
ОтветитьУдалитьпросто я с ними ни разу не работал и подсказать ничего не смогу))))
ОтветитьУдалитьА купить устройство? в Запорожье.
ОтветитьУдалитьadmin@kibermaster.net сюда напишите
ОтветитьУдалитьНаписал 2 дня назад.
ОтветитьУдалитьили Вы напишите tehnoinstyle@i.ua
ОтветитьУдалитьстранно, у меня даже в спаме пусто))))
ОтветитьУдалитьдобрый день, помогите пожалуйста,
ОтветитьУдалитьчерез веб интерфейс выхода правильно включаются и выключаются
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
так а что, собственно, не работает?
ОтветитьУдалитьЗдравствуйте
ОтветитьУдалитьчерез вебку работает все на отлично,
невнимательно смотрел более ранние сообщения
от 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
Просьба посмотрите сами . адрес реальный. железка в сети http://90.189.110.91:8085/test/
ОтветитьУдалитьгде то выше эта проблема обсуждалась (возможно, в первой версии), было связано с кешированием браузера.
ОтветитьУдалитьу вас эффект этот проявился ??? включение 1 выхода сразу врубает 2 и 3
ОтветитьУдалитьага. Если кнопки "он-офф" норм работаю, то проблема именно с браузером.
ОтветитьУдалитьПишите через "ответ", иначе буду удалять
может прошивку нету залил. lc2.rar с ссылки скачал
ОтветитьУдалитьа возможно а прошивку вернуть десятые доли градуса? темпер маленько сдвигать :)
ОтветитьУдалитьгистерезис
ОтветитьУдалитьМожет когда то и сделаю, но когда не знаю
ОтветитьУдалитьДобрый день
ОтветитьУдалитьsnmp trap - поддержку как то можно прикрутить ?
Можно, если есть знания программирования.
ОтветитьУдалитьне думали о решении ?
ОтветитьУдалитьнеа, не было надобности
ОтветитьУдалитьподскажите плз направление движения ))
ОтветитьУдалитьКак минимум, изучить протокол)))))
ОтветитьУдалитьну ето в процессе - мне больше работа меги или езер шилда с snmp
ОтветитьУдалитьТогда это http://tuxgraphics.org/electronics/200606/article06061.shtml.
ОтветитьУдалитьПишите через ответ, иначе буду удалять.
Добрый день! Можно ли как нибудь удалять t датчики по одному не сбрасывая все устройство (удаляя все датчики).
ОтветитьУдалитьЗдравствуйте! Нельзя.
ОтветитьУдалитьДД! Отправляю из адресной строки браузера - адрес/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.
к первому выходу прикручен термостат, ИК приёмника нет. Из-за чего так ?
90% что проблемы с браузером. Конкретно - кэширование.
ОтветитьУдалитьF5 не спасло. заход с другого компа и другого браузера тоже (
ОтветитьУдалитьЯ не могу сказать в чем у Вас проблема, но у меня такое было именно из-за кэширования.
ОтветитьУдалитьF5 не поможет, попробуйте ctrl+F5
ctrl+F5 тоже не помогло.
ОтветитьУдалитьНа всякий случай - заходили с разных девайсов и разных браузеров, но только когда термостат отработал выход First1 обратно в "0", ответ на запрос стал корректным.
ОтветитьУдалитьУ меня такая же ситуация.Пробовал с пяти разных компов.
ОтветитьУдалитьДобрый день вы не могли бы сделать три последних канала не тригерные, а импульсные 200мс (для пульта).
ОтветитьУдалитьСпасибо.
Добрый день,
ОтветитьУдалитьподключил Ардуино 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)
...
Lib: UIPEthernet.h
ОтветитьУдалитьПодключил по Схеме: https://drive.google.com/file/d/0B_3QZXaVhUToUzJLOEFMS1ZiQkU/view?usp=sharing
ОтветитьУдалитьДобрый день!
ОтветитьУдалитьКто-нибудь пробовал прикрутить XMLHTTPRequest запрос с этого устройства к Микротику? Хочу написать скрипт для Микротика, в котором идет опрос входов устройства и запись ответа в переменную. Или киньте ссылку, где это обсуждается.
как ни пробовал из архива LC2 cgi работает криво. браузеры возвращают не верное значение портов вывода, код данный в статье на xml тоже говорит, что не удается получить данные, так же ни один софт не смог вытянуть GETом данные. при чем просто в админки или страницы home информация вытягивается, а из cgi/o, cgi/i ни в какую
ОтветитьУдалитьстранно, что при такой еепромине при отключении питания не сохраняются значения выходов !? можно поправить? а то не удобно, так как в меру места проживания свет часто пропадает :( а использоать NC контакты реле не очень удобно
ОтветитьУдалить