Работа из командной строки с модемом на Toshiba AC-100
Одна из задач, которую я хочу решить дома — слать СМС, если произошло что-то непредвиденное дома. Ближайшая задача — СМС, если уровень СО2 повысился выше нормы или произошло повышение температуры выше 40° (т. е. дома что-то горит).
С датчиком я определился, расскажу как-нибудь в другой раз, разбираюсь как можно отправить СМС по событию. У меня дома лежит не при деле смартбук Тошиба ЭйСи-100, на который я относительно недавно установил Линукс.
Что хорошо — у него есть 3Г-модем, а значит возможность слать СМС, осталось научиться это делать. Для начала надо найти как это устройство отображается в Линуксе. Нашёлся модем быстро, устройство F3307 — это модем фирмы Эрикссон (до названия идут какие-то странные спецсимволы):
В логах видно, что это устройство «се́ло» на один из файлов /dev/ttyACM* (позднее испытания показали, что на первый):
С этими файлами работать просто — нужно отослать команду, потом передать возврат каретки, перевод строки и символ с кодом ноль. Потом прочитать что устройство ответило.
# Нужен баш версии 4 и выше
shopt -s lastpipe
function Say {
echo -en "$1\r\n\0" > /dev/ttyACM1
local line
cat -v < /dev/ttyACM1 |
while read -r line; do
[ "$line" = OK^M ] && return 0
[ "$line" = ERROR^M ] && return 1
[ "$line" = ^M ] || echo "${line/%^M/}"
done
}
# пример использования
Say AT+CGMI
В выходном потоке будет ответ модема, а в коде возврата — есть ли ошибка. Гугление показало, что отослать СМС при помощи команд очень просто, достаточно ввести две команды.
Теперь надо купить симку и попробовать.
Зачем так сложно? Есть же куча сервисов, предоставляющих АПИ для отправки СМС. И отдельное устройство не нужно, и дешевле обойдется.
Комментарий для Антон Морозов:
Среди них есть бесплатные и без каптчи?
Отдельное устройство нужно. Датчики сами что ли СМС будут слать?
Дешевле, чем у сотового оператора?
Комментарий для Антон Морозов:
Кстати, как у этого сервиса с надёжностью и доступностью? 100% времени работает? А то откажет или закроется, а у меня пожар в этот день. Отлично сэкономлю :)
А что Вы планируете делать, получив такую смс?
Комментарий для m-ivanov.livejournal.com:
Звонить 911 и срочно ехать домой, что же ещё?
А как будете тестировать?
Комментарий для blog.rk2.ru:
В чём проблема-то? Выставлю пороги ниже.
С АТ командами вы намучаетесь, если захотите слать кириллицу. Есть отличные утилиты для работы с модемами и сотовыми телефонами. Например, gnokii или gammu. Позволяют из командной строки рулить девайсом: слать/принимать смс, делать бекап и тд.
Комментарий для http://grishaev.me/:
Я уж посмотрел: http://www.i2r.ru/static/341/out_16996.shtml
Выглядит не очень-то сложно.
есть неплохая программка для отправки/получения смс
http://smstools3.kekekasvi.com
использовал для отправки смс через usb 3g модем
прекрасно работает и с кириллицей особых проблем не было
Комментарий для Линар:
Она в 50 раз сложнее, чем следует :) Да я уж почти всё написал, всё что надо в строчках наверху, надо только кодировать научиться и всё.
Гуглятся и бесплатные, но я не знаю, насколько можно на них положиться. Но модем же тоже не бесплатно это будет делать. У крупных сервисов, услугами которых пользуются большие компании, СМС стоит от 50 копеек и ниже. Некоторые на входе дают какое-то количество бесплатных СМС: smsaero.ru, например, дает 100, потом это стоит 19 копеек за каждое сообщение.
А капча зачем? Вы получаете логин и пароль и общаетесь с сервисом по SOAP, XMPP или просто GET/POST-запросами.
Подойдет любой компьютер с интернетом. Датчик, наверное, можно подключить к домашнему серверу или роутеру с линуксом, если что-то такое у вас есть.
Он не один, тысячи их. Учитывая их условно-бесплатность, можно зарегистрироваться на нескольких, положить на их счет по какой-то минимальной сумме и слать сообщения сразу через всех или по очереди. Как мне кажется, в условиях пожара в квартире самое узкое место — это наличие электричества дома. А 3G-модем тоже не гарантирует стопроцентную надежность, согласитесь.
Но если у вас есть ненужный компьютер с модемом, да еще и со своей батарейкой, и вы уже все написали, то возможно действительно не надо ничего менять :)
Комментарий для Антон Морозов:
Модем это будет слать напрямую оператору, ничего надёжнее этого быть не может.
Вы как будто каждое новое сообщение начинаете с нуля. У нас выходит не диалог, а серия диалогов. Вы мне сказали, что гейт удобен тем, что отдельное устройство не нужно, теперь вы мне говорите, что отдельное устройство всё-таки нужно.
Зачем так сложно, если можно слать напрямую через модем?
Как мне кажется, в условиях пожара в квартире самое узкое место — это наличие электричества дома.
Конечно. Только смартбука аккумулятор есть. Что ему электричество? Другое дело, что часть датчиков вырубится, надо думать о дублирующей системе. Да и ваша схема автоматически перестанет работать — где взять интернет без электричества?
Ничего надёжнее не придумать.
Комментарий для Евгения Степанищева:
Я сказал: «Если что-то такое у вас есть». Если уже есть сервер или уже есть роутер, то датчик можно подключить к нему.
Но в целом вы правы: батарейка решает главную проблему, поэтому решение использовать такое устройство многократно повышает надежность в любом случае. А как слать смски — через модем или интернет (через тот же модем) — это уже вопрос десятый. Мне как человеку, не искушенному во всех этих сокетах, возвратах кареток, нулевых символах и прочих низкоуровневых штуках, это показалось сильно сложнее, чем послать простой POST-запрос. Для вас, возможно, это не аргумент.
Прошу прощения, что вызвал у вас раздражение, я не хотел :)
Комментарий для Антон Морозов:
Я не раздражён, просто не вижу предмета дискуссии :)
Комментарий для Антон Морозов:
Код, который работает с модемом, кстати, в статье приведён, это он целиком, больше ничего не нужно (разве что если я захочу русскоязычные SMS его придётся серьёзно дополнить, но пока мне и латиница подойдёт).
Женя, 911 тебе тупо выломает двери, даже если выедут. И в случае пожара лично тебе ехать издалека уже бессмыссленно. Ты хочешь одеялком “накрыть очаг возгорания“, как истинный пионер? )
Разумнее выглядят страховка и дружба с соседями. Последнее сложнее, чем программировать модемы, да ) но можно.
Комментарий для Шалтай-Болтай:
Мне нужно 10—15 минут, чтобы приехать, если пробок нет.
Я могу приехать раньше их и открыть дверь. Что значит «даже если»?
Какой в этом смысл? У меня соседи работают так же, как и я.
Даже если — буквально. Не опыта? Они не поедут по смс.
У соседей есть бабушки. Если нет, можешь не дружить. Но «лучше жить в мире, чем в злобе».
Комментарий для Шалтай-Болтай:
По какой СМС? СМС я получу, им — позвоню.
У соседей бабушки дома не живут. У меня тут нет квартир «три поколения на одной площади».