Работа с GSM модемом (СМС)

Помечено: , , ,

Просмотр 15 сообщений - с 16 по 30 (из 37 всего)
  • Автор
    Сообщения
  • #14268
    manjey73
    Участник

    Оказалось не так то просто выложить библиотеку SMS, она тянет за собой AddressBook и ее код… Форму конкретно. Как ее добавить я не знаю. Думал достаточно будет ссылку на библиотеку.

    #14269
    manjey73
    Участник

    Ссылка на исходный код

    В общем выложил на GIT исходник, но чтобы собирать, надо интегрировать эти файлы в код scada-master от разработчика. Там подтягивается AddressBook и как отдельно я не знаю…. (з.ы. мопед не мой ) 🙂

    #14270
    manjey73
    Участник

    Приходящиее СМС на команды

    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    #14278
    manjey73
    Участник

    Дорасчетный канал

    Модуль автоуправления

    Парсинг строки на значение

    #14279
    manjey73
    Участник

    Вот, с пользователем Mitrich протестировали в две руки. (у меня просто модема нет).

    Для Михаила. Возможно не туда впихнул код. Но если ставить в другие места, то значение появляется только в текущих данных, а его надо бы сохранить в БД, чтобы потом можно было посмотреть. Так что как правильно не знаю… Но работает.

    Формула в текстовом виде.

    public static double ParseToDouble(double value)
    {
      double result = Double.NaN;
    
      string s = ScadaUtils.DecodeAscii(value);
      int idx = s.IndexOf(" ");
      if (idx != -1)
      {
      s = s.Substring(0, idx);
      }
    
      if (!double.TryParse(s, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("ru-RU"), out result))
      {
         if (!double.TryParse(s, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("en-US"), out result))
         {
            return Double.NaN;
         }
      }
      return result;
    }

    з.ы. если вдруг не заработает KpExSms, то выложу первоначально переделанную KpSms, а то не знаю, вдруг какие то конфликты будут….

    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    #14282
    manjey73
    Участник

    Вот еще пожелания от Mitrich
    прикрутить отправку AT команд для диагностики сети
    «Уровень сигнала» и «Регистрацию в сети»

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

    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    #14284
    manjey73
    Участник

    Собственно сама KpExSms.dll

    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    #14286
    Mitrich
    Участник

    Отправка: AT+CSQ
    Приём: +CSQ: 14,99
    Дальше по нехитрой формуле определяем уровень сигнала в дБ: [-113 + Х * 2]
    т.е. у меня сигнал -113+14*2 = -85 дБ

    1. Первое число (в примере 15) — это параметр уровня сигнала.
    2. Второе число (в примере 99) — это коэффициент ошибок.
    Уровень сигнала сети измеряется в RSSI — стандартная условная единица для GSM.
    В документации Received Signal Strength Indication(RSSI)
    RSSI может принимать значение от 0 до 31.
    Сигнал выше значений 12-13 считается хорошим.
    Выше 15 считается отличным.

    Максимальным, практически никогда не бывает, так как оператор регулирует мощность сигнала в мобильных устройствах.
    Т.е. если Вы видите значение 30 или 31, это может свидетельствовать о проблемах со связью!
    Второй параметр это коэффициент ошибок. Значение в процентах
    В документации Bit Error Rate
    0 — Меньше чем 0.2%
    1 — 0.2% to 0.4%
    2 — 0.4% to 0.8%
    3 — 0.8% to 1.6%
    4 — 1.6% to 3.2%
    5 — 3.2% to 6.4%
    6 — 6.4% to 12.8%
    7 — Больше чем 12.8%
    99 — Неизвестно или не определено

    Собственно, хотелось бы в текущих тегах КП видеть не просто информацию связь (есть/нет), а еще и уровень приема, если это возможно.

    Понятно, что эту команду можно выполнить вручную и в логах посмотреть (Команда ТУ (2)-(Бинарная)-(строка) AT+CSQ, но для информативности она не помешает.

    • Этот ответ был изменен 4 года, 4 месяца назад от Mitrich.
    #14294
    manjey73
    Участник

    Кстати предложение переносить события через БД и обратно не лучшее решение.
    Каналы все равно будут созданы для БД Scada. но при этом потребуется устанавливать еще и стороннюю БД ? модуль экспорта умеет работать с БД Scada ? насколько помню нет…

    А вот допилить драйвер чтобы была возможность гибкой настройки было бы неплохо. Просто я боюсь что-то сломать в нем, ну и может в нем стоит добавить каких-то механизмов для расширения возможностей.
    Прикрутить то чтение шаблона наверное можно, но как прикрутить потом его использование более правильно, а не как я, как курица лапой…

    #14295
    manjey73
    Участник

    Кстати было бы удобно, если бы Модуль Экспорта умел работать с собственной БД Scada системы.
    Создали канал для чего-то (а в последствии если появятся текстовые базы) и тут же модулем кинули в этот канал текстовое сообщение из СМС.

    Далее обработка.

    #14296
    Romiros
    Участник

    Можно экспортировать через модуль в БД, а потом через KpDbImport назад в скаду :).

    А вообще, что мешает текстовые сообщения записать в события, или нужно их отображение непосредственно на схемах?

    #14297
    manjey73
    Участник

    В примере Mitrich отправляется SMS с кодом, Scada Модулем автоматического управления передает данные.

    Я посмотрел, в модуле есть управление по событиям, но ведь надо проверить разрешенный номер, и определить еще код команды.

    Вариант 2 — По команде через SMS устройство само вернет какие-то данные.

    Так чтобы экспортировать нужна дополнительно еще и БД, чтобы из нее сделать импорт еще. А для простых задач зачем это все ?

    Как вариант да, отображение на схемах в том числе, если прочесть хотелки — Уровень сигнала и регистрация в сети…

    • Этот ответ был изменен 4 года, 4 месяца назад от manjey73.
    #14300
    Mikhail
    Модератор

    Во входных каналах хранятся временные ряды. Записывать туда СМС неудобно, потому что СМС ближе к событиям по смыслу.

    #14301
    Mikhail
    Модератор

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

    #14302
    manjey73
    Участник

    Да, СМС ближе по смыслу к уведомлениям, но в СМС могут поступать данные. Ну например удаленный прибор по команде из СМС присылает данные. Что то типа Кситал как вариант.
    Ну и подобные системы. По этому и хотелось бы сделать некоторые дополнительные функции к драйверу а не реализовывать дополнительные модули.

    Тут вопрос в том, как привязывать шаблон к КП ? каким образом ?
    Второй момент все же сделать чтобы СМС попадало не только в текущие данные, но и сразу попало в БД. скажем запись БД раз в минуту (или в 30 сек. настроено), как правильно определить период записи БД и найти ближайшее и записать ? тогда на графиках будет точки записи полученных СМС

Просмотр 15 сообщений - с 16 по 30 (из 37 всего)
  • Вы должны авторизироваться для ответа в этой теме.