views:

202

answers:

5

I have an application where I have about 10,000 pieces of monitoring equipment across the US that periodically dials into a bank of 32 phone lines. I have two receivers of 16 lines each that answer the call and temporarily stores a small alpha string. I then have a computer that polls the receivers and parses the string and copies it to a database.

I am looking to replace the phone lines and the receivers with a voip solution and rewrite the software to parse the data string.

Any ideas on where to get started?

A: 

Whatever you end up doing I suspect it will be rather custom.

A good place to start is probably Asterisk PBX.

tomfanning
He still needs to emulate the modem part in software in order to decode the data sent from the equipment. That is going to be the tricky part.
Peter M
+1  A: 

Tom's suggestion about Asterisk is a good one for the overall system.

However you will still need to decode the data sent from your remote equipment from an audio signal to a data signal. That task is what the "dem" part of Modem stands for (Modulate/Demodulate). Either you do this with a canned hardware/software package (as you are currently doing with a commercial modem) or you have to emulate the modem in software yourself which will be extremely tricky to code at the very least if you attempt it yourself (heaps of standards that you have to comply with for a general modem solution, plus the solution needs to work in real time)

For the software approach could start with this page Linmodems.org (just a something I saw on google prompted by your question). Alternatively do lots of searches on google for software modems. Getting someone else's code is the best approach for this sort of code :)

Peter M
+1 - at least one of the links out from this page is to an encoding/decoding library.
ConcernedOfTunbridgeWells
A: 

I take it you don't want to replace the modems at the client sites (the easiest thing on the server side would be each clients had its own IP software stack, and used its modem to call an ISP and establish an internet connection, and then talk to your server using TCP or UDP or HTTP or whatever).

Assuming that you don't have IP capability on the client sites, Googling suggests that the relevent technology is called "Modem over IP" or "MoIP" (which Wikipedia seems to be confusing with "Mobile over IP").

VoIP consists of SIP for signalling (e.g. for call set-up and call tear-down) plus some codecs (e.g. H.323) for traffic (encoded voice) while the call is established.

I'm guessing that MoIP can keep the SIP signalling, but needs to use some different codecs.

V.150 Modem over IP White Paper looks like an introduction to the technologies. I don't know what vendors there are.

ChrisW
My reading of the white paper is that MOIP doesn't replace the modems but instead creates a stack that is suitable for modem data traffic across an IP network. In this case I think he wants to emulate the modems.
Peter M
Currently his server is connected (via its own modems) to the PSTN. If he doesn't want modems on is server anymore, then I take it he'll replace them with his server's having a digital connection to the internet. The client modems still need somewhere to dial ... I assumed they'd start to dial a MoIP provider (analogous to way in which a PSTN user will dial a number owned by a VoIP provider in order to connect to a VoIP user). So I was guessing that this server needs a MoIP provider, plus the ability to accept MoIP traffic.
ChrisW
A: 

I presume you are looking to find a way to do this without mofidying the modem hardware at your remote sites. If this is the case you will have to find or write signal processing software to demodulate the encoded signal from the modem. Fortunately, signal encodings on a modem are designed to be easy to do this with.

Maybe somebody makes software modem libaries that do this sort of thing. The other parts of the problem will be emulating the handshaking on the modem so it plays nicely with the remote sites.

ConcernedOfTunbridgeWells
A: 

If you can modify the software (really just the number to dial, but it would have to include the data you want to transfer) at the 10000 sites (not likely!), you could in theory use DTMF in the "dial" string to key the data over into Asterisk. Ok, more than a bit hackey, but it would avoid having to have a software modem. Note: you'd want a checksum!! (and maybe send it multiple times) And a way to tell the caller if it was received correctly. Like I said, hackey but cute.

jesup