Saturday, August 7, 2010

Gammu එක්ක මොබයිල් වැඩ කිඩ | SMS කෙළිය

ආ........යිබෝ.........ං........! අර.... ශාකුන්තල කියල එකෙක් හිටියෙ... අන්න ඒකා නින්දෙන් නැගිටලා ඇවිත් තමා මේක ලියන්නෙ... බ්ලොග් සීන් එකෙන් පොඩ්ඩක් විතර ඈත් වෙලා ඉඳලා කස්ටියට මාව අමතක වෙන්න ගිහිනුත් ඇති... තවත් නිශ්ශබ්දව හිටියොත් සින්ඩියෙන් නිළ වශයෙන්ම මාව පන්නන්න ඉතිරි වෙලා තියෙන්නෙ තවත් දවස් හතරක් නිසා මොකක් හරි තේරුමක් ඇති දෙයක් සටහන් කරල යන්න තමා මේ පැත්තෙ ආපහු ආවේ. :D

මේ බ්ලොග් එක නිතර කියවන අය දන්නවනේ මම ලියන තාක්ෂණික ලිපි වලින් අති බහුතරය ලියැවෙන්නෙ මගේ අත්දැකීම් අනුසාරයෙන් බව. කොපි පේස්ට් නෑ... පරිවර්තන වැඩ නෑ... එකක් දෙකක් හැර අනිත් සියල්ල පෞද්ගලිකව අත්හදා බලා දෙසන ඒවා. නමුත් පහු ගිය කාලේ මම යෙදිලා හිටපු වැඩ කටයුතු වල ස්වභාවයයි තරමයි අනුව මම අදහස් කළා ටිකක් විතර බ්ලොග් ලියන වැඩෙන් ඈත් වෙලා ඉන්න.

මම මීට අවුරුද්දකුත් මාසෙකට කලින් බොහෝම කලබලෙන් Wammu ගැන ලිව්ව පික්ෂු පීකුදු බ්ලොග් සටහන මතක ඇතිනේ... Wammu වැඩකරු වගෙ පෙනුනට මෙතන ඇත්තටම මැච් එක සෙල්ලං කරන්නෙ ඒකෙ backend එක. ඒ කිව්වෙ Gammu. ඉතිං Gammu වලින් ජංගම දුරකථනයත් එක්ක කරන්න පුළුවන් පොඩි පොඩි සෙල්ලං ටිකක් ගැන තමා අද ලියන්නෙ. මම මේකට පාවිච්චි කළේ මගේ (අවුරුද්දක් පට්ට්ට ගහපු) Sony Ericsson K770i දුරකථනය. Sony Ericsson, Nokia ඇතුළුව තව දුරකථන මාදිලි බොහොමයකට Gammu සහය දක්වනවා. Gammu එක්ක පාවිච්චි කරන්න පුළුවන් ජංගම දුරකථන මාදිලි ලැයිස්තුවක් මෙතනින් බලාගන්න පුළුවන්.

කොයි දේටත් කලින් පූර්ව සූදානම තියෙන්න ඕනැ නෙව. ඉතිං මේකෙදි මුල්ම කාරිය ජංගම දුරකථනය පරිගණකයත් එක්ක නිසි පරිදි සම්බන්ධ කරගන්න එක (මේකට අවශ්‍ය දේවල් ගැන සොයා බලන්න මගේ පරණ සටහන කියවන්න). මගේ ලැප්ටොප් එකේ නීලදන්ත ජිල්මාට් නැති නිසා මේවා අත්හදා බලන්න මම පාවිච්චි කළේ USB කේබලය. USB කේබල් එකෙන් ජංගම දුරකථනය පරිගණකයට සම්බන්ධ කරලා මෙන්න මේ පියවර ටික අනුගමනය කරන්න.

1. ටර්මිනලය විවෘත කර gammu-config විධානය ලබා දෙන්න.
2. ඔබේ ජංගම දුරකථනයට අදාළ සැකසුම් wammu වෙබ් අඩවියෙහි දක්වා ඇති අන්දමට සකස් කරන්න. උදාහරණයක් ලෙස, පහත දැක්වෙන්නේ Sony Ericsson K770i සඳහා වන සැකසුම්.
  • Port: /dev/ttyACM0 (නිවැරදිව ක්‍රියාත්මක නොවුනොත් 0 වෙනුවට 1, 2 යනාදී වශයෙන් වෙනත් අංකයක් යොදා බලන්න, සමහර දුරකථන මාදිලි සඳහා මෙය /dev/ttyS0 ආකාරයේ විය හැකියි)
  • Connection: at115200 හෝ at19200
  • Model: at
3. දැන් සැකසුම් සුරකින්න.
4. පහත දැක්වෙන විධානය ලබා දීම මගින් ජංගම දුරකථනය හා පරිගණකය නිවැරදිව සම්බන්ධ වී ඇති බවට තහවුරු කරගන්න. හරියන්නෙ නැත්තම් සැලෙන්න එපා ආපහු යන්න මුලට. ගිහිං වෙනින් Port එකක් පාවිච්චි කරල බලන්න.
gammu identify


දැන් තමා සෙල්ලම පටන් ගන්නේ.... Linux command line එකකිං SMS යවන වැඩේ ආතල් එක ඉස්සෙල්ලම ගනිමු.

gammu sendsms TEXT 07xxxxxxxx -text "Hi, I'm sending this with Linux command line. :-\)"

මෙහෙමත් පුළුවන්,
echo "Hi, I'm sending this with Linux command line. :-)" | gammu sendsms TEXT 07xxxxxxxx

Flash SMS සෙල්ලම
Flash SMS වලදිත් යන්නෙ සාමාන්‍ය SMS පණිවුඩයක්මයි. නමුත් ඒක ලබන්නාගෙ දුරකථනයෙ inbox එකට නොයා කෙළින්ම දුරකථන තිරයෙ පෙන්වනවා. බැලු බැල්මට හදිසි පණිවුඩයක්/ USSD පණිවුඩයක් වගේ. Flash SMS එකක් යවන්න නං හරි ලේසියි... ඉස්සෙල්ලා යවපු එකේම අගට -flash කියන එකත් අමුණලා යැව්වනං අහවරයි. මෙන්න මේ වගේ...

gammu sendsms TEXT 07xxxxxxxx -text "Hi, will you please GET OFF OF MY WAY! " -flash
(exclamation නොහොත් බුදු අම්මෝ! මාක් එක පාවිච්චි කරනවනම් ඒකට පසුව එක හිස්තැනක් තියන්න)

ෆියොන්සේට සෝනි ඇරික්සන් EMS තොත්තුවක් :P (නොම්මරය වැරදීමෙන් බයානක ප්‍රතිපල අත් විය හැක... බුහහහහා....!)
gammu sendsms EMS 07xxxxxxxx -text "හායි මයි සුවිට් හාර්ට්" -defanimation 9 -unicode
(-unicode කියන පරාමිතිය පාවිච්චි කරලා සිංහලෙන් SMS යවන්නත් පුළුවන්)
EMS ගැන වැඩි විස්තර මෙතනින් කියවන්න පුළුවන්.

දැං මොකක්ද මේ SMS යැවිල්ලෙන් ඇති වැඩේ හැබෑටම? ඔන්න දැන් තමා හොඳ හරිය පටන් ගන්නේ...
අපේ රටේ තියෙනව නේද අර සුපර් ස්ටාර් ද හොපර් ස්ටාර් ද ආදී මෙකී නොකී රියැලිටි සංදර්ශන... ලංකාවේ SMS හොරඡන්ද ජාවාරම ජයටම කෙරෙන සිස්ටම් එකක් නොවැ ඕක. එක දුරකථනයකින් ඡන්ද කැමති ගණනක් එවන්න පුළුවන් නිසා මෙන්න අවශ්‍යතාවට සැපයුම නොහොත් මල්ටිබැරල් රොකට් ලෝන්චර් ක්‍රමේට SMS යවන සිස්ටම් එක... :D

#!/bin/bash
counter=0
while [ true ]
do
    let counter++
    echo Sending SMS $counter...
    gammu sendsms TEXT number -text vote_code
done

මේක ලිනක්ස් bash script එකක්. පාවිච්චි කරන හැටි මෙතන තියෙනවා... :-)
number කියන එක වෙනුවට රියැලිටි ෂෝ මුදලාලිගේ අංකයත්, vote_code කියන එකට අර ස්ටේජ් එකේ නලියන නංගී දඟර දාලා කියන අංකෙත් (SSS 6 වගේ එක) ආදේශ කරන්න. :P
SMS කැමති ගණනක් යන්නට ඉඩ ඇරලා Ctrl+C යතුරු සංයෝජනය භාවිත කරලා මේක නවත්තන්න පුළුවන්. හැබැයි ඉතිං... මේක නිසා මනී පොකැට්ටුව හිල් වීම සහ දුරකථන සමාගම් මඩිය තරකර ගැනීම සම්බන්ධයෙන් වග කියනු නොලැබේ!

ඕක ප්‍රයෝජනවත් වෙන්නෙ රියැලිටි ෂෝ බුවාලට හොරඡන්ද දාගන්න. උත්සව කාලෙටත් අපේ කස්ටිය ඇස් ඇම් ඇස් යවනවනේ... කොහෙන් හරි එන රෙඩිමේඩ් සුභපැතුම් පණිවුඩයක් තව දන්න සීයකට දෙසීයකට forward කරන එකනෙ අපේ කස්ටියගෙ සිරිත. ඒ වැඩෙත් වැඩිය මාට්ටු නොවෙන්න හරි අපූරුවට gammu වලින් කරන්න පුළුවන්.

රෙඩිමේඩ් කෙටි පණිවුඩ එකින් එක වෙන වෙනම පාඨ ගොනු (text files) වලට සුරකින්න. ඒවා *.sms ආකෘතියට අනුව (.sms file extension) සුරකින්න. ඉන් පසුව ඒ .sms ගොනු තියෙන ඩිරෙක්ටරියෙ ඉඳන් මේ script එක ධාවනය කරන්න. මේ මම ලිව්ව ආදර්ශ script එකෙන් කරන්නෙ බොහොම සරල වැඩක්. ජංගම දුරකථන මෙමරියෙත්, සිම් කාඩිපතෙත් තියෙන දුරකථන අංක ටික ලබාගෙන ඒවයින් හුලංටෙල් අංක ටික පෙරහන් කරගන්නවා. මේ හුලංටෙල් අංක ටික එක ලැයිස්තුවකට (technically an array) එකතු කරගෙන ඒ එකින් එකට කෙටි පණිවුඩය බැගින් යවනවා. හැබැයි යවන්නේ අහඹු ලෙස තෝරාගන්නා පණිවුඩයක්. කොයි කාට කොයි එක යාදෝ කියන්න බෑ. O_o

#!/bin/bash
contacts=`gammu getallmemory SM | grep ^075 | cut -d\" -f2; gammu getallmemory ME | grep ^075 | cut -d\" -f2`
for contact in $contacts
do
    sms=`ls *.sms --file-type | grep -v [*/=\>@\|] | sort -R | head -1`
    echo "Message: "
    cat $sms
    echo "Sending to: $contact"
    cat $sms | gammu sendsms TEXT $contact
    echo
done

මේ දේවල් අත්හදා බැලුවේ මගේ හුලංටෙල් සිම් එකට රුපියල් 99ක් රීලෝඩ් කරලා... ලූප් අත්හදා බැලීම කෙසේ වෙතත් මේක ලියල ඉවර වෙද්දි මගේ ඉන්බොක්ස් එකත් අනවශ්‍ය කෙටි පණිවුඩ වලින් පිරිලා... මම මෙච්චර වෙලා එවන හරියක් එවාගත්තෙ මටම නොවැ! :P

ඉතින් මේ සටහනේ අරමුණ ජංගම දුරකථනය හැසිරවීම සඳහා විධාන පෙළ මෘදුකාංගයක් පාවිච්චි කරලා ලබාගන්න පුළුවන් එක ලොකු වාසියක් පෙන්වා දීම. ඒ තමා ස්වයංකරණය නොහොත් automation. තව තවත් නිර්මාණශීලීව හිතලා මේකෙන් මරු දේවල් කරන්න පුළුවන්.

උදාහරණයක් විධියට, අපි හිතමු යම් කිසි පරිගණකයකට හඳුනා නොගත් IP ලිපිනයකින් කෙනෙක් දුරස්ථව පිවිසෙන මොහොතේම ටුක්! ගාලා SMS එකක් ට්‍රිගර් කරන්ට ඕනෙය කියලා... මේ සම්බන්ධ ලඝු සටහන් /var/log/auth.log කියන තැන තියෙනවා... bash බැරිනං python වලින් පොඩි script කෑල්ලක් අටවගත්තාම වැඩේ ගොඩ!

ටිකක් නිර්මාණශීලීව හිතලා මේකෙන් තව එක එක විධියෙ වැඩ ගන්න පුළුවන්. ඔන්න එහෙනං මං ගියා... aal izz well..!