91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何基于App SDK快速地開發(fā)一個IoT App

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-08 23:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、背景及大綱介紹

在如今物聯(lián)網(wǎng)DCM(Device、Connect、Manage)的大框架下,有一個應(yīng)用層來分析和處理數(shù)據(jù),是必備技能。但是,對于一個公司來說,因為研發(fā)能力或者研發(fā)時間的原因,可能很難短期內(nèi)完全自己開發(fā)出一個適用的App來。寫代碼、封裝通用功能、還要考慮其他多種功能,統(tǒng)統(tǒng)都是很耗費時間的事情。現(xiàn)在很多物聯(lián)網(wǎng)平臺公司,為了幫助開發(fā)者解決此類問題,也想出了相應(yīng)的解決辦法,提供相應(yīng)的SDK就是其中一種。

今天抽空以基于App SDK完成智能家居App的開發(fā)為例。通過這一篇文章,你就能通過創(chuàng)建App SDK、集成SDK、創(chuàng)建家庭、設(shè)備配網(wǎng)和設(shè)備控制等步驟,完整地完成一款智能家居App的開發(fā)。

先列一下開發(fā)大綱:

創(chuàng)建App SDK
集成SDK
注冊和登錄
創(chuàng)建家庭
設(shè)備配網(wǎng)
設(shè)備控制
我們再來簡單介紹一下Tuya App SDK:

涂鴉智能 App SDK 專為 IoT 移動 App 開發(fā)打造,提供豐富組件和示例代碼,開發(fā)者可以快速實現(xiàn)移動 App 對智能設(shè)備的連接、控制以及豐富的智能場景應(yīng)用。

產(chǎn)品的優(yōu)勢在于:

低門檻快速集成:快速集成 SDK,提供示例代碼、Demo App、接入案例等,低門檻輕松上手;
開發(fā)組件豐富:組件化開發(fā),提供垂直品類 SDK、UI 業(yè)務(wù)包等功能組件,開發(fā)者根據(jù)需求靈活組合;
智能功能全面:全面覆蓋用戶、設(shè)備、智能場景等多種功能模塊,開發(fā)者只需簡單實現(xiàn) UI 層代碼;
主流通信協(xié)議兼容:同一 App 中支持添加和使用主流通信協(xié)議產(chǎn)品,輕松實現(xiàn) All In One – App;
全球數(shù)據(jù)安全保障:雙通道安全加密,五重安全策略,全球數(shù)據(jù)安全合規(guī)認證,全面保障用戶數(shù)據(jù)隱私安全;
全球服務(wù)穩(wěn)定:全球化智能云部署,讓每一個 App 都輕松擁有億級海量設(shè)備和千萬級用戶并發(fā)處理能力。
App SDK的技術(shù)架構(gòu)如下:

二、如何基于 App SDK 開發(fā)一個 App

準(zhǔn)備就緒,我們來開始開發(fā)!

(一)創(chuàng)建App SDK

1. 注冊開發(fā)者賬號

前往 涂鴉智能開發(fā)平臺 注冊開發(fā)者賬號、創(chuàng)建產(chǎn)品、創(chuàng)建功能點等,具體流程請參考接入流程

2. 創(chuàng)建SDK應(yīng)用

涂鴉 IoT 平臺中 “App 工作臺” 中點擊 “App SDK”,點擊“創(chuàng)建 App”。

3. 填寫 App 相關(guān)信息,點擊確認。

  • 應(yīng)用名稱:填寫你的 App 名稱。
  • iOS 應(yīng)用包名:填寫你的 iOS App 包名(建議格式:com.xxxxx.xxxxx)。
  • 安卓應(yīng)用包名:填寫你的安卓 App 包名(兩者可以保持一致,也可以不一致)。
  • 渠道標(biāo)識符:不是必填項,如果不填寫,系統(tǒng)會根據(jù)包名自動生成。

你可以根據(jù)實際需求選擇需要的選擇方案,支持多選,然后根據(jù) Podfile 和 Gradle 進行 SDK 的集成。

點擊獲取密碼,獲取 SDK 的 AppKey,AppSecret,安全圖片等信息。

(二)集成 SDK

1. 使用 CocoaPods 快速集成

請注意:SDK 最低支持系統(tǒng)版本 9.0

在 Podfile 文件中添加以下內(nèi)容:

`platform :ios, '9.0'

 target 'Your_Project_Name' do

    pod "TuyaSmartHomeKit"

end`

然后在項目根目錄下執(zhí)行 pod update 命令進行集成。

2. 初始化 SDK

1) 打開項目設(shè)置,Target => General,修改 Bundle Identifier 為涂鴉開發(fā)者平臺對應(yīng)的 iOS 包名

2) 導(dǎo)入安全圖片到工程根目錄,重命名為 t_s.bmp,并加入「項目設(shè)置 => Target => Build Phases => Copy Bundle Resources」中。

3) 在項目的PrefixHeader.pch文件添加以下內(nèi)容:

#import
4) 打開AppDelegate.m文件,在[AppDelegate application:didFinishLaunchingWithOptions:]方法中初始化SDK。

接口說明

初始化 SDK

- (void)startWithAppKey:(NSString *)appKey secretKey:(NSString *)secretKey;
參數(shù)說明

實例代碼

[[TuyaSmartSDK sharedInstance] startWithAppKey:<#your_app_key#> secretKey:<#your_secret_key#>];

3. 打開 Debug 模式

在開發(fā)的過程中可以開啟 Debug 模式,打印一些日志用于分析問題,開發(fā)結(jié)束上線后建議關(guān)閉。

`#ifdef DEBUG

    [[TuyaSmartSDK sharedInstance] setDebugMode:YES];

#else

#endif`

(三)注冊和登錄

涂鴉云支持多種用戶體系:手機、郵箱、UID。其中手機支持驗證碼登錄和密碼登錄兩種方式,UID 登錄主要用于已經(jīng)有自己賬號體系的場景。我們這里采用手機驗證碼注冊登錄。

在注冊登錄方法中,需要提供 countryCode 參數(shù)(國家區(qū)號),用于就近選擇涂鴉云的可用區(qū)。各個可用區(qū)的數(shù)據(jù)是相互獨立的,因此在 中國大陸(86) 注冊的賬號,在 美國(1) 無法使用(用戶不存在)。

1. 手機密碼注冊

手機號密碼注冊流程分為以下兩步: 獲取手機驗證碼 - 注冊賬號

// 發(fā)送驗證碼   

[[TuyaSmartUser sharedInstance] sendVerifyCode:@"86" phoneNumber:@"1300****" type:1 success:^{

 [TPDemoProgressUtils showSuccess:@"Verification code sent successfully" toView:nil];

} failure:^(NSError *error) {

  [TPDemoProgressUtils showError:error.localizedDescription];

}];

// 通過驗證碼注冊賬號

[[TuyaSmartUser sharedInstance] registerByPhone:@"86" phoneNumber:@"1300****" password:@"***" code:@"code" success:^{

    // 注冊成功,跳轉(zhuǎn)到首頁

 [[TYDemoApplicationImpl sharedInstance]    resetRootViewController:[TYDemoTabBarViewController class]];

} failure:^(NSError *error) {

  [TPDemoProgressUtils showError:error.localizedDescription];

}];

2. 判斷是否已經(jīng)登錄

在程序啟動后,如果登錄過了就不需要重復(fù)登錄,session的有效期是45天,直接到設(shè)備列表頁面。如果沒有登錄過,就先到登錄頁進行登錄,登錄成功后再跳轉(zhuǎn)到設(shè)備列表頁。

// 判斷是否已經(jīng)登錄

if ([TuyaSmartUser sharedInstance].isLogin) {

  // 首頁

 [self resetRootViewController:[TYDemoTabBarViewController class]];

} else {

 // 登錄頁

 [[TYDemoRouteManager sharedInstance] openRoute:kTYDemoPopLoginVC withParams:nil];

}

3. Session 失效處理

長期未登錄或者密碼修改后的賬號,在訪問服務(wù)端接口的時候會返回 Session 過期的錯誤,需要監(jiān)聽 TuyaSmartUserNotificationUserSessionInvalid 通知,跳轉(zhuǎn)至登錄頁面重新登錄。

 (void)loadNotification {

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionInvalid) name:TuyaSmartUserNotificationUserSessionInvalid object:nil];

}

(void)sessionInvalid {

    NSLog(@"sessionInvalid");

    //跳轉(zhuǎn)至登錄頁面

    MyLoginViewController *vc = [[MyLoginViewController alloc] init];

    self.window.rootViewController = vc;

  [self.window makeKeyAndVisible];

}

(四) 創(chuàng)建家庭

用戶登錄成功后需要通過 TuyaSmartHomeManager 去獲取整個家庭列表的信息,然后初始化其中的一個家庭TuyaSmartHome,獲取家庭詳情信息,就可以對家庭中的設(shè)備進行操作控制。

1. 家庭列表獲取

在設(shè)備列表頁面,我們先獲取用戶下的家庭列表,如果沒有家庭,我們創(chuàng)建一個默認家庭。因為設(shè)備激活的時候,需要把設(shè)備添加到家庭里面。

獲取到家庭列表之后,我們就可以初始化一個家庭,然后從云端獲取家庭的詳情,刷新首頁的設(shè)備列表。

 (void)initData {



    _homeManager = [[TuyaSmartHomeManager alloc] init];

  _homeManager.delegate = self;



  // 獲取本地的當(dāng)前家庭
  
  NSString *homeId = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultCurrentHomeId];

 if ([homeId longLongValue] > 0) {

      self.home = [TuyaSmartHome homeWithHomeId:[homeId longLongValue]];

      if (self.home) {

            self.home.delegate = self;

           self.topBarView.leftItem.title = [NSString stringWithFormat:@"%@ ∨", self.home.homeModel.name];

            [TYDemoSmartHomeManager sharedInstance].currentHomeModel = self.home.homeModel;

          // 刷新設(shè)備列表數(shù)據(jù)

           [self reloadDataFromCloud];

       } else {

           // 如果沒有,獲取第一個家庭

           [self loadFirstHomeData];

       }

  } else {

      // 如果沒有,獲取第一個家庭

       [self loadFirstHomeData];

 }

}

 (void)reloadDataFromCloud {

    WEAKSELF_AT

   [self.refreshControl beginRefreshing];

    // 獲取當(dāng)前家庭的詳情,并刷新列表

 [self.home getHomeDetailWithSuccess:^(TuyaSmartHomeModel *homeModel) {

   

     [weakSelf_AT reloadData];

 } failure:^(NSError *error) {

        if ([error.localizedFailureReason isEqualToString:@"PERMISSION_DENIED"]) {

         [weakSelf_AT loadFirstHomeData];

      }

      [weakSelf_AT.refreshControl endRefreshing];

  }];

}

2. 新增一個家庭

// add home

- (void)rightBtnAction {

   NSString *homeName = [NSString stringWithFormat:@"Home_%@", @(self.homeManager.homes.count)];

 WEAKSELF_AT

 [self.homeManager addHomeWithName:homeName geoName:@"hangzhou" rooms:@[@"room1"] latitude:0 longitude:0 success:^(long long homeId) {

      [TPDemoProgressUtils showSuccess:@"Add Success" toView:nil];

      // 切換到新增家庭

       TuyaSmartHome *home = [TuyaSmartHome homeWithHomeId:homeId];

     [weakSelf_AT swithCurrentHomeIdWithHomeModel:home.homeModel];

 } failure:^(NSError *error) {

      [TPDemoProgressUtils showError:error.localizedDescription];

  }];

}

3. 家庭列表信息變化回調(diào)

實現(xiàn) TuyaSmartHomeManagerDelegate 代理協(xié)議后,可以在家庭列表更變的回調(diào)中進行處理。

#pragma mark - TuyaSmartHomeManagerDelegate

// 添加一個家庭   

- (void)homeManager:(TuyaSmartHomeManager *)manager didAddHome:(TuyaSmartHomeModel *)home {

   NSLog(@"Add a home %@", home.name);

}

// 刪除一個家庭

 (void)homeManager:(TuyaSmartHomeManager *)manager didRemoveHome:(long long)homeId {

 // 如果刪除的家庭是當(dāng)前家庭,當(dāng)前家庭切換到另外一個

 if ([TYDemoSmartHomeManager sharedInstance].currentHomeModel.homeId == homeId) {

       [self loadFirstHomeData];

    }

}

// MQTT連接成功

- (void)serviceConnectedSuccess {

   // 去云端獲取當(dāng)前家庭的詳情,然后去刷新 UI

  [self reloadDataFromCloud];

}

4. 單個家庭信息變化的回調(diào)

實現(xiàn) TuyaSmartHomeDelegate 代理協(xié)議后,可以在單個家庭信息更變的回調(diào)中進行處理。

#pragma mark - TuyaSmartHomeDelegate

// 家庭的信息更新,例如name

- (void)homeDidUpdateInfo:(TuyaSmartHome *)home {

    [self.tableView reloadData];

}

// 添加一個房間

- (void)home:(TuyaSmartHome *)home didAddRoom:(TuyaSmartRoomModel *)room {

 [self.tableView reloadData];

}

// 刪除一個房間

- (void)home:(TuyaSmartHome *)home didRemoveRoom:(long long)roomId {

  [self.tableView reloadData];

}

// 我收到的共享設(shè)備列表變化

- (void)homeDidUpdateSharedInfo:(TuyaSmartHome *)home {

  [self.tableView reloadData];

}

// 房間信息變更,例如name

- (void)home:(TuyaSmartHome *)home roomInfoUpdate:(TuyaSmartRoomModel *)room {

  [self.tableView reloadData];

}

// 房間與設(shè)備,群組的關(guān)系變化

- (void)home:(TuyaSmartHome *)home roomRelationUpdate:(TuyaSmartRoomModel *)room {

 [self.tableView reloadData];

}

// 添加設(shè)備

- (void)home:(TuyaSmartHome *)home didAddDeivice:(TuyaSmartDeviceModel *)device {

 [self.tableView reloadData];

}

// 刪除設(shè)備

- (void)home:(TuyaSmartHome *)home didRemoveDeivice:(NSString *)devId {

   [self.tableView reloadData];

}

// 設(shè)備信息更新,例如name

- (void)home:(TuyaSmartHome *)home deviceInfoUpdate:(TuyaSmartDeviceModel *)device {

  [self.tableView reloadData];

}

// 設(shè)備dp數(shù)據(jù)更新

- (void)home:(TuyaSmartHome *)home device:(TuyaSmartDeviceModel *)device dpsUpdate:(NSDictionary *)dps {

  [self.tableView reloadData];

}

// 添加群組

- (void)home:(TuyaSmartHome *)home didAddGroup:(TuyaSmartGroupModel *)group {

   [self.tableView reloadData];

}

// 群組dp數(shù)據(jù)更新

- (void)home:(TuyaSmartHome *)home group:(TuyaSmartGroupModel *)group dpsUpdate:(NSDictionary *)dps {

    [self.tableView reloadData];

}

// 刪除群組

- (void)home:(TuyaSmartHome *)home didRemoveGroup:(NSString *)groupId {

   [self.tableView reloadData];

}

// 群組信息更新,例如name

- (void)home:(TuyaSmartHome *)home groupInfoUpdate:(TuyaSmartGroupModel *)group {

 [self.tableView reloadData];

}

(五) 設(shè)備配網(wǎng)

設(shè)備配網(wǎng)是指設(shè)備在云端進行激活注冊。

1. 相關(guān)類

2. EZ 配網(wǎng)

這里主要介紹下 EZ 模式開發(fā),又稱快連模式(SmartConfig)。

- (void)addDeviceWithEZMode {



    // 獲取token

    WEAKSELF_AT

    id impl =       [[TYDemoConfiguration sharedInstance] serviceOfProtocol:@protocol(TYDemoDeviceListModuleProtocol)];

    long long homeId = [impl currentHomeId];

    [[TuyaSmartActivator sharedInstance]    getTokenWithHomeId:homeId success:^(NSString *token) {

        // 開始配網(wǎng)

        [weakSelf_AT commitEZModeActionWithToken:token];

    } failure:^(NSError *error) {

   

        info = [NSString stringWithFormat:@"%@: token fetch     failed, error message is    %@",NSStringFromSelector(_cmd),error.localizedDescription];

        [weakSelf_AT appendConsoleLog:info];

    }];

}

// 開始配網(wǎng)

- (void)commitEZModeActionWithToken:(NSString *)token {

    [TuyaSmartActivator sharedInstance].delegate = self;

    [[TuyaSmartActivator sharedInstance]    startConfigWiFi:TYActivatorModeEZ ssid:self.ssidField.text  password:self.passwordField.text token:token timeout:timeout];

}

#pragma mark - TuyaSmartActivatorDelegate

- (void)activator:(TuyaSmartActivator *)activator didReceiveDevice:(TuyaSmartDeviceModel *)deviceModel error:(NSError *)error {



    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(countDown) object:nil];

    timeout = timeLeft;

    [self hideProgressView];



    NSString *info = [NSString stringWithFormat:@"%@:   Finished!", NSStringFromSelector(_cmd)];

    [self appendConsoleLog:info];

    if (error) {

         // 配網(wǎng)失敗

        info = [NSString stringWithFormat:@"%@: Error-%@!", NSStringFromSelector(_cmd), error.localizedDescription];

        [self appendConsoleLog:info];

    } else {

        // 配網(wǎng)成功

        info = [NSString stringWithFormat:@"%@: Success-You've added device %@ successfully!", NSStringFromSelector(_cmd), deviceModel.name];

        [self appendConsoleLog:info];

    }

}

智能設(shè)備配網(wǎng)成功后就有了聯(lián)網(wǎng)能力,就可以進行遠程控制了。

(六)設(shè)備控制

設(shè)備激活后,就可以進行智能設(shè)備的控制,然后監(jiān)聽設(shè)備控制變化的回調(diào)。

1. 相關(guān)類

在進行設(shè)備控制之前,我們先了解下設(shè)備功能點的概念。

2. 設(shè)備功能點

功能點是對產(chǎn)品功能的抽象表示,是具體智能設(shè)備功能的抽象,用于描述產(chǎn)品功能及其參數(shù)。

? 功能點 ID:功能點的編碼。設(shè)備與云端的功能數(shù)據(jù)通過功能點 ID 進行傳輸。

? 功能點名稱:自定義的功能名稱。

? 標(biāo)識名:功能點 Code 值,用于 App 顯示功能名稱的多語言管理。支持字母、數(shù)字和下劃線,以字母開頭。

? 數(shù)據(jù)類型:

? 數(shù)據(jù)傳輸類型:

 |-可下發(fā)可上報:指令數(shù)據(jù)可以發(fā)送給設(shè)備,設(shè)備數(shù)據(jù)可以傳輸給云端。

 |- 只上報:數(shù)據(jù)只支持從設(shè)備傳輸給云端。

 |- 只下發(fā):數(shù)據(jù)只支持從云端發(fā)送給設(shè)備。

TuyaSmartDeviceModel 類的 dps 屬性(NSDictionary 類型)定義了當(dāng)前設(shè)備的狀態(tài),稱作數(shù)據(jù)點(DP 點)或功能點

dps 字典里的每個 key 對應(yīng)一個功能點的 dpId,value 對應(yīng)一個功能點的 dpValue,dpValue 為該功能點的值

產(chǎn)品功能點定義參見涂鴉開發(fā)者平臺的產(chǎn)品功能,如下圖所示:

發(fā)送控制指令按照以下格式:

{"":""}

根據(jù)后臺該產(chǎn)品的功能點定義,如下:

示例代碼

- (void)publishDps {

    // self.device = [TuyaSmartDevice   deviceWithDeviceId:@"your_device_id"];

    // self.device.delegate = self;

    NSDictionary *dps;

    //設(shè)置dpId為1的布爾型功能點示例 作用:開關(guān)打開

    dps = @{@"1": @(YES)};

    //設(shè)置dpId為4的字符串型功能點示例 作用:設(shè)置RGB顏色為ff5500

    dps = @{@"4": @"ff5500"};

    //設(shè)置dpId為5的枚舉型功能點示例 作用:設(shè)置檔位為2檔

    dps = @{@"5": @"2"};

    //設(shè)置dpId為6的數(shù)值型功能點示例 作用:設(shè)置溫度為20°

    dps = @{@"6": @(20)};

    //設(shè)置dpId為15的透傳型(byte數(shù)組)功能點示例 作用:透傳紅外數(shù)據(jù)為1122

    dps = @{@"15": @"1122"};

    //多個功能合并發(fā)送

    dps = @{@"1": @(YES), @"4": @(ff5500)};

    [self.device publishDps:dps success:^{

        NSLog(@"publishDps success");

        //下發(fā)成功,狀態(tài)上報通過 deviceDpsUpdate方法 回調(diào)

    } failure:^(NSError *error) {

        NSLog(@"publishDps failure: %@", error);

    }];

}

注意事項

? 控制命令的發(fā)送需要特別注意數(shù)據(jù)類型

比如功能點的數(shù)據(jù)類型是數(shù)值型(value),那控制命令發(fā)送的應(yīng)該是 @{@"2": @(25)} 而不是 @{@"2": @"25"}

? 透傳類型傳輸?shù)?byte 數(shù)組是字符串格式(16 進制字符串)、字母需小寫并且必須是偶數(shù)位

比如正確的格式是: @{@"1": @"011f"} 而不是 @{@"1": @"11f"}

功能點更多概念參見快速入門-功能點相關(guān)概念

3. 設(shè)備初始化和設(shè)備變化代理監(jiān)聽

需要通過 TuyaSmartHome 初始化一個 home 實例,然后調(diào)用接口 getHomeDetailWithSuccess:failure: 獲取家庭的詳情,同步過家庭的詳情后,初始化設(shè)備才能成功。錯誤的設(shè)備 id 可能會導(dǎo)致初始化失敗,此時設(shè)備的實例返回 nil。

- (void)publishDps {

    self.device = [TuyaSmartDevice  deviceWithDeviceId:@"your_device_id"];

    self.device.delegate = self;

    [self.device publishDps:@{@"1" : @{YES}} success:^{

        NSLog(@"publishDps success");

        //下發(fā)成功,狀態(tài)上報通過 deviceDpsUpdate方法 回調(diào)

    } failure:^(NSError *error) {

        NSLog(@"publishDps failure: %@", error);

    }];

}

#pragma mark - TuyaSmartDeviceDelegate

/// dp數(shù)據(jù)更新

- (void)device:(TuyaSmartDevice *)device dpsUpdate:(NSDictionary *)dps {

    [self.tableView reloadData];

}

/// 設(shè)備信息更新

- (void)deviceInfoUpdate:(TuyaSmartDevice *)device {


}   

/// 設(shè)備被移除

- (void)deviceRemoved:(TuyaSmartDevice *)device {


}

三、總結(jié)

我們已經(jīng)完成了一個 IoT App 對智能硬件設(shè)備的激活入網(wǎng),設(shè)備控制等主要環(huán)節(jié),通過上述的流程說明,相信你已經(jīng)可以基于App SDK完成一個智能家居App的開發(fā),感興趣就去試試吧,有問題可以評論或者私聊!

???????四、參考

IoT App SDK 簡介

Tuya Home SDK

Demo 鏈接

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 語音識別
    +關(guān)注

    關(guān)注

    39

    文章

    1812

    瀏覽量

    116121
  • 人工智能
    +關(guān)注

    關(guān)注

    1819

    文章

    50151

    瀏覽量

    265860
  • IOT
    IOT
    +關(guān)注

    關(guān)注

    190

    文章

    4406

    瀏覽量

    208872
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    OpenClaw對接聊天APP及AI助手工具

    OpenClaw對接聊天APP及AI助手工具 1、對接飛書聊天APP openclaw配置 此處以飛書為例,輸入插件下載安裝命令: openclaw?plugins?install
    的頭像 發(fā)表于 02-06 16:13 ?1771次閱讀
    OpenClaw對接聊天<b class='flag-5'>APP</b>及AI助手工具

    淘寶API SDK快速開發(fā)指南

    ? 本文將指導(dǎo)開發(fā)快速接入淘寶開放平臺API,通過官方SDK實現(xiàn)高效調(diào)用。以下為關(guān)鍵步驟: 1. 環(huán)境準(zhǔn)備 安裝Python SDK包: ? pip install
    的頭像 發(fā)表于 01-19 15:02 ?289次閱讀
    淘寶API <b class='flag-5'>SDK</b><b class='flag-5'>快速</b><b class='flag-5'>開發(fā)</b>指南

    “死了么”APP爆火背后,條萬億傳感器賽道悄然成長

    簽到。如果連續(xù)兩天沒有簽到,APP會自動發(fā)送封郵件提醒緊急聯(lián)系人。 ? ? 據(jù)項目開發(fā)者介紹,“死了么”APP開始的用戶畫像為:一二線城
    的頭像 發(fā)表于 01-14 18:01 ?1966次閱讀
    “死了么”<b class='flag-5'>APP</b>爆火背后,<b class='flag-5'>一</b>條萬億傳感器賽道悄然成長

    Flutter 移動端開發(fā):集成淘寶 API 實現(xiàn)商品數(shù)據(jù)實時展示 APP

    在電商蓬勃發(fā)展的當(dāng)下,移動端購物成為主流趨勢。對于開發(fā)者而言,利用 Flutter 構(gòu)建能夠?qū)崟r展示淘寶商品數(shù)據(jù)的 APP,既能滿足用戶便捷獲取商品信息的需求,也能為電商業(yè)務(wù)拓展新
    的頭像 發(fā)表于 11-13 09:36 ?404次閱讀

    qboot跳轉(zhuǎn)app后卡在app的系統(tǒng)調(diào)用處,為什么?

    ROM_SIZE保持致 現(xiàn)象: 如果boot的跳轉(zhuǎn)函數(shù)如下,qboot會直重啟 void qbt_jump_to_app(void) { typedef void (*app
    發(fā)表于 10-10 07:03

    BootLoader app程序反復(fù)重啟,IAP升級失敗怎么處理?

    keil開發(fā)的BootLoader程序,用RT-Thread Studio開發(fā)app程序,板子每次上電后,從BootLoader程序跳轉(zhuǎn)到app程序,就打印幾行RT-Thread的日
    發(fā)表于 09-10 07:36

    智能物聯(lián)網(wǎng)壁爐APP開發(fā)需求

    需求:開發(fā)APP,集成電子壁爐,木頭壁爐,酒精壁爐加燃氣壁爐硬件的APP并進行評估報價及周期。
    的頭像 發(fā)表于 09-08 17:01 ?678次閱讀
    智能物聯(lián)網(wǎng)壁爐<b class='flag-5'>APP</b><b class='flag-5'>開發(fā)</b>需求

    藍牙按摩儀電路怎么設(shè)計?APP通訊協(xié)議怎么制定?給你參考示例

    藍牙眼部/腿部/腰部/胳膊/按摩儀的硬件如何設(shè)計以及方案如何選型,APP小程序的通訊協(xié)議如何制定,做一個詳細介紹
    的頭像 發(fā)表于 09-08 10:08 ?811次閱讀
    藍牙按摩儀電路怎么設(shè)計?<b class='flag-5'>APP</b>通訊協(xié)議怎么制定?給你<b class='flag-5'>一</b><b class='flag-5'>個</b>參考示例

    求助,關(guān)于TC275 bootloader+app開發(fā)的問題求解

    您好 目前想做一個簡單的boot跳app的升級功能,采用的是autosar架構(gòu),現(xiàn)在的程序默認是從0xa0000000也就是PF0的位置開始,我把這個當(dāng)做boot程序。我現(xiàn)在想制作
    發(fā)表于 07-15 06:48

    迅為RK3568開發(fā)板基本工程目錄-OpenHarmony APP工程結(jié)構(gòu)

    (Application Package,簡稱 APP),它是由或多個 HAP(OpenHarmony Ability Package)包以及描述 APP Pack 屬性的 pac
    發(fā)表于 07-07 15:04

    HarmonyOS 代碼工坊的指尖開發(fā),讓 APP 開發(fā)所見即所得

    過去,移動端 APP開發(fā),往往是開發(fā)者在桌面仿真界面上的場“隔空演練”。 雖然市面上已經(jīng)有些簡化
    的頭像 發(fā)表于 06-24 12:08 ?853次閱讀
    HarmonyOS 代碼工坊的指尖<b class='flag-5'>開發(fā)</b>,讓 <b class='flag-5'>APP</b> <b class='flag-5'>開發(fā)</b>所見即所得

    使用DevEcoStudio 開發(fā)、編譯鴻蒙 NEXT_APP 以及使用中文插件

    # 使用DevEcoStudio 開發(fā)、編譯鴻蒙 NEXT_APP 以及使用中文插件 #鴻蒙開發(fā)工具 #DevEco Studio ## 1. 概述 DevEco Studio 是華為提供
    發(fā)表于 06-11 17:18

    app和deviceConfig的切換介紹

    app和deviceConfig的切換 為了便于開發(fā)者維護應(yīng)用級別的屬性配置,Stage模型將config.json中的app和deviceConfig標(biāo)簽提取到了app.json5
    發(fā)表于 06-05 06:42

    定時模塊app_timer用法及常見問題—nRF5 SDK模塊系列二

    app_timer是大家經(jīng)常用到的庫,app_timer的功能就是定時,也就是說,你在某時刻啟動
    的頭像 發(fā)表于 05-12 16:13 ?834次閱讀
    定時模塊<b class='flag-5'>app</b>_timer用法及常見問題—nRF5 <b class='flag-5'>SDK</b>模塊系列二

    S32K3 Boot跳轉(zhuǎn)到App時,App無法獲取重置原因怎么解決?

    我現(xiàn)在正在使用 S32K3 芯片,但我遇到了問題 Boot 和 App 都使用函數(shù) Mcu_GetResetReason,但該函數(shù)會在第次調(diào)用時清除 reset Reason。所
    發(fā)表于 03-25 08:15