Пользовательский компонент - передача данных по СМС
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Пользовательский компонент - передача данных по СМС
Решили поставить на станке "свисток" (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
Работает!
Далее пишем пользовательский компонент.
Купил 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: Пользовательский компонент - передача данных по СМС
Начнём делать сам компонент.
Например, по появлению на входе сигнала e-stop - отправляем СМС "АВАРИЯ"
По появлению сигнала mashine-on - "СТАНОК ВКЛЮЧЕН"
По появлению сигнала stop - "СТАНОК ОСТАНОВЛЕН"
Начинаем прописывать пользовательский компонент:
Сначала подключаем необходимые службы и определяем входные и выходные пины:
Затем прописываем "тело" компонента - основной цикл его работы:
Осталось прописать в Питоне команду по отправке СМС, которая в консоли выглядит так:
echo "АВАРИЯ" | gnokii --config /etc/sms.conf --sendsms +7XXXXXXXXXX
Я предполагаю, что это можно сделать так:
os.system('echo "АВАРИЯ" | gnokii --config /etc/sms.conf --sendsms +7XXXXXXXXXX')
Буду пробовать. РАБОТАЕТ!
Например, по появлению на входе сигнала 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: Пользовательский компонент - передача данных по СМС
Если же нам нужно отправить по СМС не слово, а значение переменной или входного пина нашего компонента, то делаем это командой:
os.system('echo "'+str(init)+'" | gnokii --config /etc/sms.conf --sendsms +79165122998')
. где init - это переменная
Прошу Мастеров просмотреть на ошибки/дополнения и буду переносить в ВИКИ.
os.system('echo "'+str(init)+'" | gnokii --config /etc/sms.conf --sendsms +79165122998')
. где init - это переменная
Прошу Мастеров просмотреть на ошибки/дополнения и буду переносить в ВИКИ.
Хочешь быть счастливым? Будь им!
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Пользовательский компонент - передача данных по СМС
занятно))
компонент, я так понимаю,постоянно будет пытаться послать сообщение...
может алгоритм немного изменить?
не можем ли мы отследить удавшуюся передачу? после просто ждем в цикле...
произошло изменение состояния - передали ,получили подтверждение ,опять ждем...
если подтверждение не можем получить - то просто отправку делать один раз...
компонент, я так понимаю,постоянно будет пытаться послать сообщение...
может алгоритм немного изменить?
не можем ли мы отследить удавшуюся передачу? после просто ждем в цикле...
произошло изменение состояния - передали ,получили подтверждение ,опять ждем...
если подтверждение не можем получить - то просто отправку делать один раз...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Пользовательский компонент - передача данных по СМС
Есть smstools - без граф. интерфейсов и прочей чепухи. Можно принимать и отправлять SMS'ки из ком. строки, всякими скриптами обрабатывать принятые SMS'ки и прочие аварии . Да и отправлять можно просто создавая файл с SMS'кой в определённом каталоге.Ворон226 писал(а):5. Установим программу gnokii:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Пользовательский компонент - передача данных по СМС
nkp, согласен. Нужно менять алгоритм. Проверка входа, сравнение с начальным значением, если изменение - СМС, изменение начального состояния.
UAVpilot, я порыскал в сети и нашел minicom и gnokii
Взял то, что быстро настраивается.
И вообще - давайте вместе формировать инструкцию в ВИКИ? Ведь могут быть разные варианты...
UAVpilot, я порыскал в сети и нашел minicom и gnokii
Взял то, что быстро настраивается.
И вообще - давайте вместе формировать инструкцию в ВИКИ? Ведь могут быть разные варианты...
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Пользовательский компонент - передача данных по СМС
Ворон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 модемов/etc/smsd.conf:Ворон226 писал(а):Взял то, что быстро настраивается.
Код: Выделить всё
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: Пользовательский компонент - передача данных по СМС
Иногда после проверки
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
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: Пользовательский компонент - передача данных по СМС
Не надо так делать! Завтра ты что-нибудь проапгрейдишь, среди этого "что-нибудь" окажется пакет, в состав которого входит этот 10-Huawei-Datacard.rules и все твои изменения потеряются.Ворон226 писал(а):/etc/udev/rules.d/10-Huawei-Datacard.rules
Эти установки прописываются в этот файл.
Правильнее просто создать там свой собственный файл.
или сделать так:Ворон226 писал(а):Перегрузить компьютер
Код: Выделить всё
sudo udevadm control --reload-rulesЯ не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Пользовательский компонент - передача данных по СМС
Т.е. взять и положить в папку /etc/udev/rules.d свой файл с именем, например, Huawei.rules с содержимым:UAVpilot писал(а):Не надо так делать! Завтра ты что-нибудь проапгрейдишь, среди этого "что-нибудь" окажется пакет, в состав которого входит этот 10-Huawei-Datacard.rules и все твои изменения потеряются.Ворон226 писал(а):/etc/udev/rules.d/10-Huawei-Datacard.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: Пользовательский компонент - передача данных по СМС
Так.Ворон226 писал(а):Так?
Или ещё нужно где-то прописывать пути к этому файлу? (я так думаю, что мы уже серьезно залезаем в структуру Linux?)
Ничего больше не нужно, udev читает все файлы по маске /etc/udev/rules.d/*.rules в алфавитном порядке.
английским-же по белому написано: reload-rulesВорон226 писал(а):Это команда обновления конфигураций?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- donvictorio
- Мастер
- Сообщения: 2457
- Зарегистрирован: 11 окт 2012, 16:26
- Репутация: 683
- Настоящее имя: Виктор
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Пользовательский компонент - передача данных по СМС
модем будет слать смс по какому-то событию?
боюсь представить, в каких условиях это может понадобиться.
это типа есть модем, есть симка, но нет на ней интернета (глубокая Сибирь, Таймыр, плато Путорана)
просто если есть свисток, есть симка, и эта тема постоянная, а не раз в месяц смс слать, то есть смысл получить от станка полную телеметрию в онлайне.
боюсь представить, в каких условиях это может понадобиться.
это типа есть модем, есть симка, но нет на ней интернета (глубокая Сибирь, Таймыр, плато Путорана)
просто если есть свисток, есть симка, и эта тема постоянная, а не раз в месяц смс слать, то есть смысл получить от станка полную телеметрию в онлайне.
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Пользовательский компонент - передача данных по СМС
Разные бывают случаи. Например, нет у ПОЛУЧАТЕЛЯ интернета на телефоне. А до передаче полной информации о станке по интернету я ещё доберусь
Я ж "чайник" 
Хочешь быть счастливым? Будь им!