скрипт для управления модемом Huawei e1550 (Решил написать для себя, может кому пригодится)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
evgsd
Сообщения: 38
ОС: Ubuntu Linux

скрипт для управления модемом Huawei e1550

Сообщение evgsd »

В общем скрипт с интерактивным меню. Из возможностей: проверка баланса, чтение и отправка смс и кое какая информация и модеме.

Из найденых мною багов: иногда не с 1го раза получает список смсок, вылетает с ошибкой, хотя со 2го все работает как часы.
Иногда не удаляет с 1го раза смски(только если выбрать - удалить все).

Писал на библиотеке pyhumod. Код кривой, но кое как работает. Кусок проверки баланса украл, его кто то тут на форуме выкладывал, надеюсь автор не против:-) В дальнейшем, если все пойдет как задумано, хочу дописать гуй на qt или gtk и заставить его подключаться к интернету.

жду ваших замечаний и исправлений. Сильно не пинайте:-)
собственно сам скрипт http://dl.dropbox.com/u/3356071/modem.tar.bz
jid: evgsd@jabber.ru
Все будет хорошо. Я узнавал...
Спасибо сказали:
Аватара пользователя
mvt
Сообщения: 734

Re: скрипт для управления модемом Huawei e1550

Сообщение mvt »

Не пригодится? http://m.habrahabr.ru/post/79166/
Хорошо бы сделать возможность выбора марки модема и оператора
Спасибо сказали:
Аватара пользователя
evgsd
Сообщения: 38
ОС: Ubuntu Linux

Re: скрипт для управления модемом Huawei e1550

Сообщение evgsd »

mvt писал(а):
06.01.2010 15:48
Не пригодится? http://m.habrahabr.ru/post/79166/
Хорошо бы сделать возможность выбора марки модема и оператора

Нет, эта статья бесполезна. Программа которая шла с модемом убога, хотя со своей задачей справляется. Огромный ее минус (по-моему) то, что она написана на java. Да и ко всему процент мне лично удобнее работать штатными средствами системы (wvdial).
Выбор оператора пока что там не нужен. А выбор модема рано еще, хотя бы с этим все до ума довести
jid: evgsd@jabber.ru
Все будет хорошо. Я узнавал...
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: скрипт для управления модемом Huawei e1550

Сообщение NickLion »

А я счёт проверяю при помощи minicom и там AT+CUSD=... :)
(какой-то пакет ещё ставить надо, не хватает import serial... позже посмотрю на программку)
Спасибо сказали:
Аватара пользователя
f0b
Сообщения: 77

Re: скрипт для управления модемом Huawei e1550

Сообщение f0b »

evgsd писал(а):
06.01.2010 10:40
В общем скрипт с интерактивным меню. Из возможностей: проверка баланса, чтение и отправка смс и кое какая информация и модеме.

Из найденых мною багов: иногда не с 1го раза получает список смсок, вылетает с ошибкой, хотя со 2го все работает как часы.
Иногда не удаляет с 1го раза смски(только если выбрать - удалить все).

Писал на библиотеке pyhumod. Код кривой, но кое как работает. Кусок проверки баланса украл, его кто то тут на форуме выкладывал, надеюсь автор не против:-) В дальнейшем, если все пойдет как задумано, хочу дописать гуй на qt или gtk и заставить его подключаться к интернету.

жду ваших замечаний и исправлений. Сильно не пинайте:-)
собственно сам скрипт http://dl.dropbox.com/u/3356071/modem.tar.bz


баланс не отображается

Код: Выделить всё

Подождите....
 Мобильный платеж - пополняй телефон с банковской карты. Инфо 0533
в этом мире все относительно...
Спасибо сказали:
Аватара пользователя
evgsd
Сообщения: 38
ОС: Ubuntu Linux

Re: скрипт для управления модемом Huawei e1550

Сообщение evgsd »

В скрипте забит номер проверки баланса у мегафона. Если нужно под другого оператора, то тут указано как закодировать команду проверки баланса (принимать открытым текстом у меня не получилось заставить свой модем). В 58ой строчке
s.write('AT+CUSD=1, AA180C3602,15\015')
выделенное замени на то, что выдаст скрипт. Должно работать.
jid: evgsd@jabber.ru
Все будет хорошо. Я узнавал...
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: скрипт для управления модемом Huawei e1550

Сообщение NickLion »

У меня Huawei E220. Я в minicom всегда проверяю как AT+CUSD=1,*100#,15 - всё нормально приходит. И ответ нормальный. Но всё это творить надо со вторым модемом (не тем, через который подключение).
А вообще надо бы это вынести в отдельную настройку что-ли.
А вместо '\015' нельзя просто '\r' написать?
И ещё вопрос, имя модема там в настройках указывается? Хотя, сейчас поставлю этот пакет, посмотрю...
Спасибо сказали:
Аватара пользователя
RocksLinux
Сообщения: 223
ОС: Slackware

Re: скрипт для управления модемом Huawei e1550

Сообщение RocksLinux »

mvt писал(а):
06.01.2010 15:48
Не пригодится? http://m.habrahabr.ru/post/79166/
Хорошо бы сделать возможность выбора марки модема и оператора

В нашей стране, как минимум ещё мтс, продаёт этот модем — так что это не выход.

Сам не проверял, но в любом случаи, evgsd спасибо за труд!
«Знать, что мы знаем то, что мы знаем, и что мы не знаем того, чего мы не знаем — это и есть истинное знание». //Конфуций\\
120 минут классики рока
Спасибо сказали:
Аватара пользователя
evgsd
Сообщения: 38
ОС: Ubuntu Linux

Re: скрипт для управления модемом Huawei e1550

Сообщение evgsd »

NickLion писал(а):
18.02.2010 19:46
У меня Huawei E220. Я в minicom всегда проверяю как AT+CUSD=1,*100#,15 - всё нормально приходит. И ответ нормальный. Но всё это творить надо со вторым модемом (не тем, через который подключение).
А вообще надо бы это вынести в отдельную настройку что-ли.
А вместо '\015' нельзя просто '\r' написать?
И ещё вопрос, имя модема там в настройках указывается? Хотя, сейчас поставлю этот пакет, посмотрю...


Я же писал в первом посте, что кусок проверки баланса взял тут у кого то на форуме.)
jid: evgsd@jabber.ru
Все будет хорошо. Я узнавал...
Спасибо сказали:
Аватара пользователя
RocksLinux
Сообщения: 223
ОС: Slackware

Re: скрипт для управления модемом Huawei e1550

Сообщение RocksLinux »

evgsd писал(а):
19.02.2010 10:24
NickLion писал(а):
18.02.2010 19:46
У меня Huawei E220. Я в minicom всегда проверяю как AT+CUSD=1,*100#,15 - всё нормально приходит. И ответ нормальный. Но всё это творить надо со вторым модемом (не тем, через который подключение).
А вообще надо бы это вынести в отдельную настройку что-ли.
А вместо '\015' нельзя просто '\r' написать?
И ещё вопрос, имя модема там в настройках указывается? Хотя, сейчас поставлю этот пакет, посмотрю...


Я же писал в первом посте, что кусок проверки баланса взял тут у кого то на форуме.)

Блин, надо переходить на жесты, а то мои словесные выражения никто не понимает
Я говорил о статье на habrahabr.ru.
mvt писал(а):
06.01.2010 15:48
Не пригодится? http://m.habrahabr.ru/post/79166/
Хорошо бы сделать возможность выбора марки модема и оператора

P.s. Я не полный идиот :) , подправить номер мозгов хватит.
«Знать, что мы знаем то, что мы знаем, и что мы не знаем того, чего мы не знаем — это и есть истинное знание». //Конфуций\\
120 минут классики рока
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: скрипт для управления модемом Huawei e1550

Сообщение NickLion »

Я это всё к тому, что такие вещи неплохо в настройки вынести, чтобы не разыскивать по скрипту:
* имя модема
* проверку счёта
* необходимость перекодировать +CUSD запросы и ответы
* ну, и что там ещё :)
Спасибо сказали:
rodins
Сообщения: 4
ОС: Debian Lenny, Puppy 4.3

Re: скрипт для управления модемом Huawei e1550

Сообщение rodins »

Написал скрипт для Puppy Linux. Там есть команда

Код: Выделить всё

modem-stats -c AT-команда /dev/ttyUSB0
, которая заменяет minicom. Скрипт проверяет и пополняет счет и переключает дипазон (2G/3G). Принимает запрос, как параметр командной строки. Если не задать параметр - проверяет счет Utel (*100#)

Код: Выделить всё

#!/bin/sh
SCR=/tmp/m_script
SCR1=/tmp/ussdscp
OST=/tmp/lastcheck
tmp_file=/tmp/code_utel
: >  $tmp_file

gnokii --getnetworkinfo  | grep Network | grep -v code # пишет информацию о сети при наличии пакета gnokii
#modem-stats -c "AT+COPS?" /dev/ttyUSB0

if [ "$1" = "net" ]
then
exit 0
fi

if [ "$1" = "3g" ]
then modem-stats -c "AT^SYSCFG=14,2,3FFFFFFF,2,4" /dev/ttyUSB0
sleep 20
#modem-stats -c "AT+COPS?" /dev/ttyUSB0
gnokii --getnetworkinfo | grep Network | grep -v code
exit 0
fi

if [ "$1" = "p3g" ]
then modem-stats -c "AT^SYSCFG=2,2,3FFFFFFF,2,4" /dev/ttyUSB0
sleep 20
#modem-stats -c "AT+COPS?" /dev/ttyUSB0
gnokii --getnetworkinfo | grep Network | grep -v code
exit 0
fi

if [ "$1" = "2g" ]
then modem-stats -c "AT^SYSCFG=13,1,3FFFFFFF,2,4" /dev/ttyUSB0
sleep 20
gnokii --getnetworkinfo | grep Network | grep -v code
#modem-stats -c "AT+COPS?" /dev/ttyUSB0
exit 0
fi

if [  -n "$1" ] # проверка наличия параметра коммандной строки
then
echo -n "$1" > $OST
# кодирование запроса
PARCEL=$(perl -e '@a=split(//,unpack("b*",`cat /tmp/lastcheck`)); for ($i=7; $i < $#a; $i+=8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."\n"')
#echo "send \"AT+CUSD=1,$PARCEL,15\"" > $SCR
at="AT+CUSD=1,$PARCEL,15"
else
#echo 'send "ATZ"' > $SCR
#echo 'send ""' >> $SCR
#echo 'send "AT+CUSD=1,AA180C3602,15"' > $SCR # если параметр не задан - проверяется счет
at="AT+CUSD=1,AA180C3602,15"
fi
#echo $at
cat /dev/ttyUSB2  | grep "+CUSD:"  > $tmp_file &
#minicom  -S $SCR >/dev/null 2>&1 &
modem-stats -c "$at" /dev/ttyUSB0 >/dev/null 2>&1
sleep 10
! killall -9 cat
#! killall  minicom

#exit 0

while read line
do
#echo $line
line1=${line%\"*}
#echo $line1
line2=${line1##*\"}

done < $tmp_file

echo $line2 > $SCR1
#cat /tmp/ussdscp
# декодирование полученного ответа
perl -e '@a=split(//,unpack("b*", pack("H*",`cat /tmp/ussdscp`))); for ($i=6; $i < $#a; $i+=7) {$a[$i].="0" } print pack("b*", join("",
@a))."
"'

exit 0

Нужен пакет perl для раскодировки запроса. Если нет gnokii - закоментировать ее и раскомменитировать modem-stats.
Использование: скопировать в текстовый файл, назвать balans, сделать испольняемым, потом дать команду

Код: Выделить всё

balans *121#
- проверка счета (бонусов), также можно пополнять счет,

Код: Выделить всё

balans 3g
- включение в сеть 3G

Код: Выделить всё

balans 2g
- включение в сеть 2G

Код: Выделить всё

balans p3g
- предпочитать 3G

Код: Выделить всё

balans net
- показать сеть

Спасибо сказали:
Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

Re: скрипт для управления модемом Huawei e1550

Сообщение Voler »

Просьба: у кого есть данный скрипт, поделитесь. Для изучения нужен.
Спасибо сказали:
Ответить