Web-сервер на arduino с контроллером температуры.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Andy пишет:

Как вариант, можно вообще всю страничку разместить на внешнем ресурсе, а в ардуинке только значения параметров.

Ага, если бы всё было так просто ;) Вы попробуйте, и расскажите нам о результатах, когда с одного домена, на котором у вас размещена страница, вы будете получать данные, отправляя запрос к другому домену (которым будет выступать дуина). И тогда сразу лихорадочно будем вспоминать про политики ограничения кроссдоменных запросов в браузерах, и как это побороть.

armlive
Offline
Зарегистрирован: 07.12.2015

Зачем вам два домена можете пояснить????
Ардуино справляется с этим прекрасно, будущий клиентом

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

DIYMan пишет:
Ага, если бы всё было так просто ;) Вы попробуйте, и расскажите нам о результатах, когда с одного домена, на котором у вас размещена страница, вы будете получать данные, отправляя запрос к другому домену (которым будет выступать дуина). И тогда сразу лихорадочно будем вспоминать про политики ограничения кроссдоменных запросов в браузерах, и как это побороть.

Рассказываю.

Данные передаем через iframe.src=http://ТвойДомен/arduina.html?param=value

Получаем через:

<script type="text/javascript" src="http://ТвойДомен/script.js"></script>

путем обновления страницы.

Начинай лихорадочно вспоминать про кроссдоменные запросы.

Deuce
Offline
Зарегистрирован: 20.08.2013

DIYMan

Прошу понять меня правильно и не обижаться. Есть код (выкладывал его ранее), который я подогнал на работу с восемью датчиками и восемью реле (подогнал из первоначального скетча в этой теме). Есть необходимость уйти с ENC28J60 на W5100. На то свои причины, главная из которой - неработоспособность ENC при превышении HTTP_части кода 1279 символов, включая пробелы. Сам я не программист ни разу, о чем тоже сообщал. И теперь, вместо того, что бы написать: "парни, пишите так и вот так", я вижу много слов на тему "код, что привели - в помойку", "есть RFC на тему...." Вопрос чисто риторический: вот какой практический смысл всего этого?  Блеснуть познаниями в RFC? Тогда где номер RFC? Просто блеснуть чем-либо? Ну ок, потешил эго, дальше что? Еще раз призываю понять меня правильно и не обижаться.

 

 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Deuce, в твоем коде никто не захочет ковыряться.

Вот здесь реализовано на W5100: http://arduino.ru/forum/programmirovanie/webserver-na-arduino-2560-i-eth...

Deuce
Offline
Зарегистрирован: 20.08.2013

Andy пишет:

Deuce, в твоем коде никто не захочет ковыряться.

Переживу. Особенно учитывая, что это не "мой код". я взял код тс. И просто подогнал под большее кол-во датчиков. Для себя я рано или поздно сделаю задуманное. Как и во всех случаях, за исключением одного, без участия этого форума. :)

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

armlive пишет:
Зачем вам два домена можете пояснить???? Ардуино справляется с этим прекрасно, будущий клиентом

Речь шла о локальной HTML-странице, с которой идёт запрос к ардуине. В терминах веб, локальная страница - тоже отдельный домен. Дальше объяснять или сами про CORS в вики почитаете?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Andy пишет:

DIYMan пишет:
Ага, если бы всё было так просто ;) Вы попробуйте, и расскажите нам о результатах, когда с одного домена, на котором у вас размещена страница, вы будете получать данные, отправляя запрос к другому домену (которым будет выступать дуина). И тогда сразу лихорадочно будем вспоминать про политики ограничения кроссдоменных запросов в браузерах, и как это побороть.

Рассказываю.

Данные передаем через iframe.src=http://ТвойДомен/arduina.html?param=value

Получаем через:

<script type="text/javascript" src="http://ТвойДомен/script.js"></script>

путем обновления страницы.

Начинай лихорадочно вспоминать про кроссдоменные запросы.

Дык то, что вы привели - костыль, который специально используют, чтобы обойти CORS, называется этот костыль - JSONP. Без P - работать не будет. Что такое P после JSON - предлагаю догадаться.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Deuce пишет:

DIYMan

Прошу понять меня правильно и не обижаться. Есть код (выкладывал его ранее), который я подогнал на работу с восемью датчиками и восемью реле (подогнал из первоначального скетча в этой теме). Есть необходимость уйти с ENC28J60 на W5100. На то свои причины, главная из которой - неработоспособность ENC при превышении HTTP_части кода 1279 символов, включая пробелы. Сам я не программист ни разу, о чем тоже сообщал. И теперь, вместо того, что бы написать: "парни, пишите так и вот так", я вижу много слов на тему "код, что привели - в помойку", "есть RFC на тему...." Вопрос чисто риторический: вот какой практический смысл всего этого?  Блеснуть познаниями в RFC? Тогда где номер RFC? Просто блеснуть чем-либо? Ну ок, потешил эго, дальше что? Еще раз призываю понять меня правильно и не обижаться.

Да никаких обид. Просто я речь веду о том, что если вы взялись делать что-то подобной сложности - надо для начала почитать хотя бы основы, а не кидаться сразу в бой. Ничем я блеснуть не хочу, мне и без этого работ и забот хватает. Я лишь предупреждаю, что при таком подходе - дальше будет только хуже, и понимания - не придёт ни на грош, будет только тупое и бессмысленное дёрганье кусков кода из чужих скетчей. Хочешь сделать хорошо? Сделай это сам!

У нас вообще классно всё устроено - можно без прав и знания ПДД шмалять по дорогам на убитых машинах - а чо, вон друзья ездят! Вот ваш подход примерно из той же оперы - не зная самых необходимых основ - пытаетесь сразу впихнуть невпихуемое. А чревато это, как и в случае с авто - скорой аварией. Впрочем, зато механикам работа всегда будет.

Короче, я на вас молюсь - не будь вас, не было бы у меня работы :)

armlive
Offline
Зарегистрирован: 07.12.2015

Где там речь о локальной странице??? Парень предложил просто саму страницу разместить на "внешнем ресурсе", Не придав смысла. А имел ввиду скорее всего создать страницу, к которой будет обращаться Ардуино, но ни как на оборот.
Если все же, я ошибся, то тогда встречный вопрос , а зачем все так усложнять???

armlive
Offline
Зарегистрирован: 07.12.2015

Конечно лет 10 назад, я бы еще понял, экономия трафика, но сейчас...

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

armlive пишет:
Где там речь о локальной странице??? Парень предложил просто саму страницу разместить на "внешнем ресурсе", Не придав смысла. А имел ввиду скорее всего создать страницу, к которой будет обращаться Ардуино, но ни как на оборот. Если все же, я ошибся, то тогда встречный вопрос , а зачем все так усложнять???

Может и я не так понял - кто к кому будет обращаться, бывает. К вопросу "зачем всё так усложнять" - а зачем вообще знать основы? Ведь можно взять - и наговнякать. Это не к вам лично, это вообще - современный потреблядский подход: сначала сделать, а потом чесать репу - почему не работает. Потом задать кучу ненужных вопросов, которые можно было бы решить, почитав сразу документацию.

Ну ведь основа же - политики безопасности браузеров. И кстати - есть сценарии использования, при которых вы не сможете без плясок с бубном получить данные со страницы в веб, неважно, запросив их с ардуины ли или ещё откуда. Но я об этом тихо промолчу, ок? А то всё равно это никому неинтересно.

armlive
Offline
Зарегистрирован: 07.12.2015

Даже очень интересно, Вот сейчас сижу и калдую, динамическую переменную получаю с удаленный вебстр

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

armlive пишет:
Даже очень интересно, Вот сейчас сижу и калдую, динамическую переменную получаю с удаленный вебстр

Я вот колбасу в дальнем магазине тоже покупаю без проблем, и что? Без указания юзкейса ваши слова - ни о чём. Я тоже могу получить чего-нибудь с веб-страницы, но - далеко не с каждой, и далеко не любым способом. Если вам это подвластно - поздравляю, вы волшебник.

Впрочем, разговор ни о чём, поскольку тут никто даже не заморачивается чтением хоть какой-либо документации, как правило.

З.Ы. У вас, кстати, при получении значения переменной анализируется Expires и, хотя бы, 302 Content moved? Я уже не говорю о Last-Modified - а то вы там такого старого говна получите с сервера, что уверенности в достоверности полученных данных не останется ни на грош. Впрочем, это неправильный, профессиональный подход, правильные пацаны таким не заморачиваются.

Вы, наверное, тоже не паритесь? ;)

armlive
Offline
Зарегистрирован: 07.12.2015

Вы правы, Мне незачем этим париться))). Я конечно не гуру, но у меня страница получает данные каждую секунду, записывая все в базу. Изменения на странице, Так-же записываются в базу и выводятся в строчку.Ну а дальше генерации графиков и т.п. Смысл создания был, Не привязываться к одному контролеру и максимальную гибкость. На данный момент можно добавлять очень много контроллеров, к примеру esp12 встроенных в выключатели, розетки и т.п. И управлять всем этим с одной страницы. Гибкость, пишу приложение под андроид.
Я к чему, что каждый начинает как может. Только хватит ума и терпения не каждому. Ну а кто пытается хоть как, молодцы, Все лучше чем х**ней страдать

uservasil
Offline
Зарегистрирован: 09.07.2015

Это называется поумничали и разошлись =), а по делу хоть номер RFC дайте, а еще лучше если уж Вы на нас молитесь и для Вас это просто напишите реализацию этих умных слов: "FORM описать атрибуты TARGET и METHOD, чтобы браузер знал, куда и каким методом засунуть данные, введённые пользователем. Затем - при отправке формы по кнопке <input type="submit"...> на URI, указанный в TARGET, методом, указанном в METHOD, придут данные, закодированные в соответствии с указанием кодировки, это описывается аттрибутом ENCTYPE формы. Принимаете HTTP-запрос для этого URI, разбираете переданные значения, декодируете их, если потребуется"

ЗЫ. память пока не жмет, ее еще много =)

uservasil
Offline
Зарегистрирован: 09.07.2015

Deuce пишет:

Andy пишет:

Deuce, в твоем коде никто не захочет ковыряться.

Переживу. Особенно учитывая, что это не "мой код". я взял код тс. И просто подогнал под большее кол-во датчиков. Для себя я рано или поздно сделаю задуманное. Как и во всех случаях, за исключением одного, без участия этого форума. :)

а может попробуем взять данные не из формы ввода, а из кнопки и например сделаем 2-4 кнопки к которым будет привяза определенная температура, быть может так будет проще?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

uservasil пишет:

Это называется поумничали и разошлись =), а по делу хоть номер RFC дайте, а еще лучше если уж Вы на нас молитесь и для Вас это просто напишите реализацию этих умных слов: "FORM описать атрибуты TARGET и METHOD, чтобы браузер знал, куда и каким методом засунуть данные, введённые пользователем. Затем - при отправке формы по кнопке <input type="submit"...> на URI, указанный в TARGET, методом, указанном в METHOD, придут данные, закодированные в соответствии с указанием кодировки, это описывается аттрибутом ENCTYPE формы. Принимаете HTTP-запрос для этого URI, разбираете переданные значения, декодируете их, если потребуется"

ЗЫ. память пока не жмет, ее еще много =)

За вас писать? Зачем? У меня и так работы хватает. Вам нужен RFC по HTTP? В гугле не забанили часом? Так и набираете - HTTP RFC. Заодно можно стандарт HTML почитать, про те же атрибуты тега FORM, чтобы прояснение наступило.

По поводу "поумничали": не далее как пару дней назад ещё раз убедился, что политика безопасности браузеров работает, и, если не знать про CORS - дулю можно получить вместо результата запроса. Суть была проста: есть страничка, которая выдаётся Мегой с SD-карточки в браузер, через вай-фай-вундерфафлю ESP8266. С неё отправляю AJAX-запросы на мегу же, получаю ответ, чего-то там на страничке делаю JavaScript'ом. Ну ведь неудобно же - изменил страницу, для тестирования её надо закачать на карточку, а для этого карточку надо вынуть из меги. Сохранил страницу локально, открываю её, жмакаю кнопку "опросить датчики", а Firefox дулей крутит и говорит: мил человек, не покажу я тебе ответ от меги, т.к. не нашёл я в ответе заголовок один секретный, поэтому - кури в сторонке.

Думаю - а ведь точно, прошляпил по старости лет. Открыл прошивку, дописал выдачу заголовка Access-Control-Allow-Origin: * - и пошёл пить чай, т.к. всё заработало.

Но это реальным пацанам неинтересно - RFC ведь мало того, что читать надо, так они, цуки, ещё и на басурманском! Мы лучше так налабаем, а потом будем кричать - ааа, почему не работает мой кривой скетч?

З.Ы. Полная реализация обработки данных с формы, если делать в соответствии с RFC - вещь далеко не тривиальная и, боюсь, ресурсиков дурины тут не хватит.

З.З.Ы. Вот моё видео, в котором показана работа с браузером. Там и ссылка на проект на гитхабе есть.

http://www.youtube.com/watch?v=L8ox4UzQNxs

uservasil
Offline
Зарегистрирован: 09.07.2015

вот то что получилось у меня, создал новую тему потому что пришедший сюда новичек вроде меня, не найдет http://arduino.ru/forum/proekty/web-server-dlya-mega5100dhtds18b20

kefir
Offline
Зарегистрирован: 10.03.2015

ПОдскажите куда копать.  собрал схему, когда захожу на веб морду  температуру пишет -0.06  и никак не меняеться. куда копать. через монитор порта темперетуру показывают датчики правильбную а  через веб никак.  куда копнуть кто подскажет.