I wanted to follow up on what I've done in case there are other's looking to learn form my setup.

Kannel builds great on a Mac once you have the Devopment tool installed. No problem there. I complied without the MySQL option because I'm not interested in DLR reports (though I may need to change that later, read on)

The smskannel.conf is the whole essence of Kannel, so understanding this one file and you basically understand how to use Kannel. (at least the basic functions of it). Because I was interested in keeping the modem awake (keepalive) I setup this feature to ping the modem with an AT command that provides the signal strength( in "group = smsc" add "keepalive = 240" then in "group = modems" add "keepalive-cmd = AT+CSQ"). Using this it will ping the modem every 240 seconds with AT+CSQ which will return two numbers the first is RSSI (signal strength from 0 to 31; 99=not detected) and the second number returned is BER (Interference from 0 to 7; 99=not detected). So for a good signal (i.e. more "cell phone bars") you want the RSSI to be high and BER to be low. For my current location, which the wireless carrier has labeled a 2 bar area, I typically get RSSI=14, BER=7. It works fine. If the message is scrambled from too much interference Kannel does a good job of repulling the message.

For implementation I run Kannel at log-level 1 with the "&" option selected. This allow me to see the pings of the keepalive in the terminal window and will also keep Kannel (the bearerbox running if the Terminal window closes. I'm not sure exactly what the "&" option is but I bet it's has to do with Terminal (bash) and not Kannel itself. I also run it with a parachute "-P" option in Kannel. The daemon option didn't work for me but using the "&" option solves my needs, it runs as a process in the background of the computer. You can also set it up to run as a launchd process. If you are going to set this up I recommend a program called Lingon for getting your Kannel startup command into the modified XML that launchd uses. This will allow you launch Kannel when your computer first logged in and can restart the bearerbox and smsbox if you kill them. So with Kannel's parachute option and launchd you are pretty much bulletproof for keeping Kannel up.

Unfortunately I couldn't get sqlbox running. Took me a long time to even find sqlbox, eventually I just checked out the CVS. My problem is with the autoconf bootstrap. It stops before creating the configure file. I downloaded the latest version of autoconf via Darwin ports and installed that but that didn't help. Admittedly, I don't quite understand Darwin ports. So I gave up on that and have a work around. I could not get the "get-url" option in the sms-service to send to two locations so I route it locally to MAMP (apache and Mysql running locally), the script stores the message locally then routes it on to the webserver. It would have been nice to have a sqlbox sitting between the bearerbox and smsbox but this setup works just fine for preserving messages.

Lastly I'll include the modem and smsc groups I use in smskannel.conf in case someone needs to get Samba 75 up and running

group = smsc
smsc = at
smsc-id = falcom
modemtype = auto
device = /dev/tty.usbmodem1B11
keepalive = 240
my-number = 55555555555
connect-allow-ip = 127.0.0.1

group = modems
id = siemens_mc75
name = "Siemens MC75"
detect-string = SIEMENS
detect-string2 = MC75
init-string = "AT+CNMI=2,2,0,1,1"
keepalive-cmd = "AT+CSQ"

That's it. Hope this helps. and thanks to the developers of Kannel and those who support it in this forum. The project this is being used for is called PamojaConnect and will allow charity organizations in rural and remote areas of Africa to share their work, express there views and ask questions over SMS. The messages are route live to the web on http://covalentglobal.org/pamoja , in GoogleMaps, and on Twitter.




Nikos Balkanas wrote:
Hi,

On a final note:

Panic in "kannelise" means the process dies due to unexpected behaviour (core dump, etc. - never happens, though). To test parachute quickly:

start bearerbox with -P flag. You should see 2 bearerbox processes running, one is the child of the other.

Send an unexpected signal to the child, i.e. kill -USR1 <process-id>. Kannel can't be fooled by any normal signal (INT, ABRT, KILL, SIG, etc.) and will die since it will consider it a user action ;-)

You will notice that a new child is spawned with new pid. If you have bearerbox logs open you will see clearly the reinitialization.

Everyone in the group has plenty of experience with SMSc timeouts and disconnects. Kannel will realize it when it tries to send a message and gets an error. It will try to reconnect and resend the message. That has the danger, that if you do not send any messages, and the SMSc gets disconnecterd, kannel won't know it. Therefore most SMScs have keepalives that kannel understands and will try to reconnect.

BR,
Nikos
----- Original Message ----- From: "Jason Higbee" <ja...@covalentglobal.org>
To: "Nikos Balkanas" <nbalka...@gmail.com>
Cc: <users@kannel.org>
Sent: Thursday, March 05, 2009 11:40 PM
Subject: Re: setup Kannel Mac OSX 10.4, Samba 75 Modem, daemon + parachute


See in line comments.

-Jason

Nikos Balkanas wrote:
Hi,

Please see inlined answers. For all answers check relevant info in the latest userguide.


----- Original Message ----- From: "Jason Higbee" <ja...@covalentglobal.org>
To: <users@kannel.org>
Sent: Thursday, March 05, 2009 6:43 PM
Subject: setup Kannel Mac OSX 10.4, Samba 75 Modem, daemon + parachute


Users,

I'm planning a project so I am looking for advice and corrections on what I think Kannel can do.

I have:

Mac OS X 10.4.11
Samba 75 (Siemens MC75) USB modem with the modem scripts
- it can connect with another SMSC program on port ../tty.usbmodem1B11 or ../cu.usbmodem1B11 (not sure the difference but both seem to work) I have compiled Kannel 1.4.2 on my Mac but haven't properly configured and used it as a SMSC to send and receive messages. I plan on recompling with Kannel 1.4.3 as the bug report suggests.
I also have php scripts setup to receive the HTTP GET requests.

There seems to be a confusion here. I presume you refer to DLRs (SMS delivery confirmations). Otherwise kannel doesn't have php builtin and can only use php to send HTTP requests (Push) .

Sorry for the confusion. the php is my script on my server set up to receive HTTP GET requests.



Here's what I  need Kannel to do:
(1) forward the received messages through a HTTP GET across the internet;

Yes, through sms-service.

Great.
(2) to run as a Mac daemon so I can sleep the computer and it will still run.

Mac is Unix. I imagine that anything running unattented will also run in sleep mode. This is feature in Unix systems for the past 30 years (daemons).

Nice. I've used other daemons that run while in sleep mode and connect to the internet, so it would be great if I could get kannel to do the same.
(3) to tell me the signal strength of the modem (i.e. how many 'bars' so I know I'm not in a deadzone);

Dunno. Maybe someone else can help. But this is not strictly a kannel issue. If the modem gets garbled messages, kannel cannot help (GIGO).

Yeah perhaps there's some AT commands I can send through kannel.
(4) automatically restart itself if it loses connection to modem (I believe this is called parachute mode);

No. It will restart only if process panics. But not to worry. It has a queue. If it looses connection to an SMSc, this SMSc is marked inactive. Other SMSc connections can pickup the traffic. In addition, kannel will try to reconnect to the inactive SMSc, according parameters set in the configuration.

That's good. Does anyone have any practical experience with this? Does Kannel do a good job of detecting when the SMSc is down and reconnecting? (also, I'll read up on what exactly 'panic' means).
(5) and store messages received locally in a database (I believe this done through an addon called sqlbox; I use MAMP for a local instance of MySQL but would use anything that would work with this system).

I don't know MAMP, but yes, you can do that with sqlbox. Other embedded choices are controlled through "store-type" paramater in core configuration and are "file" or "spool" (directory).

Yeah that's great. Just flat files are fine too.
So I am hoping Kannel can hit a home run and do all that! Please correct me if I'm wrong and point me in the right direction on these 5 things to create this Kannel system.

Thanks.


Best of luck,
Nikos
Thanks for your comment Nikos, I appreciate it.



Reply via email to