After last week's update I realized that Mercurio's dependency on UltraSMS was unnecessary. Originally, Mercurio used UltraSMS to send and the mercurio.py script to receive. UltraSMS can send and receive, but it has issues with certain characters when receiving, so I recommend it only for sending. Additionally, UltraSMS hasn't been updated in quite a while. In Mercurio 2.1, a ruby script I wrote replaces UltraSMS for sending. So basically, Mercurio now uses mercurio.py to receive and Mercurio Web - via this new ruby script to communicate via bluetooth - it's possible to use a wire too - to send.
Mercurio Web -> UltraSMS -> SonyEricsson phone -> send
Mercurio Web with new ruby script -> S60 Nokia phone (perhaps the same phone running mercurio.py) -> send
The way this works is by embedding a script into Mercurio Web - in the /lib directory - that opens a bluetooth connection to the phone and sends it commands to send any messages that come via the web interface - check mercurio2.heroku.com/outboxes for an example of the UI. The outgoing messages get automatically saved in the database, but not in the phone. You may want to check the outboxes_controller.rb file to see how SendSMS.rb is used.
If you want to try the new functionality with your computer, you'll need to have your paired phone set up with a serial interface via System Preferences -> Bluetooth -> Your phone -> Edit Serial ports. Take a look at the SendSMS.rb file to see my settings or you can read this other post I wrote in Nokia's Nseries Workshop on how to do just that.
Changes in Mercurio 2.1:
Tosses UltraSMS - uses the new SendSMS functionality with ruby-serialport.
No need for a Sony Ericsson phone, the same S60 phone used with Mercurio S60 can also send.
Uses SQLite as the database repository - you can use MySQL if you like.
Runs equally on Macs and Linux.
Supersedes Mercurio 2.0.
Small UI changes.