Пользовательский компонент - передача данных по СМС

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Пользовательский компонент - передача данных по СМС

Сообщение Ворон226 »

Решили поставить на станке "свисток" (3G-modem) для передачи СМС-сообщений о состоянии станка? Я тоже!

Купил 3G-модем Huawei E173 от Мегафон.


1. Вставляем модем без симки в USB-порт.
2. Проверяем - видит ли его компьютер?
В консоли:
lsusb
Получаем:
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 004: ID 15d9:0a4d Dexon
Bus 002 Device 002: ID 04f3:0103 Elan Microelectronics Corp.
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 012: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Здесь № производителя: 12d1
№ изделия: 1001
Может пригодиться...
3. Проверяем список устройств USB:
sudo ls /dev/ttyUSB*

Получаем:
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB3

4. Установить пакеты usb-modeswitch и minicom
sudo apt-get install usb-modeswitch usb-modeswitch-data
и, на всякий случай:
sudo apt-get install tcl8.3 tcl8.4 tcl8.5

5. Установим программу gnokii:
sudo apt-get install gnokii

6.Создаем конфиг:
sudo touch /etc/sms.conf
sudo nano /etc/sms.conf


В конфиге прописали:

[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200

7. Вынули модем, вставили в него симку и вставили обратно.

8. Командой отправляем СМС:
echo "text" | gnokii --config /etc/sms.conf --sendsms +7XXXXXXXXXX

Работает!

Далее пишем пользовательский компонент.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Ворон226 »

Начнём делать сам компонент.

Например, по появлению на входе сигнала e-stop - отправляем СМС "АВАРИЯ"
По появлению сигнала mashine-on - "СТАНОК ВКЛЮЧЕН"
По появлению сигнала stop - "СТАНОК ОСТАНОВЛЕН"

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

Код: Выделить всё

#!/usr/bin/python
import hal
import os
import time

h=hal.component("smsform")
h.newpin("e-stop", hal.HAL_BIT, hal.HAL_IN)
h.newpin("mashine-on", hal.HAL_BIT, hal.HAL_IN)
h.newpin("stop", hal.HAL_BIT, hal.HAL_IN)
h.ready()
Затем прописываем "тело" компонента - основной цикл его работы:

Код: Выделить всё

try:
    while 1:
        if h['e-stop']==1:
            КОМАНДА по оправке СМС "АВАРИЯ"
            if h['mashine-on']==1:
                КОМАНДА по оправке СМС "СТАНОК ВКЛЮЧЕН"
                if h['stop']==1:
                    КОМАНДА по оправке СМС "СТАНОК ОСТАНОВЛЕН"
except KeyboardInterrupt:
     raise SystemExit
Осталось прописать в Питоне команду по отправке СМС, которая в консоли выглядит так:
echo "АВАРИЯ" | gnokii --config /etc/sms.conf --sendsms +7XXXXXXXXXX

Я предполагаю, что это можно сделать так:
os.system('echo "АВАРИЯ" | gnokii --config /etc/sms.conf --sendsms +7XXXXXXXXXX')

Буду пробовать. РАБОТАЕТ!
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Ворон226 »

Если же нам нужно отправить по СМС не слово, а значение переменной или входного пина нашего компонента, то делаем это командой:

os.system('echo "'+str(init)+'" | gnokii --config /etc/sms.conf --sendsms +79165122998')

. где init - это переменная


Прошу Мастеров просмотреть на ошибки/дополнения и буду переносить в ВИКИ.
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение nkp »

занятно))
компонент, я так понимаю,постоянно будет пытаться послать сообщение...
может алгоритм немного изменить?
не можем ли мы отследить удавшуюся передачу? после просто ждем в цикле...
произошло изменение состояния - передали ,получили подтверждение ,опять ждем...
если подтверждение не можем получить - то просто отправку делать один раз...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Serg »

Ворон226 писал(а):5. Установим программу gnokii:
Есть smstools - без граф. интерфейсов и прочей чепухи. Можно принимать и отправлять SMS'ки из ком. строки, всякими скриптами обрабатывать принятые SMS'ки и прочие аварии . Да и отправлять можно просто создавая файл с SMS'кой в определённом каталоге.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Ворон226 »

nkp, согласен. Нужно менять алгоритм. Проверка входа, сравнение с начальным значением, если изменение - СМС, изменение начального состояния.
UAVpilot, я порыскал в сети и нашел minicom и gnokii
Взял то, что быстро настраивается.

И вообще - давайте вместе формировать инструкцию в ВИКИ? Ведь могут быть разные варианты...
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Serg »

Ворон226 писал(а):я порыскал в сети и нашел minicom и gnokii

Код: Выделить всё

~$ apt-cache -n search sms
gammu-smsd - SMS message daemon
libgsmsd7 - SMS daemon helper library
gnokii-smsd - SMS Daemon for mobile phones
gnokii-smsd-mysql - SMSD plugin for MySQL storage backend
gnokii-smsd-pgsql - SMSD plugin for PostgreSQL storage backend
libsbsms-dev - Subband Sinusoidal Modeling Synthesis (development files)
libsbsms10 - Subband Sinusoidal Modeling Synthesis
libsms-send-perl - driver-based API for sending SMS messages
smsclient - A program for sending short messages (SM / SMS)
smstools - серверные инструменты работы с SMS для GSM модемов
Ворон226 писал(а):Взял то, что быстро настраивается.
/etc/smsd.conf:

Код: Выделить всё

devices = GSM1
alarmhandler = /usr/local/...../sbin/smsdalarm
eventhandler = /usr/local/...../sbin/smsd.event

[GSM1]
device = /dev/ttyS0
baudrate = 230400
incoming = yes
init = AT+CPMS="ME"
send_delay = 20
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Ворон226 »

Иногда после проверки
sudo ls /dev/ttyUSB*
модем определился как
/dev/ttyUSB_utps_diag /dev/ttyUSB_utps_modem /dev/ttyUSB_ и т.д.

Посмотреть какой файл находится в папке /etc/udev/rules.d/ - у меня находился 10-Huawei-Datacard.rules:

sudo echo 'SUBSYSTEM=="usb", SYSFS{idProduct}=="1001", SYSFS{idVendor}=="12d1", RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"' | sudo tee /etc/udev/rules.d/10-Huawei-Datacard.rules

Эти установки прописываются в этот файл.

Перегрузить компьютер и проверить
sudo ls /dev/ttyUSB*
Должно определиться как
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB3
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Serg »

Ворон226 писал(а):/etc/udev/rules.d/10-Huawei-Datacard.rules
Эти установки прописываются в этот файл.
Не надо так делать! Завтра ты что-нибудь проапгрейдишь, среди этого "что-нибудь" окажется пакет, в состав которого входит этот 10-Huawei-Datacard.rules и все твои изменения потеряются.
Правильнее просто создать там свой собственный файл.
Ворон226 писал(а):Перегрузить компьютер
или сделать так:

Код: Выделить всё

sudo udevadm control --reload-rules
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Ворон226 »

UAVpilot писал(а):
Ворон226 писал(а):/etc/udev/rules.d/10-Huawei-Datacard.rules
Эти установки прописываются в этот файл.
Не надо так делать! Завтра ты что-нибудь проапгрейдишь, среди этого "что-нибудь" окажется пакет, в состав которого входит этот 10-Huawei-Datacard.rules и все твои изменения потеряются.
Правильнее просто создать там свой собственный файл.
Т.е. взять и положить в папку /etc/udev/rules.d свой файл с именем, например, Huawei.rules с содержимым:
SUBSYSTEM=="usb", SYSFS{idProduct}=="1001", SYSFS{idVendor}=="12d1"", RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"
Так?
Или ещё нужно где-то прописывать пути к этому файлу? (я так думаю, что мы уже серьезно залезаем в структуру Linux?)
UAVpilot писал(а):
Ворон226 писал(а):Перегрузить компьютер
или сделать так:

Код: Выделить всё

sudo udevadm control --reload-rules
Это команда обновления конфигураций?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Serg »

Ворон226 писал(а):Так?
Или ещё нужно где-то прописывать пути к этому файлу? (я так думаю, что мы уже серьезно залезаем в структуру Linux?)
Так.
Ничего больше не нужно, udev читает все файлы по маске /etc/udev/rules.d/*.rules в алфавитном порядке.
Ворон226 писал(а):Это команда обновления конфигураций?
английским-же по белому написано: reload-rules :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
donvictorio
Мастер
Сообщения: 2457
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 683
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение donvictorio »

модем будет слать смс по какому-то событию?
боюсь представить, в каких условиях это может понадобиться.

это типа есть модем, есть симка, но нет на ней интернета (глубокая Сибирь, Таймыр, плато Путорана)

просто если есть свисток, есть симка, и эта тема постоянная, а не раз в месяц смс слать, то есть смысл получить от станка полную телеметрию в онлайне.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Пользовательский компонент - передача данных по СМС

Сообщение Ворон226 »

Разные бывают случаи. Например, нет у ПОЛУЧАТЕЛЯ интернета на телефоне. А до передаче полной информации о станке по интернету я ещё доберусь ;) Я ж "чайник" ;)
Хочешь быть счастливым? Будь им!
Ответить

Вернуться в «LinuxCNC»