• Система автоматизации с открытым исходным кодом на базе 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 нет проблем...
 
Сверху Снизу