Particle for alexa smart home skill (4)

上一章介紹了 particle photon 初始化與手機 app 調試的方法,要實現 alexa 控制 particle photon 上的 led 燈,

需要在 particle 云上添加設備,并做相應設置,以提供對應的 api 給 alexa skill 調用。


第4章、在 particle 云上配置 Photon

particle 提供了很強大的文檔功能 docs.particle.io



1) 打開 particle.io 網站并登入 CONSOLE

  


2) 進入 Products 菜單項,點擊右側的 +NEW PRODUCT 按鈕

  


3) 輸入 Product Name 為 photon0815, 選擇設備類別為 Photon(PO), 點擊 CREATE 按鈕

  


 建立成功

  


4) 進入左下方的配置菜單界面

  


5) 配置產品詳細信息,以下是配置后的截圖. (配置前有詳細的幫助信息,內容太多,所以省略)

  Product ID 為 1029, 這個值在 particle 云代碼中會用到

  


  Working with Particle 配置項

  


  Customers 配置項

  


  Firmware 配置項

  


6) 配置完成后, 點擊 IMPORT DEVICE 按鈕 (也可以在 Product 頁面中點擊 +Add Devices 按鈕來添加)

  在添加前, 要觸除手機與 photon 的綁定 (在手機 app 中操作), 否則會添加失敗

  


7) 點擊 +Add One Device 按鈕

  


8) 輸入 Device ID,這個ID在手機 app 中查看,要把大字 (在上一章中有提到), 由24個16進制字符組成, 輸入時要把大寫改為小寫 难过

  


 添加成功的畫面

  


9) 點擊"指紋"圖標, 進入到認證頁面 (如果沒有找到這個圖標, 需要先在產品清單中點擊產品才會顯示)

  


10) 點擊右側的 + NEW CLIENT 按鈕

  


11) 選擇 Client Type, 輸入名稱 webapp (這個名稱在建立 alexa skill 時會用到)

  Redirect URI 輸入https://pitangui.amazon.com/api/skill/link/M1DXJTXVOEUAS0

  (這個網址在建立 alexa skill 的頁面中可以得到, 所以理論上要先建立 alexa skill, 再來設置 particle 云, 但先設置 particle 云再建 alexa skill 更容易理解)

  


12)將以下畫面中的 Client ID 和 Client Secret 記錄下來, 在建立 alexa skill 時要用到.

  


  增加 Client 后的畫面

  

  

13) 點擊左下方的 Build 菜單項

  


14) 在 Build 頁面中點擊 CREATE NEW APP 按鈕, 在 Current APP 下方輸入 app 的名稱 photontest

  

  


15) 編寫代碼, 第一行的 PRODUCT_ID(1029) 是我們在前面建立 PRODUCT 時看到的 ID, 如果這個ID不匹配, 就不能更新程序到 photon 芯片.

  代碼提供 photon A4 和 A5 兩個LED燈的開關和亮度調節。

PRODUCT_ID(1029);
PRODUCT_VERSION(1);

#define MAX_ARGS 64

int lightPins[] = {
    A5,A4
};

int lightValues[] = {
    255,255
};

int onoffLight(String args){
    
    int index = args.toInt();
    int value;
    char szArgs[MAX_ARGS];
    int count = sizeof(lightPins) / sizeof(int);
    
    args.toCharArray(szArgs, MAX_ARGS);
    
    
    sscanf(szArgs, "%d=%d", &index, &value);
    
    Serial.println();
    Serial.print("On/Off");
    Serial.println();
    Serial.print("Arguments: ");
    Serial.print(args);
    Serial.println();
    Serial.print("Index: ");
    Serial.print(index);
    Serial.println();
    Serial.print("Value: ");
    Serial.print(value);
    Serial.println();
    
    if(index >= 0 && index<count){
        analogWrite(lightPins[index], value == 1 ? lightValues[index] : 0);
    }
    
    return lightValues[index];
    
}

int setPercentage(String args){
    int index;
    int value;
    char szArgs[MAX_ARGS];
    int count = sizeof(lightPins) / sizeof(int);
    
    args.toCharArray(szArgs, MAX_ARGS);
    
    sscanf(szArgs, "%d=%d", &index, &value);
    
    float brightness = ((float)value * 255.0) / 100.0;
    
    if(index >= 0 && index<count){
        lightValues[index] = (int)brightness;
        
        analogWrite(lightPins[index], lightValues[index]);
    }
    
    Serial.println();
    Serial.print("Percentage");
    Serial.println();
    Serial.print("Arguments: ");
    Serial.print(args);
    Serial.println();
    Serial.print("Index: ");
    Serial.print(index);
    Serial.println();
    Serial.print("Value: ");
    Serial.print(value);
    Serial.println();
    Serial.print("Brightness: ");
    Serial.print(brightness);
    Serial.println();
    
    return (int)brightness;
}

void setup() {
    
    Serial.begin(115200);
    
    int count = sizeof(lightPins) / sizeof(int);
    
    for(int index=0; index<count; ++index){
        pinMode(lightPins[index], OUTPUT);
    }
    
    Particle.function("setvalue", setPercentage);
    Particle.function("onoff", onoffLight);
}

void loop() {
    
}


16) 依次點擊左側的 Save、Verify、Flash按鈕 (Flash的作用是將代碼編譯并寫入到 Photon 芯片)

  


  第一次點擊 Flash 按鈕會要求增加新的設備, (即代碼至少要綁定到一個設備才能進行Flash)

  


  在 DEVICE ID框中輸入 photon 的 ID (前提提到的24位16進制字符),點擊 CLAIM A DEVICE

  


  輸入 Device 名稱 (photon0815)后點擊 SAVE 按鈕

  


到此,particle 云的設置已經完成。

除了可以在 Partcle 云上面將代碼 Flash 到芯片外,也可以下載 Particle for Windows 程序在本地進行 Flash,

Particle 云提供了一些 Sample Code 供入門學習,更多的功能可以參考官方文檔 docs.particle.io


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值