WEB сервер через GSM GPRS шилд на SIM900

slider
Offline
Зарегистрирован: 17.06.2014

В общем было так, делал красивый веб сервер на W5100 , всякие датчики, 4 странички сайта , графики  и картинки были на microSD. Всё работало через wi-fi роутер DIR-300, пока не пропал бесплатный wi-fi. Решил попробовать через GPRS. Купил на ебае за 1100р такой вот шилд GSM GPRS  на SIM900 .

Думаю работать будет так, если надо посмотреть  состояние датчиков, графики их логов, делаю звонок на него, он сбрасывает, подключается к интернету, смотрит какой дали ему IP, присылает мне SMS с ним. Я захожу на его сайт, видимо каким-то образом сначала внешний IP ( имя провайдера, или APN типа beeline.ru , megafon ), потом если пустят - внутренний IP (тот что ему дали, и он прислал мне SMS, к примеру 10.171.162.5 ) , ну и через двоеточие 80 или 8080 (порт) . Если что поправьте меня. 

 Трабл заключается ещё в том что скетчи родные ардуиновские не работают, а там есть как раз пример GSM веб сервера через GPRS. Родной ардуиновский GPRS шилд висит на 3 и 4 пине ардуино, а 1 и 2 (RX TX arduino) используются для сериал монитора, чтоб сообщения выдавать и писать.  Да и GSM GPRS контроллер у него другой M10 а не SIM900, команды могут отличаться.  А купленный шилд висит на 7,8 ноге  , с возможностью переключения на используемые 1 и 2, но тогда сериал монитор не увидишь.

Работает только мелкий скетч от производителя http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield - я так понял может общаться туда сюда с развёрнутым серваком где-нить на компе. А мне интересен не клиен а сервер на ардуино.  

Вопрос, есть ли работающие примеры сервера на нём, и как на него правильно заходить с интернета? 

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

что только не придумают люди от нехватки денег.

Можно. Читаем

http://www.mt-system.ru/sites/default/files/docs/documents/sim900_tcpip_...

Параграф 2.1.3

slider
Offline
Зарегистрирован: 17.06.2014

спасибо за инфу.  У нас у обычных провайдеров статика 20руб в мес.  У сотовых, в частности у мегафона 100р+...+... +надо быть юр лицом, директором фирмы, корпоративом,...... короче глушняк. Сказали в связи с безопасностью, доступ извне заблокировали для динамич. адресов. Мож в своей сети они между собой видны и будут , но не из вне.

На работе делали так, мой местный IP ардуино+w5100 прописывали на сервере маршрутизаторе, чтоб пускал через основной статический сайт, под иным портом. Заходил на него www.рога...копыта.ru:8900  . Если ардуино подключался из дома, то на роутере указываем в настройках чтоб на внутренний адрес ардуино, к примеру 192.168.0.10 роутер пускал через к примеру через порт 8900. Т.е. с внешнего инета пишем статику которую нам дал провайдер и через двоеточие порт, к примеру 10.172.78.98:8900 и попадем на сайт накрученный на ардуино.  Ну а в далёкой деревне, за городом, там инет только по GPRS.

 Получается что, закатываем губы от GSM операторов организовать сервак на ардуино?,  видимо проще тогда у кого-нибудь на сервак добавить сайтец, чтоб ардуино-клиент через GSM GPRS sim900, по примеру от производителя шилда, скидывала на него накопленную инфу. К примеру каждую минуту. Т.о. можно уложиться в 50мб ежедневного трафика с абонентской платой 135р/мес на TELE2.

slider
Offline
Зарегистрирован: 17.06.2014

чтот тут лички не нашёл.

art100, cобственно вот немецкий проект на уно и W5100, переделанный мною на 1-wire и заброшенный (т.к. интернет вебстрим по тлф линии вообще ужасным стал, и цены задрали, так что пришлось отказаться от интернета):

 

компилирую и делаю его на 022  версии ардуино, если портируете на современную, буду рад.

рисовалка заменена на png потом на gif. (но всё равно не особо быстро, в оригинале рисовалкой графики css мгновенно вырисовывались приборы,  остались только подвижные стрелки, походу верну обратно на рисовалку) FAVICON присутствует.

А что имелось то ввиду по гифам? не это ли:

http://webformyself.com/filtry-css-gif%E2%80%99y-i-proizvoditelnost/

http://www.css-school.ru/lessons/48-urok-css-19.-aktivacija-gif-animacii.html

http://habrahabr.ru/post/116538/     -  Храните мелкие картинки в CSS

http://yandex.ru/yandsearch?text=css%20gif&clid=2052595&lr=66

от web-разработчика слышал, что в фотошопе есть такая фича, сохранить фотку как gif для web.

В С++ и html, css,..... я не силён , много времени отнимает, проект ещё украшать и доделывать надо, сейчас GSM SMS шилдом занимаюсь, пока по звонку мне SMS шлёт, установил, трудится, надо много ещё датчиков привязывать.  

и проект на TFT 2.4 , строит мне график напряжения, к нескольким солнечным контроллерам бы его привязать (там им как-то можно разные адреса раздать и запараллелить всех на rx tx), благо на шилде TFT как раз rx tx свободен, пока только одну команду получения инфы о напряжении осилил, работает..

По css мне помогали,  основное впереди.

slider
Offline
Зарегистрирован: 17.06.2014

Так закомпилил или, нет? у меня и на 023 работает.

Распакуй куда нить 022/023, от туда и запускать ардуино будешь, и замени папку библиотек, на ту что я давал, скетч можно в Мои документы закинуть, только там же рядом никаких других библиотек не должно быть.  Ибо скетч компилится со старыми <OneWire.h>  <DallasTemperature.h> <SPI.h>,.sdfat, flash... , на новых нифига, там какие кардинальные изменения, по форумам это раньше  было. Сам с немцем переписывался что не компилится, пока он мне весь свой архив с ардуиной 022 не кинул. 

проект стал тяжким после перехода с I2C на<OneWire.h>  <DallasTemperature.h> 31Кбайт из 32Кбайт УНО ардуиновских, там хоть провода длиннее можно замутить , чем на I2C. Если приспичит по объёму, то вернусь к оригиналу или на atmega644. Хотя предпочтительней УНО, народ хоть просто повторить сможет (90руб-мини УНО 328я,  300 руб-УНО тож 328я на ебае)

Да мне тож понравилось, как стрелки на стрелочных приборах css рисует от напряжения. Смутило что издатель закидывает данные по каждому датчику в отдельный файл, когда можно было все в один, я не стал особо пыхтеть, не получилось сперва, разбираться какие и как разделители показаний датчиков в один файл html пихать.    Ардуино вроде чаще кидает значения на microSD на всяк случай, чем самообнавляется страничка/стрелки приборов. Меня ещё графики порадовали по разным датчикам, вот бы ещё их линиями рисовать, а не точками.

Время  устанавливать на DS1307, в браузере , после адреса странички указывашь знак вопроса и новое время, ентер. (приделать бы по проще, пятую страничку с установками , окошечками для ввода и кнопочками - жаль для меня это тёмный лес)

Время обновления странички где-то в html или css мне программист подправил, я непонимаю как там что, только в общем.

Что-то у тебя кракозябры , вместо русских слов.

Вот попросил сисадмина, перебросил циской внутренний IP ардуинки  на внешний IP   на свободный порт ...................................

Близкий к оригиналу, летающий скетч c температурой по I2C.    ....................  Мож графики старые с 12года глянуть на 3й странице 121028.csv..... Сейчас сервак крутится на старой первой УНО, а на той что на CH340T+ATMEGA328P-PU нихотит (мож такая же байда с памятью :) или в пайке где косяк? хотя TFT занимающий 40% памяти работает).

Да , и микроСД у меня 8Гб фат32 (мелкие и с фат не особо вроде работают )

 

 

slider
Offline
Зарегистрирован: 17.06.2014

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

https://yadi.sk/d/lbHmITODVnwHH

art100
Offline
Зарегистрирован: 09.03.2014

пока свой код влил 

а на недосмартфоне так

размер экрана по умолчанию подозрительно совпал с серверным

Я очень надеялся что недосмартфон Nokia N95 fotik будет работать дольше полусуточных смртфонов.

Пора думаю лазить и все отрубать нафик, в том числе чудо недоудаленное недовключение СВЧ на кухне.

slider
Offline
Зарегистрирован: 17.06.2014

:))))  Круто, круто! на телефонах то.     

Ссылка та-же , на архив "Solar-2" эт быстрый проект, без утяжелителей .  

Не , не GSM :)  (только если совсем нечего делать будет, то повожусь с динамическими IP GSM и пробрасыванием их через статический сервака) , просто локалка на работе да и дома. GSM интернет у нас дорогой, нормальный дороже эл.енергии в месяц, ну его нафиг. 

мыло  segun соб. яндекс ру  , кинь пож., тож попробую.

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

art100
Offline
Зарегистрирован: 09.03.2014

вчера занимался вебохерней крутил моторчик постоянного тока от потенциометра Зачем? и понял что в своих версиях поплыл так что высылаю ту что последняя 

там конечно далласовской дури билиботечно подкидывать надо я вроде обе последние для 1.0.5 в архив закинул

если будет напрягать скажи поищу внятную версию

только сразу скажи на сколько ножек на mega или хватит на uno

я наверно на uno буду продолжать этажерки возводить :)

интересно можно еще 4-ый этаж воткнуть хоть с каким-нибудь смыслом?

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

чего-то текст не свернулся а вроде галку ставил

 Том в устройстве C имеет метку sys
 Серийный номер тома: 1EAD-7ACE

 Содержимое папки C:\workarduino\ethernet

06.07.2014  10:01    <DIR>          .
06.07.2014  10:01    <DIR>          ..
06.07.2014  10:01                 0 1.txt
04.07.2014  21:59    <DIR>          10webajaxswitch1
04.07.2014  21:59    <DIR>          11webajaximage1
04.07.2014  21:59    <DIR>          12webajaxswitch2
04.07.2014  21:59    <DIR>          13webajaxswitch1
04.07.2014  21:59    <DIR>          14webajaxswitch1
04.07.2014  21:59    <DIR>          15webajaxswitch1
04.07.2014  21:59    <DIR>          16webajaxswitch1
04.07.2014  21:59    <DIR>          17webajaxswitch1
04.07.2014  21:59    <DIR>          18webajaxswitch1
04.07.2014  21:59    <DIR>          19webajaxswitchResume
04.07.2014  21:59    <DIR>          1webajaxswitch1hardware
17.06.2014  09:19    <DIR>          20140617_090000webcontrolart100_192168020ok
17.06.2014  09:22    <DIR>          20140617_092000webcontrolart100_192168020ok
04.07.2014  21:59    <DIR>          2webajaxswitch1simple
04.07.2014  21:59    <DIR>          3webajaxswitch1structura
04.07.2014  21:59    <DIR>          4webajaxswitch1
04.07.2014  21:59    <DIR>          5webajaxswitch1
04.07.2014  21:59    <DIR>          6webajaxswitch1
04.07.2014  21:59    <DIR>          7webajaxswitch1
04.07.2014  21:59    <DIR>          8webajaxswitch1
04.07.2014  21:59    <DIR>          9webajaxswitch1
27.05.2014  14:46            27 683 arduino-web-server-IO.png
17.06.2014  00:01    <DIR>          arduino0023
07.06.2014  01:15           165 176 arduinou.jpg
07.06.2014  01:17            89 983 arduinou2.jpg
07.06.2014  01:17            21 180 arduinou3.jpg
07.06.2014  01:18            24 874 arduinou4.jpg
07.06.2014  01:22             5 012 arduinounor3.jpg
07.06.2014  01:23             1 929 arduinounor32.jpg
07.06.2014  01:21            54 328 arduinouno_r3_front_450px (1).jpg
07.06.2014  01:13           690 428 Arduino_Uno_Rev3-schematic.jpg
17.04.2014  13:17             4 391 artlogo.gif
17.10.2007  07:01            17 176 av-10114.gif
04.07.2014  21:59    <DIR>          chinaunsorted
19.02.2013  02:30            89 001 constr.gif
04.07.2014  21:59    <DIR>          construction
27.10.2013  03:12            25 785 earth2.gif
04.07.2014  21:59    <DIR>          eth_websrv_SD_Ajax_in_out
04.07.2014  21:59    <DIR>          eth_websrv_SD_Ajax_in_out20140606_123000
04.07.2014  21:59    <DIR>          eth_websrv_SD_Ajax_in_out20140606_140000
04.07.2014  21:59    <DIR>          eth_websrv_SD_Ajax_in_out20140606_230000
04.07.2014  21:59    <DIR>          eth_websrv_SD_Ajax_in_out20140607_150000
04.07.2014  21:59    <DIR>          eth_websrv_SD_Ajax_in_out20140607_150000ok
17.06.2014  09:10    <DIR>          eth_websrv_SD_Ajax_in_out20140607_150700ok
04.07.2014  21:59    <DIR>          eth_websrv_SD_Ajax_in_out20140608_190000
04.07.2014  21:59    <DIR>          gifauto
17.04.2014  13:23            50 907 grconstr.gif
06.06.2014  17:34             4 618 index.ht1
04.04.2013  14:24             5 216 index.ht2
06.06.2014  19:49             4 875 index.ht3.ok
06.06.2014  20:42             4 682 index.ht4.ok
06.06.2014  20:49             4 682 index.ht5.ok
06.06.2014  20:52             4 730 index.ht6.ok
07.06.2014  01:48             5 184 index.htm
07.06.2014  01:04             5 185 index.htm20140606ok
06.06.2014  23:00             4 795 index.htm6constrok
06.06.2014  23:01             4 789 index.htm7ok
06.06.2014  23:59             4 894 index.htm8ok
07.06.2014  00:11             5 036 index.htm9ok
14.06.2014  02:37             6 963 makroff.ino
27.05.2014  15:02            33 427 pcb.gif
26.08.2010  01:06           503 081 popa.gif
04.07.2014  21:59    <DIR>          seismo
04.07.2014  21:59    <DIR>          sketch_may26b
04.07.2014  21:59    <DIR>          sketch_may26c
02.07.2014  19:21    <DIR>          slider0023
26.05.2014  21:48           357 033 String.zip
04.07.2014  21:59    <DIR>          techmike
04.07.2014  21:59    <DIR>          Teleduino
04.07.2014  21:59    <DIR>          tempgavno
04.07.2014  21:59    <DIR>          TwitterRead
04.07.2014  21:59    <DIR>          web-rsswitch1
04.07.2014  21:59    <DIR>          webcontrol4pins
18.06.2014  12:29    <DIR>          webcontrolart10020pins_192168020_20140618200000
18.06.2014  12:43    <DIR>          webcontrolart100mega20pins_192168020_20140618200000
18.06.2014  12:43    <DIR>          webcontrolart100mega20pins_192168020_201406ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168020ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168020_160300ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168020_200000ok
04.07.2014  21:59    <DIR>          webcontrolart100_19216802120140608210000
04.07.2014  21:59    <DIR>          webcontrolart100_19216802120140608230000ok
04.07.2014  21:59    <DIR>          webcontrolart100_19216802120140609100000ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168021ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168021_120000
04.07.2014  21:59    <DIR>          webcontrolart100_192168021_120500
04.07.2014  21:59    <DIR>          webcontrolart100_192168021_123000
04.07.2014  21:59    <DIR>          webcontrolart100_192168021_160000ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168021_160300ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168021_164400ok
17.06.2014  09:14    <DIR>          webcontrolart100_192168021_200000ok
04.07.2014  21:59    <DIR>          webcontrolart100_192168021_20140609120000ok
17.06.2014  09:11    <DIR>          webcontrolart100_20140608_200000ok
04.07.2014  22:00    <DIR>          webcontrolart100_4pins19216802120140608235000ok
05.07.2014  00:47    <DIR>          webcontrolart100_4pins19216802120140704000000ok
05.07.2014  00:51    <DIR>          webcontrolart100_4pins19216802120140704010000ok
05.07.2014  08:29    <DIR>          webcontrolart100_4pins19216802120140705080000ok
05.07.2014  10:36    <DIR>          webcontrolart100_4pins19216802120140705084000ok
05.07.2014  10:48    <DIR>          webcontrolart100_4pins19216802120140705100000ok
05.07.2014  11:12    <DIR>          webcontrolart100_4pins19216802120140705105000
05.07.2014  20:29    <DIR>          webcontrolart100_4pins19216802120140705110000
05.07.2014  21:31    <DIR>          webcontrolart100_4pins19216802120140705210000
04.07.2014  22:00    <DIR>          Webduino
04.07.2014  22:00    <DIR>          WebServer
04.07.2014  22:00    <DIR>          webserver-ds
04.07.2014  22:00    <DIR>          webserver-ds1920
04.07.2014  22:00    <DIR>          webserver-sig
04.07.2014  22:00    <DIR>          WebServer1
04.07.2014  22:00    <DIR>          webserverajaxswitch2
04.07.2014  22:00    <DIR>          webservercommandlineleds8
04.07.2014  22:00    <DIR>          webserverio1
04.07.2014  22:00    <DIR>          webserversd
04.07.2014  22:00    <DIR>          webserverst1
04.07.2014  22:00    <DIR>          webswichfromzoomkat1
04.07.2014  22:00    <DIR>          webswitch
04.07.2014  22:00    <DIR>          webswitchajax1
04.07.2014  22:00    <DIR>          webweather
04.07.2014  22:00    <DIR>          web_batton1
04.07.2014  22:00    <DIR>          web_button_led
04.07.2014  22:00    <DIR>          web_button_led20140526_075700
04.07.2014  22:00    <DIR>          web_led1
04.07.2014  22:00    <DIR>          web_radio_switch1
04.07.2014  22:00    <DIR>          wevserverlib-veavr
13.06.2007  23:44             3 994 zuk.gif
              32 файлов      2 231 037 байт
              94 папок  13 905 334 272 байт свободно

поэтмому высылаю ту что сейчас компилятор открыл и серврер работает сейчас последние сутки. если версия авно скажи поижу лучшуу пару ino htm Где-то же осталась и на Uno и на Mega

сейчас я прикрутил мотор ДПМ-20Н1-13 (3в 12мА) L298 в качестве ключей там 2 Н-моста DS18B20 пара LED и этой этажеркой разлекаюсь 

https://yadi.sk/i/XGQ1vJTXW2Usy

1  art100
arduinoide 1.0.5 (1.5.6 если не сипользовать чудо даллас) 
arduino uno r3 
ethernet shield w5100 
leds 4 
button 4 
webcontrol.ino ~30 kbyte
index.htm      ~4  kbyte
 
2 больше ничего не надо библиотеки нужны только температурному датчику от даллас
скорей всего я его выкину потому как свыше 100 градусов все это ерунда
можно просто закоментировать и забыть
 
3 Теория
Программировать надо как во времена windows3.11 и до появления надежности связки Linux apache - аккуратно.
Передаем только нужное например xml подчищаем кругом ненужное clr clear and etc...
Потому как ардуино это однозадачный 8 битовый тормоз сервер, 
потому основной код можно выполнять только на стороне веб-гляделки и его многоядерности,
то есть передача только параметров от сервера клиенту по запросу, и наборот.
То есть конструкция если собитые произошло, то только тогда передать xml и послушать только параметры xml,
 не забывая невидимые символы окончания строки, и подчистка ненужных остатков.
Обьявляю ножки:
1.Аналог только для отображения еще работоспособности сервера A2.
2.Кнопки все на корпус отдельной подпрограммой 4/20 ArduinoUnoR3/ArduinoMega
3.LEDS отдельной подпрограммой                 4/20 ArduinoUnoR3/ArduinoMega
4.все остальное игнорируем в передаче
  
void SetLEDs(void){
void XML_response(EthernetClient cl){
если не хотим прибегать и периодически кнопкой перегружать подвисший сервер не забываем ожидать конца передач
// каждая строка текста, полученного от клиента заканчивается \r\n
if     (c=='\n'){ currentLineIsBlank=true;  }//последний символ в строке принятого текста начиная с \n новой строки следующего символа читать
else if(c!='\r'){ currentLineIsBlank=false; }// \r текстовый символ был получен от клиента
Пользовать на стороне кнопки к сожалению тормоза быстрее конструкции не видел. Увидите. Научите? 
if (this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "checked") {
document.LED_form.LED4.checked = true; }
else { document.LED_form.LED4.checked = false; }
кратко так .
 
что можно почитать
xml так поскольку постольку текст 7 битовый для передачи параметров вот и вся теория.
css потому только им можно внятно отцентрировать и легковеснооформить для маленьких экранчиков сматрфонов только не переусердствуй.
JavaScript а как еще можно логику перенести на сторону клиента? Научите?
Вся эта каша 3-тройка уже имеет название AJAX - когда сервер тормоз и надо на стороне клиента выкручиваться.

 

Спрашивай
попробовал сразу за index.htm толкнуть картинки что-то не пошло
если нащупаешь где косяк дай знать
          else{  // web page request
            client.println("Content-Type: text/html");// send rest of HTTP header
            client.println("Connection: keep-alive");// send rest of HTTP header
            client.println();// send rest of HTTP header
            webFile = SD.open("index.htm");  // прочитать с SD основу страничку
            if(webFile){// если ok
              while(webFile.available()) {   client.write(webFile.read()); }// послать основу клиенту
              webFile.close();//закрыть SDcard можно доставать но не нужно
            }
            webFile2 = SD.open("favicon.ico");  // прочитать с SD
            if(webFile){// если ok
              while(webFile.available()) {   client.write(webFile.read()); }// послать клиенту
              webFile.close();//закрыть SDcard можно доставать но не нужно
            }
            webFile3 = SD.open("construction.gif");  // прочитать с SD 
            if(webFile){// если ok
              while(webFile.available()) {   client.write(webFile.read()); }// послать клиенту
              webFile.close();//закрыть SDcard можно доставать но не нужно
            }
          }

 

 
naz
Offline
Зарегистрирован: 15.11.2016

Здравствуйте, уважаемый slider! Тоже пытаюсь прикрутить к sim900 веб-сервер, а может и клиент- чтобы можно было статическую картинку с камеры, установленной на даче, посмотреть на андроиде. И sim900, и смартфон у одного оператора- Мегафон, так что не надо вроде внешний ip. С какого боку подойти к этой козе? В веб- программировании я чайник, но sim900  + мега 2560 осилил.  Сейчам отоплением на даче по смс управляю. Камера у меня с ip, можно передавать поток видео на w5100, но как это всё в кучу увязать- непонятно.. Буду признателен за любую наводку..

slider
Offline
Зарегистрирован: 17.06.2014

naz пишет:

.... Камера у меня с ip, можно передавать поток видео на w5100, но как это всё в кучу увязать- непонятно.. Буду признателен за любую наводку..

ардуино и видеопоток c ip камеры - никак.

ip камере понадобиться роутер с функцией gsm модема, или с разъемом под usb модем если он есть.

поищите в инете  смотреть ip камеру без белого ip ,  смотреть ip камеру без статического ip , или что мож похожее.