• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP32, SIM800L, GPRS и PPPoS. Нужна помощь в понимании ...

Slacky

Member
Что хочу в результате получить - web сервер, который крутится на esp32, а доступ к нему через SIM800L по GPRS и при этом SIM800L могла принимать входящие, сама звонить и отправлять СМС.

Что получил в голове по прочтению Интернета. Самый вроде правильный способ - PPPoS, т.е. PPP ower Serial. Но пример, который есть в IDF крайне не стабилен - если работать только с PPP и не заморачиваться звонками - то все хорошо, но стоит только сказать модему ppp_stop, т.е. "выключаем" PPP и переводим модем в командный режим- все нарушается и обратно не восстанавливается. К тому же, если не переключать SIM800L в командный режим, то управлять им становится невозможно, он не реагирует на звонки (точнее, если задать автоснятие трубки, он ее снимает, но дальше ...), на команды ...

Второй вариант - это отправить SIM800L именно в режим GPRS. Но все примеры из сети завязаны на то, чтобы что-то послать на удаленный сервер и что-то от него принять. Подумался вариант поднятия своего сервака по определенному порту и уже общаться с таким устройством так. Но это мне не нравится.

Как мне сделать "транзит" между компом дома и http сервером на esp32 через SIM800L так я и не очень понял пока ...

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

Спасибо.

P.S. Да, то что у оператора "не честные" IP адреса, в курсе, решается например, в МТС, подключением услуги realip.
 

pvvx

Активный участник сообщества
Второй вариант - это отправить SIM800L именно в режим GPRS. Но все примеры из сети завязаны на то, чтобы что-то послать на удаленный сервер и что-то от него принять. Подумался вариант поднятия своего сервака по определенному порту и уже общаться с таким устройством так. Но это мне не нравится.
Других вариантов в IP сети не бывает.
 

pvvx

Активный участник сообщества
Без чистого IP в сети как пройдет запрос через NAT от клиента (ваш браузер) к серверу (ваше устройство)? Кто пропишет в данной сети путь переадресации портов через NAT?
 

pvvx

Активный участник сообщества
Считайте что ваш модем соединен с локальной интрасетью, которая связана через роутер с инет. Как из инет пробросить порт в местную интрасеть, чтобы обращение по IP роутера с каким-то портом переадрисовывалось в местной интрасети к конкретному IP и порту? Для этого надо прописать статическое правило в роутере. Но у вас то интрасеть провайдера и без его разрешения вы ничего там не пропишите.

Возможная только обратная часть – локальное устройство во внутренней интрасети может послать пакет во внешнюю сеть согласно описанию правил в роутере.
 

pvvx

Активный участник сообщества
Местная интрасеть это аналог APN (условно). Если вы купите свой APN, т.е. свою интрасеть в сети прова, то сможете и диктовать правила роуминга в ней.
 

Slacky

Member
Вы не внимательны. В самом низу моего первого сообщения есть объяснение, как получить реальный IP. Не верите на слово? :))

Код:
I (1642) pppos_example: Module: SIMCOM_SIM800L
I (1642) pppos_example: Operator: "MTS"
I (1642) pppos_example: IMEI: 865210036257524
I (1642) pppos_example: IMSI: 250015495512917
I (1842) pppos_example: rssi: 19, ber: 0
I (2042) pppos_example: Battery voltage: 4444 mV
I (2242) pppos_example: Modem PPP Started
I (9032) esp-netif_lwip-ppp: Connected
I (9032) esp-netif_lwip-ppp: Name Server1: 213.87.142.85
I (9032) esp-netif_lwip-ppp: Name Server2: 212.188.8.10
I (9032) pppos_example: Modem Connect to PPP Server
I (9042) pppos_example: ~~~~~~~~~~~~~~
I (9042) pppos_example: IP          : 213.87.34.96
I (9052) pppos_example: Netmask     : 255.255.255.255
I (9052) pppos_example: Gateway     : 192.168.254.254
I (9062) pppos_example: Name Server1: 213.87.142.85
I (9062) pppos_example: Name Server2: 212.188.8.10
I (9072) pppos_example: ~~~~~~~~~~~~~~
I (9072) pppos_example: GOT ip event!!!
Посмотрите на IP модуля ...
 

pvvx

Активный участник сообщества
А в обычном APN внутреннее устройство инициирует канал (типа NAT: внутренний ip:порт <-> внешний ip:порт) путем подачи запроса к внешнему на время открытого TCP соединения. А внешнее устройство не может запросить канал к внутреннему устройству, т.к. не задано к какому из внутренних устройств следует переадресовать пакет.
 

pvvx

Активный участник сообщества
Вы не внимательны. В самом низу моего первого сообщения есть объяснение, как получить реальный IP. Не верите на слово? :))

Код:
I (1642) pppos_example: Module: SIMCOM_SIM800L
I (1642) pppos_example: Operator: "MTS"
I (1642) pppos_example: IMEI: 865210036257524
I (1642) pppos_example: IMSI: 250015495512917
I (1842) pppos_example: rssi: 19, ber: 0
I (2042) pppos_example: Battery voltage: 4444 mV
I (2242) pppos_example: Modem PPP Started
I (9032) esp-netif_lwip-ppp: Connected
I (9032) esp-netif_lwip-ppp: Name Server1: 213.87.142.85
I (9032) esp-netif_lwip-ppp: Name Server2: 212.188.8.10
I (9032) pppos_example: Modem Connect to PPP Server
I (9042) pppos_example: ~~~~~~~~~~~~~~
I (9042) pppos_example: IP          : 213.87.34.96
I (9052) pppos_example: Netmask     : 255.255.255.255
I (9052) pppos_example: Gateway     : 192.168.254.254
I (9062) pppos_example: Name Server1: 213.87.142.85
I (9062) pppos_example: Name Server2: 212.188.8.10
I (9072) pppos_example: ~~~~~~~~~~~~~~
I (9072) pppos_example: GOT ip event!!!
Посмотрите на IP модуля ...
Вы невнимательны - не знаете как работает простейший NAT, но уже обвиняете других :p
 

pvvx

Активный участник сообщества
Как пример - покупаете спец. тариф, чаще всего предоставляемый юрикам. Соединяете (в договоре) выданный APN со своей личной сетью и все устройства GSM будут в вашей местной сети с вашими IP.
 

pvvx

Активный участник сообщества
Так-же вам следует обратить внимание на разные тарифы. Есть на модемы, есть на телефоны и т.д. с кучей разных опций.
А я пытался вам описать общую схему, не вдаваясь в мелкие детали :p
 

pvvx

Активный участник сообщества
Вам и выбирать – работать с конкретными частными фичами вашего тарифа от провайдера или лепить схему работающую везде.
 

pvvx

Активный участник сообщества
По поводу вашего IP в логе. Кроме IP в старых сетях IPv4 для идентификации большое внимание уделяется и MAC. Почему для роуминга в сети используется не только ip – указано ранее.
 

pvvx

Активный участник сообщества
Ещё и IMEI.
Пров вас быстро забанит с липовыми повторяющимися китайскими IMEI и MAC.
Причина не в том, что они ему не нравятся, а в том что в сети будет бардак.
 

pvvx

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

pvvx

Активный участник сообщества
В общем случае, если ваше схема не работает через бесплатный VPN или прокси сервер, то она не будет жизнеспособна.
Для Arduino это обычное дело – платить провайдеру за спец. тариф или пользоваться внешними платными серверами.
 

Slacky

Member
В общем случае, если ваше схема не работает через бесплатный VPN или прокси сервер, то она не будет жизнеспособна.
Для Arduino это обычное дело – платить провайдеру за спец. тариф или пользоваться внешними платными серверами.
Мы не много не о том, но ладно. Еще раз - у МТС есть специальная услуга - realip, она платная. Сделана специально, кому по той или иной причине нужен белый IP. Я проверял. Завел модем в режим сервера и назначил ему порт. Просканировал онлайн сканером с какого-то сайта это IP, он нашел открытым только этот порт. К тому же, если взять точку apn "internet.mts.ru", то IP выдается из пула 10.*.*.* ...

Ладно, буду дальше думать :))
 

pvvx

Активный участник сообщества
Если ваш “сервер” только для себя, то проще иметь белый ip дома. Если такового нет – наверно более простое решение – размещение docker на каком ресурсе. Трафик то у вас не большой и ресурсов много не требуется, а накалакать и испытать даже дома, что нужно в docker нет проблем...
 
Сверху Снизу