На днях начал я колхозить самодельную систему оповещения по SMS для серверной. Откопал старый сотовый телефон Siemens-M50 и провод COM-порта к нему. Провод модифицированный, с подачей питания. Прикрутил мобильник к Linux-серверу и стал разбираться, как им пользоваться: какие AT-команды он знает, как их отправлять в COM-порт, как получать ответ.
Оказалось, что в интернете очень много информации по этим телефонам, но у многих людей просто не получается пользоваться этой информацией, потому что в реале есть много неочевидных моментов, не зная которых ничего не получится сделать.
Поэтому я написал небольшую памятку о том, как работать с AT-модемом телефона Siemens через COM-порт. Рассматриваются вопросы:
- Как простыми средствами мониторить данные на COM-порте;
- Как набрать номер (какой командой позвонить) с телефона Siemens, подключенного через COM-порт;
- Как отправлять данные командами Bash, а не через терминал minicom.
Сама памятка размещена в моей базе знаний MyTetra, вот здесь:
Как правильно набрать номер на сотовом телефоне Siemens M50 через COM-порт
Все приемы работы справедливы для телефонов Siemens линейки Siemens C35...CX65.
В том же разделе собраны следующие сведения:
А как же отправлять SMS? Вначале я пробовал делать отправку по референсу, на низком уровне буквально по байтам. Но AT-модем не хотел такое понимать:
echo -n -e "AT+CMGS=30\x0d0001000B919721557142F8000013C8329BFD0699E5EF36A8F976A7E96F7908\x1a\x0d\x0a" > /dev/ttyS0
Потом попробовал smsd (ранее gnokii-smsd), но он тоже не заработал с моим телефоном. А потом нашел консольную программу scmx. Оказалось, что это то, что нужно! Мало того что она консольная и заработала с первого раза, так она сама русифицирована и у нее еще и man-страница на русском языке. Эта программа жестко цепляется за COM-порт и гарантированно отправляет сообщения. Даже если SMS-ка длинная и разбивается на несколько сообщений, scmx правильно все отправляет.
Раздел будет пополняться по мере моего самообразования в вопросах работы с COM-устройствами в операционной системе Linux.