Те фидошные скрипты перекодировки, что я упоминал, использовали готовые таблицы, записанные в виде файла. 6Кб скрипт плюс столько же - таблица.
Использовать его или не использовать и годится ли он вообще - решать вам.
http://wl500g.info/showthread.php?23...173#post229173
вот это мну и огорчает...Тестовая модификация state_modem с добавленными командами "m" и "d <sim_index>" для работы с смс-сообщениями модема. Результат конвертируется в UTF8 (для 9-ти сообщений затраты времени ~12 сек.) и выводится на stdout в хтмл-формате.
PS а спора тут нет. просто обсуждаем что и как лучше., да и в споре как известно рождается истина
DIR-320 много,+ другие уже тож много + медиа-плееры и планшеты, и все на мипс
Те фидошные скрипты перекодировки, что я упоминал, использовали готовые таблицы, записанные в виде файла. 6Кб скрипт плюс столько же - таблица.
Использовать его или не использовать и годится ли он вообще - решать вам.
тут проблема и затраты не в перекодировке... а в разборе самого PDU ... битовые операции...
DIR-320 много,+ другие уже тож много + медиа-плееры и планшеты, и все на мипс
логично.... но а если хочется функционал sms и usd запросов использовать в скриптах? .
напр отправить смс на ваш номер мол "ой у мну тут инет по кабелю в конторе отрубили.... и денег на мобильном осталось 5 рублев, маловато для тарифа..."
PS боюсь тут без СИ кодинга не обойтись.
DIR-320 много,+ другие уже тож много + медиа-плееры и планшеты, и все на мипс
Вы уж определитесь ©.
По идее, большинство популярных модемов должно поддерживать вывод в UCS, которая практически совпадает с UTF-16. Тогда не придётся делать побитовые операции:
Интересно, выбор кодировки работает только при чтении сообщений, или при написании тоже?Code:AT+CSCS=? +CSCS: ("IRA","GSM","UCS2") OK ATI Manufacturer: ZTE CORPORATION Model: MF631 Revision: BD_MF631F3V1.0.0B06 IMEI: 359ХХХХХХХХХХХХ +GCAP: +CGSM,+DS,+ES OK
Last edited by ryzhov_al; 31-10-2012 at 10:54. Reason: Всё это лишь догадки, 3G-модемы никогда не использовал.
Всем привет! Товарищи, реально ли как то в прошивку интузиастов добавить PING определенного хоста через скажем каждые 10 секунд времени? Цель - понять, когда у меня дома пропадает свет или интернет. Я бы внес на раутере эту строчку, чтобы в фоне висел пинг и на получателе отлавливал бы эти пакеты. Если есть - то ок, нету - тоже все понятно. Либо отправку как то настроить емейла? Что на много! круче...
Тогда при поднятии канала я бы получал емейл на этот счет... Трудность в том, что IP динамический выдает 3G модем, а платить за постоянный IP желания большого нету...
DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163
Пока был установлен Е220, СМС всегда считывались.
Перешел на Е1820. Вижу вот это.
Если на время подключить Е220 и считать СМС, то после подключения Е1820 некоторое время СМС могут считываться, но не всегда.Code:[root@RTN16 sbin]$ state_modem_sms 2.2 m {"count":"0"}[root@RTN16 sbin]$
Могу считывать в ББ, но неудобно.
Что делать?
Версии последние, исходные.
Кстати, VID/PID у них одинаковые 12d/1001
Last edited by alex_optek; 07-01-2013 at 15:19.
RT-AC68(371) RT-N16 (rtn 3006-5196)(optware), HDD 2TB, Huawei E1820 (E220) (Beeline->МТС), (Anydata ADU-300), Acer revo 3610, Dell inspirion 1520, Asus HD-R3
WL500GPv2(r4574)(Entware),staticIP офис
Немного оффтоп, но сохраню для истории.
У меня на даче dir-320, прошитый одной из последних от vampik, в него воткнут Huawei E352b. Дачный роутер подключатеся как l2tp-клиент к домашнему Mikrotik с l2tp-сервром.
Иногда возникает необходимость прочитать смс с кодом подтверждения (например чтобы зайти в личный кабинет и проверить баланс), а ехать на дачу и выдергивать модем из роутера ради этого, понятное дело, не хочется.
Читал в интернете разные инструкции, как читать смс, везде нужен какой-то дополнительный софт типа minicom, в общем сплошные заморочки. Но удалось решить проблему только средствами того, что есть в роутере. Уверен, что подойдет на любой роутер и почти на любой модем. Не у всех модемов есть возможность читать смс одновременно с интернет-соединением, но AT-команды стандартные для всех модемов и используется chat из busybox.
Заходим в роутер по ssh или в веб-админку, если она позволяет выполнять shell-команды
Ищем tty устройства модема
Получаем ответ вродеCode:ls /dev | grep USB
Дальше придется пробовать для всех этих устройств, подобрав то, которое отвечаетCode:ttyUSB0 ttyUSB1 ttyUSB2
Выводим список СМС
Что делает эта команда.Code:chat -V -t 5 '' 'AT+CMGF=1' 'OK' 'AT+CMGL="ALL"' 'OK' > /dev/ttyUSB1 < /dev/ttyUSB1
Ждёт, пока модем скажет '', то есть ничего не ждет.
Потом отправляет в него AT+CMGF=1 (это переключение модема в текстовый режим общения) и ждет ответа OK.
Потом отправляет AT+CMGL="ALL" (это вывести список всех смс) и снова ждет ответа OK.
Перенаправление ввода/вывода > /dev/ttyUSB1 и < /dev/ttyUSB1 говорят команде, где находится модем.
Параметр -V говорит, что всё общение с модемом нужно сделать на экран, а не выводить в логи. Параметр -t 5 - таймаут ожидания нужного ответа от модема, если он не будет получен, следующая команда не будет отправлена.
В результатах вывода ищем что-то вида
Это значит, что в ячейке 0 хранится непрочитанное сообщение с номера +7XXXXXXXXXX. Если запустить команду ещй раз, сообщение будет REC READ, то есть его уже читали.Code:+CMGL: 0,"REC UNREAD","+7XXXXXXXXXX",,"XX/XX/XX,XX:XX:XX+XX" 041F0440043E043204350440043A0430002004410432044F04370438
Берем тело сообщения из следующей строки, идем на https://smspdu.benjaminerhart.com/, вставляем в поле PDU, выбираем Contains only User Data, Unicode UCS2, Decode и читаем смс.
Если длинная и состоит из нескольких частей, она будет лежать в нескольких ячейчках. Можно расшифровать каждую по очереди и склеить итоговый текст.
Когда сообщений в памяти много, память заканчивается, и новые сообщения перестают приходить. Для удаления можно использовать AT+CMGD=n, где n - номер ячейчки с сообщением или AT+CMGD=,4, чтобы удалить все сообщения, включая непрочитанные.
Итоговая команда для чтения и сразу очистки (ведь зачем забивать память кодами подтверждения) будет выглядеть примерно так
Code:chat -V -t 5 '' 'AT+CMGF=1' 'OK' 'AT+CMGL="ALL"' 'OK' 'AT+CMGD=,4' 'OK' > /dev/ttyUSB1 < /dev/ttyUSB1