====== @amperka/gprs-shield ======
Драйвер для работы с модулем [[amp>product/gprs-shield|GPRS Shield]].
Позволяет отправлять команды и обрабатывать события модуля через последовательный порт UART.
Инициализируется функцией ''connect''.
func:: connect([opts])
Возвращает новый объект ''Sim900r'' для работы с модулем через порт последовательный порт. Для модуля [[Iskra_JS|Iskra JS]] — это порт ''Serial3''
Необязательный параметр ''opts'' задаёт характеристики соединения с модулем. Ожидается объект со свойствами:
* ''serialPort'' — объект последовательного порта. По умолчанию — ''Serial3''.
* ''serialSpeed'' — скорость взаимодействия по последовательному порту. По умолчанию — ''9600''.
* ''powerPin'' — контакт для включения и выключения модуля. По умолчанию — ''P2''.
* ''statusPin'' — контакт для определения готовности модуля. По умолчанию — ''P3''.
var sim = require('@amperka/Sim900r').connect();
class:: Sim900r
Класс для управления GPRS-модулем, работы со звонками и SMS, USSD, а так же для прямого доступа к AT-командам.
Обратите внимание, на выполнение команды модулю требуется время. Поэтому для обработки результата команды используются функции обратного вызова ''callback'', в которые и передаются параметры ответа. Так же модуль сообщает о различных событиях: готовности к работе, входящих звонках, СМС и прочих. При возникновении события ''event'' вызывается соответствующая ему функция обратного вызова.
=== Управление питанием и проверка статуса готовности ===
func:: Sim900r.powerOn()
Включает модуль. Не выполняется, если модуль уже включен. Включение модуля занимает порядка одной секунды, по этому необходимо слушать событие ''powerOn'', для точного определения, когда можно с ним взаимодействовать.
func:: Sim900r.powerOff()
Выключает модуль. Не будет выполнена, если модуль уже отключен.
func:: Sim900r.isReady()
Проверяет модуль на готовность к работе — взаимодействию с контроллером по последовательному порту. Функцию не следует использовать для проверки регистрации модуля в сети сотового оператора. При готовности модуля функция возвращает ''true'', если модуль не готов или выключен — ''false''.
==== События, инициируемые модулем ====
event:: Sim900r.on('powerOn', function() { ... })
Возникает после инициализации при включении модуля.
event:: Sim900r.on('powerOff', function() { ... })
Возникает при выключении модуля.
event:: Sim900r.on('simReady', function() { ... })
Возникает в момент обнаружения SIM-карты.
event:: Sim900r.on('simError', function(code) { ... })
Возникает при отсутствии SIM-карты.
* ''code'' — код ошибки, отданный модулем.
event:: Sim900r.on('ready', function() { ... })
Возникает в момент регистрации модуля с SIM-картой в сети оператора.
event:: Sim900r.on('ring', function(phone, cnt) { ... })
Возникает в момент входящего звонка. При входящем звонке событие возникает приблизительно раз в три секунды, пока вы не ответите или не разорвете соединение, или это не сделает вызывающая сторона. Параметры функции обратного вызова:
* ''phone'' — телефон вызывающего абонента (если он определен) или ''undefined'';
* ''cnt'' — количество вызовов события ''ring'' с начала попытки дозвона.
event:: Sim900r.on('noCarrier', function() { ... })
Возникает в момент разъединения соединения другим лицом. Если соединение разрываете вы — событие не возникает.
event:: Sim900r.on('sms', function(phone, time, text) { ... })
Возникает в момент приема SMS-сообщения. Параметры функции обратного вызова:
* ''phone'' — телефон отправителя;
* ''time'' — дата и время отправления;
* ''text'' — текст сообщения.
event:: Sim900r.on('unknown', function(event, data) { ... })
Возникает событие инициированное модулем, но оно отличается от вышеперечисленных. Параметры функции обратного вызова:
* ''event'' — событие генерируемое модулем;
* ''data'' — строка с данными по этому событию.
==== Работа с прямыми командами модуля ====
func:: Sim900r.cmd(command, callback);
Отправляет команду ''command'' модему и возвращает в функции обратного вызова полученный результат. При получении ответа, вызывает функцию ''callback'' вида ''function(error, data) { … }'' с параметрами:
* ''error'' — ''undefined'' при успешном запросе; [[Error]] — если произошла ошибка;
* ''data'' — массив, где каждый элемент — строка отданная модулем в рамках обработки команды.
==== Голосовая связь ====
func:: Sim900r.call(phone, callback)
Вызывает попытку дозвона до абонента с номером ''phone'', переданным в виде строки. Вызывает ''callback''.
В качестве ''callback'' ожидается функция вида ''function(error) { ... }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен, или одну из следующих ошибок:
* ''NO DIALTONE'' — нет сигнала;
* ''NO CARRIER'' — звонок отклонен;
* ''NO ANSWER'' — нет ответа;
* ''BUSY'' — занято.
func:: Sim900r.cancel(function(error) { ... })
Разрывает текущее соединение. Вызывает ''callback'' при исполнении.
В качестве ''callback'' ожидается функция вида ''function(error) { ... }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
func:: Sim900r.answer(callback)
Ответ на входящий звонок. Вызывает ''callback'' при исполнении.
В качестве ''callback'' ожидается функция вида ''function(error) { ... }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
==== Работа с SMS-сообщениями ====
func:: Sim900r.smsSend(phone, text, function(error) { ... })
Отправляет SMS-сообщение. По результату, вызывает функцию ''callback'' вида ''function(error) { … }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
var sim = require('@amperka/Sim900r').connect();
sim.powerOn();
sim.smsSend("+79160001122", "hello", function(error){
console.log(error);
});
func:: Sim900r.smsList(function(error, data) { ... })
Читает список SMS-сообщений, сохраненных на SIM-карте. По результату, вызывает функцию ''callback'' вида ''function(error, data) { … }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
* ''data'' — массив объектов, описывающих СМС, со свойствами:
* ''index'' — индекс сообщения в памяти SIM-карты;
* ''phone'' — номер телефона отправителя;
* ''date'' — объект типа [[Date]], с информацией о дате и времени отправки;
* ''text'' — текст сообщения;
func:: Sim900r.smsRead(index, function(error, data) { ... })
Читает SMS-сообщение с индексом ''index'', сохраненное на SIM-карте. По результату, вызывает функцию ''callback'' вида ''function(error, data) { … }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
* ''data'' — объект, описывающих СМС, со свойствами:
* ''index'' — индекс сообщения в памяти SIM-карты;
* ''phone'' — номер телефона отправителя;
* ''date'' — объект типа [[Date]], с информацией о дате и времени отправки;
* ''text'' — текст сообщения;
func:: Sim900r.smsDelete(index, function(error) { ... })
Удаляет SMS-сообщение с индексом ''index'', сохраненное на SIM-карте. В качестве значения параметра ''index'' можно указать ''all'', что приведет к удалению всех сообщений. По результату, вызывает функцию ''callback'' вида ''function(error) { … }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
==== Информация о SIM-карте и сети оператора связи ====
func:: Sim900r.netProvider(callback)
Запрашивает название оператора SIM-карты. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, provider) { ... }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* ''provider'' — название оператора сим-карты в виде строки ''string''.
func:: Sim900r.netStatus(callback)
Запрашивает информацию о регистрации в сети. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, status) { ... }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* ''status'' — статус регистрации в виде строки и имеющее одно из следующих значений:
* ''"search"'' — идёт поиск сети;
* ''"home"'' — модуль зарегистрирован в домашней сети;
* ''"roaming"'' — модуль зарегистрирован в роуминговой сети;
* ''"error"'' — регистрация не удалась;
* ''"unknown"'' — другая ошибка.
func:: Sim900r.netQuality(callback)
Запрашивает информацию о качестве приема. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, quality) { ... }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* ''quality'' — качество приема в виде целого числа от 0 до 10.
func:: Sim900r.netCurrent(callback)
Запрашивает информацию об операторе связи, в сети которого зарегистрирован модуль. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, provider) { ... }'' с параметрами:
* ''error'' — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* ''provider'' — название оператора сотовой сети.
==== Получение информации о модуле ====
func:: Sim900r.getImei(callback)
Получает IMEI модуля. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, imei) { ... }'' с параметрами:
* error — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* imei — IMEI модуля в виде строки ''string''.
func:: Sim900r.getFirmware(function(error, firmware) { ... })
Получает информацию о ревизии модуля. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, firmware) { ... }'' с параметрами:
* error — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* firmware — значение ревизии типа ''string''.
func:: Sim900r.getTime(callback)
Получает дату и время на устройстве. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, datetime) { ... }'' с параметрами:
* error — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* datetime — объект [[Date]].
func:: Sim900r.getCallerID(callback)
Получение информации о включении автоматического определителя номера. Вызывает ''callback'' для передачи результата.
В качестве ''callback'' ожидается функция вида ''function(error, enable) { ... }'' с параметрами:
* error — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка;
* enable — включен ли АОН (тип ''boolean'').
==== Настройка модуля ====
func:: Sim900r.setTime(datetime [, callback])
Устанавливает дату и время из параметра ''datetime'', переданного в виде объекта [[Date]].
В качестве ''callback'' ожидается функция вида ''function(error) { ... }'' с параметрами:
* error — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
func:: Sim900r.setCallerID(enable [, callback])
Включение и отключение определителя номера. Параметр ''enable'' имеет булевый тип. Вызывает ''callback'' по окончанию.
В качестве ''callback'' ожидается функция вида ''function(error) { ... }'' с параметрами:
* error — ''undefined'', если запрос успешен; [[Error]] — если произошла ошибка.
===== Ссылки =====
* {{:продукты:gprs_shield:gprs-shield_sim900_at_commands.pdf|мануал для изучения AT команд}}