Блок пользователя для работы с GSM

Создаем свой блок. Вопросы, помощь знатоков.
Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#81

Сообщение Слимпер » 11.08.2016{, 12:30}

stapmoff писал(а):Не надо сбрасывать! Вылезла ошибка, я ее сравнил и например на дисплей вывел что это за ошибка!
Ладно подумаю, но тогда когда ее сбрасывать?
Была мысль выводить вообще ошибки самого модема, но пока отказался.

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#82

Сообщение stapmoff » 11.08.2016{, 12:34}

Слимпер писал(а):но тогда когда ее сбрасывать
Я незнаю как у вас там реализован опрос по ошибкам, если циключеский, то до след. опроса пускай и висит

Добавлено (11.08.2016, 12:34)
---------------------------------------------
stapmoff писал(а):Была мысль выводить вообще ошибки самого модема, но пока отказался.
Ну и правильно, тут самое главное отвечает модуль или нет, есть сеть или нет! А по поводу AT+COPS? подумайте) Было бы шикарно

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#83

Сообщение Слимпер » 11.08.2016{, 12:58}

stapmoff писал(а):Я незнаю как у вас там реализован опрос по ошибкам, если циключеский
Ну опрос сети идет циклически с интервалом, настраиваемым через параметры блока, вообще я вроде довольна подробно все расписывал в описании блока. 

На остальные появляются в при выполнении других операций или команд.
Вообще я сам еще не понял как оно должно быть, это так идеи.

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

Добавлено (11.08.2016, 12:41)
---------------------------------------------
stapmoff писал(а):А по поводу AT+COPS? подумайте) Было бы шикарно
Это не проблема, куда выводить, что еще один выход текстовый сделать?

Добавлено (11.08.2016, 12:58)
---------------------------------------------
Кажется я понял в чем проблема с балансом, ожидание ответа у меня сейчас стандартное для всех команд (2сек, меняется через настройки блока), а ответы на ussd запросы приходят куда дольше, надо переделать.

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#84

Сообщение stapmoff » 11.08.2016{, 13:02}

Слимпер писал(а):Это не проблема, куда выводить, что еще один выход текстовый сделать?
Да, было бы не плохо.

Вообще от блока хочется следующего:
1. Возможность сравнивать номера с записной сим (или добавить больше входов для номеров, но возникает сложность прописывать номера если устройство на продажу)
2. Отправлять смс не на номер, что указан на входе, а на тот с которого прилетела смс (опять таки если записан в записной иначе игнор.)
3. Сделать несколько входов для текста смс (или если возможно добавлять в настройках блока.)
или так то можно задать одну переменную которая будет меняться в соответствии с требованиями и отправлять ее как текст смс?
4. По поводу баланса, я думаю лучше не запрашивать по переднему фронту, а так же цикличесли спустя N - время и если баланс менее минимума слать смс о пополнении.
Ну вот как то так

Смысл какой! Я делал следующим образом, вы же вроде глядели мой проэкт?  Достаточно 4 (или более надо думать) номера например под именами "a" "b" "c" "d" записываются стандартно на сим, а там уже я их сравнивали ответы слал именно на тот с которого пришел запрос! Для чего добавлять выводы под тект смс? Для того чтоб мониторить например температуру, влажность, пропадание 220 и так далее, но как в блоке потом выбирать какую переменную высылать???
Последний раз редактировалось stapmoff 11.08.2016{, 13:17}, всего редактировалось 1 раз.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#85

Сообщение Слимпер » 11.08.2016{, 13:17}

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

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#86

Сообщение stapmoff » 11.08.2016{, 13:19}

Слимпер писал(а):Это надо посмотреть, команды работы с записной книгой я не разбирал пока.
Телефонная книга.
Данные на карте хранятся подобно массивам, с индексами начинающимися с 1. В принципе данные могут храниться не только на сим-карте, но и в других местах, например в памяти телефона. Но в данном случае эти знания нам не особо актуальны:)
AT+CPBS=«SM» — выбрать как основную память сим-карту. Данный режим стоит по умолчанию.
AT+CPBS? — сообщит тип памяти, количество имеющихся записей и их максимальное количество. Например:
+CPBS: «SM»,3,250 значит, что на сим-карте есть 3 записи из 250 возможных.
Чтение данных.
AT+CPBR=1 — считывает запись с индексом 1.
AT+CPBR=2,5 — считать записи со 2-о по 5-ю.
AT+CPBF=«что ищем» — поиск информации. У меня работало очень нестабильно. Мог найти запись, а мог и нет. Отчего это зависит не очень понятно. На версии B07 поиск стал гораздо стабильней.
AT+CPBF — выдача всех записей на карте.
В любом случае информация идет в виде:
+CPBF: (или +CPBR) 2,"+7ХХХХХХХХХХ",145,«Home», где
2, — номер (индекс) записи.
+7ХХХХХХХХХХ", — номер.
145, — формат имени.
  • 129 — неизвестный (например при русских символах),
  • 161 — национальный формат (в римских цифрах что ли?),
  • 145 — интернациональный формат,
  • 177 — формат, определяемый сетью.
«Home», — имя записи.
AT+CPBW=4,"+71234567890",145,«Test» — записать контакт на сим-карту.
4, — индекс, куда записываем.
AT+CPBW=4 — стереть запись с указанным номером.

Добавлено (11.08.2016, 13:19)
---------------------------------------------
Смысл какой! Я делал следующим образом, вы же вроде глядели мой проэкт?  Достаточно 4 (или более надо думать) номера например под именами "a" "b" "c" "d" записываются стандартно на сим, а там уже я их сравнивали ответы слал именно на тот с которого пришел запрос! Для чего добавлять выводы под тект смс? Для того чтоб мониторить например температуру, влажность, пропадание 220 и так далее, но как в блоке потом выбирать какую переменную высылать???

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#87

Сообщение Слимпер » 11.08.2016{, 13:33}

Слимпер писал(а):3. Сделать несколько входов для текста смс (или если возможно добавлять в настройках блока.) или так то можно задать одну переменную которая будет меняться в соответствии с требованиями и отправлять ее как текст смс?
Это  проще и удобнее делать внешней обвязкой  
СпойлерПоказать
а затем уже на вход модуля
stapmoff писал(а):4. По поводу баланса, я думаю лучше не запрашивать по переднему фронту, а так же цикличесли спустя N - время и если баланс менее минимума слать смс о пополнении.Ну вот как то так
это наверное можно сделать если получится сделать стабильное получение баланса. Хотя это можно сделать и внешней обвязкой модуля.

Добавлено (11.08.2016, 13:33)
---------------------------------------------
stapmoff писал(а):На версии B07 поиск стал гораздо стабильней.
Вы его что прошивал?
Вложения
3384840.png

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#88

Сообщение stapmoff » 11.08.2016{, 13:47}

Вы его что прошивал? нее у меня не SIM900 а SIM800L/ Это я скопировал статью по которой работал http://we.easyelectronics.ru/part....ya.html

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#89

Сообщение Слимпер » 11.08.2016{, 15:09}

Сейчас разбирался с балансом и понял, что будут большие проблемы.
Например оказалось, что у разных операторов все по разному:
Пока через терминал:
МТС: 
СпойлерПоказать
ATD#100#

+CUSD: 0,"Balance:127,91r ",15

OK
AT+CUSD=1,"#100#",15

+CUSD: 0,"Balance:127,91r ",15

OK
ATD*100#

+CUSD: 0,"??????:127,91? ???????? ???! ??? ???",72

OK
AT+CUSD=1,"*100#",15

+CUSD: 0,"??? ?????? ??????, ???????? ????? ?? SMS.",72
Вообщем все хорошо, все нормально
Мегафон

СпойлерПоказать
ATD#100#

+CUSD: 0,"????? ???????? ?????? ???????. ?????????? ?????.",72

OK
AT+CUSD=1,"#100#",15

+CUSD: 0,"????? ???????? ?????? ???????. ?????????? ?????.",72

OK
ATD*100#

+CUSD: 0,"20.02???????? ????? "???????????". ???????? 050025.",72

OK
AT+CUSD=1,"*100#",15

+CUSD: 0,"20.02???????? ????? "???????????". ???????? 050025.",72

OK
Вот тут вариант с # вообще не работает (с обычного телефона тоже)

И это только два оператора, про остальных не берусь судить.

Вот как тут можно извлечь баланс?

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#90

Сообщение stapmoff » 11.08.2016{, 15:15}

Слимпер писал(а):Вот как тут можно извлечь баланс?
Да уж)) вот засада! На самом деле в приборах которые работают по средствам GSM  модемов даже самые продвинутые, не имеют такой функции, на сколько я широко сталкивался с ними! Может не стоит морочить голову? А прикрутить что нибудь дельное? Например синхронизацию времени через сеть))) и вывод на блоке с часами и минутами????? Ну это я так дурачусь, тут сам смотри!
Последний раз редактировалось stapmoff 11.08.2016{, 15:24}, всего редактировалось 1 раз.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#91

Сообщение Слимпер » 11.08.2016{, 20:27}

НовыйUser писал(а):Кстати, Дим, а как лучше отрганизовать на вход по разным события отправку.... свитч всего на два варианта действует... Первый вариант смс - 1 до 9 строк (к примеру) . Через свитч второй вариант смски (сработала сигнализация). Третий вариант смс (включена кофеварка) и тд... ?
Самый простой вариант 

СпойлерПоказать
А потом уже на вход блока. Но это так принцип, по нормальному там еще Rtriger нужен. 
НовыйUser писал(а):вот, к примеру, на вбсервер выходит строка баланса... мне бы очень удобно было в сеть заходя на страничку видеть всю строку ответа... конечно желательно без вопросов..... Можно выдавать всю строку...а дальше с помощью поиска и деления строка каждый может сам для своего проекта подчистить всю строку до нужных (прим. первые 10 символов)....Я не утверждаю что это обязатель т.к могу мониторить баланс иными способами, но дело в том что удобство добавляет строка с балансом...
В том то и проблема, что под себя сделать получится, а вот универсальный вариант пока не вижу как, отложу на время.
Вложения
0431260.png

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#92

Сообщение stapmoff » 12.08.2016{, 07:21}

НовыйUser писал(а):plz выведи список основных команд которые обрабатываются модемами для подстройки блока под стандарты
Я не имел ввиду, что сталкивался с приборами на программном уровне! Я имел ввиду приборы для охраны (много фирм и видов) и ни где я не встречал запрос баланса!

Добавлено (12.08.2016, 07:21)
---------------------------------------------
НовыйUser писал(а):DTMF:
Посмотрел видос, интересно и просто) Можно попробовать реализовать) Но Си я незнаю, вся надежда на Слимпера))

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#93

Сообщение Слимпер » 12.08.2016{, 09:33}

Доработал блок, из мелочей
По просьбе tapmoff вывод оператора, и и ошибки должны висеть до устранения.

Серьезное:
1 Блок теперь начинает инициализацию модуля после после сообщения от него о том, что он готов к работе. Т.е. теперь можно перезагружать модуль при работе контроллера и он должен нормально запускаться.

2 Сделал настройку модуля под нужный порт, но получилось только таким образом,

СпойлерПоказать
В секции DeclareSection убрать знак комметария только в нужны строках  (Убрать перед нужной строкой символы "//")

// #define SERIAL_M  Serial    // для работы с COM порт 0
// #define SERIAL_M  Serial1  // для работы сCOM порт 1
// #define SERIAL_M  Serial2  // для работы с COM порт 2
// #define SERIAL_M Serial3 // для работы сCOM порт 3

// #define SERIAL_M  Serial_S  // для работы сCOM Software
// #include <SoftwareSerial.h> // для работы сCOM Software
// SoftwareSerial Serial_S( RX ,  TX ); // для работы сCOM Software

#define Module_Start "+PBREADY" // для M590 Сообщение от модуля после которого с ним можно работать
//#define Module_Start "Call Ready" // для SIM800/SIM900 Сообщение от модуля после которого с ним можно работать
Через параметры модуля не получилось.

П.С. из грустного хоть и немного переделал USSD, но почему то при подачи запроса через терминал работает, а при подачи через arduino, приходит только OK, но нет сообщения.
Что я не догоняю. Короче перерыв, с USSD.

Добавлено (12.08.2016, 09:33)
---------------------------------------------
НовыйUser писал(а):DTMF:
https://www.youtube.com/watch?v=a0WKUPeBQgk
 
stapmoff писал(а):Посмотрел видос, интересно и просто) Можно попробовать реализовать) Но Си я незнаю, вся надежда на Слимпера))
Посмотрел вроде ни чего сложного, можно попробовать
Но похоже в M590 нет такой функции, в даташите не нашел.

Была ошибка, удалил, файл смотри ниже.
Последний раз редактировалось Слимпер 12.08.2016{, 10:34}, всего редактировалось 1 раз.

Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06.09.2015{, 13:12}
Репутация: 5
Откуда: Тюмень-Баку
Имя: Максим

Блок пользователя для работы с GSM

#94

Сообщение Max » 12.08.2016{, 09:34}

Слимпер писал(а):П.С. из грустного хоть и немного переделал USSD
Попробую помочь. Может будет полезно. Сегодня выложу кусочек логики USSD запроса баланса и ответа на него с пересылкой на мастер-номер. У меня работает, но строку в конце режет (надо увеличить разрядность строки). Все руки не доходят отшлифовать.
Хотя, работаю сейчас с блоком SIM800L, но АТ команды идентичные.

По моему личному мнению, модуль SIM800L гораздо лучше, надежней и перспективней М590 и гораздо компактней... Я бы сосредоточился на нем...
Последний раз редактировалось Max 12.08.2016{, 09:37}, всего редактировалось 1 раз.

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#95

Сообщение stapmoff » 12.08.2016{, 10:06}

Max писал(а):Попробую помочь.
Я думаю если вы вдвоем возьметесь за блок, он получится самый что не наесть универсальный)) Я так понимаю MAX освободился немного?
Слимпер писал(а):Доработал блок, из мелочей
Сейчас буду тестить, но на сколько я знаю 800 не шлет при включении ничего

Добавлено (12.08.2016, 10:06)
---------------------------------------------
Что не так делаю????

Изображение

Добавлено (12.08.2016, 10:06)
---------------------------------------------
софтсериал порт у меня выводы 2 и 3

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#96

Сообщение Слимпер » 12.08.2016{, 10:08}

stapmoff писал(а):Сейчас буду тестить, но на сколько я знаю 800 не шлет при включении ничего
Если у вас блок Sim800, попробуйте в DeclareSection 
СпойлерПоказать
//#define Module_Start "+PBREADY" // для M590 Сообщение от модуля после которого с ним можно работать
 #define Module_Start "Call Ready" // для SIM800/SIM900 Сообщение от модуля после которого с ним можно работать
Ну такое сообщение писали для 900, может и для 800 подойдет.

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#97

Сообщение stapmoff » 12.08.2016{, 10:20}

у 900 да есть такое сообщение у 800 пару раз видал выскакиволо, но вот сейчас скомпилировал без ошибок модуль заводиться не хочет, чтот с портами при компиляции софтсериал не пашет

Добавлено (12.08.2016, 10:20)
---------------------------------------------
Слимпер писал(а):#define Module_Start "Call Ready" // для SIM800/SIM900 Сообщение от модуля после которого с ним можно работать
Так и сделал

Добавлено (12.08.2016, 10:20)
---------------------------------------------
У меня же УНО

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#98

Сообщение Слимпер » 12.08.2016{, 10:27}

stapmoff писал(а):Что не так делаю????
ДА мой кося, не проверил, попробуйте так 
СпойлерПоказать
// #define SERIAL_M  Serial    // для работы с COM порт 0
// #define SERIAL_M  Serial1  // для работы с COM порт 1
// #define SERIAL_M  Serial2  // для работы с COM порт 2
//#define SERIAL_M Serial3 // для работы с COM порт 3

#include <SoftwareSerial.h>
SoftwareSerial SERIAL_M ( RX ,  TX ); // для работы с COM Software
Добавлено (12.08.2016, 10:27)
---------------------------------------------
Слимпер писал(а):у 900 да есть такое сообщение у 800 пару раз видал выскакиволо,
 Можете подключится к модулю напрямую, и посмотреть, что он шлет после подачи питания?
Последний раз редактировалось Слимпер 12.08.2016{, 10:28}, всего редактировалось 1 раз.

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 341
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 4

Блок пользователя для работы с GSM

#99

Сообщение stapmoff » 12.08.2016{, 10:28}

Не хочет, ошибка из за вот этой строки мне кажется #define SERIAL_M_6365138_1 Serial3
M_6365138_1 Эти фифры кудато же надо вставить?

// #define SERIAL_M  Serial_S  // для работы сCOM Software
// #include <SoftwareSerial.h> // для работы сCOM Software
// SoftwareSerial Serial_S( RX ,  TX ); // для работы сCOM Software

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Блок пользователя для работы с GSM

#100

Сообщение Слимпер » 12.08.2016{, 10:30}

stapmoff писал(а):Не хочет, ошибка из за вот этой строки мне кажется #define SERIAL_M_6365138_1 Serial3M_6365138_1 Эти фифры кудато же надо вставить?
Я выше приложил строки замените на них

Ответить

Вернуться в «Разработка пользовательских блоков»