OpenHab и USB GSM Stick
Добавлено: Вс июн 10, 2018 5:12 pm
Нужно было отправлять из OpenHab информационные сообщение на телефоны семьи о важных и не очень событиях, до этого с этим отлично справлялся плагин telegram но его заблокировали.
Был найдет USB GSM Modem от МТС (ZTE MF192+) и SIM-карта от Билайна с небольшим балансом, сам модем был разблокирован от одного оператора следуя инструкциям тут https://www.youtube.com/watch?v=JHphBcH9lHM
После модем подключен к серверу где живет Openhab+debian8.5, он сразу появился с писке USB-устройств:
было
стало (вытащил wifi донгл и воткнул на его место модем)
Смотрим что появилось в USB Портах:
Смотрим что в логах:
Далее ставим пакет gammu и gammu-smsd
[/code]
Запускаем поиск и отображение информации по модему:
Это говорит о том, что модем видим и с ним можно работать.
Теперь нужно настроить первоначально конфиг, для этого запускаем ГУИ и вводим в пути к устройству что выдала предыдущая команда (/dev/ttyACM0) и настройка уровня логирования (по желанию):
смотрим какие у нас принятые СМС (их нет):
Проверяем отправку SMS:
Даем права на запись к порт модема для всех
Теперь настройки для Openhab 1.8.
Для получения баланса с SIM-карты создаем файл balance.sh, вносим в его следующий код:
даем на него права
Для отправки SMS создаем файл sendsms.sh, вносим в его следующий код:
даем на него права
Теперь конфигурим конфиги Openhab, создаем два итема, в одном будет храниться баланс SIM-карты, чтобы было удобнее смотреть зватает ли денег на счету и во время его пополнить, на вором будет дата и время обновления данных о балансе.
в /etc/openhab/configurations/items/default.items добавляем следующие строки:
В /etc/openhab/configurations/sitemaps/default.sitemap для нужного места добавляем:
В /etc/openhab/configurations/rules/default.rules добавляем одно правило обновление баланса, раз в сутки:
и в нужном правиле, где требуется информировать себя о каком-либо событии вызываем ранее созданный файл вот так:
P.S. Настройки для Openhab могут отличаться от Ваших, здесь приведены примеры конкретно моих настроек, которые можно по аналогии использовать у Вас.
Прием SMS пока не реализован, т.к. не было времени разобраться с демоном gammu, который принимает сообщения и вызывает скрипты.
Использовались следующие ссылки:
http://onedev.net/post/835
https://community.openhab.org/t/buildin ... inux/36559
Был найдет USB GSM Modem от МТС (ZTE MF192+) и SIM-карта от Билайна с небольшим балансом, сам модем был разблокирован от одного оператора следуя инструкциям тут https://www.youtube.com/watch?v=JHphBcH9lHM
После модем подключен к серверу где живет Openhab+debian8.5, он сразу появился с писке USB-устройств:
было
Код: Выделить всё
root@debian:~# lsusb
Bus 001 Device 003: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
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 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@debian:~#
Код: Выделить всё
root@debian:~# lsusb
Bus 001 Device 008: ID 19d2:1218 ZTE WCDMA Technologies MSM MF652
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
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 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@debian:~#
Код: Выделить всё
root@debian:~# cd /dev/serial/by-id
root@debian:/dev/serial/by-id# ls
usb-1a86_USB2.0-Serial-if00-port0 usb-ZTE_MF192+_80471762268D9C5D308EE9EB04325578878ACCBB-if03 usb-ZTE_MF192+_80471762268D9C5D308EE9EB04325578878ACCBB-if07
usb-ZTE_MF192+_80471762268D9C5D308EE9EB04325578878ACCBB-if01 usb-ZTE_MF192+_80471762268D9C5D308EE9EB04325578878ACCBB-if05
root@debian:/dev/serial/by-id#
Код: Выделить всё
root@debian:/dev/serial/by-id# dmesg | grep Serial
[4513614.608403] usb 1-4: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[4513614.608435] usb 1-4: SerialNumber: 80471762268D9C5D308EE9EB04325578878ACCBB
[4513624.989405] usb 1-4: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[4513624.989423] usb 1-4: SerialNumber: 80471762268D9C5D308EE9EB04325578878ACCBB
root@debian:
Код: Выделить всё
[code]root@debian:/dev/serial/by-id# apt-get install gammu gammu-smsd
Запускаем поиск и отображение информации по модему:
Код: Выделить всё
root@debian:/dev/serial/by-id# gammu identify
Warning: No configuration file found!
Warning: No configuration read, using builtin defaults!
Device : /dev/ttyACM0
Manufacturer : ZTE Incorporated
Model : unknown (MF192+)
Firmware : Modem mode,BD_MF192+V1.0.0B04
IMEI : 355582048737546
SIM IMSI : 250997276943708
root@debian:/dev/serial/by-id#
Теперь нужно настроить первоначально конфиг, для этого запускаем ГУИ и вводим в пути к устройству что выдала предыдущая команда (/dev/ttyACM0) и настройка уровня логирования (по желанию):
Код: Выделить всё
gammu-config
Код: Выделить всё
root@debian:/dev/serial/by-id# gammu getallsms
0 SMS parts in 0 SMS sequences
root@debian:/dev/serial/by-id#
Код: Выделить всё
root@debian:/dev/serial/by-id# gammu sendsms TEXT '+79160000000' -unicode -report -text 'СМС отправленно с модема :)'
If you want break, press Ctrl+C...
Sending SMS 1/1....waiting for network answer..OK, message reference=55
root@debian:/dev/serial/by-id#
Код: Выделить всё
sudo chmod -R 777 /dev/ttyACM0
Для получения баланса с SIM-карты создаем файл balance.sh, вносим в его следующий код:
Код: Выделить всё
#!/bin/sh
echo "`date`: getbalance start " >> /etc/openhab/configurations/SMS.log
#sending ussd command
res=$(/usr/bin/gammu getussd *102# | grep "Service reply" | sed -e "s/.*\"\(.*\)\".*/\1/" | xxd -r -ps | iconv -f=UTF-16BE -t=UTF-8)
#echo result
echo "`date`: getbalance result $?" >> /etc/openhab/configurations/SMS.log
echo "`date`: getbalance result text $res" >> /etc/openhab/configurations/SMS.log
echo $?
#send to openhab result
wget -qO- http://localhost:8080/CMD?SMSBalance=$res
echo "`date`: getbalance result $?" >> /etc/openhab/configurations/SMS.log
echo $?
Код: Выделить всё
chmod -R 777 balance.sh
Код: Выделить всё
#!/bin/sh
to=+79160000000
text=$*
echo "`date`: SMS sending to $to" >> /etc/openhab/configurations/SMS.log
echo "`date`: SMS text $text" >> /etc/openhab/configurations/SMS.log
#echo "`date`: SMS text $text"
#sending sms
res=$(/usr/bin/gammu sendsms TEXT ''$to'' -unicode -report -text "$text")
echo "`date`: sendsms result text $res" >> /etc/openhab/configurations/SMS.log
#echo $res
#echo result
echo "`date`: SMS send result $?" >> /etc/openhab/configurations/SMS.log
echo $?
Код: Выделить всё
chmod -R 777 sendsms.sh
в /etc/openhab/configurations/items/default.items добавляем следующие строки:
Код: Выделить всё
String SMSBalance "Balance of GSM Modem [%s]" (MySystem)
DateTime SMSBalance_LastUpdate "Last seen [%1$td-%1$tm-%1$tY %1$tH:%1$tM:%1$tS]" <clock>
Код: Выделить всё
Text item=SMSBalance icon="energy"
Text item=SMSBalance_LastUpdate
Код: Выделить всё
rule "Get balance GSM modem"
when
System started or
Time cron "0 0 08 * * ?"
then
executeCommandLine("/etc/openhab/configurations/balance.sh")
end
rule "SMSBalance was last seen"
when
Item SMSBalance received update
then
postUpdate(SMSBalance_LastUpdate, new DateTimeType())
end
Код: Выделить всё
executeCommandLine("/etc/openhab/configurations/sendsms.sh@@Села батарейка в датчике влажности спальни: " + Voltage_8302000000000000.state + " вольт"")
Прием SMS пока не реализован, т.к. не было времени разобраться с демоном gammu, который принимает сообщения и вызывает скрипты.
Использовались следующие ссылки:
http://onedev.net/post/835
https://community.openhab.org/t/buildin ... inux/36559