Отправка данных на ардуино через интернет

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Добрый день!
 

Имеется ардуина+интернет шеилд, работающие в режими сервера.

В окне терминала все ок, т.е. при подключении к ардуино от удаленного компьютера начинает бегать служебная информация состояния подключения (ардуино подключен к роутеру, на вход которого идет ADSL ин-ет, роутер раздает инет по wi-fi, удаленый компьютер обращается к ардуине через wi-fi).

1й вопрос: как передать на ардуину простейшие параметры из браузера (т.е. 1 или 0 через GET\POST запросы) 

2й вопрос: компьютеры домашний сети видят ардуину по ip, присвоеному ему роутеру, а как дела обстоят с компами не из этой сети?

 

Спасибо за ответы и помощь!

HOCKU
HOCKU аватар
Offline
Зарегистрирован: 25.04.2011

 Насчет второго вопроса: необходимо "пробросить порт". На разных роутерах это делается по разному, информации по этому поводу много, например вот: portforward.com

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Спасибо за ответ!

Небольшой комментарий к моему первому вопросу: как передать серверу информацию - ясно, форма ввода, яваскрипты или аякс, но  несовсем до меня дошло: как обработать входные данные ардуином (аналогия $_GET[]\ $_POST[]  в php)?  

 

Starpom
Offline
Зарегистрирован: 06.03.2011

 По втрому вопросу, помимо проброса, есть еще тонкость внешнего адреса. Неплохо иметь выделенный внешний IP, а не динамический, чтобы знать куда стучаться.

HOCKU
HOCKU аватар
Offline
Зарегистрирован: 25.04.2011

Ну да, или пользоваться сервисами динамических DNS. (некоторые роутеры эту функцию поддерживают)

Еще иногда может возникнуть проблема с открытием доступа по некоторым портам. У многих провайдеров эта функция оплачиваается отдельно, и надо либо оплачивать соответствующую услугу (обычно 100-150р в месяц) либо использовать незаблокированный порт.

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Итак, немного знаний по поводу проброски портов:

1.http://www.adslclub.ru/new/man/modem - инструкции ко многим модемам или аналогам, там я нашел аналог своего D-Link 2600U
 

2.http://dlink.ru/ru/faq/68/275.html - о проброске портов у д-линка вкратце

3.http://p2p.toom.su/D-Link - обучающее видео о проброске портов на примере D-Link DIR-100

 

Но для меня пока остается загадкой: допустим, ардуино присвоен ip 192.168.1.7 в домашней сети, следовательно, в настройках роутера я пробрасываю порт к этому ip, а как тогда обратиться к этому порту "из вне" (предполагаю, что это выглядит так: мой айпи + ":" + проброшенный порт) ? 

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

HOCKU пишет:

Ну да, или пользоваться сервисами динамических DNS. (некоторые роутеры эту функцию поддерживают)
 

 

В моем роутере есть вкладки DNS, в них везде проставлено "включено, т.е. Enable Automatic Assigned DNS"...Как мне это может облегчить жизнь?

Разжуйте профану, пожалуйста.Спасибо!

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Все молчат, отвечу себе сам на вопрос о передаче параметров НА ардуину, работующую как сервер:

обращаемся к ардуине по ip+"/?param=value", на ардуине это будет в первой строке запроса от клиента (client.read()) что-то типа "/GET param=value HTTP", парсим эту строку и вытаскиваем переменные.

HOCKU
HOCKU аватар
Offline
Зарегистрирован: 25.04.2011

.c8r пишет:

Но для меня пока остается загадкой: допустим, ардуино присвоен ip 192.168.1.7 в домашней сети, следовательно, в настройках роутера я пробрасываю порт к этому ip, а как тогда обратиться к этому порту "из вне" (предполагаю, что это выглядит так: мой айпи + ":" + проброшенный порт) ?

Так и есть. А еще желательно привязать желаемый ip адрес к mac адресу ардуино (если это возможно). Обычно это делается в настройках dhcp.

Насчет динамического dns. ищите в настройках все, связанное с DDNS.

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Спасибо.

Сейчас собираю аппаратную часть и как девайс будет готов - подключаю к сети, пытаюсь подключиться к нему из другого города, и если все ок - отпишусь в данной теме "от и до".

MacSim
Offline
Зарегистрирован: 28.11.2012

Как успехи?

У самого есть ардуино +W5100 хочу подключить к нету через роутер чтобы на каком-нибудь сайте инфу с ардуино сохранялась.

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

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

У кого-нибудь что-то похожее получилось? Опишите програмные процедуры "для чайников".

 

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

https://www.teleduino.org/ как вариант, иначе танцы с проброской портов или dns

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

Вот готовый WebServer который умеет управлять портами по команде и видит датчики ds18b20.

https://github.com/sochkasov/majordomo-arduino

Разберайтесь...

 

MacSim
Offline
Зарегистрирован: 28.11.2012

Спасибо!

Буду Разбираться.

Interkom
Offline
Зарегистрирован: 09.07.2014

Добрый день.

Скачал и пользуюсь https://github.com/sochkasov/majordomo-arduino

Не могу снять данные через php код.

по запросу http://192.168.3.177/getdev открывается страница с показаниями датчика

а вот к php коде 

$homepage = file_get_contents('http://192.168.3.177/getdev');

echo $homepage;
 
не получается.
Подскажите плз где ошибка ?
MacSim
Offline
Зарегистрирован: 28.11.2012

9ser пишет:

Вот готовый WebServer который умеет управлять портами по команде и видит датчики ds18b20.

https://github.com/sochkasov/majordomo-arduino

Разберайтесь...

 

Тут используется статический IP это не пойдет. Нет его у меня.

MacSim
Offline
Зарегистрирован: 28.11.2012

.c8r пишет:

https://www.teleduino.org/ как вариант, иначе танцы с проброской портов или dns

Это заработало.

 

MacSim
Offline
Зарегистрирован: 28.11.2012

как сделать get запрос и обработать ответ?

MacSim
Offline
Зарегистрирован: 28.11.2012

.c8r пишет:

Все молчат, отвечу себе сам на вопрос о передаче параметров НА ардуину, работующую как сервер:

обращаемся к ардуине по ip+"/?param=value", на ардуине это будет в первой строке запроса от клиента (client.read()) что-то типа "/GET param=value HTTP", парсим эту строку и вытаскиваем переменные.

А подробнее для чайников можно?

Vladimir_V
Offline
Зарегистрирован: 15.12.2015

Подскажите, получилось вытащить значение? Сейчас стоит аналогичная задача: ajax запрос со страницы приходит, но не получается вытащить значение из формы в переменную на ардуино

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

ajax запрос?

inspiritus
Offline
Зарегистрирован: 17.12.2012
Vladimir_V
Offline
Зарегистрирован: 15.12.2015

Имеется в виду GET запрос посредством методов open() send() объекта XMLHttpRequest()

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Vladimir_V пишет:

Имеется в виду GET запрос посредством методов open() send() объекта XMLHttpRequest()

Этот запрос ни чем не отличается от любого другого. Посмотрите пример из библиотеки Ethernet - там все полностью реализовано и все понятно.

MacSim
Offline
Зарегистрирован: 28.11.2012

Ржавые пять копеек в тему :-)

Попалась интересная статья(проект) Ардуино передает данные на свой сайт. Все из запросов+скрипты. Необходим свой сайт.

http://cxem.net/arduino/arduino174.php

ArduinoZHU
Offline
Зарегистрирован: 01.06.2018

Можно вопрос? Я прошу помощь в работе с ethernet модулем. Я бы хотел узнать, каким образом можно вводить текст в ардуино что бы данный текст в последющем применялся в коде, как бы переменная присаивала значения того что я хочу ввести. Пожаалйста помогите с этим возможно простым делом

ArduinoZHU
Offline
Зарегистрирован: 01.06.2018

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

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

ArduinoZHU пишет:

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

Т.е. вы пишите "пять по сто " , а ардуина вам выводит "500" или "0.5Л" и наливает ?    Правильно я понял?