Удаленное управление через gsm без sms
- Войдите на сайт для отправки комментариев
Сосбтвенно, вопрос в теме. Не могу найти решения.
Есть силовой блок с температурными датчиками и ардуиной с gsm-шилдом. Ардуина каждые 10 минут добросовестно отправляет данные на веб-сайт, который их получает, хранит и отображает, тут никаких проблем. Нужно к этому блоку, находящемуся за тридевять земель в ебенях, приделать удаленное управление
Управление через смс обсосано в массе примеров, но тут, имхо, три минуса
1 - смс может не дойти
2 - запомнить многоступенчатую последовательность команд с ветвлением непросто
3 - дополниетльные расходы
поэтому и хочу попытаться сделать альтернативный вариант, типа веб-странички, на которой можно интерактивно выбрать нужные параметры
потенциально вижу такие решения
1. получение реального адреса от кого-нибудь из большой тройки. вроде как такое бывает, но манахеры во всех офисах делают квадратные глаза и говорят, что слышат о таком впервые. хотя это был бы самый хороший вариант. боюсь, что плата за такую услугу съест всю экономию от смс-ок
2. отправка команды ардуине от веб-сервера в ответной хтмл-странице. веб-сервер получает команды от пользователя и ждет когда ардуина выйдет на связь. минус - невозможность мгновенной реакции на команду. если ардуина сообщает о температуре раз в час, то возможно и придется ждать целый час, прежде чем она выполнит команду
может еще какие-нибудь решения есть и зря я тут велосипед изобретаю?
TCP - устанавливается соединение и дальше все как по СОМ-порту .
DNS - позволит подключаться по имени к вашему серверу.
1. получение реального адреса от кого-нибудь из большой тройки. вроде как такое бывает, но манахеры во всех офисах делают квадратные глаза и говорят, что слышат о таком впервые. хотя это был бы самый хороший вариант. боюсь, что плата за такую услугу съест всю экономию от смс-ок
2. отправка команды ардуине от веб-сервера в ответной хтмл-странице. веб-сервер получает команды от пользователя и ждет когда ардуина выйдет на связь. минус - невозможность мгновенной реакции на команду. если ардуина сообщает о температуре раз в час, то возможно и придется ждать целый час, прежде чем она выполнит команду
может еще какие-нибудь решения есть и зря я тут велосипед изобретаю?
Можно еще так попробовать:
Устанавливаете соединение по TCP сокету. И поддерживаете его.
Один раз в 10 минут скидываете по нему данные с датчика.
Если что-то пришло, то парсите как управляющую команду.
При отправке, если все плохо, то на реконнект.
Недостаток - нужно писать свой хитрый сервер.
TCP - устанавливается соединение и дальше все как по СОМ-порту .
DNS - позволит подключаться по имени к вашему серверу.
я говорю не о подключении ардуины к серверу, а наоборот - сервера к ардуине
Устанавливаете соединение по TCP сокету. И поддерживаете его.
...
Недостаток - нужно писать свой хитрый сервер.
так хотелось найти вариант попроще...
я говорю не о подключении ардуины к серверу, а наоборот - сервера к ардуине
А о том как слушать ртом или разговаривать ушами не хотите рассказать?
смотря чем слушать будете :)
Ну вот и тут так же - клиент подключается, сервер ждет подключения. Можно попробовать так - по ТСР через DNS (как это у вас должно быть организовано сейчас) раз в час передавать данные на сервер и рвать соединение, при этом сохранять IP дуины, на дуине слушать UDP (если конечно это позволяет ваш GSM-модуль), зная адрес дуины можно с сервера в любой момент отправлять UDP сообщения на этот IP.
Если бы это было так просто.... это и было моим первоначальным планом, когда хотел сделать двунаправленную связь
на самом деле все сложнее. модем, выйдя в сеть, получает от мегафона серый адрес вида 10.x.x.x. он более-менее постоянный в течение нескольких суток, если не выключаться. дальше, как я понимаю, какой-то dnat, потому что в логах сервера, который принимает запросы от ардуины, адрес клиента(белый) каждый раз разный.
Тогда остается не рвать соединение, не понимаю в чем проблема.
на самом деле все сложнее. модем, выйдя в сеть, получает от мегафона серый адрес вида 10.x.x.x. он более-менее постоянный в течение нескольких суток, если не выключаться. дальше, как я понимаю, какой-то dnat, потому что в логах сервера, который принимает запросы от ардуины, адрес клиента(белый) каждый раз разный.
Клиентом устанавливаете соединение TCP через все наты. А сервером в этот сокет пишите все что нужно.
Клиентом устанавливаете соединение TCP через все наты. А сервером в этот сокет пишите все что нужно.
прежде чем решиться на это хотел убедиться, что я не изобретаю велосипед