How to use subscription API on ideamart platform


Please download sample code (PHP) from here.



Files :


  1. subscription.php  This file includes all the functions related to subscription API
  2. notification.php   This script collects the subscription notifications, which send to the app from ideamart (or simulator)
  3. definitions.php    This file contains Ideamart API endpoint data
  4. log.php                 That helps to record activities.







First, add following script on the head of the PHP script for initializing settings


<?php

include_once "definitions.php";
include_once "subscription.php";
$sub = new Subscription();

$AppId = "APP_000000";
$Password = "";
$SubscriberId ="tel:94771234567";





How to register a user?


You can use following code in any script. But you need to get the masked user address (like "tel:B%3C4P+QB59sTSmJbLNMvHJC3VyqatcWavD6kWPkPy3GtLbSE5Nyv4PC6JZOaHsE1hver") from the ideamart side.




$SubscriberId ="tel:94771234567";
// Register new user
$sub->RegisterUser($AppId,$Password,$SubscriberId);



How to unregister a user?


You can use following code in any script. But you need to get user address (like "tel:94771234567") from the ideamart side.




$SubscriberId ="tel:94771234567";
// Unregister new user
$sub->UnregisterUser($AppId,$Password,$SubscriberId);




Need to know how many users currently registered on your app?


Use following code, you can get the number of active subscribers

 (Please note that this function gives only the count of active users. On ideamart, PENDING CHARGE status doesn't count as an active user. So actual subscriber base may be higher than this value)



//Get subscription base size
$baseSize = $sub->getBaseSize($AppId,$Password);




Are you need to check the status of your subscriber?


Use following code. status can be one of following

REGISTERED
UNREGISTERED
PENDING CHARGE
TEMPORARY_BLOCKED
BLOCKED




// Get user registration status
$status = $sub->getStatus($AppId,$Password,$SubscriberId);  




Subscription Notifications


When user registering or unregistering from your app, ideamart send a notification to your app. You need to give the URL of this script to "Subscription notification URL" in subscription API configurations.



<?php

include_once 'log.php';

$array =  json_decode(file_get_contents('php://input'), true);

$applicationId =$array['applicationId'];
$frequency= $array['frequency'];
$status= $array['status'];
$address= $array['subscriberId'];
$version= $array['version'];
$timeStamp= $array['timeStamp'];

logFile("");
logFile("***********************************************");
logFile("address    :$address");
logFile("frequency  :$frequency");
logFile("status     :$status");
logFile("timestamp  :$timeStamp");

if($status=="REGISTERED") {
    // Do something

}else if($status=="UNREGISTERED") {
    // Do something
}

?>






Idea Pro ඇප් නිර්මාණය - මූලික පියවර





ideamart platform තුළ idea Pro ඇප්ලිකේෂනයක් නිර්මාණය කිරීමේ අදියර 5 කි.

1. Provisoning the application
2. Pending Approval
3. Limited Production
4. Pending Approval for active production
5. Active Production


Provisoning the application





Link : How to provision your app


App එක ideamart තුළ ලියාපදිංචි කිරීම මෙම අදියරේදී සිදුකෙරේ. සියළුම settings සිදුකළ පසු, Apply for Approval යන්න ක්ලික් කර, අනුමැතිය සදහා ඉදිරිපත් කළ යුතුය. අනුමැතියට ඉදිරිපත් කළ සැනින් ඔබට App එක සදහා අදාළ password එක ඊ-මේල් පණිවිඩයක් මගින් ලැබෙනු ඇත.




Pending Approval

මෙහිදී ideamart මගින් ඔබගේ App එක පිළිබද පරීක්ෂා කර බලනු ලබයි. එහිදී මූලික වශයෙන් එය ideamart නිති රිති වලට එකඟවේද යන්න සලකා බලයි. සියල්ල නිවැරදි නම් App එක Limited Production තත්වයට මාරු කරනු ලබයි. මෙහිදී ඔබව ඊ-මේල් පණිවිඩයක් මගින් දැනුවත් කරනු ඇත.














Limited Production

දැන් ඔබට ඔබගේ App එක සජීවීව පරීක්ෂාකර බැලීමට අවස්ථාවක් හිමිවේ. මෙම අවස්ථාවේදී ඔබගේ යෙදුම භාවිත කළ හැක්කේ, Provisioning වලදී Whitelisted Numbers සදහා ලබාදුන් දුරකථන අංක මගින් පමණි.

සියළු පරීක්ෂාකිරීම් අවසන් කළ පසු ඔබට, Apply for Active Production තේරීම මගින්, APP එක අවසන් අදියර වෙත යොමුකළ හැක.









Active Production

ඔබගේ APP එක, ideamart වෙතින් අවසන් අධීක්ෂණයට ලක්කර, Active production අවස්ථාවට මාරුකරනු ඇත. මෙහිදී ඔබව ඊ-මේල් පණිවිඩයක් මගින් ද දැනුවත් කරනු ඇත.





දැන් ඔබට ඔබේ App එක පිළිබඳ සේවාලාභින් දැනුවත් කළ හැක. ඒ සදහා භාවිතා කරන සියළුව ප්‍රචාරණ අයිතම (Marketing materials) ideamart වෙත ඉදිරිපත් කර අනුමත කරගත යුතු ය.

ideamart වෙතින් අනුමැතිය  ලබාගැනීමට, එම අයිතම පහත ඊ-මේල් ලිපින අතරින් එකකට යොමු කළ හැක.

info@ideamart.lk
Kasun.Withanaarachi@dialog.lk




Related links












ඉංජිනේරුවෙකු වීමට ඔබ කැමති ද ?


මේක අවුරුදු 14 කට කලින් (2002) පළවුණු පොතක්. ලියලා තියෙන්නේ රුසියන් ජාතින අනතෝලි මර්කුෂා කියලා ලේඛකයෙක්.
ඉංජිනේරුවන් වෙන්න කැමති අය විතරක් නෙවෙයි, නවීන තාක්ෂණයට ඇළුම් කරන හැමෝටම වැදගත් පොතක්.



ලැබෙන ප්‍රතිචාර අනුව ඉදිරි පරිච්ඡේද කිහිපයත් ඉදිරිපත් කිරීමට බලාපොරොත්තු වෙනවා.


හොයාගෙන කියවන්න කැමති අයට

ISBN : 955-951-077-7
අනුවාදය      : දැදිගම වි. රුද්රිගු

බෙදාහැරීම   : කුරුලු පොත්, 594/, නාවල පාර, රාජගිරිය









Arduino සදහා ප්‍රවේශය



                    සිංහලෙන්  Arduino  ගැන ඉගෙනගන්න කැමති සියළුදෙනාම සාදරයෙන් පිළිගන්නවා. මුලින්ම අපි දැනගමු  Arduino කියන්නේ මොකක්ද කියලා.

ආර්ඩියුනෝ කියන්නේ ලංකාවට අළුත්ම මාතෘකාවක්. ඒ වගේම ලංකාව තුළ ඉක්මණින්ම ජනප්‍රිය වුණ උපාංගයක්. මෙච්චර කාලයක් ලංකාවේ Advance Electronic කටයුතු වලට පාවිච්චි වුණේ PIC වර්ගයේ ක්ෂුද්‍ර පාලක (Microcontrollers). PIC Programming ඉගෙනගත්ත අය දන්නවා ඒක ඉගෙනගන්න විඳපු දුක. Registers කටපාඩම් කරන්න, Timers, Interrupts හසුරවන්න කොච්චර මහන්සි වෙන්න ඕනද කියලා. ආර්ඩියුනෝ වලදී නම් මේ දුක විඳින්න ඕන නෑ.

ආර්ඩියුනෝ ගැන කෙටි හැඳින්වීමක් කළොත්, මේක open-source platform එකක්. ඒ කියන්නේ  Linux වගේ. අපිට ඔනම විදිහකට ආර්ඩියුනෝ පද්ධති වැඩිදියුණු කරන්න, හදලා විකුණන්න වුණත් අවසර තියෙනවා. ආර්ඩියුනෝ පුවරු (Arduino Boards) සදහා පාවිච්චි කරන්නේ Atmel සමාගමේ ATmega වර්ගයේ ICs. මේවා PIC වලට වඩා මිලෙන් අඩුයි වගේම කාර්යක්ෂමතාවයෙනුත් ඉහළයි. (ඒත් ලංකාවේ වෙළඳපොලේ තවමත් මේවා හොයාගන්න අමාරුයි.)

ආර්ඩියුනෝ එක්ක වැඩ කරන්න අපි සපයාගන්න ඕන දේවල් කිහිපයක් තියෙනවා.

  1. ආර්ඩියුනෝ පුවරුවක් (Arduino Board)
  2. ආර්ඩියුනෝ මෘදුකාංගය 

1. ආර්ඩියුනෝ පුවරුවක් (Arduino Board)

ආර්ඩියුනෝ වැඩසටහන් සියල්ල ක්‍රියා කරන්නේ මේ බෝඩ් එක මගිනුයි. දැනට එකිනෙක වෙනස්කම් තියෙන ආර්ඩියුනෝ බෝඩ් වර්ග ගණනාවක් තියෙනවා. Arduino Uno, Arduino Due, Arduino Mega, Arduino Diecimila, Arduino Leonardo කියන්නේ ඒවා අතරින් කිහිපයක් විතරයි. මේ අතරින් වඩාත් ම ජනප්‍රිය Arduino Uno බෝඩ් එක.

Arduino UNO R3
Arduino UNO R3 
Arduino Due

ආර්ඩියුනෝ ඔරිජිනල් බෝඩ් එකක් නම් ටිකක් ගණන්. පොඩිම බෝඩ් එක 30$ විතර වෙනවා. ඒත් අපිට අඩු වියදම් විකල්ප 2 ක් තියෙනවා.

Arduino Clone එකක් භාවිතා කිරීම.

ආර්ඩියුනෝ  Open-source platform එකක් නිසා ඕනම කෙනෙක්ට ආර්ඩියුනෝ උපාංග හදලා විකුණන්න පුළුවන්. ලංකාවෙත් ආර්ඩියුනෝ උපාංග හදන සමාගම් 2 ක් තියෙනවා.
  1. Lankatronics මගින් හදන Lakduino 
  2. Techකතා කණ්ඩායම හදන  TechDuino


         
    Lakduino UNO
               
    Techduino 


    Arduino Board එකක් නිර්මාණය කරගැනීම.

    මම නම් අනුගමනය කළේ මේ විකල්පයයි. ආර්ඩියුනෝ නිල වෙබ් අඩවියෙන්ම ලබා ගත්ත සැලසුමකට අනුව තමයි මම මගේ බෝඩ් එක සදාගත්තේ. මේකට නම් ටිකක් විතර පළපුරුද්දක්  ඕන වෙනවා. මේ ලිපිය කියවන ඔබත් Hardware Programming වලට ආධුනිකයෙක් නම් කලින් විකල්පයට යන එක වඩාත් සුදුසුයි.

    නමුත් කවදා හරි තමන්ගේම ආර්ඩියුනෝ පුවරුවක් හදාගන්න උත්සාහ කරන්න. කඩෙන් ගන්න ඒවට වඩා  තමන්ම හදාගන්න පුවරුවක් ගොඩක් වටිනවා.

    අඩු මුදලකින් තමන්ගේම ආර්ඩියුනෝ පුවරුවක් හදාගන්න ආකාරය පිළිබඳ ලිපියක් ලඟදීම ගේන්න පොරොන්දු වෙනවා.

    2. ආර්ඩියුනෝ මෘදුකාංගය 


    ආර්ඩියුනෝ ප්‍රෝග්‍රෑමින් සදහා Arduino IDE මෘදුකාංගය අවශ්‍ය වෙනවා. මේ මෘදුකාංගය Arduino.cc නිල වෙබ් අඩවියෙන් නොමිලේම ලබාගත හැකියි.

    LED Fire Effect - ගිනි මැලයක් හදමු


    මම අද බලාපොරොත්තු වෙන්නේ ආර්ඩියුනෝ බෝඩ්  එකක් මගින්  LED ගිනි මැලයක් (Fire Effect) නිර්මාණය කරගන්නේ කොහොමද කියලා කියාදෙන්නයි.

    මේකට අවශ්‍ය උපකරණ හා උපාංග ලැයිස්තුව මෙන්න

    • Arduino Board
    • Breadboard
    • Yellow LED  - 2
    • Red LED  - 1
    • 150 ohm resistors  - 3
    • Circuit Wires




    LED හා  Resistors ටික මේ රූපසටහනේ විදිහට අමුණාගන්න.දැන් පරිගණකය ඔන් කරලා Arduino IDE එක විවෘත කරගන්න.

    අලුතින් sketch එකක් ආරම්භ කරගන්න. මම ඒක fire-effect.ino කියන නමින් save කරගත්තා.

    දැන් පහත code එක ටයිප් කරන්න. නැත්නම් copy paste කරන්න.


    int ledPin1 = 9;
    int ledPin2 = 10;
    int ledPin3 = 11;
    
    void setup()
    {
      pinMode(ledPin1, OUTPUT);
      pinMode(ledPin2, OUTPUT);
      pinMode(ledPin3, OUTPUT);
    }
    
    void loop()
    {
      analogWrite(ledPin1, random(120) + 135);
      analogWrite(ledPin2, random(120) + 135);
      analogWrite(ledPin3, random(120) + 135);
      delay(random(100));
    }
    
    


    දැන් මේ sketch එක බෝඩ් එකට upload කරගන්න. ඔයාලා හැම දෙයක්ම හරියටම කරලා තියෙනවා නම් දැන් ඔයාලට ලස්සන ආලෝක සංදර්ශනයක් දැකගන්න ලැබේවි. කළුවර තැනකට අරන් ගියොත් වඩාත් ලස්සනට මේ fire effect එක නරඹන්න පුළුවන්.


    දැන් අපි සාකච්ඡා කරලා බලමු කොහොමද මේක වැඩකරන්නේ කියලා.

    int ledPin1 = 9;
    int ledPin2 = 10;
    int ledPin3 = 11;

    මුලින්ම මම කළේ LED වලට යොදාගන්න pin වලට නම් ලබාදුන්න එක. මේකට මම int වර්ගයේ විචල්‍ය 3 ක් පාවිච්චි කළා.

      pinMode(ledPin1, OUTPUT);
      pinMode(ledPin2, OUTPUT);
      pinMode(ledPin3, OUTPUT);

    වැඩහටහන ආරම්භයේදී ම මම LED වලට පාවිච්චි කරන pin 3, ප්‍රතිදාන(output) අග්‍ර විදිහට හදුන්වා දුන්නා. මම ප්‍රතිදාන අග්‍ර විදිහට පාවිච්චි කළේ PWM පහසුකම තියෙන අග්‍ර 3ක්. PWM  කියන්නේ Pulse Width Modulation කියන එකයි. අපිට මේ පහසුකම තියෙන අග්‍ර වලට විතරයි analogWrite() කියන function එක පාවිච්චි කරන්න පුළුවන්කම තියෙන්නේ.

      analogWrite(ledPin1, random(120) + 135);
      analogWrite(ledPin2, random(120) + 135);
      analogWrite(ledPin3, random(120) + 135);

    analogWrite(pin,value)  කියන්න් analog voltage එකක් අදාළ pin එකෙන් නිකුත්කරන ලෙස දෙන උපදෙසයි. අපිට මේ value එක විදිහට 0 ත් 255 ත් අතර අගයක් ලබාදෙන්න පුළුවන්. 0 කියන්නේ 0V, 255 කියන්නේ 5V කියන එක.

    random() කියන function එකෙන් කරන්නේ අහඹු අගයක් ලබාදෙන එකයි. random(120) කියන එකෙන් අදහස්වන්නේ 0 ට වැඩි 120 ට අඩු ඕනෑම ඉලක්කමක් අහඹු ලෙස ලබාදෙන බවයි. LED එකක් දැල්වෙන්න 1.5-3 V අතර අගයක් අවශ්‍ය නිසා analogWrite() වල අඩුම අගය විදිහට 135 ක් ලැබෙන්න තමයි random(120) + 135) කියලා ලියලා තියන්නේ.

    random එක 0 වනවිට analogWrite එකේ value එන වෙන්නේ 135. මේ උපක්‍රමය හින්දා LED 3 ම එකදිගටම දැල්වෙමින් තියෙනවා. ඒත් analogWrite අගය වෙනස් වෙනනිසා ඒවයේ brightness එක වෙනස් වෙනවා. මේ විදිහට තමයි ලස්සන Fire effect එකක් ලැබෙන්නේ.

    රතු, තැඹිලි, කහ LED කීපයක් ම පාවිච්චි කළොත් වඩාත් ලස්සන ගිනිමැලයක් නිර්මාණය කරගන්න පුළුවන්.  ඔබත් උත්සාහ කරලා බලන්න.









    Control TV screen




    මම මේ ලිපියෙන් කියාදෙන්න බලාපොරොත්තු වෙන්නේ, ආර්ඩියුනෝ බෝඩ් එකක් භාවිතා කරලා TV screen එකක් පාලනය කරන ආකාරයයි.  Arduino වලට දැනට පුළුවන් වෙන්නේ  Black & White රූප නිර්මාණය කරන්න විතරයි.  ඒත් ඒක වුණත් ගොඩක් ප්‍රයෝජනවත් දේවල් වලට යොදාගන්න පුළුවන් වෙයි.

    මේකට පොඩිම පොඩි components ටිකක් ඕන වෙනවා. මෙන්න ලැයිස්තුව :

    • Arduino Board (Arduino Uno)
    • Television
    • Resistors 
    1. 470 Ohm (Yellow, Purple, Brown)
    2. 1 kOhm (Brown, Black, Red)
    • Circuit Wire
    • RCA Plug or Cable 








    මෙන්න මේ ටික හොයාගෙන Breadboard එකක හරි Vero Board එකක හරි Circuit එක හදාගන්න.

    Arduino Uno :

    • Sync - pin 9
    • Video - pin 8






    මේ තියෙන්නේ මම හදාගත්ත  එක.



    දැන් සියල්ල ලෑස්තියි. අපි බලමු ඊළගට මොනාද කරන්න තියෙන්නේ කියලා.

    පහත ලින්ක් එකෙන් Arduino TVout කියන Library එක download කරගන්න. (මේ තියෙන්නේ Original Library) එක. ඒත් ඒකේ ගොඩක් අඩුපාඩු තිබුණ නිසා මම පොඩ්ඩක් ඒක වෙනස් කරලා හදපු  එක තමයි දෙන්නේ. දැනට Arduino Uno වල විතරයි Check කළේ. ගැටළුවක් ඇතිවුණොත් Comment එකක් දාන්න.)

    Download Arduino TVout library (53.1 KB)

    ZIP ෆයිල් එක download කරගෙන, My Documents වල තියෙන Arduino\libraries\  කියන ෆෝල්ඩර් එකට copy කරගන්න. නැතිනම් පහත පියවර වලට අනුව library එක add කරගන්න.







    මම පාවිච්චි කළේ Arduino 1.6.6 IDE එක. ඊට කලින් සංස්කරණවල මේක හරියට වැඩකළේ නැත්නම් මේ ලින්ක් එකෙන් Arduino 1.6.6 (80.3 MB) ඩවුන්ලෝඩ් කරගන්න.

    ඊළගට මේ code එක compile කරලා බෝඩ් එකට upload කරන්න.




    #include <TVout.h>
    
    TVout TV;
    unsigned char x, y;
    
    void setup()  {
    
      int r = TV.begin(_PAL);
    
      TV.clear_screen();
      x = TV.horz_res() - 10;
      y = TV.vert_res() - 10;
    
      //Outer box
      TV.draw_box(5, 5, x, y, WHITE, WHITE, 0, 1) ;
    
      //Inner box
      TV.draw_box(8, 8, x - 6, y - 6, WHITE, BLACK, 5, 1) ;
    
      //Line
      TV.draw_line(12, 20, x - 2, 20, WHITE) ;
    
      //Text
      TV.select_font(FONT_LARGE);
      TV.print_str(18, 10, "Arduino - TV");
    
      TV.select_font(FONT_DEFAULT);
    }
    
    String text = "  arduino-sinhalen.blogspot.com  ";
    
    void loop() {
    
      for (int i = 0; i < 16; i++) {
    
        TV.draw_box(12, 50, x - 12, 10, BLACK, BLACK, 0, 1) ;
        for (int j = 0; j < 18; j++) {
          char c = text.charAt(j + i);
          TV.print_char(12 + 6 * j, 50, c);
        }
        TV.delay_frame(20);
      }
      TV.delay_frame(100);
    
      for (int i = 15; i >= 0; i--) {
        TV.draw_box(12, 50, x - 12, 10, BLACK, BLACK, 0, 1) ;
    
        for (int j = 0; j < 18; j++) {
          char c = text.charAt(j + i);
          TV.print_char(12 + 6 * j, 50, c);
        }
        TV.delay_frame(20);
      }
      TV.delay_frame(100);
    
    }
    


    Download program


    දැන් ඔයාලට බලාගන්න පුළුවන් Arduino බෝඩ් එකෙන් ලස්සනට රූපවාහිනි තිරය මත රූප මවන හැටි.


    Library එකේ  functions ගැන මෙන්න කෙටි හැදින්වීමක්.


    horz_res()
    (default - 128)

    vert_res()
    (default - 96)

    delay_frame(time)
    clear_screen()

    set_pixel(x,y,color)    
    (0=black, 1=white)

    draw_line(x1,y1,x2,y2,color) 
    (c-color 1=white, 0=black, 2=invert)

    TV.draw_box(x0, y0, x1, y1, c, d, e, f)
    (c-color 1=white, 0=black, 2=invert)
    (d-fill 0=black, 1=white, 2=invert,3=no fill)
    (e-radius for rounded box)
    (f-safe draw or not, 1 = safe)

    draw_circle(x0, y0, radius, c, d, h)
    (c-color 1=white, 0=black, 2=invert)
    (d-fill 0=black, 1=white, 2=invert,3=no fill)
    (h-safe draw or not, 1 = safe)

    print_char(x,y,c)
    (c-character)
    (x must be multiple of 8)

    print_str(x,y,string)

    fill(c)
    (c-color 1=white, 0=black, 2=invert)

    select_font(s);
    (s- _5X7,_8X8,_3X5)

    tone(freq,duration)
    (duration in ms)




    ඔයාලට දැන් පුළුවන් මේවා භාවිතා කරලා අළුත් දෙයක් කරන්න. මම පොඩි අදහසක් දෙන්නම්, උත්සාහ කරලා බලන්න Arduino Game Console එකක් හදන්න.

    ඔයාලගේ අදහස් හා යෝජනා තියෙනවා නම් comment එකක් දාන්න.