Arduino + Web Server

Rowser
Offline
Зарегистрирован: 26.02.2012

Ребята прошу помощи! Поделитесь ссылкой как отсылать данные с arduino на веб сервер. Может кто уже описывал подобный проект. Хоть что то! Просто наведите на правильный путь)

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Если местный поиск не хотите использовать по каким-то религиозным соображениям - google.ru,  читать про POST и GET запросы с использованием Ethernet Shield.

Там, обычно, в примерах уже все есть - называется HTTP client...

9ser
Offline
Зарегистрирован: 18.11.2012

Rowser пишет:

Ребята прошу помощи! Поделитесь ссылкой как отсылать данные с arduino на веб сервер. Может кто уже описывал подобный проект. Хоть что то! Просто наведите на правильный путь)

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

Если появится информацие поделитесь плз

dtvims
Offline
Зарегистрирован: 26.11.2012

Надеюсь найти как на duino`е настроить tcp/ip соединение с помощью ethernet-шилда найдете сами?

Далее устанавливаете соединение с нужным сервером, например ya.ru на порт 80 (можно потренироваться телнетом "telnet ya.ru 80"). Затем отправляете следующий код (именно это шлет chrome):

GET / HTTP/1.1
Host: ya.ru
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3

Затем 2 переноса строки, которые определяют, что Вы закончили отправлять заголовок теперь только слушайте. Ответ придет в аналогичном виде: заголовок, 2 переноса строки и данные (ответ может быть без данных тогда, только заголовок), затем сервер закроет соединение.

Детальнее, что из HTTP запроса можно убрать за не надобностью или добавить (Ваши данные), ищите документацию по http-протоколу, там много всего...

MaksMS
Offline
Зарегистрирован: 11.03.2013

все зависит от того,какой шилд и какие библиотеки используются ,а так отправить достаточно "GET /адресстроки HTTP/1.1" и если есть виртуалхостинги ,то добавить "Host: вашдомен.ru"

leshak
Offline
Зарегистрирован: 29.09.2011

>Accept-Encoding: gzip

;) 

dtvims
Offline
Зарегистрирован: 26.11.2012

Написал, же, что пример из Chrome - тупо закопипастил, а что надо или нет см. в описании протокола.

А потом, может чел захочет на дуине реализовать gzip ;) А еще чтобы дуина шифровалась под последний айфон, чтобы с него в социальные сети писать и хвастаться, что у него айфон :)

leshak
Offline
Зарегистрирован: 29.09.2011

 

dtvims пишет:

Написал, же, что пример из Chrome - тупо закопипастил, 

Могли и не писать, хедер "User-Agent" тоже видно :)

dtvims пишет:

а что надо или нет см. в описании протокола.

Зачем мне смотреть в описание протокола? Если я обратил внимание на "Accept-Encoding" то наверное уже имею общие представление о протоколе? ;)  На другие тоже обратил, просто именно он больше всех на кандидатуру "граблей удачно положенных" подходил.

Ведь новичок же - вот возмет так все копи-пастом и пошлет. Хотя... врядли он вообще что-то пошлет. Раз гугл и примеры из базовой поставки не смогли подсказать направление. А уж что "чтение описания протокола" даст просветление моментально - сомневаюсь (и в ч тении и в просветлении).

dtvims пишет:

А потом, может чел захочет на дуине реализовать gzip ;) А еще чтобы дуина шифровалась под последний айфон, чтобы с него в социальные сети писать и хвастаться, что у него айфон :)

Да ладно... зачем для этого заголовки? Мне думается что персонажам которым важно у кого "последний айфон" - достаточно в сам текст поста добавлять "написанно на Iphone 99".

P.S. Последнию неделю я провел в войнах с кросс-доменными ajax, куками и авторизацией. Все это на связке  Flash+Javascript (тоже "размазаныне" по разным доменам). Так что "прикопатся к заголовкам" - это уже безусловный рефлекс ;)

dtvims
Offline
Зарегистрирован: 26.11.2012

leshak пишет:

Да ладно... зачем для этого заголовки? Мне думается что персонажам которым важно у кого "последний айфон" - достаточно в сам текст поста добавлять "написанно на Iphone 99".

Это тоже не всем очевидно как и все выше отмеченное Вами, иначе не было бы таких просьб: "Если я пришлю тебе мои логин и пароль, сможешь мне что-нить написать со своего яйфона на доску, чтобы все подумали, что у меня айфон?".

Собственно вопрос был "как?", на что был дан ответ как это делает реальный браузер, а детализация хидеров зависит от конкретных задач. В зависимости от программера сайта и админа сервера, в зависимости от данных заголовков результат может очень существенно отличаться, почему многие боты шифруются под известные браузеры. Более того, некоторые админы настолько не любят ботов, что по не полному хидеру вообще могут контент не отдать.

Спорить можно много - вопрос уже скорее филосовский.

leshak, в описание протокола предлагал смотреть не Вам, а автору топика. Собственно только глядя в протокол мало что понятно, а если есть рабочий пример, то оттолкнушись от него, наверное значительно легче понять зачем тот или иной хидер.

P.s. У меня был случай когда серверу был критичены регистр каждой буковки в хидере и сами разаработчики не могли понять почему их система не работает, пока я их не ткнул пальцем. 

leshak
Offline
Зарегистрирован: 29.09.2011

2dtvims: да что вы так серьезно? Тема же  - явно "не о чем".  Понятно что вы знаете "зачем подделыть User-Agent", так же очевидно что я с этим знаком. Так шо это просто - чешим языком. Наши бодания по поводу хедеров - все равно топик стартеру ничем не помогут. Так же как и отсылка "к протоколам". Ну не верю я что человек который не смог загуглить "Arduino Ethernet" будет разбиратся с протоколами (тем более, что-бы запустить скетч из примера - это не нужно).

>Более того, некоторые админы настолько не любят ботов

сам такое писал. но не из паранои, а потому что "старая древняя легаси система", которая без куков нормально работать не хотела и заходы ботов генерили кучу джанка в error log. Конечно "это криво", но в условиях ограниченного "срока-бюджета", когда нужно "ну ка к нибудь лишь бы за 15-ть минут" - тоже проще всего оказалось тупо делать Response.End() в случае детектирования бота  (SEO там был не важен, так что и google с yande-ксом спокойно в пешую прогулку отправить можно было).

dtvims
Offline
Зарегистрирован: 26.11.2012

Ну, автор или завис илитупо свалил, чтобы понять у первоисточника, что же он хотел на самом деле :)

А если рассматривать что можно легко загуглить, то легко гуглится инфа по Ethernet шилду с минимальными возможными действиями: получение IP адреса или задание его IP в ручную и установка соединения с сервером. А вот установка соединия с конкретным сервером уже не очевидно где искать. Те, кто в этом разбираются, понимают, что ардуино или PC уже значения дальше не имеет, а под это документации вагон и зачем это описывать еще раз но для дуины?

Кстати, вот тут пример уже клиента к вэб серверу http://robocraft.ru/blog/arduino/203.html - странно, что его автор не нашел (я бы там в первую очередь посмотрел :) Хотя приведенный там пример, применительно к ya.ru (т.е. если оставить только строку GET) вернет ошибку "HTTP/1.1 400 Bad Request".

http://www.myfirstsite.ru/articles/web-server-functioning - пример статьи, по http.