Как узнать баланс модема Микротик если оператор Билайн ?

Обсуждение общих вопросов, не касающихся настройки оборудования и ОС
enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

16 фев 2018, 23:25

Какая то очень нервная реакция .....
Прям странно ....

Вам ведь на самом деле нужно не баланс узнать на микротике через модем.
Баланс нужно узнать лично Вам, так зачем вы уперлись в микротик и в модем?

USSD Вам не светит.

если можно получать баланс по смс, все сильно проще.

https://weblance.com.ua/265-upravlenie- ... i-sms.html

Читаем, проникаемся и делаем. Надеюсь вытащить баланс из СМС не сложно будет.

Но как по мне, так Вы сами себе жизнь усложняете


Sertik
Сообщения: 485
Зарегистрирован: 15 сен 2017, 09:03

17 фев 2018, 22:52

Большое спасибо enzain за Ваш великолепный комментарий !

Только вот что к чему в нем мне не понятно. Я Вас лично обидел чем-то или что ? Почему нервная реакция ?
Что Вы хотели сказать словами про баланс и меня я вообще не понял ? Я не совсем уж чайник и знаю что где читать, ту ссылку которую Вы показали, читают "дети в детском саду" ..., а не те люди, которые пишут скрипты.
Если Вы сами знаете решение - подскажите, если не знаете не нужно советов дурацких давать усложняю я себе жизнь или нет. Жизнь вообще штука не простая.
Если Вы узнаете баланс набирая на телефоне заветные цифры типа *100# - это Ваше личное дело !

Еще раз повторяю Т.З (для особо одаренных):

Мне нужно скриптом в переменную получить баланс модема, подключенного к роутеру Микротик через USB-порт и определенного как PPP-интерфейс при установленной СИМ-карте оператора Билайн.

именно так и никак иначе !

Вот и всё, неужели ЭТО СЛОЖНО ПОНЯТЬ ? А зачем и почему так нужно, ну простите - в конце концов не все ли равно ВАМ ?

Зачем обсуждать спрашивающего и давать свои рецепты получения баланса ?
Я прошу помочь тех кто знает и может помочь, а те кто не могут - курите табак себе в уголке ...

Я почти на 100% уверен что задача решаема.
И также знаю по крайней мере одного человека, который здесь знает как и может ее решить, но, скажем так, он предложил для меня не реальные условия за решение.
Называть я его тут не буду по этическим соображениям.

Задача эта все равно будет решена, если сам не смогу, у меня есть люди (профи) которые мне помогут без всяких условий.

Будет решение - выложу тут.


Чего не знаем то нагуглим
Аватара пользователя
Dragon_Knight
Модератор
Сообщения: 1583
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

17 фев 2018, 23:20

Ну и пипец ...

Sertik,
1) SMS Вам не доступно, ибо нету такого у оператора;
2) USSD думаю реален, но вернёт баланс через неопределённое кол-во времени, в виде строки в потоке, плюс ко всему в кодировке UCS-2 и как Вы её будете микротиком расшифровывать я не представляю;
3) И остаётся один вариант, - не придумывать не реализуемые вещи и поставить клиент оператора на телефон, повесить виджет и видеть свой баланс всегда.

Ну нельзя это сделать средствами микротика, нельзя.



Помощь в ремонте и настройке оборудования MikroTik, Мытищи, Москва.
Дома: [RouterBOARD CCR1009-8G-1S-1S+] + [RouterBOARD cAP 2n] + [RouterBOARD Groove A-2Hn-32] + [D-Link ANT24-0800];
Работа 1: [RouterBOARD RB493G] + [MikroTik R52H] + [MikroTik CA493] + [D-Link ANT24-0800] + [RouterBOARD SXT G-2HnD];
Работа 2: [RouterBOARD RB2011UiAS-IN];
Резерв: [RouterBOARD RB450G];
Sertik
Сообщения: 485
Зарегистрирован: 15 сен 2017, 09:03

17 фев 2018, 23:51

Дракон, мне кажется Вы не правы.

Из терминала я пробовал - модем возвращает баланс в окно консоли через посыл ему специальной AT-команды ...

Насчет неопределенного времени, да могут быть проблемы, но ведь модем стоит в стационарном устройстве а не в автомобиле и таймаут ответа можно подобрать.
Например, модем устройств PDU Нетпинг возвращает баланс любых наших операторов в течении 20 секунд.

И еще вот посмотрите пример скрипта Peter James от 2012 года, который мне удалось найти в Инет. Там передача АT-команды используется для других целей, но по аналогии можно сделать.

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

########################################################
## Modem reset script for 3G PPP Wan links with Email reporting  ##
## based on ping reply to a known good host. ##. 
## The google dns server at 8.8.4.4 is used  ##
## in this example, but you can use any known good host to ping.  ##
## take note of your wan interface name! ##
#
### NB NB!! This script runs two other scripts which perform the ###
### actual modem reset sequences: ###
### "Wan1 Modem Reset DataChan" ###
### "Wan1 Modem Reset InfoChan" ###
#
## Schedule this script at whatever checking interval you require. ##
## Remember to set up Tools - Email settings ##
## Peter James 2012-04-20 ##
########################################################

# Delay for first time run after boot #
:delay 15;

# Set the 3G wan name #
:local WanName "wan1";

# get the usb port for this interface #
:local usbPortName [/interface ppp-client get [/interface ppp-client find name=$WanName] port];

:log info "Starting $WanName 3G Down Check";

:local i 0;
:local result 0;

### Define the email address to receive 3G modem reset report  ###
:local emailAddressToNotify "your_email_address_here"

## Define host to check ###
:local testhost "8.8.4.4";

## Define number of pings to check ##
:local PingCount 10;

### Get System Identity ###
:local SystemID [/system identity get name]

## If the usb port is inactive, reboot the router to attempt to fix this ##
#:log info "Checking USB Port: $usbPortName Status";#
:if ([/port get [find name=$usbPortName] inactive]) do={

:log info "USB Port: $usbPortName detected as inactive - System Rebooting";

/system reboot;

}

## Skip the ping check if the wan interface is not running ##
:if ([/interface get [find name="$WanName"] running]=true) do={

:do {

:set i ($i + 1);

:if ([/ping $testhost interface="$WanName" interval=3 count=1]=1) do={

:set result ($result+1);

} 

} while=($i < $PingCount)

}

# ping has failed PingCount times or ping check was skipped #
:if ($result=0) do={

:log info "Starting $WanName 3G Modem Reset Sequence";

# get its ID number #
:local WanID [/interface ppp-client find name=$WanName];

# Disable the interface to stop dial attempts #
/interface ppp-client disable $WanID;

# Run the reset scripts #
execute "/system script run \"Wan1 Modem Reset DataChan\"";
execute "/system script run \"Wan1 Modem Reset InfoChan\"";


# Wait for all reset sequences to complete #
delay 60;

# Enable the interface once again #
/interface ppp-client enable $WanID;

# Modem should now redial  and connect #


:log info "waiting to send email 30 seconds";
## wait before trying to send email ##
delay 30;

# Check if interface is now running #
:if ([/interface get [find name="$WanName"] running]=true) do={

/tool e-mail send tls=yes subject="$SystemID $WanName 3G Modem Was Reset" to=$emailAddressToNotify body="$WanName 3G Modem Was Reset"

:log info "Email sent $WanName 3G Modem Was Reset";

:log info "$WanName Modem Reset Sequence Complete";

} else={

:log info "$WanName Interface Not Running - Modem Reset Sequence Failed";

}

}

:log info "$WanName 3G Down Check Complete";


#----------------------------------

#Script2: Wan1 Modem Reset DataChan (Started by Script1)
#(This script can also be called independently at any time to issue a modem reset over the data channel)


# Reset the PPP Interface 3G Modem using Data Channel #

###################################################################
## Script uses PPP Modem Init to send AT command to serial port ##
## Commands are simply fired "blind" at the modem ##
## Example sends the AT+CFUN=4, AT+CFUN=6 command sequence ##
## ZTE MF-190 requires AT+CFUN=4, AT+CFUN=1 sequence or AT+ZRST ##
## Sierra Wireless:  AT!RESET ##
## ZTE:  AT+ZRST  ##
## Huawei:  AT+CFUN=4, AT+CFUN=6 sequence ##

## This script can be used with Netwatch or sheduled to run on startup ##
## after a watchdog reboot. ##
## You can adjust the delays and AT commands as needed ##
### Peter James 2012-04-20 ###
###################################################################

:local pppName "wan1";
:log info "$pppName Modem Data Channel Reset Started";

delay 20;

:local ModemPort [/interface ppp-client get [/interface ppp-client find name=$pppName] port];
:local DataChan [/interface ppp-client get [/interface ppp-client find name=$pppName] data-channel];


:if ([:len [/interface find name="ResetData1"]] = 0 ) do={

:log info "creating temporary reset ppp interface DataChan";
# Create temporary ppp interface for the specified USB port # 
/interface ppp-client add add-default-route=no comment="ResetData1" dial-on-demand=no disabled=yes data-channel=$DataChan name=ResetData1 port=$ModemPort; 

}


# Set Interface ID number #
:local ResetData1id [/interface ppp-client find name="ResetData1"];

## Send modem reset sequence ##

# Send first part of reset sequence #
/interface ppp-client set modem-init="AT+CFUN=4" $ResetData1id;
#/interface ppp-client set modem-init="AT+ZRST" $ResetData1id;#


/interface ppp-client enable $ResetData1id;
# Allow time for Init command to be sent #
delay 5;
# disable again to stop any possible dial attempts #
/interface ppp-client disable $ResetData1id;

# Wait for tx and rx RF circuits to switch off #
delay 5;

# Send second part of reset sequence #
/interface ppp-client set modem-init="AT+CFUN=6" $ResetData1id;
/interface ppp-client enable $ResetData1id;

delay 5;

/interface ppp-client set modem-init="" $ResetData1id;
/interface ppp-client disable $ResetData1id;

delay 2;
# Remove temporary interface #
/interface ppp-client remove $ResetData1id;

:log info "$pppName Modem Data Channel Reset Completed";


# --------------------------------------

#Script3: Wan1 Modem Reset InfoChan (Started by Script1)
#(This script can also be called independently at any time to issue a modem reset over the info channel)


# Reset the PPP Interface 3G Modem using Info Channel #

###################################################################
## Script uses PPP Modem Init to send AT command to serial port ##
## Commands are simply fired "blind" at the modem ##
## Example sends the AT+CFUN=4, AT+CFUN=6 command sequence ##
## ZTE MF-190 requires AT+CFUN=4, AT+CFUN=1 sequence or AT+ZRST ##
## Sierra Wireless:  AT!RESET ##
## ZTE:  AT+ZRST  ##
## Huawei:  AT+CFUN=4, AT+CFUN=6 sequence ##

## This script can be used with Netwatch or sheduled to run on startup ##
## after a watchdog reboot. ##
## You can adjust the delays and AT commands as needed ##
## Peter James 2012-04-20 ##
###################################################################

:local pppName "wan1";
:log info "$pppName Modem Info Channel Reset Started";

#delay 20;#

:local ModemPort [/interface ppp-client get [/interface ppp-client find name=$pppName] port];
:local InfoChan [/interface ppp-client get [/interface ppp-client find name=$pppName] info-channel];

:if ([:len [/interface find name="ResetInfo1"]] = 0 ) do={

:log info "creating temporary reset ppp interface InfoChan";
# Create temporary ppp interface for the specified USB port # 
/interface ppp-client add add-default-route=no comment="ResetInfo1" dial-on-demand=no disabled=yes data-channel=$InfoChan name=ResetInfo1 port=$ModemPort;

}

# Set Interface ID number #
:local ResetInfo1id [/interface ppp-client find name="ResetInfo1"];

## Send modem reset sequence ##

# Send first part of reset sequence #
/interface ppp-client set modem-init="AT+CFUN=4" $ResetInfo1id;
#/interface ppp-client set modem-init="AT+ZRST" $ResetInfo1id;#

/interface ppp-client enable $ResetInfo1id;
# Allow time for Init command to be sent #
delay 5;
# disable again to stop any possible dial attempts #
/interface ppp-client disable $ResetInfo1id;

# Wait for tx and rx RF circuits to switch off #
delay 5;

# Send second part of reset sequence #
/interface ppp-client set modem-init="AT+CFUN=6" $ResetInfo1id;
/interface ppp-client enable $ResetInfo1id;

delay 5;

/interface ppp-client set modem-init="" $ResetInfo1id;
/interface ppp-client disable $ResetInfo1id;

delay 2;
# Remove temporary interface #
/interface ppp-client remove $ResetInfo1id;


:log info "$pppName Modem Info Channel Reset Completed";

На а кодировка - это уже детали. В скрипте пишется словарь кода и полученная строка по нему декодируется, эта часть вполне реальна.

Для меня не ясно как вернуть полученный ответ из консоли в переменную - вот в этом может быть основной затык. Но, вероятно, и это можно решить.


Чего не знаем то нагуглим
Sertik
Сообщения: 485
Зарегистрирован: 15 сен 2017, 09:03

18 фев 2018, 01:32

То есть вот таким путем можно вроде как "запросить" баланс через ppp-интерфейс модема Микротик:

# имя интерфейса модема
:local WanName "ppp-out1"
# узнаем ID интерфейса
:local WanID [/interface ppp-client find name=$WanName];
# выключаем его
/interface ppp-client disable $WanID;
:delay 5s;
# ставим в строку инициализации модема команду запроса баланса
/interface ppp-client set modem-init="AT+CUSD=1,*100#,15" $WanID;
:delay 1s;
# включаем интерфейс
/interface ppp-client enable $WanID;
#ждем ответ
:delay 30s;
# стираем запрос баланса из строки инициализации модема и передергиваем интерфейс
/interface ppp-client disable $WanID;
/interface ppp-client set modem-init="" $WanID;
/interface ppp-client enable $WanID;

Запрос отправляется, но куда вернется ответ ? Если он возвращается, то куда и как его забрать в переменную ? Вот это мне пока не ясно ...


Чего не знаем то нагуглим
Аватара пользователя
Kato
Сообщения: 180
Зарегистрирован: 17 май 2016, 04:23
Откуда: Primorye

18 фев 2018, 03:48

Запрос отправляется, но куда вернется ответ ? Если он возвращается, то куда и как его забрать в переменную ?
в тех. поддержку микротика обращались?


enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

18 фев 2018, 10:22

Sertik писал(а):
17 фев 2018, 22:52
Еще раз повторяю Т.З (для особо одаренных):

Мне нужно скриптом в переменную получить баланс модема, подключенного к роутеру Микротик через USB-порт и определенного как PPP-интерфейс при установленной СИМ-карте оператора Билайн.

именно так и никак иначе !

Вот и всё, неужели ЭТО СЛОЖНО ПОНЯТЬ ? А зачем и почему так нужно, ну простите - в конце концов не все ли равно ВАМ ?
Какая у Вас конечная цель?
Знать Вам (не микротику), сколько на симке осталось денег.

Вы уперлись в микротик и в модем.

Внезапно, но есть для этого более простые пути.

Но, жираф большой, ему видней... Если прям очень хочется - ну ок ... мучайтесь :)


Аватара пользователя
Dragon_Knight
Модератор
Сообщения: 1583
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

18 фев 2018, 15:29

Sertik, отправить команду ( "at+cusd=1,"#100#",15" ) не проблема. Проблема получить ответ...
Вывода из потока - нету, отправить команду в поток внешними средствами - тоже нету.
Вердикт - нельзя.

А если всё равно хотите, то поднимайте Apache+PHP сервер, пишите парсер личного кабинета оператора и получайте свой баланс одной функцией (думаю можно проще):

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

:do {
	/tool fetch url="http://myserver.local/?q=GetBalance" mode=http keep-result=yes dst-path=tmp;
	:delay 1s;
	:set ReceivedData [/file get [/file find name=tmp] contents];
	/file remove [/file find name=tmp];
} on-error={
	:log error "[[SCRIPT_NAME]]: Error receiving data.";
};
И вообще, как всем вбить в голову, что Микротик это не принтер, ни NAS сервер, ни сервер 1С, ни компьютер, ни телефон, ни кофеварка и даже заказывать пиццу он не умеет, микротик это РОУТЕР и цель у него одна, - передать пакет из пункта А в пункт Б. Всё.



Помощь в ремонте и настройке оборудования MikroTik, Мытищи, Москва.
Дома: [RouterBOARD CCR1009-8G-1S-1S+] + [RouterBOARD cAP 2n] + [RouterBOARD Groove A-2Hn-32] + [D-Link ANT24-0800];
Работа 1: [RouterBOARD RB493G] + [MikroTik R52H] + [MikroTik CA493] + [D-Link ANT24-0800] + [RouterBOARD SXT G-2HnD];
Работа 2: [RouterBOARD RB2011UiAS-IN];
Резерв: [RouterBOARD RB450G];
Аватара пользователя
Dragon_Knight
Модератор
Сообщения: 1583
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

18 фев 2018, 15:31

А если я всё равно не убедил, то ставьте на свой микротик OpenWrt и пишите скрипты как угодно, - там полноценный линукс и вообще никаких ограничений нету.



Помощь в ремонте и настройке оборудования MikroTik, Мытищи, Москва.
Дома: [RouterBOARD CCR1009-8G-1S-1S+] + [RouterBOARD cAP 2n] + [RouterBOARD Groove A-2Hn-32] + [D-Link ANT24-0800];
Работа 1: [RouterBOARD RB493G] + [MikroTik R52H] + [MikroTik CA493] + [D-Link ANT24-0800] + [RouterBOARD SXT G-2HnD];
Работа 2: [RouterBOARD RB2011UiAS-IN];
Резерв: [RouterBOARD RB450G];
enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

18 фев 2018, 16:20

Dragon_Knight писал(а):
18 фев 2018, 15:29
И вообще, как всем вбить в голову, что Микротик это не принтер, ни NAS сервер, ни сервер 1С, ни компьютер, ни телефон, ни кофеварка и даже заказывать пиццу он не умеет, микротик это РОУТЕР и цель у него одна, - передать пакет из пункта А в пункт Б. Всё.
К сожалению, с подачи всяких асусов и прочих *линков, никак ... Все считают это нормой.
Меня это, если честно тоже подбешивает слегка ...


Ответить