LINUX.ORG.RU

[чайник][посоветуйте] много ком-портов

 ,


0

0

Ситуация следующая. Есть сервер под убунтой 10.04, у него несколько ком-портов, на каждом висит (или будет висеть в будущем) GSM-модем. Информацию о том, какой модем куда подключен и с какими параметрами, планирую хранить в таблице MySQL. Посоветуйте, пожалуйста, как наиболее оптимально реализовать приложение, которое бы:

1. Работало одновременно со всеми подключенными модемами.

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

Информация на модемы приходит нечасто — раз в 15 минут или реже, но на несколько модемов могут позвонить одновременно.

Иксы на сервере отсутствуют в принципе, поэтому рулить приложением предполагается из веб-интерфейса, и в веб же выводить результаты, вследствие чего планирую использовать perl, python либо tcl.

Прочитал название темы, и сначала подумал, что тебе нужен чайник с кучей ком-портов =)

Zhbert ★★★★★
()
Ответ на: комментарий от sdio

многопоточное приложение не нужно, форкайся.

Хм, а разве использование fork() не делает приложение многопоточным?

Kosyak ★★★★
()
Ответ на: комментарий от exception13

chan_datacard?

Нет, asterisk — это из пушки по воробьям, да и мне не голос нужно передавать, а двоичные данные. Телеметрия.

decadent
() автор топика
Ответ на: комментарий от sdio

многопоточное приложение не нужно, форкайся.

Спасибо, я об этом даже не подумал, попробую.

decadent
() автор топика
Ответ на: комментарий от CyberTribe

мне одному кажется, что mysql тут лишнее?

Предложи альтернативу. Постов телеметрии много, с каждого раз в 15 минут приходят 30 параметров. Работать все будет 365/24/7, отчеты в виде графиков должны быть видны в локальной сети как минимум, а лучше в интернете, ну и храниться за весь период работы системы они тоже должны где-то. Не в текстовых файлах же их хранить :-)

Или ты о хранении в базе данных параметров о модемах? Ну так если БД уже есть, почему бы ее не использовать в том числе и для этого? Те, кто будет эксплуатировать систему, конфиги руками править не будут — система должна быть максимально автопилотная.

decadent
() автор топика
Ответ на: комментарий от CyberTribe

А можно ли как-нибудь узнать, что в таблицу базы добавлена новая запись, без ее непрерывного поллинга? Может быть, какой-нибудь сигнал можно использовать?

decadent
() автор топика
Ответ на: комментарий от Kosyak

Хм, а разве использование fork() не делает приложение многопоточным?

а что, делает? внезапно

jtootf ★★★★★
()
Ответ на: комментарий от decadent

Видимо нужны хранимые процедуры.

Я бы, кстати, даже не форкался, а сделал приложении которое запускается с параметром командной строки и контролирует один COM порт и менеджер этого барахла.

rymis ★★
()
Ответ на: комментарий от decadent

храни где-нить lastupdated и при его обновлении перечитывай из базы конфиг.

true_admin ★★★★★
()

А не проще наоборот сделать ? Сервер обзванивает всех по очереди. А то какой-то пипец а не система. Во первых если на каждое соединение модем ставит, это СС3Б с 15 минутным интервалом опроса - он за это время всех с одним модемом успеет опросить. Если точек много и они будут ждать пока освободится линиия, это двойной СС3Б - карусел, карусел кто успел тот присел :)

bengan
()
Ответ на: комментарий от bengan

А не проще наоборот сделать ? Сервер обзванивает всех по очереди.

Удаленные посты спят. Потом просыпаются и звонят на сервер. Если занято — перезванивают. Экономим электроэнергию. А сеанс связи занимает меньше минуты.

decadent
() автор топика
Ответ на: комментарий от decadent

>Удаленные посты спят. Потом просыпаются и звонят на сервер. Если занято — перезванивают. Экономим электроэнергию.

Пусть себе спят - кто им мешает - или не осилите научить посты просыпаться от пришедшего байта в порт ?

А сеанс связи занимает меньше минуты.


Вот и я про это - с одним модемом можно за 15 минут всех опропсить, если по расчетам не укладываются то сделать несколько независисмых потоков на каждый порт.

bengan
()
Ответ на: комментарий от bengan

Удаленные посты спят. Потом просыпаются и звонят на сервер. Если занято — перезванивают. Экономим электроэнергию.

Пусть себе спят - кто им мешает - или не осилите научить посты просыпаться от пришедшего байта в порт ?

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

decadent
() автор топика
Ответ на: комментарий от decadent

>Не осилим. Работа идет по CSD,

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

сам модем вроде бы можно при входящем звонке научить махать какой-нибудь ногой ком-порта


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

bengan
()
Ответ на: комментарий от rymis

Я бы, кстати, даже не форкался, а сделал приложении которое запускается с параметром командной строки и контролирует один COM порт и менеджер этого барахла.

А ведь все гениальное, как всегда, просто :-) Скорее всего, именно так и сделаю, большое спасибо!

decadent
() автор топика
Ответ на: комментарий от bengan

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

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

А по GPRS мы тоже работаем, и тоже по такому принципу — пост коннектится к серверу. И причины те же самые.

decadent
() автор топика

наиболее простое решение - пусть посты отсылают SMS`ки :) пусть даже пачками.

Кстати всякие GSM информеры в системах сигнализаций так и делают, не заморачиваясь на организацию канала связи - спят, иногда просыпаются и отсылают SMS`ки с кодами состояний датчиков и событий. ПЦН собирает СМС-ки и заносит всё в базу и рисует картинки оператору.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

наиболее простое решение - пусть посты отсылают SMS`ки :) пусть даже пачками.

Дык дорого. Да и неизвестно, когда смска дойдет до адресата.

decadent
() автор топика
Ответ на: комментарий от decadent

100 постов, по 24 СМС-ки по рублю в день, всего 72т.р. в месяц на систему, то есть услуги связи на уровне зарплаты оператора

при учёте существенного упрощения логики центра и использовании стандартных компонент и протоколов, а соотв. сокращение сроков запуска и повышении надёжности = IMHO вполне стоит подумать

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

всего 72т.р. в месяц на систему

Бугага :-) Некоторые наши заказчики по 200 рублей с поста в месяц с трудом платят — размеры их жабы очень велики.

decadent
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.