Відправлення та прийом sms через gsm шлюз, blog

Передісторія

Одного разу виникло питання про те, як оперативно отримувати інформацію про стан мережі, коли знаходишся не у робочого місця.
Шляхом нехитрих роздумів був знайдений єдиний вихід: відсилання SMS-повідомлень системою моніторингу про ключові події.

Для реалізації цього проекту були куплені GSM модем Siemens MC35i і 1-портовий асинхронний сервер Moxa NPort-5110. що забезпечує перетворення інтерфейсу RS-232 в Ethernet і звичайно ж сервер під FreeBSD 🙂

Moxa NPort-5110 був придбаний для мети відсилання SMS-повідомлень з будь-якого сегменту мережі, а не тільки з машини, до якої підключений GSM-шлюз.

Теорія з прикладами

Отже, конфігурація схеми наступна:

GSM модем включений в Moxa NPort-5110 кабелем RS-232.

де CTRL + Z - комбінація клавіш, натискання якої означає кінець повідомлення.

З відправкою повідомлення «Ахтунг!» На кирилиці на номер +79101234567 все сильно складніше, тому що повідомлення повинно йти пакетом в форматі PDU в кодуванні UCS2 (Юнікодние кодування, підтримує в тому числі кирилицю), а тому розглянемо цей випадок докладніше.

Розберемо детальніше цю «кашу»:

Формат PDU-пакета є 16-річної послідовність, що передається человекочітаемой рядком (НЕ ASCII-представлення самих 16-ковий чисел). Оригінал опису (збережена копія) формату PDU пакета (англійською).

Кодування відправки SMS повідомлень на PHP

Декодування прийнятих SMS повідомлень на PHP

Команди для читання SMS з GSM модемів:

at + cmgf = 1 - виводити повідомлення в упакованому (читабельному) вигляді

at + cmgl = "all" - вивести повідомлення

at + cmgr = n - прочитати окреме повідомлення

at + cmgd = n - видалити повідомлення з SIM-карти

Сам прийом СМС повідомлень з GSM шлюзу не сильно відрізняється від передачі (на основі вищенаведеної відправки пропонується вам самостійно реалізувати це. Опишу тільки функцію для перетворення повідомлення з «тарабарської» на російську:

Схожі статті