Удаленное управление через gsm без sms

com
Offline
Зарегистрирован: 06.09.2013

Сосбтвенно, вопрос в теме. Не могу найти решения.

Есть силовой блок с температурными датчиками и ардуиной с gsm-шилдом. Ардуина каждые 10 минут добросовестно отправляет данные на веб-сайт, который их получает, хранит и отображает, тут никаких проблем. Нужно к этому блоку, находящемуся за тридевять земель в ебенях, приделать удаленное управление

Управление через смс обсосано в массе примеров, но тут, имхо, три минуса

1 - смс может не дойти

2 - запомнить многоступенчатую последовательность команд с ветвлением непросто

3 - дополниетльные расходы

поэтому и хочу попытаться сделать альтернативный вариант, типа веб-странички, на которой можно интерактивно выбрать нужные параметры
потенциально вижу такие решения

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

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

может еще какие-нибудь решения есть и зря я тут велосипед изобретаю?

maksim
Offline
Зарегистрирован: 12.02.2012

TCP - устанавливается соединение и дальше все как по СОМ-порту .

DNS - позволит подключаться по имени к вашему серверу.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

com пишет:

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

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

может еще какие-нибудь решения есть и зря я тут велосипед изобретаю?

Можно еще так попробовать:

Устанавливаете соединение по TCP сокету. И поддерживаете его. 
Один раз в 10 минут скидываете по нему данные с датчика.
Если что-то пришло, то парсите как управляющую команду.
При отправке, если все плохо, то на реконнект.

Недостаток - нужно писать свой хитрый сервер.

 

com
Offline
Зарегистрирован: 06.09.2013

maksim пишет:

TCP - устанавливается соединение и дальше все как по СОМ-порту .

DNS - позволит подключаться по имени к вашему серверу.

я говорю не о подключении ардуины к серверу, а наоборот - сервера к ардуине

sav13 пишет:

Устанавливаете соединение по TCP сокету. И поддерживаете его. 

...

Недостаток - нужно писать свой хитрый сервер.

так хотелось найти вариант попроще...

maksim
Offline
Зарегистрирован: 12.02.2012

com пишет:

я говорю не о подключении ардуины к серверу, а наоборот - сервера к ардуине

А о том как слушать ртом или разговаривать ушами не хотите рассказать?

com
Offline
Зарегистрирован: 06.09.2013

maksim пишет:

А о том как слушать ртом или разговаривать ушами не хотите рассказать?

смотря чем слушать будете :)

maksim
Offline
Зарегистрирован: 12.02.2012

Ну вот и тут так же - клиент подключается, сервер ждет подключения. Можно попробовать так - по ТСР через DNS (как это у вас должно быть организовано сейчас) раз в час передавать данные на сервер и рвать соединение, при этом сохранять IP дуины, на дуине слушать UDP (если конечно это позволяет ваш GSM-модуль), зная адрес дуины можно с сервера в любой момент отправлять UDP сообщения на этот IP.

com
Offline
Зарегистрирован: 06.09.2013

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

на самом деле все сложнее. модем, выйдя в сеть, получает от мегафона серый адрес вида 10.x.x.x. он более-менее постоянный в течение нескольких суток, если не выключаться. дальше, как я понимаю, какой-то dnat, потому что в логах сервера, который принимает запросы от ардуины, адрес клиента(белый) каждый раз разный.

 

maksim
Offline
Зарегистрирован: 12.02.2012

Тогда остается не рвать соединение, не понимаю в чем проблема.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

com пишет:

на самом деле все сложнее. модем, выйдя в сеть, получает от мегафона серый адрес вида 10.x.x.x. он более-менее постоянный в течение нескольких суток, если не выключаться. дальше, как я понимаю, какой-то dnat, потому что в логах сервера, который принимает запросы от ардуины, адрес клиента(белый) каждый раз разный.

Клиентом устанавливаете соединение TCP через все наты. А сервером в этот сокет пишите все что нужно.

com
Offline
Зарегистрирован: 06.09.2013

sav13 пишет:

Клиентом устанавливаете соединение TCP через все наты. А сервером в этот сокет пишите все что нужно.

прежде чем решиться на это хотел убедиться, что я не изобретаю велосипед