SIM900 не работают at команды прикладного уровня

Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

Все at команды прикладного уровня не воспринимаются моим SIM900. Я не могу выполнить ни одну команду из категорий "AT Commands for IP Application" и "AT Commands for HTTP Application". Настроить TCP клиент у меня получилось, а дальше не получается. HTTP сервис не запускается, настройки "Bearer Settings for Applications Based on IP" (они же AT+SAPBR=********) не принимаются, после ввода команд выводится просто ERROR. Подозреваю что мой модуль на SIM900 не поддерживает работу с HTTP службой, только не знаю как проверить.

Вывод с консоли:

AT
 
OK
AT+CIPSHUT
 
SHUT OK
AT+CIPSTATUS
 
OK
 
STATE: IP INITIAL
AT+CIPMUX=0
 
OK
AT+CSTT= internet, gdata, gdata
 
+CME ERROR: operation not allowed
AT+CSTT= \"internet\", \"gdata\", \"gdata\"
 
+CME ERROR: operation not allowed
AT+CSTT= "internet", "gdata", "gdata"
 
OK
AT+CIICR
 
OK
AT+CIFSR
 
10.252.148.125
AT+SAPBR=3,1,"CONTYPE", "GPRS"
 
ERROR
AT+SAPBR=3,1,"APN", "gdata"
 
ERROR
AT+SAPBR=3,1,"APN", "internet"
 
ERROR
AT+SAPBR=3,1,"APN","internet"
 
ERROR
 
Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

Точнее я думаю, что у меня не та версия прошивки, но я не знаю где посмотреть на каких версиях что доступно

b707
Онлайн
Зарегистрирован: 26.05.2017

мне кажется вы какие-то не те команды пытаетесь использовать.

После получения IP-адреса уже никакие GPPS не нужны. Вы уже вышли на уровень TCP/IP, надо просто коннектится к серверу и все

что-то типа так:  ("AT+CIPSTART=\"TCP\",\"www.google.com\"', 80\r\n")

b707
Онлайн
Зарегистрирован: 26.05.2017

вот вам типичная сессия с использованием sim800. для sim900 отличия в мелочах

AT
OK

AT+CFUN=1
OK

AT+CSTT="airtelgprs.com","",""
OK

AT+CIICR
OK

AT+CIFSR
100.73.110.9

AT+CIPSTART="TCP","exploreembedded.com",80
OK
CONNECT OK

AT+CIPSEND=63
> 
GET exploreembedded.com/wiki/images/1/15/Hello.txt HTTP/1.0
SEND OK
HTTP/1.0 200 OK
Date: Sat, 09 Jul 2016 06:49:32 GMT
Server: Apache/2.4.12
Last-Modified: Mon, 04 Jul 2016 08:06:49 GMT
ETag: "4721a10-1c-536cad1811830"
Accept-Ranges: bytes
Content-Length: 28
Vary: User-Agent
Content-Type: text/plain
Connection: Keep-Alive
Proxy-Connection:Keep-Alive

Welcome to Explore Embedded!

CLOSED

ссылка

https://exploreembedded.com/wiki/Setting_up_GPRS_with_SIM800L

Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

Да, это способ работает, спасибо

vlad072
Offline
Зарегистрирован: 01.08.2017

Зачем все эти заморочки, СИМко-зависимость и т.п? Контекст открывать не обязательно, подключайтесь сходу как зарегистрируетесь в сети по уведомлению  SMS Ready например:

...
Call Ready
SMS Ready
AT+CIPMUX=0;+CIPSTART=TCP,cloudmqtt.com,15077
OK
CONNECT OK

Контекст нужен если используете LBS - геолокацию, синхронизируете время по оператору или используете подобные GSM - фичи.

Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

На самом деле я вас обманул. Ответ от сервера не приходит. У меня все заканчивается на строке SEND OK. При этом соединение не разрывается.

AT

OK
AT+CMEE=2

OK
AT+CNMI=2,2,0,0,0

OK
AT+CMGF=1 

OK
 AT+CLIP=1

OK
AT+CIPSTATUS

OK

STATE: IP INITIAL
AT+CSTT= "internet", "gdata", "gdata"

OK
AT+CIICR

OK
AT+CIFSR

100.124.69.87
AT+CIPSTART="TCP","exploreembedded.com",80

OK

CONNECT OK
AT+CIPSEND

> GET exploreembedded.com/wiki/images/1/15/Hello.txt HTTP/1.0


SEND OK

Отдельно проверял качество сети, вроде показания в норме 

 

AT+CSQ

+CSQ: 26,0

 

 

 
Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

Обманул дважды, сервер ответил спустя 5 минут

HTTP/1.1 408 Request Timeout
Date: Wed, 05 Feb 2020 08:38:39 GMT
Server: Apache/2.4.7 (Ubuntu)
Content-Length: 295
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>408 Request Timeout</title>
</head><body>
<h1>Request Timeout</h1>
<p>Server timeout waiting for the HTTP request from the client.</p>
<hr>
<address>Apache/2.4.7 (Ubuntu) Server at 127.0.1.1 Port 80</address>
</body></html>

CLOSED

 

 
Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

Вот еще немного о настройках

AT+CFUN?

+CFUN: 1

OK

 

b707
Онлайн
Зарегистрирован: 26.05.2017

зачем вы к тому серверу подключаетесь, он неизвестно где и не факт, что вообще работает

Проверьте на чем-нибудь заведомо быстром, типа сайта Яндекса

Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

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

AT+CIPSTART= "TCP" , "google.ru", 80

OK

CONNECT OK
AT+CIPSEND

> GET /index.html HTTP/1.1



SEND OK
HTTP/1.1 200 OK
Date: Wed, 05 Feb 2020 09:25:13 GMT

Основная проблема из за чего я не мог отправить запрос оказалась в том, что ОБЯЗАТЕЛЬНО нужно добавлять пустую строчку после http запроса и потом писать символ ctrl+z (в моем случае это квадрат в терминале). Этот момент я подсмотрел здесь https://electronics.stackexchange.com/questions/209672/sim800-http-get-request-time-out . Иначе модуль не отправит сообщение, а сервер будет долго ожидать запрос.

После я попробовал подключиться к своему серверу и тут нужно было ОБЯЗАТЕЛЬНО указать хост в запросе 

AT+CIPSTART= "TCP" , "83.221.211.248", 80

OK

CONNECT OK
AT+CIPSEND

> GET /testMbee.php?value=22 HTTP/1.1
Host: 83.221.211.248

 

SEND OK
HTTP/1.1 200 OK
Date: Wed, 05 Feb 2020 09:31:47 GMT
Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1c PHP/7.3.6
X-Powered-By: PHP/7.3.6
Content-Length: 28
Content-Type: text/html; charset=UTF-8

Array
(
    [value] => 22
)

CLOSED

 

Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

Для чистоты эксперимента проверил и сайт из вашего примера, все работает

AT+CIPSTART="TCP","exploreembedded.com",80

OK

CONNECT OK

AT+CIPSEND

> GET /wiki/images/1/15/Hello.txt HTTP/1.0
Host: exploreembedded.com



SEND OK
HTTP/1.1 200 OK
Date: Wed, 05 Feb 2020 09:22:39 GMT
Server: Apache/2.4.7 (Ubuntu)
Last-Modified: Mon, 04 Jul 2016 05:06:50 GMT
ETag: "1c-536c84dca0e80"
Accept-Ranges: bytes
Content-Length: 28
Connection: close
Content-Type: text/plain

Welcome to Explore Embedded!
CLOSED

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ну да, всё будет работать, если правильно формировать HTTP-запросы :) Что вы и продемонстрировали ;) А когда неправильно сформирован запрос - то и результат, в зависимости от - может быть разный. Вон, в вашем случае сервер честно ждал один раз, когда к нему полностью запрос поступит. Но - не дождался, и отрапортовал о таймауте.

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

Viktor_Golubov
Offline
Зарегистрирован: 16.07.2019

Теперь понятно что гуглить, спасибо

vlad072
Offline
Зарегистрирован: 01.08.2017

Кроме того все SIMCom'ы поддерживают HTTP на аппаратном уровне. User guide листали?