Page 2 of 8 FirstFirst 1234 ... LastLast
Results 16 to 30 of 115

Thread: Скрипт чтения СМС на 3G модеме (ussd)

  1. #16
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543
    Quote Originally Posted by dlukanidin View Post
    Какая версия прошивки ?
    dubug extended от Rss
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  2. #17
    Quote Originally Posted by ConstAntz View Post
    Это очень странно эту ошибку нашли и специально убирали.
    Попробуйте пожалуйста ещё раз.
    1. При поднятом соединении остановите его из морды
    2. rmmod option
    3. cat /.../devpath
    4. rmmod usbserial
    5. insmod usbserial ...vid ...pid ...maxsize
    6. cat /.../devpath
    7. rmmod usbserial
    8. cat /.../devpath
    ASUS RT-AC66U <Merlin 384.15>
    ASUS RT-N66U <Merlin>
    ASUS RT-N16 <Merlin>

    Макет нового WEB интерфейса Для iPhone/iPad

  3. #18
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543
    Quote Originally Posted by dlukanidin View Post
    Это очень странно эту ошибку нашли и специально убирали.
    Попробуйте пожалуйста ещё раз.
    1. При поднятом соединении остановите его из морды
    2. rmmod option
    3. cat /.../devpath
    4. rmmod usbserial
    5. insmod usbserial ...vid ...pid ...maxsize
    6. cat /.../devpath
    7. rmmod usbserial
    8. cat /.../devpath
    Code:
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ rmmod option
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ rmmod usbserial
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ cat /proc/bus/usb/devices >> syslog.log
    [admin@(none) /tmp]$ insmod usbserial vendor=0x12d1 product=0x140c
    [admin@(none) /tmp]$ cat /proc/bus/usb/devices >> syslog.log
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ rmmod usbserial
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ cat /.version
    1.9.2.7-d-r2743M-debug
    Attached Files Attached Files
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  4. #19
    Quote Originally Posted by ConstAntz View Post
    Code:
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ rmmod option
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ rmmod usbserial
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ cat /proc/bus/usb/devices >> syslog.log
    [admin@(none) /tmp]$ insmod usbserial vendor=0x12d1 product=0x140c
    [admin@(none) /tmp]$ cat /proc/bus/usb/devices >> syslog.log
    [admin@(none) /tmp]$ lsmod >> syslog.log
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ rmmod usbserial
    [admin@(none) /tmp]$ cat /proc/bus/usb/devpath >> syslog.log
    [admin@(none) /tmp]$ cat /.version
    1.9.2.7-d-r2743M-debug
    Оказалось, что у меня было непропатченное ядро от промежуточных версий

    Последняя отладочная, полностью пересобранная:
    WL500gpv2-1.9.2.7-d-r2848-debug
    * Wiki *

  5. #20
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543

    тестовая версия скрипта чтения смс

    Тестовая версия скрипта чтения смс
    - только для прошивок со встроенной командой 'state_modem'
    - только для моделей модемов с поддержкой 'AT команд'

    './smska -i' - информация о состоянии памяти смс
    './smska -r' - читать свежие сообщения
    './smska -r <digits>' - читать указанное сообщение
    './smska -r <string>' - декодировать PDU-строку
    './smska -r all' - читать все сообщения

    не реализовано:
    - работа с историей
    - удаление сообщений
    - склеивание разрозненных сообщений

    2 dlukanidin, скелет готов - если есть желание, можете дорабатывать под нужды общества.
    Attached Files Attached Files
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  6. #21
    Quote Originally Posted by ConstAntz View Post
    Тестовая версия скрипта чтения смс
    2 dlukanidin, скелет готов - если есть желание, можете дорабатывать под нужды общества.
    Хорошая работа. У меня пока нет возможности посвятить этому достаточно времени, но у Вас и у самого получается отлично. Может проделаете ещё несколько шагов ?
    Мои предложения:
    1. Воспользоваться для выдачи AT команд и кодировки/раскодировки уже написанными функциями в файле /usr/share/modem/bin/state_3g_common (это не потому, что Вы плохо написали, а чтобы сократить объём общего кода для разных скриптов), при необходимости добавить туда нужные функции. (для получения доступа к этим функциям ставите в начале своего скрипта "source /usr/share/modem/bin/state_3g_common", примеры использования в той же папке, если есть вопросы - готов дать пояснения)
    2. Весь вывод делать в stdout в формате JSON. Например для чтения:
    Code:
    {"new_count":"1","old_count":"1","sms":[{"num":"1","status":"new","time":"00:00:00","sender":"111","text":"test sms 1"},{"num":"2","status":"old","time":"00:00:00","sender":"111","text":"test sms 2"}]}
    Если ошибка, то
    Code:
    {"error":"text ERROR"}
    это только пример, реальная структура должна соответствовать логике чтения из модема, но хорошо если в ней будет максимум информации.
    3. В качестве кодировки использовать UTF-8, соответствующие функции есть в вышеуказанном файле.
    4. Добавить в функционал информацию о количестве сообщений (можно как в моём примере вывода), стирание сообщений.
    5. Закомментировать, а после отладки убрать совсем отладочную печать (как я понимаю логирование Вы сделали для отладки).

    А мы к этому скрипту потом приделаем кусок морды и будет очередное расширение функционала.
    ASUS RT-AC66U <Merlin 384.15>
    ASUS RT-N66U <Merlin>
    ASUS RT-N16 <Merlin>

    Макет нового WEB интерфейса Для iPhone/iPad

  7. #22
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543
    Quote Originally Posted by dlukanidin View Post
    Хорошая работа. Может проделаете ещё несколько шагов ?
    Спасибо! (закрыв глаза на дату)
    Мои предложения:
    1. Воспользоваться для выдачи AT команд и кодировки/раскодировки уже написанными функциями в файле /usr/share/modem/bin/state_3g_common (это не потому, что Вы плохо написали, а чтобы сократить объём общего кода для разных скриптов), при необходимости добавить туда нужные функции.
    2. Весь вывод делать в stdout в формате JSON.
    3. В качестве кодировки использовать UTF-8, соответствующие функции есть в вышеуказанном файле.
    4. Добавить в функционал информацию о количестве сообщений (можно как в моём примере вывода), стирание сообщений.
    5. Закомментировать, а после отладки убрать совсем отладочную печать (как я понимаю логирование Вы сделали для отладки).

    А мы к этому скрипту потом приделаем кусок морды и будет очередное расширение функционала.
    При попытке инклудить и использовать уже написанные функции из state_3g_common возникали проблемы с codeUNItoUTF8() и decodePDU(). Для корректного перекодирования им требовалось передать на один печатный символ больше, т.е. вместо res=$(codeUNItoUTF8 "$msg") нужно res=$(codeUNItoUTF8 " $msg")

    Но эти проблемы были не так страшны, как другая:

    - перекодировка в UTF8 с использованием decodePDU() и codeUNItoUTF8() занимает относительно существенное время процессора. Основной причиной тормозов являются цикличное накопление переменной res="$res blablabla" и цикличное позиционирование по str=${str:i} Именно из-за этого, взляд упал на NCR и его "пережевывание" было отдано клиенту(браузеру). В результате - скорость поднялась в разы!

    По вышеописанным причинам пришлось отказаться от "громоздкого" инклуда ради "медленных" функций и писать псевдодекодеры.

    Назревают вопросы:
    - понимаю, что нужно выводить скрипт из "ведущего" в "ведомый", пока не осознаю - как. Вернее с эти проблем нет, есть проблема как тестировать остальным. Вести одновременно корректировку 'state_modem.tgz' и одним архивом - сюда?
    - стоит ли возвращаться к медленнному, но компактному (в плане кода) варианту? или JSON не может работать с NCR или ему UTF8 нужно отдать?

    - по первому пункту. Если остановимся на NCR - имеет смысл разбить/пересмотреть state_3g_common, чтоб не инклудить все подряд (в целях экономии оперативной памяти).

    - по второму пункту, не вижу препятствий. Вернее, есть одно - за 90 дней поверхностно познал bash, а Вы меня в новый омут (JSON)

    - по четвертому пункту не совсем понятно. Вы имели ввиду количество сообщений по типам (new_count/old_count)? Смысл?
    К примеру, я в морде нажал кнопку "СМС" - открылась страница с вкладкой "сообщения SIM", отсортированные по дате и помеченные в соответствии со статусом(new/old). Напротив каждого - птичка, а наверху две кнопки: помеченное "удалить","архивировать". Архив доступен на соседней вкладке, там же - настройки(путь database). Более полезным будет параметр sim_index (номер сообщения на SIM) для дальнейших манипуляций с этой ячейкой памяти из морды.

    - по пятому пункту. Логирование ведется на "новый" случай для тех, кто когда-то спросит:"Сообщение не открылось. В чем дело?". А ему в ответ:"покажите лог". Пример: (предположительно, здесь настройки опсоса для телефона)
    Code:
    07919701949901F9440481214300F5113051318141218C0B05040B840B8400038A05010106(cutted)
    По большому счету - на эту фишку можно забить и оставить только раскодирование читабельных UCS2 и GSM7. Ну так как? Оставлять или забивать? А есть еще и MMS, и EMS, и FLASH, ихз что

    И кстати! 9 просмотров и только один комент!?. Похоже это нужно только нам двоим...
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  8. #23
    Quote Originally Posted by ConstAntz View Post
    Спасибо! (закрыв глаза на дату)
    Про дату не понял, дату сообщения ?
    При попытке инклудить и использовать уже написанные функции из state_3g_common возникали проблемы с codeUNItoUTF8() и decodePDU(). Для корректного перекодирования им требовалось передать на один печатный символ больше, т.е. вместо res=$(codeUNItoUTF8 "$msg") нужно res=$(codeUNItoUTF8 " $msg")
    Да, правильно, это потому, что ussd возвращает сообщение в кавычках.
    Но эти проблемы были не так страшны, как другая:
    ...В результате - скорость поднялась в разы!
    Да знаю эту проблему. Но NCR это не решение, всё равно остаётся очень много медленного кода. Планирую в дальнейшем сделать специализированную программу на Си реализующую некоторые трудоёмкие функции типа перекодировки, работы с ком портами, подсчёта контрольных сумм. В принципе у меня уже основа написана, но заложил туда слишком большой функционал, как следствие продукт получился громоздким и сложно используемым. Но сейчас главное - экономия места. Как только оно появится, например в результате сокращения размера морды, попробуем приделать небольшую компактную программу и все вопросы с быстродействием и, что более важно ИМХО, с загрузкой процессора, решим (кстати именно из-за загрузки процессора я приостановил развитие аналогичного скрипта для CDMA, там чтение и стирание были реализованы в DM режиме.)
    Назревают вопросы:
    - понимаю, что нужно выводить скрипт из "ведущего" в "ведомый", пока не осознаю - как. Вернее с эти проблем нет, есть проблема как тестировать остальным. Вести одновременно корректировку 'state_modem.tgz' и одним архивом - сюда?
    ИМХО это наиболее правильно. Главное следить за размером результата и согласовать его потом с Rss.
    - стоит ли возвращаться к медленнному, но компактному (в плане кода) варианту? или JSON не может работать с NCR или ему UTF8 нужно отдать?
    JSON принимает всё HTML совместимое. Повторюсь, на данном этапе главное компактность, а как только этот вопрос снимется, то вопрос скорости будет решён более кардинальным способом.
    - по первому пункту. Если остановимся на NCR - имеет смысл разбить/пересмотреть state_3g_common, чтоб не инклудить все подряд (в целях экономии оперативной памяти).
    ИМХО разбивать common на части нет смысла
    - по второму пункту, не вижу препятствий. Вернее, есть одно - за 90 дней поверхностно познал bash, а Вы меня в новый омут (JSON)
    Это крайне просто (в отличии от баша) http://json.org/
    - по четвертому пункту не совсем понятно. Вы имели ввиду количество сообщений по типам (new_count/old_count)? Смысл?
    К примеру, я в морде нажал кнопку "СМС" - открылась страница с вкладкой "сообщения SIM", отсортированные по дате и помеченные в соответствии со статусом(new/old). Напротив каждого - птичка, а наверху две кнопки: помеченное "удалить","архивировать". Архив доступен на соседней вкладке, там же - настройки(путь database). Более полезным будет параметр sim_index (номер сообщения на SIM) для дальнейших манипуляций с этой ячейкой памяти из морды.
    На Ваше усмотрение. Нет возражений, единственное - как точно организовать морду оставим чуть на потом.
    - по пятому пункту. Логирование ведется на "новый" случай для тех, кто когда-то спросит:"Сообщение не открылось. В чем дело?". А ему в ответ:"покажите лог". Пример: (предположительно, здесь настройки опсоса для телефона)
    Code:
    07919701949901F9440481214300F5113051318141218C0B05040B840B8400038A05010106(cutted)
    По большому счету - на эту фишку можно забить и оставить только раскодирование читабельных UCS2 и GSM7. Ну так как? Оставлять или забивать? А есть еще и MMS, и EMS, и FLASH, ихз что
    ИМХО надо убирать, всё равно в этом кроме Вас никто разбираться не будет. Решение проблем делаем так. Просим юзера прислать полный ответ на одну или несколько AT команд, Вы анализируете и даёте ему ответ, а при необходимости вносите правки в скрипт, чтобы учесть его вариант. У себя конечно оставляете вариант со всеми логами, но в прошивку его не вставляем.
    И кстати! 9 просмотров и только один комент!?. Похоже это нужно только нам двоим...
    Не заморачивайтесь, это стандартная ситуация. Это нужно многим, но активное участие в обсуждении люди принимают только когда им есть, что сказать по существу. Кроме того, реально об этом узнают после того, как это будет включено в прошивку и тогда Вы услышите спасибо .
    Last edited by dlukanidin; 02-04-2011 at 11:51.
    ASUS RT-AC66U <Merlin 384.15>
    ASUS RT-N66U <Merlin>
    ASUS RT-N16 <Merlin>

    Макет нового WEB интерфейса Для iPhone/iPad

  9. #24
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543

    Тестовая модификация state_modem

    Quote Originally Posted by dlukanidin View Post
    ИМХО надо убирать, всё равно в этом кроме Вас никто разбираться не будет.
    Я, пожалуй, тоже не буду. Особо любознательные - переставят симку в мобильник.

    Тестовая модификация state_modem с добавленными командами "m" и "d <sim_index>" для работы с смс-сообщениями модема. Результат конвертируется в UTF8 (для 9-ти сообщений затраты времени ~12 сек.) и выводится на stdout в хтмл-формате. Как тестировать: разархивировать в любую новую директорию и перейти в нее. Вызывать через "./state_modem <порт> <команда>". Где <порт> - ui_port вашего модема в новом формате (например: 1.4.3), и <команда> - "m" для чтения всех сообщений или "d <sim_index>" для удаления сообщения из ячейки <sim_index>.
    Критика приветствуется. json-формат на подходе.
    Attached Files Attached Files
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  10. #25
    Quote Originally Posted by ConstAntz View Post
    Я, пожалуй, тоже не буду. Особо любознательные - переставят симку в мобильник.

    Тестовая модификация state_modem с добавленными командами "m" и "d <sim_index>" для работы с смс-сообщениями модема. Результат конвертируется в UTF8 (для 9-ти сообщений затраты времени ~12 сек.) и выводится на stdout в хтмл-формате. Как тестировать: разархивировать в любую новую директорию и перейти в нее. Вызывать через "./state_modem <порт> <команда>". Где <порт> - ui_port вашего модема в новом формате (например: 1.4.3), и <команда> - "m" для чтения всех сообщений или "d <sim_index>" для удаления сообщения из ячейки <sim_index>.
    Критика приветствуется. json-формат на подходе.
    Отлично. Посмотрел по диагонали, но нет доступа к роутеру до выходных, не попробовал. Сделаю правки и предложу Вам на рассмотрение:
    1. state_modem - немного изменю логику вызова
    2. state_sms - минималистично до нечитаемости, поправлю как я это вижу
    3. Кусок морды (если успею)
    ASUS RT-AC66U <Merlin 384.15>
    ASUS RT-N66U <Merlin>
    ASUS RT-N16 <Merlin>

    Макет нового WEB интерфейса Для iPhone/iPad

  11. #26
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543
    Quote Originally Posted by dlukanidin View Post
    1. state_modem - немного изменю логику вызова
    проверку $userFile лучше делать через '-x', а не '-e'

    2. state_sms - минималистично до нечитаемости
    согласно тз
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  12. #27
    Quote Originally Posted by ConstAntz View Post
    проверку $userFile лучше делать через '-x', а не '-e'
    согласно тз
    1. Переделал state_modem чтобы state_sms вызывался только для WCDMA модемов, убрал лишний скрипт.
    2. Скорректировал state_sms, добавил читаемость, упростил вызов функции изменения порядка байтов, формирование времени
    3. Сделал вывод в JSON

    Сейчас мордой займусь
    Attached Files Attached Files
    ASUS RT-AC66U <Merlin 384.15>
    ASUS RT-N66U <Merlin>
    ASUS RT-N16 <Merlin>

    Макет нового WEB интерфейса Для iPhone/iPad

  13. #28

    sms с мордой

    Ну вот есть готовый результат по СМС с мордой.
    Потратил много времени из-за таймаутов. Получился калабур
    Проблема была в том, что сервер не успевал за заданное время сформировать список СМС. Но обходное решение найдено и реализовано.

    Функционал морды писал наспех, так что можете легко поправить, если нужно (например добавить кнопку "стереть все").

    2Rss гляньте плиз, в прошивку лезет ?
    Attached Files Attached Files
    ASUS RT-AC66U <Merlin 384.15>
    ASUS RT-N66U <Merlin>
    ASUS RT-N16 <Merlin>

    Макет нового WEB интерфейса Для iPhone/iPad

  14. #29
    Quote Originally Posted by dlukanidin View Post
    2Rss гляньте плиз, в прошивку лезет ?
    Посмотрю, но не сегодня.
    * Wiki *

  15. #30
    Quote Originally Posted by rss View Post
    Посмотрю, но не сегодня.
    Спасибо за информацию.

    Итак:
    1. Обнаружил баг появляющийся при наличии в инфо от оператора символов возврата каретки, исправил.
    2. В связи с отсутствием в прошивке для роутеров с малым количеством памяти места, вставляться в такие прошивки это не будет.
    3. При желании использовать - подключаете морду на альтернативном диске, меняете файлы из папки www, копируете скрипты из папки sbin в свою /usr/local/sbin убиваете httpd (чтобы он перезагрузился и подхватил новую папку www) и пользуетесь. После ребута не забывайте перейти на альтернативную морду.
    Attached Files Attached Files
    ASUS RT-AC66U <Merlin 384.15>
    ASUS RT-N66U <Merlin>
    ASUS RT-N16 <Merlin>

    Макет нового WEB интерфейса Для iPhone/iPad

Page 2 of 8 FirstFirst 1234 ... LastLast

Similar Threads

  1. Установка программ для чайника" (Новая редакция)
    By Rung in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 722
    Last Post: 14-08-2019, 06:04
  2. Скрипт перезагрузки роутера
    By Andrey_3 in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 95
    Last Post: 18-12-2016, 16:11
  3. Скрипт для диагностики Wi-Fi
    By Oleg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 19
    Last Post: 13-03-2016, 20:29
  4. Тестирование скорости чтения/записи USB-HDD.
    By ABATAPA in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 87
    Last Post: 20-06-2013, 13:11
  5. Replies: 356
    Last Post: 01-01-2013, 22:33

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •