Jump to content
Sign in to follow this  
I am mechanic

Gsm-Диспетчер Для Такси На Базе Asterisk

Recommended Posts

С почином, у меня теперь свой блог...

Начнем с повторения моего описания GSM-Диспетчера такси перенесено отсюда:http://forum.cxem.net/index.php?showtopic=151447&st=0

Программно-аппаратный на базе GSM-сети, автономный (no human) "Диспетчер такси" на базе PBX Asterisk, MySQL. Одна из фишек Диспетчера (callback) обратный звонок клиенту при вызове такси - сберегает баланс клиента. И многое другое. Администратор Диспетчера получает доступ со своего телефона, для внесения и удаления сотовых телефонов такси в базу данных, посредством набора с клавиатуры (через dtmf-сигнализацию). После этого - Сервер сам вносит в очередь сотовые таксистов и удаляет в конце работы, при дозвоне на служебный номер системы, узнавая ИХ по номеру телефона - без допнабора. Т.е. позвонил на номер - система узнала и зарегала, ты на работе. Позвонил второй раз удален из системы, на отдых.. Интернет и Человек-диспетчер системе НЕ нужны. Работает везде где есть GSM-сеть и розетка 220. Возможно расширение и клонирование Системы. Подскажу где купить оборудование. При желании можно купить оборудование, с поддержкой в дальнейшем по удаленке, объяснялке. Система отлажена и опробована, требуется тестирование в работе. В данный момент Система вертится на Rasp Pi с USB-хабом (внеш. питание) и думается что для двух-четырех донглов этого достаточно, иначе ставим на более мощное железо и lets go...

Есть фильтрация на донгле с каллбеком по префиксу номеров... тэе с платных номеров (или другого региона) облом - каллбека на платник или на леводалекий номер не будет...

Если достали клиенты, сил нет... Есть "черный список" внесение номеров в который, осуществляет админ со своего телефона, также - посредством dtmf-сигнализации и удаляет номера также, через нее самую...

Есть следующее, клиент вызвавший такси - может отменить вызов... Работает это так: клиент повторно дозванивается на донгл с каллбеком , получает каллбек, Система знает номер телефона вызванного такси и соединяет его именно с Ним...

Также и такси приехав по месту вызова, может позвонить на донгл с каллбеком (номер вызова такси), получив каллбек, Система знает номер клиента который вызвал Этого таксиста и соединит его именно с Ним... Без какого либо допнабора...

Есть запись Всех разговоров между клиентами и такси...О чем предупреждается при досвоне на клиентский донгл.... Все номера соединенных и дозвонившихся телефонов вносятся в Базу данных... В ту или иную таблицу БД.... Голосовые посказки вещают в разных местах обработки вызовов - работает разветвленное голосовое меню IVR...

По проекту, все таксисты вышедшие на работу-зарегавшиеся в системе, становятся в очередь... стратегия rmemory.. тэе следующий вызов направляется на такси - следующее за принявшим последний вызов... Если такси не может или не хочет принять вызов - надо только нажать кнопку отбоя, не принимая вызов и стратегия очереди перенаправит вызов на следующее в очереди такси...

Есть "Пасхальное яйцо" для Админа - нигде не озвучено, но надо просто набрать допномер 100, чтобы узнать - текущее время и дату....

При изначальном вводе номера желающего работать посредством dtmf, система ТРИ раза диктует голосом по цифрам введенный номер и если не нажата кнопка отбоя, вносит его в БД...

Отбой необходимо нажать если руки тряслись и ввел не тот номер, затем можно бесконечное число раз повторить проделанное - желательно правильным вводом.... Также происходит и удаление - по принципу если УЖЕ есть, значит удаляем...

Короче проблем нет контролировать небольшую или большую таксофирму - ТОЛЬКО с одного мобилы Админа...

Также есть подменю чб удалить "ушлых" таксистов из очереди если они в конце смены "забыли" позвонить-удалится, а период оплаты закончился и Админ удалил их из БД Системы...

В дальнейшем планируется прикрутить внутренний Биллинг - без интеграции с платежными системами, код уже есть - осталось отладить... Если кому надо будет...

Также есть голосовая почта с ivr-меню (общий ящик работает, можно внутренние номера для таксистов назначить -тогда у каждого голосоваяя почта будет), пока отключена, не вижу пока цели для применения...

При ожидании ответа такси или переводе звонка на другое такси клиент слушает музыку... Так как для него вызов входящий - он комфортен во времени... Для донгла с каллбеком - Администратор покупает СИМ-карту с безлимитным тарифом, исходя из потребностей...

Для удобства "общения" с Системой, можно поставить что-то типа phpMyAdmin - для проверки и контроля таблиц БД... Ну и конечно для Всех желающих можно поставить - Asterisk GUI и рулить Диспетчером через свой браузер...

В Диспетчере есть следующая фишка: водители такси могут зарегистрировать в Системе свое местонахождение. Работает это так... Позвонив на служебный номер в начале раб.дня, таксист регается на "работе", припарковавшись где-либо и позвонив опять на служебный номер, перед удалением из очереди (см.выше), водиле каждый раз будет проигрываться сообщение:

"Внесите в систему данные о своем местонахождении. Если вы находитесь в первом микрорайоне, нажмите - 01, во-втором - 02 и т.д" .

После введения нужных цифр, услышит сообщение:

"Система зарегистрировала Ваше местоположение"

Далее... При дозвоне клиента на номер вызова такси, он попадает в очередь такси (см.выше), таксист принявший вызов согласно очереди, может поехать сам, а может спросить клиента в какой ему микрорайон и если ему далеко, нажать # и услышав "Перевод", просто набрать номер микрорайона в системе, например тот же 01, система достанет из БД номер таксиста , который зарегался в 1 микрорайоне... В итоге принявший вызов таксист, если не хочет ехать, переводит вызов на того кто зарегался в 1-м микрорайоне (например), система осуществляет дозвон на номер 01, если таксист отвечает, вызов переходит на него , а принявший первым вызов таксист, отбивается... Если никто не принял вызов по номеру 01(например), клиент переводится на следующего таксиста в очереди... В любом случае, если ответил или не ответил, зарегистированный таксист, теряет регистрацию в текущем микрорайоне и должен привязаться позвонив на служебный номер опять...

Также система проверяет перед регистрацией желающего, если уже кто-то зарегался в микрорайоне, второму такси будет отказано и рекомендовано привязаться к другому микрорайону... Короче для динамики процесса таксования сделано все, чб без застоя и столбирования Все по-чесноку...

При переадресации вызова клиента, одним такси (принявшим вызов) по номеру микрорайона на другое такси, система меняет номер вызванного такси на лету и привязывает его в БД к клиенту. Чб работала схема в цитате... Т.к. поедет-то другое такси, а не принявшее вызов...

Оборудование в рабочем режиме выглядит вот так:

Raspberry B - 700МГц RAM 512Мб

2 GSM-модема E173 (173 работают стабильно, E1550 у меня постоянно отваливался, другие не тестил..)

USB-хаб с 3 и более портами (любой с внешним питанием от розетки 220 В)

2981a30a2818.jpg

Есть примитивный биллинг. Также прикрутил функцию, проверки своего баланса для таксистов.. Через допнабор, при регистации по выходу на работу, им предлагается ввести - 90 для проверки баланса. Баланс произносится голосом, по цифрам, например: один, два, три - это соответстно 123 руб. и тэдэ. Если -50, тогда проговаривает: минус. пять , ноль... Если баланс отрицательный - таксисту предлагается его пополнить и пока досвидания...То есть он не сможет зарегаться в системе (встать в очередь) пока не пополнит балланс не менее минимальной суммы т.е 10 руб. Начав работать с этой суммой - водила может уйти в минуса, но как только он попытается зарегаться в каком-нибудь микрорайоне, ему будет отказано с рекомендацией - пополнить баланс и он вылетит из регистрации (очереди).

У Админа полный пакет контроля над балансами посредством dtmf, как обычно, проверяет и пополняет баланс любого таксиста... Если номер новый система сразу предлагает его пополнить, через донабор номера и ввести сумму на его счет. Все платежи и время внесения сохраняются в БД и динамически меняются во время работы..

При приеме заказа со счета таксиста списывается некая сумма за заказ (например -10 руб), если таксист перевел вызов на другого, привязанного к микрорайону водилу, система списывает уже со счета этого водилы стоимость заказа, одновременно возвращая списанную сумму на счет принявшего вызов таксиста.

1. Добавлена функция проверки вводимого номера (цифры) микрорайона привязки такси (из предлагаемого диапазона -01, 02, 03, 04, 06, 07, 10). В случае неправильного ввода номера микрорайона, Система предлагает ввести правильный номер при следующем дозвоне (что бы не занимать линию-повторным приглашением, "призыв" быть внимательнее).

2. Добавлена функция для Администратора, для перезагрузки системы (reboot). Для этого при дозвоне на служебный номер, во время сообщения системой меню управления, необходимо ввести допномер 44 (система не сообщает об этом - это скрытая функция для Админа)

3. Добавлена функция внесения и удаления номеров Админа посредством dtmf. Для того что-бы внести новый номер Админа (дополнительный) для управления Системой, необходимо при дозвоне на служебный номер ввести допномер 88, о чем система сообщает в голосовом меню. Система проверяет наличие введенного номера в базе данных, при отсутствии данного номера - он вносится в БД, если номер уже есть в БД, он будет удален (по-принципу - если есть, удаляем).

Внимание! При внесении и удалении номеров Админа из БД, можно удалить и внести все номера, кроме основного (super)Админского, прописанного в конфиге Астериск. Полное управление системой возможно с ЛЮБОГО Админского телефона,по функциональности управления системой, между ними различия нет. Суперадминский номер, прописан жестко, для того, что-бы ошибочно не удалить ВСЕ номера админских телефонов из базы данных, что сделает невозможным управление Системой с телефона. Тогда потребуется поключение к БД, для восстановления номера Админа в Системе.

P.S. Админский номер может быть таксистом, для этого ему надо внести самого себя в Очередь такси через допномер 22 дозвонившись на служебный номер. В дальнейшем удалится можно таким же путем.

Добавлена возможность регистрации вызовов, самими таксистами... Для этого им при дозвоне на служебный номер GSM-Диспетчера, предлагается зарегать удачный заказ - набрав 111, или отменить в базе данных неудачный - набрав 000. Админу добавлена функция, проверки колличества этих самых - Удачных заказов для любого номера, набрав - 555 и тут же предлагается вернуть деньги таксисту за неудачный заказ набрав - 666, которые списались, когда он взял трубу и не поехал (например номером ошиблись). Админ проверяет, доверяет и компенсирует издержки системы - в виде возврата денег за заказ. Каждый набор 666 - возвращает (таксу) деньги за Один заказ.

Всем желающим использовать Диспетчер для работы своего таксопарка:

Как ставить донглы есть в ветке форума (мой пост http://forum.cxem.net/index.php?showtopic=114312&st=300#comment-1818574)...

Также могу скинуть образ системы Debian (all inclusive) в себе, образ можно залить только на Rasp Pi.. Внимание! Образ системы весит 16Гб (гигабайт)... Без жирного приватного фтп - не обойтись.

Прикрепил архив с конфигами Диспетчера для Asterisk и текстовый файл с таблицами для MySQL

Кто сам не разберется или что-то криво пойдет... пишет здесь и получает по мере возможностей, ответы и разъяснялки...

asterisk_for_blog.rar

tables_mysql.rar

Share this post


Link to post
Share on other sites
Начав работать с этой суммой - водила может уйти в минуса, но как только он попытается зарегаться в каком-нибудь микрорайоне, ему будет отказано с рекомендацией - пополнить баланс и он вылетит из регистрации (очереди).

Дополнена функция работы с балансом.

Теперь у любого принявшего вызов таксиста из очереди, на стадии его ответа - проверяется баланс и если он отрицательный, номер таксиста удаляется из Очереди вызовов и до пополнения баланса он не сможет зарегатся в очереди снова...

Как это работает - здесь: http://asteriskforum...p?p=81766#81766

Прикручена функция - изменения тарифа за вызов (в БД таблица tariffs), посредством dtmf с мобилы Админа. Функция скрыта - просто надо ее знать и при дозвоне на служебный номере, на стадии голосового меню - донабрать 123. Ивр попросит ввести сумму нового тарифа за вызов, повторит ее голосом и сообщит об изменении тарифа.

Edited by I am mechanic

Share this post


Link to post
Share on other sites

Добрый день Господа!

Выкладываю обновления для extensions.conf... В них реализована уматная штука на базе unix-времени... А именно, отслеживание клиентов - которые заеб.вают номер с колбеком...

Для себя я - сделал так, если клиент звонит на номер с колбеком чаще 5 мин (300 сек) сливаем его на час (3600 сек) в блеклист... Постоянно проверяем входящие на колбек и если номер в блеклисте менее 3600 сек, досвидание ему, если более 3600 сек - удаляем его из блеклиста и даем колбек ему...

Период не заеб.вания и срок отсидки в блеклисте - можно установить свои, поменяв циферки которые выше (в сек)...

Прикрепил - только контексты с этими дополнениями...

.................

Еще один баг советую поправить. Грабли в следующем, конструкция такого типа:

; Проверяем наличие агента в БД-очереди
; root - пользователь, pass - пароль, asterisk - имя БД
exten => _+X.,n,MYSQL(Connect connid localhost root taxer asterisk)
exten => _+X.,n,MYSQL(Query resultid ${connid} SELECT AgentQueue FROM tblagentqueue WHERE AgentQueue=${EXTEN} ORDER BY AgentQueue DESC LIMIT 0,1)
; Получаем номер
exten => _+X.,n,MYSQL(FETCH fetchid ${resultid}
${EXTEN})
; Если его нет в очереди на регистрацию, иначе - удаляем из очереди
exten => _+X.,n,GotoIf($[${fetchid} = 0]?goreg:delag)
; Очищаем результат, он нам больше не нужен
exten => _+X.,n,MYSQL(Clear ${resultid})
; Дисконектимся
exten => _+X.,n,MYSQL(Disconnect ${connid})
; Номер получен, проделываем нужное
exten => _+X.,n,NoOP(Number - ${EXTEN})

не удачна, потому как строка:

exten => _+X.,n,GotoIf($[${fetchid} = 0]?goreg:delag)

находится не в нужном месте кода, это чревато тем, что не будет выполняться строка:

; Дисконектимся
exten => _+X.,n,MYSQL(Disconnect ${connid})

И в итоге образуется много подвисших коннектов к БД, после перехода по GotoIf, из-за чего кол-во разрешенных одновременно подключений может исчерпаться...

Правильной будет вот такая конструкция:

; Проверяем наличие агента в БД-очереди
; root - пользователь, pass - пароль, asterisk - имя БД
exten => _+X.,n,MYSQL(Connect connid localhost root taxer asterisk)
exten => _+X.,n,MYSQL(Query resultid ${connid} SELECT AgentQueue FROM tblagentqueue WHERE AgentQueue=${EXTEN} ORDER BY AgentQueue DESC LIMIT 0,1)
; Получаем номер
exten => _+X.,n,MYSQL(FETCH fetchid ${resultid} ${EXTEN})
; Очищаем результат, он нам больше не нужен
exten => _+X.,n,MYSQL(Clear ${resultid})
; Дисконектимся
exten => _+X.,n,MYSQL(Disconnect ${connid})
; Номер получен, проделываем нужное
exten => _+X.,n,NoOP(Number - ${EXTEN})
; Если его нет в очереди на регистрацию, иначе - удаляем из очереди
exten => _+X.,n,GotoIf($[${fetchid} = 0]?goreg:delag)

Я не буду править exensions.conf в общем доступе... Если кому надо скинте в личку - я поправлю..

extensions_new.rar

Edited by I am mechanic

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Добавлено следующее - при первом дозвоне на Служебный, звонок таксиста переводится на Админа, для оговаривания условий и внесения в БД... Поэтому все кто звонил первый раз - будут вносится в отдельную таблицу БД.. На тот случай - если не получили ответ и тэ.дэ..

; Ветка для связи с Админом
exten => _+X.,1(toadmin),Answer()
exten => _+X.,n,Playback(/var/lib/asterisk/agents/otvetadmina)
; Выполняем запись номера в БД
exten => _+X.,n,MYSQL(Connect connid localhost root taxer asterisk)
exten => _+X.,n,MYSQL(Query resultid ${connid} INSERT IGNORE INTO tblWhoCallme (`NumCallUser`,`callDate`) VALUES ('${EXTEN}',NOW()))
; Дисконектимся
exten => _+X.,n,MYSQL(Disconnect ${connid})
exten => _+X.,n,Dial(Dongle/dongle0/+79ХХХХХХХХХ,40,tTmw)
;exten => 103,n,Macro(voicemail,103)
exten => _+X.,n,Playback(/var/lib/asterisk/incallmenu/adminlate)
exten => _+X.,n,Playback(vm-goodbye)
exten => _+X.,n,Hangup()

И таблица для MySQL:

CREATE TABLE`tblWhoCallme` (
`NumCallUser` varchar(20) NOT NULL,
`sortOrder` bigint(20) NOT NULL AUTO_INCREMENT,
`callDate` datetime,
PRIMARY KEY (`sortOrder`),
UNIQUE KEY `NumCallUser_UNIQUE` (`NumCallUser`)
) DEFAULT CHARSET=utf8;

В контексте за иксами - прописан номер Админа... Можно брать - если Админ не один из таблицы

CREATE TABLE`tblAdmins` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`numberAdmin` CHAR(20) NOT NULL,
`time_create` TIMESTAMP,
PRIMARY KEY(`id`)
);

...

Тогда надо выбирать по-какому либо алгоритму из таблицы Админов... Мне не надо, потому этого нет. Если кому надо - пишите в личку, подумаем...

Edited by I am mechanic

Share this post


Link to post
Share on other sites

Добавлено следующее - при дозвоне Админа на служебный и допнаборе номера 99, на мыло Админа будет отправлено таблица tblWhoCallme (см. выше пост)... Функция скрытая, ее нет в ivr, если надо - можно записать аудио и добавить в контекст, строку например:

[whatdo]
...
exten => s,n,Background(/var/lib/asterisk/answer/"для отправки мыла наберите 99")
...

Устанавливаем простой почтовик:

apt-get install ssmtp

Редактируем файл конфигурации для отправки..

nano /etc/ssmtp/ssmtp.conf

Сокращая для своих нужд без лишних извращений

root=postmaster
mail.domain.com
mailhub=mail
hostname=mail.ru
mailhub=smtp.mail.ru:25
#mailhub=pop3.mail.ru:110
hostname=ENTER YOUR RPI'S HOST NAME HERE
AuthUser=моемыло@mail.ru
AuthPass=мойпароль
useSTARTTLS=YES

В файл revaliases

nano /etc/ssmtp/revaliases

Добавляем строку

root:моемыло@mail.ru:smtp.mail.ru:25

В данном случае - письмо будет от, и из под рута, улетать... Если под другим юзером надо, ставим его имя, вместо рута... не пробывал, возможно будут грабли с правами на прогу!?

В extensions.conf добавляем контекст для номера 99

[sendmail]
exten => 99,1,System(/etc/asterisk/scripts/sendmail.sh)
exten => 99,n,Playback(/var/lib/asterisk/answer/"мыло_отправлено")
exten => 99,n,Hangup

Добавляем в контекст:

[whatdo]
...
include => sendmail

Пишем скрипт sendmail.sh, который будем запускать из контекста, при дозвоне на 99

#!/bin/sh
mysqldump -c -u root -ptaxer asterisk tblWhoCallme > /home/tblWhoCallme/sendCallme.txt
ssmtp -v моемыло@mail.ru < /home/tblWhoCallme/sendCallme.txt

Кладем куда надо (см. путь в контексте после System), ставим права

~#chmod +x sendmail.sh

Для хранения промежуточных данных создаем директорию, ставим права.

~#mkdir /home/tblWhoCallme
~#chmod +x /home/tblWhoCallme

Звоним на служебный, слышим ивр, набираем 99, запускается скрипт, сохраняет tblWhoCallme в /home/tblWhoCallme в текстовом формате (не заморачиваясь с кодировками) - оттуда письмо улетает по адресу... Слышим "мыло отправлено"... Отбой.. Соответстно скрипт можно поставить в cron и отправлять мыло, когда надо...

У меня также, каждые сутки сохраняются архивы tblWhoCallme без сжатия, сделанные посредством скрипта zip_tblWhoCallme.sh

#!/bin/sh
KEEPTIME="60"
mysqldump -c -u root -ptaxer asterisk tblWhoCallme | gzip -c > /home/tblWhoCallme/`date "+%T-%d-%m-%Y"`.gz
#mysql -u root -ptaxer -D asterisk < tblWhoCallme.sql (внутри tblWhoCallme.sql, строка - TRUNCATE TABLE tblWhoCallme;, если это надо)

Скрипт болтается в cron:

40 3 1-31 * * /etc/asterisk/scripts/zip_tblWhoCallme.sh

Edited by I am mechanic

Share this post


Link to post
Share on other sites
                     

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

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

Подмечено следующее, если параметр RSSI какого-либо из донглов менее 8 единиц, происходит отваливание модема от GSM-сети... Проявляется это в том, что звонок на номер идет, но ответа нет... Не выясняя особенностей работы наших GSM-сетей (у меня МТС). Добавлено следующее - для постоянного повышения уровня RSSI, в cron крутится call-файл, прикрепил ниже...

Работает это так - каждые 15 минут, cron запускает recall2.call

*/15 * * * * /etc/asterisk/scripts/recall2.call

Который инициирует звонок со служебного номера - на служебный номер (т.е. звонит сам себе) - в итоге в CLI видим:

Call failed to go through, reason (1) Hangup

Но нужное достигнуто - RSSI при исходящем возрастает до нужного уровня, донгл не отваливается от сети.

recall2.rar

Share this post


Link to post
Share on other sites

В первом основном пОсте - описана функция:

Также и такси приехав по месту вызова, может позвонить на донгл с каллбеком (номер вызова такси), получив каллбек, Система знает номер клиента который вызвал Этого таксиста и соединит его именно с Ним... Без какого либо допнабора...

Она изменена на более удобный вариант - таксист теперь звонит на СЛУЖЕБНЫЙ номер, что-бы сообщить клиенту о прибытии к месту вызова.

Короче теперь, ВСЕ взаимодействие с Диспетчером, тасисты выполняют - через служебный номер. Клиенты соответственно взаимодействуют с такси - через Клиентский номер.

Share this post


Link to post
Share on other sites

Привет Господа!

Я часто бываю здесь, мой блог - https://vk.com/club114574137

pchupail@rambler.ru - мое мыло...

Проект не умер - в нирест планах привязать рассылку рекламного CMC при дозвоне на каллбек.. естестно параллельно с обработкой заказа..

Edited by I am mechanic

Share this post


Link to post
Share on other sites

Проверка баланса донглов (для МТС - для других соответстно меняем ussd - *100# на свой)..

В CLI Asterisk вводим:

dongle ussd dongle0 *100#
dongle ussd dongle1 *100#

Туда же сыпется ответ от оператора - находим данные по балансу - в куче из рекламы и других данных.. :)

Edited by I am mechanic

Share this post


Link to post
Share on other sites

Делая образы системы - обнаружил неприятную штуку - флешка Transcend 16 Гб, с которой ранее делал образ, бОльше емкостью, чем купленные позже на Али, левые Transcend_ы... Разница достигает до 196 Мб!?

e1ef9ff94344.png

Что оказалось нехилым гемором, так как образ не влазил на новые флехи.. Покупал 2 шт.. Купленные в МВидео Sony и Transcend, тоже оказалиь маловаты на эти же Мб!? Какой-то тотальный наплыв урезанных по размеру флешек.. Пришлось заново поднимать Диспетчер уже на флеш, нового размера..

Edited by I am mechanic

Share this post


Link to post
Share on other sites

А так можно контролировать любое помещение посредством Asterisk + RaspiCam http://forum.cxem.net/index.php?showtopic=114312&st=440#comment-2436254, с доставкой фотки (snapshot) на мыло в любой момент времени, для контроля обстаноки - Who is there?

Share this post


Link to post
Share on other sites

Иногда требуется ребутнуть RasPi или ребут произошел сам собой - отработал watchdog например.. Обратной связи нет - когда система загрузится и прошел ли ребут, например, по набору допномера 44, мы не знаем? Поэтому дополнил GSM-Диспетчер - алгоритмом коллбека при ребуте системы.. Работает это так..

При перезагрузке Pi посредством строки в /etc/rc.local :

/home/call/alarm_event.sh
exit 0

Запускается скрипт - alarm_event.sh, прикрепил...

Данный скрипт посредством call-файла (прикрепил) производит коллбек на прописанный в call-файле номер админа.

Тема аналогична этой - http://forum.cxem.ne...40#comment-1883129

Только без команды halt в диалплане:

[out_alarm]
exten => +7ХХХХХХХХХХ,1,Dial(Dongle/dongle1/${EXTEN})
exten => +7ХХХХХХХХХХ,n(indbagent),Playback(/var/lib/asterisk/answer/голосом-система_ребутнулась
exten => +7ХХХХХХХХХХ,n,Playback(beep)
exten => +7ХХХХХХХХХХ,n,WaitExten(10)
exten => +7ХХХХХХХХХХ,n,HangUp()
include => disa

Функции - Playback и WaitExten - можно не включать (у меня выключены - для сбережения баланса).. Получив коллбек и так знаем - почему..WaitExten - предлагается для ожидания ввода допномера, например 69 для получения фотки (snapshot) как здесь http://forum.cxem.ne...40#comment-2436254, для контроля обстановки рядом с малиной или еще для чего.. Для этого же приинклюден диалплан disa.. Контекст в sip.conf для дилплана - такой же как через ссылку выше.

В итоге что имеем - при любом ребуте RasPi производится коллбек, как быстрая обратная связь - на указанный админский номер.. У меня есть также хард-ресет всей связки RaspPi+USB-hub посредством gsm-сигнализации - https://vk.com/topic...=-114574137_168, тоже работало без обратной связи, что было не очень неудобно...

alarm_event.rar

alarm.rar

Share this post


Link to post
Share on other sites

Теперь немного, но конкретно - о том что достало и наболело... Юзеры работающие в сфере такси периодически интересуються - как и что надо что-бы оживить и запустить Диспетчер в работу.. Я стараюсь всем ответить подробно-доходчиво.. Затем происходит следующее, приобретя железо для Диспетчера, на стадии какого-то осознания что и как работает, начинаются озвучиваться хотелки.. Кому то надо прикрутиться к ГЛОБАЛЬНОМУ биллингу и они готовы предоставить список всех биллинг-сервисов для этого (далеко не понимая как это работает), кому-то видиться счастье в многоканальности - которой они в Диспетчере НЕ видят (написано же выше - что мешает клонировать нужное кол-во раз железо на борту с Диспетчером) и ТЭДЭ и ТЭПЭ..

Исходя из всего сказанного ОТВЕЧАЮ - Диспетчер каков есть - такой он и предлагается.. ОН отлаженное рабочее решение, если кого-то что-то не устраивает, ОН может сам доработать Диспетчер до вершины своих хотелок.. Мне же этим заниматься безвозмездно, да и за те мизера которые светят - нет ни желания, ни главное - времени.. Короче хотелки не предлагать - берем что дают.. Или не тратим мое и свое время.. The end...
 

Share this post


Link to post
Share on other sites

Продублирую здесь, не все хотят читать по ссылке - как устанавливать донглы.. Список моделей модемов выдернут из драйвера донгла, поэтому только эти мопеды  будут работать в Диспетчере...

static const char * const seven_bit_modems[] = {
"E1550",
"E1750",
"E160X",
"E150",
"E173",
"E1552",
"E171",
"E153",


 

Share this post


Link to post
Share on other sites
В 17.10.2015 в 00:00, I am mechanic сказал:

С почином, у меня теперь свой блог...

Начнем с повторения моего описания GSM-Диспетчера такси перенесено отсюда:http://forum.cxem.net/index.php?showtopic=151447&st=0

Программно-аппаратный на базе GSM-сети, автономный (no human) "Диспетчер такси" на базе PBX Asterisk, MySQL. Одна из фишек Диспетчера (callback) обратный звонок клиенту при вызове такси - сберегает баланс клиента. И многое другое. Администратор Диспетчера получает доступ со своего телефона, для внесения и удаления сотовых телефонов такси в базу данных, посредством набора с клавиатуры (через dtmf-сигнализацию). После этого - Сервер сам вносит в очередь сотовые таксистов и удаляет в конце работы, при дозвоне на служебный номер системы, узнавая ИХ по номеру телефона - без допнабора. Т.е. позвонил на номер - система узнала и зарегала, ты на работе. Позвонил второй раз удален из системы, на отдых.. Интернет и Человек-диспетчер системе НЕ нужны. Работает везде где есть GSM-сеть и розетка 220. Возможно расширение и клонирование Системы. Подскажу где купить оборудование. При желании можно купить оборудование, с поддержкой в дальнейшем по удаленке, объяснялке. Система отлажена и опробована, требуется тестирование в работе. В данный момент Система вертится на Rasp Pi с USB-хабом (внеш. питание) и думается что для двух-четырех донглов этого достаточно, иначе ставим на более мощное железо и lets go...

Есть фильтрация на донгле с каллбеком по префиксу номеров... тэе с платных номеров (или другого региона) облом - каллбека на платник или на леводалекий номер не будет...

Если достали клиенты, сил нет... Есть "черный список" внесение номеров в который, осуществляет админ со своего телефона, также - посредством dtmf-сигнализации и удаляет номера также, через нее самую...

Есть следующее, клиент вызвавший такси - может отменить вызов... Работает это так: клиент повторно дозванивается на донгл с каллбеком , получает каллбек, Система знает номер телефона вызванного такси и соединяет его именно с Ним...

Также и такси приехав по месту вызова, может позвонить на донгл с каллбеком (номер вызова такси), получив каллбек, Система знает номер клиента который вызвал Этого таксиста и соединит его именно с Ним... Без какого либо допнабора... Использовали в такси до Ярославского вокзала: https://www.taxi-accord.ru/taksi-jaroslavskij-vokzal/

Есть запись Всех разговоров между клиентами и такси...О чем предупреждается при досвоне на клиентский донгл.... Все номера соединенных и дозвонившихся телефонов вносятся в Базу данных... В ту или иную таблицу БД.... Голосовые посказки вещают в разных местах обработки вызовов - работает разветвленное голосовое меню IVR...

По проекту, все таксисты вышедшие на работу-зарегавшиеся в системе, становятся в очередь... стратегия rmemory.. тэе следующий вызов направляется на такси - следующее за принявшим последний вызов... Если такси не может или не хочет принять вызов - надо только нажать кнопку отбоя, не принимая вызов и стратегия очереди перенаправит вызов на следующее в очереди такси...

Есть "Пасхальное яйцо" для Админа - нигде не озвучено, но надо просто набрать допномер 100, чтобы узнать - текущее время и дату....

При изначальном вводе номера желающего работать посредством dtmf, система ТРИ раза диктует голосом по цифрам введенный номер и если не нажата кнопка отбоя, вносит его в БД...

Отбой необходимо нажать если руки тряслись и ввел не тот номер, затем можно бесконечное число раз повторить проделанное - желательно правильным вводом.... Также происходит и удаление - по принципу если УЖЕ есть, значит удаляем...

Короче проблем нет контролировать небольшую или большую таксофирму - ТОЛЬКО с одного мобилы Админа...

Также есть подменю чб удалить "ушлых" таксистов из очереди если они в конце смены "забыли" позвонить-удалится, а период оплаты закончился и Админ удалил их из БД Системы...

В дальнейшем планируется прикрутить внутренний Биллинг - без интеграции с платежными системами, код уже есть - осталось отладить... Если кому надо будет...

Также есть голосовая почта с ivr-меню (общий ящик работает, можно внутренние номера для таксистов назначить -тогда у каждого голосоваяя почта будет), пока отключена, не вижу пока цели для применения...

При ожидании ответа такси или переводе звонка на другое такси клиент слушает музыку... Так как для него вызов входящий - он комфортен во времени... Для донгла с каллбеком - Администратор покупает СИМ-карту с безлимитным тарифом, исходя из потребностей...

Для удобства "общения" с Системой, можно поставить что-то типа phpMyAdmin - для проверки и контроля таблиц БД... Ну и конечно для Всех желающих можно поставить - Asterisk GUI и рулить Диспетчером через свой браузер...

В Диспетчере есть следующая фишка: водители такси могут зарегистрировать в Системе свое местонахождение. Работает это так... Позвонив на служебный номер в начале раб.дня, таксист регается на "работе", припарковавшись где-либо и позвонив опять на служебный номер, перед удалением из очереди (см.выше), водиле каждый раз будет проигрываться сообщение:

"Внесите в систему данные о своем местонахождении. Если вы находитесь в первом микрорайоне, нажмите - 01, во-втором - 02 и т.д" .

После введения нужных цифр, услышит сообщение:

"Система зарегистрировала Ваше местоположение"

Далее... При дозвоне клиента на номер вызова такси, он попадает в очередь такси (см.выше), таксист принявший вызов согласно очереди, может поехать сам, а может спросить клиента в какой ему микрорайон и если ему далеко, нажать # и услышав "Перевод", просто набрать номер микрорайона в системе, например тот же 01, система достанет из БД номер таксиста , который зарегался в 1 микрорайоне... В итоге принявший вызов таксист, если не хочет ехать, переводит вызов на того кто зарегался в 1-м микрорайоне (например), система осуществляет дозвон на номер 01, если таксист отвечает, вызов переходит на него , а принявший первым вызов таксист, отбивается... Если никто не принял вызов по номеру 01(например), клиент переводится на следующего таксиста в очереди... В любом случае, если ответил или не ответил, зарегистированный таксист, теряет регистрацию в текущем микрорайоне и должен привязаться позвонив на служебный номер опять...

Также система проверяет перед регистрацией желающего, если уже кто-то зарегался в микрорайоне, второму такси будет отказано и рекомендовано привязаться к другому микрорайону... Короче для динамики процесса таксования сделано все, чб без застоя и столбирования Все по-чесноку...

При переадресации вызова клиента, одним такси (принявшим вызов) по номеру микрорайона на другое такси, система меняет номер вызванного такси на лету и привязывает его в БД к клиенту. Чб работала схема в цитате... Т.к. поедет-то другое такси, а не принявшее вызов...

Оборудование в рабочем режиме выглядит вот так:

Raspberry B - 700МГц RAM 512Мб

2 GSM-модема E173 (173 работают стабильно, E1550 у меня постоянно отваливался, другие не тестил..)

USB-хаб с 3 и более портами (любой с внешним питанием от розетки 220 В)

2981a30a2818.jpg

Есть примитивный биллинг. Также прикрутил функцию, проверки своего баланса для таксистов.. Через допнабор, при регистации по выходу на работу, им предлагается ввести - 90 для проверки баланса. Баланс произносится голосом, по цифрам, например: один, два, три - это соответстно 123 руб. и тэдэ. Если -50, тогда проговаривает: минус. пять , ноль... Если баланс отрицательный - таксисту предлагается его пополнить и пока досвидания...То есть он не сможет зарегаться в системе (встать в очередь) пока не пополнит балланс не менее минимальной суммы т.е 10 руб. Начав работать с этой суммой - водила может уйти в минуса, но как только он попытается зарегаться в каком-нибудь микрорайоне, ему будет отказано с рекомендацией - пополнить баланс и он вылетит из регистрации (очереди).

У Админа полный пакет контроля над балансами посредством dtmf, как обычно, проверяет и пополняет баланс любого таксиста... Если номер новый система сразу предлагает его пополнить, через донабор номера и ввести сумму на его счет. Все платежи и время внесения сохраняются в БД и динамически меняются во время работы..

При приеме заказа со счета таксиста списывается некая сумма за заказ (например -10 руб), если таксист перевел вызов на другого, привязанного к микрорайону водилу, система списывает уже со счета этого водилы стоимость заказа, одновременно возвращая списанную сумму на счет принявшего вызов таксиста.

1. Добавлена функция проверки вводимого номера (цифры) микрорайона привязки такси (из предлагаемого диапазона -01, 02, 03, 04, 06, 07, 10). В случае неправильного ввода номера микрорайона, Система предлагает ввести правильный номер при следующем дозвоне (что бы не занимать линию-повторным приглашением, "призыв" быть внимательнее).

2. Добавлена функция для Администратора, для перезагрузки системы (reboot). Для этого при дозвоне на служебный номер, во время сообщения системой меню управления, необходимо ввести допномер 44 (система не сообщает об этом - это скрытая функция для Админа)

3. Добавлена функция внесения и удаления номеров Админа посредством dtmf. Для того что-бы внести новый номер Админа (дополнительный) для управления Системой, необходимо при дозвоне на служебный номер ввести допномер 88, о чем система сообщает в голосовом меню. Система проверяет наличие введенного номера в базе данных, при отсутствии данного номера - он вносится в БД, если номер уже есть в БД, он будет удален (по-принципу - если есть, удаляем).

Внимание! При внесении и удалении номеров Админа из БД, можно удалить и внести все номера, кроме основного (super)Админского, прописанного в конфиге Астериск. Полное управление системой возможно с ЛЮБОГО Админского телефона,по функциональности управления системой, между ними различия нет. Суперадминский номер, прописан жестко, для того, что-бы ошибочно не удалить ВСЕ номера админских телефонов из базы данных, что сделает невозможным управление Системой с телефона. Тогда потребуется поключение к БД, для восстановления номера Админа в Системе.

P.S. Админский номер может быть таксистом, для этого ему надо внести самого себя в Очередь такси через допномер 22 дозвонившись на служебный номер. В дальнейшем удалится можно таким же путем.

Добавлена возможность регистрации вызовов, самими таксистами... Для этого им при дозвоне на служебный номер GSM-Диспетчера, предлагается зарегать удачный заказ - набрав 111, или отменить в базе данных неудачный - набрав 000. Админу добавлена функция, проверки колличества этих самых - Удачных заказов для любого номера, набрав - 555 и тут же предлагается вернуть деньги таксисту за неудачный заказ набрав - 666, которые списались, когда он взял трубу и не поехал (например номером ошиблись). Админ проверяет, доверяет и компенсирует издержки системы - в виде возврата денег за заказ. Каждый набор 666 - возвращает (таксу) деньги за Один заказ.

Всем желающим использовать Диспетчер для работы своего таксопарка:

Как ставить донглы есть в ветке форума (мой пост http://forum.cxem.net/index.php?showtopic=114312&st=300#comment-1818574)...

Также могу скинуть образ системы Debian (all inclusive) в себе, образ можно залить только на Rasp Pi.. Внимание! Образ системы весит 16Гб (гигабайт)... Без жирного приватного фтп - не обойтись.

Прикрепил архив с конфигами Диспетчера для Asterisk и текстовый файл с таблицами для MySQL

Кто сам не разберется или что-то криво пойдет... пишет здесь и получает по мере возможностей, ответы и разъяснялки...

asterisk_for_blog.rar

tables_mysql.rar

 

 

спасибо! Поставил

Отпишусь через месяц.

Еще раз спасибо!
 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Схем-то полно в сети. Непонятна сама концепция данной приблуды - одновременная регулировка оборотов десятка вентиляторов одним заданием. Они все в одну точку дуют что-ли? Датчик температуры, получается, один на всех.
    • Ещё вариант на 555 ... http://www.ebastlirna.cz/modules.php?name=News&file=article&sid=199  
    • это по существу не диод, а сам транзистор и есть. Диод же как мы знаем технологический. Надо только не забыть кудато прицепить затвор, чтобы переход случайно и в обратную сторону не открылся. вообще все эти эрзац-диоды шляпа полнейшая. В наши то времена. Вам не кажется?
    • Вот К50-12 как не странно у меня все на отлично! Я их 250 Вольтовых щас покупаю по 100 руб. за коробок! И Вашим диодам цена примерно та же, ну чуть повыше, - за сохран, вид конечно шикарный у них, хоть в Музей!.. Да ещё и конверт из 60-х с конституцией СССР придаёт им антикварной ценности! А Вы конверт с конституцией отдельно продайте... Он подороже диода о будет, кстати, за эту цену их на Ё-бее возьмут, только - 25-30%, и денег ждать полтора месяца!
    • В тот момент у меня их не было.
    • Зачем вам схема ? Вы в детстве игрушечные машинки разбирали ? Я и свои все переломал и братику успевал.   Зарядка: плюс через резистор порядка 10 ом на плюс аккумулятора. Минус напрямую. Всё это с гнезда зарядки. Подключение: провода с клемм аккумулятора через предохранитель и вкл./выкл. идут на крайние контакты силового двухполюсного переключателя - ваш реверс вперёд/назад. На средние контакты припаиваются провода от мотора. Переключателем  меняется полярность V на двигатель, ему деваться некуда, он крутит вперёд/назад. Предохранитель по рабочему току с неб. запасом, он обязателен. В случае замыкания будет пожар.  Про фары даже писАть нечего. Вот схему на коленке нарисовал.  
    • И на "старуху" бывает проруха.
  • Покупай!

×
×
  • Create New...