Страница 1 из 1
Пользовательский компонент - передача данных по СМС
Добавлено: 18 апр 2016, 15:42
Ворон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
Работает!
Далее пишем пользовательский компонент.
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 18 апр 2016, 16:20
Ворон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')
Буду пробовать. РАБОТАЕТ!
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 18 апр 2016, 16:41
Ворон226
Если же нам нужно отправить по СМС не слово, а значение переменной или входного пина нашего компонента, то делаем это командой:
os.system('echo "'+str(init)+'" | gnokii --config /etc/sms.conf --sendsms +79165122998')
. где init - это переменная
Прошу Мастеров просмотреть на ошибки/дополнения и буду переносить в ВИКИ.
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 18 апр 2016, 17:27
nkp
занятно))
компонент, я так понимаю,постоянно будет пытаться послать сообщение...
может алгоритм немного изменить?
не можем ли мы отследить удавшуюся передачу? после просто ждем в цикле...
произошло изменение состояния - передали ,получили подтверждение ,опять ждем...
если подтверждение не можем получить - то просто отправку делать один раз...
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 18 апр 2016, 17:41
Serg
Ворон226 писал(а):5. Установим программу gnokii:
Есть smstools - без граф. интерфейсов и прочей чепухи. Можно принимать и отправлять SMS'ки из ком. строки, всякими скриптами обрабатывать принятые SMS'ки и прочие аварии . Да и отправлять можно просто создавая файл с SMS'кой в определённом каталоге.
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 18 апр 2016, 18:20
Ворон226
nkp, согласен. Нужно менять алгоритм. Проверка входа, сравнение с начальным значением, если изменение - СМС, изменение начального состояния.
UAVpilot, я порыскал в сети и нашел minicom и gnokii
Взял то, что быстро настраивается.
И вообще - давайте вместе формировать инструкцию в ВИКИ? Ведь могут быть разные варианты...
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 19 апр 2016, 13:32
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
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 19 апр 2016, 23:57
Ворон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
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 20 апр 2016, 10:27
Serg
Ворон226 писал(а):/etc/udev/rules.d/10-Huawei-Datacard.rules
Эти установки прописываются в этот файл.
Не надо так делать! Завтра ты что-нибудь проапгрейдишь, среди этого "что-нибудь" окажется пакет, в состав которого входит этот 10-Huawei-Datacard.rules и все твои изменения потеряются.
Правильнее просто создать там свой собственный файл.
Ворон226 писал(а):Перегрузить компьютер
или сделать так:
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 20 апр 2016, 20:49
Ворон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 писал(а):Перегрузить компьютер
или сделать так:
Это команда обновления конфигураций?
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 20 апр 2016, 22:42
Serg
Ворон226 писал(а):Так?
Или ещё нужно где-то прописывать пути к этому файлу? (я так думаю, что мы уже серьезно залезаем в структуру Linux?)
Так.
Ничего больше не нужно, udev читает все файлы по маске /etc/udev/rules.d/*.rules в алфавитном порядке.
Ворон226 писал(а):Это команда обновления конфигураций?
английским-же по белому написано: reload-rules

Re: Пользовательский компонент - передача данных по СМС
Добавлено: 20 апр 2016, 23:01
donvictorio
модем будет слать смс по какому-то событию?
боюсь представить, в каких условиях это может понадобиться.
это типа есть модем, есть симка, но нет на ней интернета (глубокая Сибирь, Таймыр, плато Путорана)
просто если есть свисток, есть симка, и эта тема постоянная, а не раз в месяц смс слать, то есть смысл получить от станка полную телеметрию в онлайне.
Re: Пользовательский компонент - передача данных по СМС
Добавлено: 20 апр 2016, 23:22
Ворон226
Разные бывают случаи. Например, нет у ПОЛУЧАТЕЛЯ интернета на телефоне. А до передаче полной информации о станке по интернету я ещё доберусь

Я ж "чайник"
