Работа из командной строки с модемом на Toshiba AC-100

Одна из задач, которую я хочу решить дома — слать СМС, если произошло что-то непредвиденное дома. Ближайшая задача — СМС, если уровень СО2 повысился выше нормы или произошло повышение температуры выше 40° (т.е. дома что-то горит).

С датчиком я определился, расскажу как-нибудь в другой раз, разбираюсь как можно отправить СМС по событию. У меня дома лежит не при деле смартбук Тошиба ЭйСи-100, на который я относительно недавно установил Линукс.

Что хорошо — у него есть 3Г-модем, а значит возможность слать СМС, осталось научиться это делать. Для начала надо найти как это устройство отображается в Линуксе. Нашёлся модем быстро, устройство F3307 — это модем фирмы Эрикссон (до названия идут какие-то странные спецсимволы): Модем фирмы Эрикссон (43.48КиБ) В логах видно, что это устройство «се́ло» на один из файлов /dev/ttyACM* (позднее испытания показали, что на первый): Логи (26.19КиБ) С этими файлами работать просто — нужно отослать команду, потом передать возврат каретки, перевод строки и символ с кодом ноль. Потом прочитать что устройство ответило.
# Нужен баш версии 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
В выходном потоке будет ответ модема, а в коде возврата — есть ли ошибка. Гугление показало, что отослать СМС при помощи команд очень просто, достаточно ввести две команды.

Теперь надо купить симку и попробовать.
11 июля 2013 22:45

Антон Морозов (инкогнито)
12 июля 2013, 07:08

Зачем так сложно? Есть же куча сервисов, предоставляющих АПИ для отправки СМС. И отдельное устройство не нужно, и дешевле обойдется.

Евгений Степанищев (bolknote.ru)
12 июля 2013, 07:25, ответ предназначен Антон Морозов

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

Евгений Степанищев (bolknote.ru)
12 июля 2013, 07:25, ответ предназначен Антон Морозов

Кстати, как у этого сервиса с надёжностью и доступностью? 100% времени работает? А то откажет или закроется, а у меня пожар в этот день. Отлично сэкономлю :)

Михаил Иванов (m-ivanov.livejournal.com)
12 июля 2013, 08:10

А что Вы планируете делать, получив такую смс?

Евгений Степанищев (bolknote.ru)
12 июля 2013, 08:24, ответ предназначен Михаил Иванов (m-ivanov.livejournal.com):

Звонить 911 и срочно ехать домой, что же ещё?

Vlad Frost (blog.rk2.ru)
12 июля 2013, 09:20

А как будете тестировать?

Евгений Степанищев (bolknote.ru)
12 июля 2013, 09:24, ответ предназначен Vlad Frost (blog.rk2.ru):

В чём проблема-то? Выставлю пороги ниже.

http://grishaev.me/ (инкогнито)
12 июля 2013, 10:06

С АТ командами вы намучаетесь, если захотите слать кириллицу. Есть отличные утилиты для работы с модемами и сотовыми телефонами. Например, gnokii или gammu. Позволяют из командной строки рулить девайсом: слать/принимать смс, делать бекап и тд.

Евгений Степанищев (bolknote.ru)
12 июля 2013, 10:19, ответ предназначен http://grishaev.me/

Я уж посмотрел: http://www.i2r.ru/static/341/out_16996.shtml

Выглядит не очень-то сложно.

Линар (инкогнито)
12 июля 2013, 12:33

есть неплохая программка для отправки/получения смс
http://smstools3.kekekasvi.com
использовал для отправки смс через usb 3g модем
прекрасно работает и с кириллицей особых проблем не было

Евгений Степанищев (bolknote.ru)
12 июля 2013, 12:48, ответ предназначен Линар

Она в 50 раз сложнее, чем следует :) Да я уж почти всё написал, всё что надо в строчках наверху, надо только кодировать научиться и всё.

Антон Морозов (инкогнито)
13 июля 2013, 10:42

Среди них есть бесплатные и без каптчи?
Дешевле, чем у сотового оператора?
Гуглятся и бесплатные, но я не знаю, насколько можно на них положиться. Но модем же тоже не бесплатно это будет делать. У крупных сервисов, услугами которых пользуются большие компании, СМС стоит от 50 копеек и ниже. Некоторые на входе дают какое-то количество бесплатных СМС: smsaero.ru, например, дает 100, потом это стоит 19 копеек за каждое сообщение.

А капча зачем? Вы получаете логин и пароль и общаетесь с сервисом по SOAP, XMPP или просто GET/POST-запросами.
Отдельное устройство нужно. Датчики сами что ли СМС будут слать?
Подойдет любой компьютер с интернетом. Датчик, наверное, можно подключить к домашнему серверу или роутеру с линуксом, если что-то такое у вас есть.
Кстати, как у этого сервиса с надёжностью и доступностью? 100% времени работает? А то откажет или закроется, а у меня пожар в этот день. Отлично сэкономлю :)
Он не один, тысячи их. Учитывая их условно-бесплатность, можно зарегистрироваться на нескольких, положить на их счет по какой-то минимальной сумме и слать сообщения сразу через всех или по очереди. Как мне кажется, в условиях пожара в квартире самое узкое место — это наличие электричества дома. А 3G-модем тоже не гарантирует стопроцентную надежность, согласитесь.

Но если у вас есть ненужный компьютер с модемом, да еще и со своей батарейкой, и вы уже все написали, то возможно действительно не надо ничего менять :)

Евгений Степанищев (bolknote.ru)
13 июля 2013, 10:53, ответ предназначен Антон Морозов

Но модем же тоже не бесплатно это будет делать. У крупных сервисов, услугами которых пользуются большие компании, СМС стоит от 50 копеек и ниже. Некоторые на входе дают какое-то количество бесплатных СМС: smsaero.ru, например, дает 100, потом это стоит 19 копеек за каждое сообщение.
Модем это будет слать напрямую оператору, ничего надёжнее этого быть не может.
Подойдет любой компьютер с интернетом. Датчик, наверное, можно подключить к домашнему серверу или роутеру с линуксом, если что-то такое у вас есть.
Вы как будто каждое новое сообщение начинаете с нуля. У нас выходит не диалог, а серия диалогов. Вы мне сказали, что гейт удобен тем, что отдельное устройство не нужно, теперь вы мне говорите, что отдельное устройство всё-таки нужно.
Он не один, тысячи их. Учитывая их условно-бесплатность, можно зарегистрироваться на нескольких, положить на их счет по какой-то минимальной сумме и слать сообщения сразу через всех или по очереди.
Зачем так сложно, если можно слать напрямую через модем?
Как мне кажется, в условиях пожара в квартире самое узкое место — это наличие электричества дома.
Конечно. Только смартбука аккумулятор есть. Что ему электричество? Другое дело, что часть датчиков вырубится, надо думать о дублирующей системе. Да и ваша схема автоматически перестанет работать — где взять интернет без электричества?
А 3G-модем тоже не гарантирует стопроцентную надежность, согласитесь.
Ничего надёжнее не придумать.

Антон Морозов (инкогнито)
13 июля 2013, 11:42, ответ предназначен Евгений Степанищев (bolknote.ru):

Вы как будто каждое новое сообщение начинаете с нуля. У нас выходит не диалог, а серия диалогов. Вы мне сказали, что гейт удобен тем, что отдельное устройство не нужно, теперь вы мне говорите, что отдельное устройство всё-таки нужно.
Я сказал: "Если что-то такое у вас есть". Если уже есть сервер или уже есть роутер, то датчик можно подключить к нему.

Но в целом вы правы: батарейка решает главную проблему, поэтому решение использовать такое устройство многократно повышает надежность в любом случае. А как слать смски — через модем или интернет (через тот же модем) — это уже вопрос десятый. Мне как человеку, не искушенному во всех этих сокетах, возвратах кареток, нулевых символах и прочих низкоуровневых штуках, это показалось сильно сложнее, чем послать простой POST-запрос. Для вас, возможно, это не аргумент.

Прошу прощения, что вызвал у вас раздражение, я не хотел :)

Евгений Степанищев (bolknote.ru)
13 июля 2013, 12:01, ответ предназначен Антон Морозов

Прошу прощения, что вызвал у вас раздражение, я не хотел :)
Я не раздражён, просто не вижу предмета дискуссии :)

Евгений Степанищев (bolknote.ru)
13 июля 2013, 12:02, ответ предназначен Антон Морозов

Код, который работает с модемом, кстати, в статье приведён, это он целиком, больше ничего не нужно (разве что если я захочу русскоязычные SMS его придётся серьёзно дополнить, но пока мне и латиница подойдёт).

Шалтай-Болтай (инкогнито)
21 июля 2013, 13:28

Женя, 911 тебе тупо выломает двери, даже если выедут. И в случае пожара лично тебе ехать издалека уже бессмыссленно. Ты хочешь одеялком “накрыть очаг возгорания“, как истинный пионер? )

Разумнее выглядят страховка и дружба с соседями. Последнее сложнее, чем программировать модемы, да ) но можно.

Евгений Степанищев (bolknote.ru)
21 июля 2013, 14:24, ответ предназначен Шалтай-Болтай

И в случае пожара лично тебе ехать издалека уже бессмыссленно.
Мне нужно 10—15 минут, чтобы приехать, если пробок нет.
Женя, 911 тебе тупо выломает двери, даже если выедут.
Я могу приехать раньше их и открыть дверь. Что значит «даже если»?
Разумнее выглядят страховка и дружба с соседями.
Какой в этом смысл? У меня соседи работают так же, как и я.

Шалтай-Болтай (инкогнито)
22 июля 2013, 09:08

Даже если - буквально. Не опыта? Они не поедут по смс.

У соседей есть бабушки. Если нет, можешь не дружить. Но "лучше жить в мире, чем в злобе".

Евгений Степанищев (bolknote.ru)
22 июля 2013, 11:10, ответ предназначен Шалтай-Болтай

Они не поедут по смс.
По какой СМС? СМС я получу, им — позвоню.
У соседей есть бабушки.
У соседей бабушки дома не живут. У меня тут нет квартир «три поколения на одной площади».

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)