nRF Connect SDKã¯ã€é¸æŠžã•れãŸMatterデãƒã‚¤ã‚¹ã‚¿ã‚¤ãƒ—ã®æ©Ÿèƒ½ã‚’実装ã™ã‚‹è¤‡æ•°ã®Matterサンプルをæä¾›ã—ã¦ã„ã¾ã™ã€‚ãŸã ã—ã€å®Ÿç”¨ä¸Šã®ç†ç”±ã‹ã‚‰ã€åˆ©ç”¨å¯èƒ½ãªã™ã¹ã¦ã®Matterデãƒã‚¤ã‚¹ã‚¿ã‚¤ãƒ—をサンプルã¨ã—ã¦æç¤ºã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
ã“ã®æ¼”ç¿’ã§ã¯ã€nRF Connect SDKã®Matterテンプレートサンプルを基盤ã¨ã—ã¦ä½¿ç”¨ã—ã€nRF Connect SDKã§ã‚µãƒ³ãƒ—ルã¨ã—ã¦æä¾›ã•れã¦ã„ãªã„デãƒã‚¤ã‚¹ã‚¿ã‚¤ãƒ—を使用ã™ã‚‹ç‹¬è‡ªã®Matterデãƒã‚¤ã‚¹ã‚’作æˆã—ã¾ã™ã€‚目標ã¯ã€Matter On/Offプラグデãƒã‚¤ã‚¹ã‚’作æˆã™ã‚‹ã“ã¨ã§ã™ã€‚
Matterテンプレートサンプルã¯ã€ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆ0ã«é–¢é€£ã™ã‚‹æ©Ÿèƒ½ã®ã¿ã‚’実装ã—ã¦ãŠã‚Šã€ç‰¹å®šã®ã‚¢ãƒ—リケーションユースケースã«å›ºæœ‰ã®å®Ÿè£…ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。
0. コース用ã®GitHubリãƒã‚¸ãƒˆãƒªã‚’å–å¾—ã—ã¦ãã ã•ã„。
ã“ã®ã‚³ãƒ¼ã‚¹ç”¨ã®GitHubリãƒã‚¸ãƒˆãƒªã‚’クãƒãƒ¼ãƒ³ã—ã¦ãã ã•ã„。
一部ã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ (Windows)ã§ã¯ã€ã‚¢ãƒ—リケーションパスãŒé•·ã™ãŽã‚‹ã¨ãƒ“ルドシステムãŒå¤±æ•—ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€ãƒ‘スãŒé•·ã„å ´æ‰€ã«ãƒªãƒã‚¸ãƒˆãƒªã‚’ä¿å˜ã—ãªã„ã§ãã ã•ã„。
1. ã“ã®æ¼”ç¿’ã®åŸºæœ¬ã‚³ãƒ¼ãƒ‰ã‚’å–å¾—ã—ã¦ãã ã•ã„。
VS Codeã®nRF Connect拡張機能ã®WELCOMEパãƒãƒ«ã§ã€æ—¢å˜ã®ã‚¢ãƒ—リケーションを開ãã‚’é¸æŠžã—ã€å‰ã®æ‰‹é †ã§ã‚¯ãƒãƒ¼ãƒ³ã—ãŸã‚³ãƒ¼ã‚¹ç”¨ã®GitHubリãƒã‚¸ãƒˆãƒªã«ç§»å‹•ã—ã¦ã€l3/l3_e1 ディレクトリを開ã„ã¦ãã ã•ã„。アプリケーションã¯APPLICATIONSパãƒãƒ«ã«è¡¨ç¤ºã•れã¾ã™ã€‚
ã“ã®ã‚¢ãƒ—リケーションã¯ã€Matterテンプレートサンプルã®ã‚³ãƒ”ーã§ã‚りã€ã“ã®æ¼”ç¿’ã®ã‚³ãƒ¼ãƒ‰ã‚¹ãƒ‹ãƒšãƒƒãƒˆã‚’入力ã™ã‚‹å ´æ‰€ã®æŒ‡ç¤ºãŒè¿½åŠ ã•れã¦ã„ã¾ã™ã€‚
1.2 srcディレクトリã«å˜åœ¨ã™ã‚‹ãƒ•ァイルã®å†…容を確èªã—ã¦ãã ã•ã„。レッスン2ã§èª¬æ˜Žã—ãŸã‚ˆã†ã«ã€Matterサンプルã¯nRF Connect Matter APIを使用ã—ã¾ã™ã€‚具体的ã«ã¯:
app_task.cpp ファイルã«ã¯ã€Matterサーãƒãƒ¼ã¨ãƒœãƒ¼ãƒ‰ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’åˆæœŸåŒ–ã—ã€Matterイベントã®ãƒ‡ãƒ•ォルトãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‚’è¨å®šã—ã€ãƒ¡ã‚¤ãƒ³ãƒ«ãƒ¼ãƒ—ã‚’é–‹å§‹ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“ã®åŸºæœ¬å®Ÿè£…ã«ã‚ˆã‚Šã€ãƒ‡ãƒã‚¤ã‚¹ã‚’Matterファブリックã«ã‚³ãƒŸãƒƒã‚·ãƒ§ãƒ‹ãƒ³ã‚°ã—ã€æ¬¡ã®è¦ç´ を使用ã—ã¦Nordic DKã¨å¯¾è©±ã§ãã¾ã™:template.zap default_zapディレクトリã«ã‚るファイルã«ã¯ã€ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆ0(ルートエンドãƒã‚¤ãƒ³ãƒˆ)ã«å¿…è¦ãªã‚¯ãƒ©ã‚¹ã‚¿ãƒ¼ã®å¿…é ˆæ§‹æˆã®ã¿ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚zap-generated default_zapディレクトリã«ã‚るディレクトリã«ã¯ã€template.zapファイルã«åŸºã¥ã„ã¦ç”Ÿæˆã•れãŸã‚½ãƒ¼ã‚¹ãƒ•ァイルã¨ãƒ˜ãƒƒãƒ€ãƒ¼ãƒ•ァイルãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“れらã®ãƒ•ァイルã¯ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¼ã‚’æ§‹æˆã—ã€ãれらã®ãƒ‡ãƒ•ォルトãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‚’æä¾›ã—ã¾ã™ã€‚
2. ZAPツールを使用ã—ã¦On/Offプラグエンドãƒã‚¤ãƒ³ãƒˆã‚’è¿½åŠ ã™ã‚‹
Matterã¯ZAPツールã¨Pythonスクリプトを使用ã—ã¦ã€.zapファイルã‹ã‚‰ã‚³ãƒ¼ãƒ‰ã‚’生æˆã—ã¾ã™ã€‚æ£ã—ã„ZAPツールãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’è¨å®šã—ã¦ã‚¹ã‚¯ãƒªãƒ—トを実行ã™ã‚‹ã“ã¨ã¯è¤‡é›‘ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ã“ã‚Œã‚’ç°¡ç´ åŒ–ã™ã‚‹ãŸã‚ã«ã€nRF Connect SDKã¯ã€ã“ã‚Œã‚‰ã®æ“作を簡å˜ãªå‘¼ã³å‡ºã—ã«ãƒ©ãƒƒãƒ—ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ Westコマンドをæä¾›ã—ã¦ã„ã¾ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ã€ZAPツールwestコマンドã®ãƒ‰ã‚ュメントをå‚ç…§ã—ã¦ãã ã•ã„。
2.1 ターミナルウィンドウã§nRF Connectツールãƒã‚§ãƒ¼ãƒ³ã‚’èµ·å‹•ã—ã¦ãã ã•ã„。
Visual Studio Codeã®APPLICATIONSウィンドウã§ã€ã‚¢ãƒ—リケーションl3_e1ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã€ã€ŒStart New Terminalã€ã‚’é¸æŠžã—ã¦ãã ã•ã„。

使用ã—ã¦ã„ã‚‹nRF Connect SDKãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸æŠžã—ã¦ãã ã•ã„:

対応ã™ã‚‹ãƒ„ールãƒã‚§ãƒ¼ãƒ³ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸æŠžã—ã¦ãã ã•ã„:

サンプルディレクトリã§ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒé–‹ãã¾ã™ã€‚
2.2 次ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使用ã—ã¦ZAPツールを実行ã—ã¦ãã ã•ã„:
west zap-guiTerminal commandã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã€é©åˆ‡ãªZAPツールãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’自動的ã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚インストールãŒå®Œäº†ã™ã‚‹ã¨ã€ZAPツールã®Matter Cluster ConfiguratorウィンドウãŒè¡¨ç¤ºã•れã¾ã™ã€‚

ウィンドウã®å·¦å´ã®ã‚µã‚¤ãƒ‰ãƒ‘ãƒãƒ«ã«ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•れã¾ã™ã€‚ç¾åœ¨ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹0ã®ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆãŒ1ã¤ã ã‘ã‚りã€ã“れãŒãƒ«ãƒ¼ãƒˆã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã§ã™ã€‚
2.3 ZAPツールã§ã€+ ADD ENDPOINTをクリックã—ã¦ãã ã•ã„。
2.4 Create New Endpointメニューã§ã€on/offプラグデãƒã‚¤ã‚¹ã‚¿ã‚¤ãƒ—ã‚’è¡¨ã™æ–°ã—ã„エンドãƒã‚¤ãƒ³ãƒˆã‚’作æˆã—ã¦ãã ã•ã„:

CREATEãƒœã‚¿ãƒ³ã‚’é¸æŠžã—ã¦é¸æŠžã‚’確定ã™ã‚‹ã¨ã€æ–°ã—ã„エンドãƒã‚¤ãƒ³ãƒˆãŒã‚µã‚¤ãƒ‰ãƒ‘ãƒãƒ«ã«è¡¨ç¤ºã•れã¾ã™ã€‚
2.5 Matter仕様ã§è¦æ±‚ã•れるã™ã¹ã¦ã®ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¼ãŒæœ‰åйã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¾ã—ょã†ã€‚
デフォルトã§ã¯ã€Matterデãƒã‚¤ã‚¹ã‚¿ã‚¤ãƒ—ã‚’é¸æŠžã™ã‚‹ã¨ã€å¿…è¦ãªã™ã¹ã¦ã®ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¼ã€å±žæ€§ã€ã‚³ãƒžãƒ³ãƒ‰ãŒæœ‰åйã«ãªã‚Šã¾ã™ã€‚
ã™ã¹ã¦ã®å¿…é ˆè¦ç´ ãŒæœ‰åйã«ãªã£ã¦ãŠã‚Šã€ä¸è¦ãªã‚ªãƒ—ションè¦ç´ ãŒç„¡åйã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã™ã‚‹ãŸã‚ã«ã€å¸¸ã«Matter仕様ã«å¯¾ã—ã¦æ§‹æˆã‚’検証ã—ã¦ãã ã•ã„。ツールã¯é€šå¸¸ã“れを自動的ã«å‡¦ç†ã—ã¾ã™ãŒã€å¤ããªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®æœ€åˆã®è¡ŒGeneralをクリックã—ã¦å±•é–‹ã—ã¦ãã ã•ã„。

æ§‹æˆã‚’確èªã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ãŸã¨ãˆã°ã€On/Offクラスターã®è©³ç´°ã‚’確èªã™ã‚‹ã«ã¯ã€ãã®æ¨ªã«ã‚ã‚‹æ¯è»Šã‚¢ã‚¤ã‚³ãƒ³ã‚’クリックã—ã¦ãã ã•ã„。デフォルト構æˆã§ã¯ã™ã¹ã¦ã®å±žæ€§ãŒæœ‰åйã«ãªã£ã¦ã„ã¾ã™ãŒã€å®Ÿéš›ã«ã¯ã™ã¹ã¦ã®å±žæ€§ãŒå¿…é ˆã¨ã„ã†ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。Featuresタブã«ç§»å‹•ã™ã‚‹ã¨ã€Lightingæ©Ÿèƒ½ãŒæœ‰åйã«ãªã£ã¦ã„ã¾ã™ãŒã€ç§ãŸã¡ã®ãƒ¦ãƒ¼ã‚¹ã‚±ãƒ¼ã‚¹ã¯ç…§æ˜Žã«é–¢é€£ã—ã¦ã„ã¾ã›ã‚“。

ツールã¯lighting機能ãŒå¿…é ˆã§ã‚ã‚‹ã¨ä¸»å¼µã—ã¦ã„ã¾ã™ãŒã€Matter仕様ã§ã¯ã€OffOnly機能ãŒç„¡åйã«ãªã£ã¦ã„ã‚‹å ´åˆã¯ã‚ªãƒ—ションã§ã‚りã€ãã†ã§ãªã„å ´åˆã¯ã‚µãƒãƒ¼ãƒˆã•れãªã„ã¨è¨˜è¼‰ã•れã¦ã„ã¾ã™ã€‚ã“ã®æ©Ÿèƒ½ã‚’無効ã«ã—ã¦ã€é¸æŠžã‚’確定ã—ã¦ãã ã•ã„。アプリケーションã®è¦å‘Šã¯ç„¡è¦–ã—ã¦ãã ã•ã„。

ãã®çµæžœã€å¤§éƒ¨åˆ†ã®å±žæ€§ã¨ã„ãã¤ã‹ã®ã‚³ãƒžãƒ³ãƒ‰ãŒç„¡åйã«ãªã‚Šã¾ã™ã€‚

2.6 上部ãƒãƒ¼ã®File->Saveをクリックã—ã¦æ§‹æˆã‚’ä¿å˜ã—ã€ã‚¢ãƒ—リケーションを終了ã—ã¦ãã ã•ã„。
2.7 VS Codeã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€.zapファイルã«åŸºã¥ã„ã¦ã‚³ãƒ¼ãƒ‰ã‚’生æˆã—ã¦ãã ã•ã„:
west zap-generateTerminal commandã“ã®æ™‚点ã§ã€æ–°ã—ã„エンドãƒã‚¤ãƒ³ãƒˆã¨å¿…è¦ãªã™ã¹ã¦ã®ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¼ãŒã‚¢ãƒ—リケーションã«è¿½åŠ ã•れã¾ã—ãŸã€‚
ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹ã¨ã€ãƒ“ルドãƒã‚°ã«ã‚¢ãƒ©ãƒ¼ãƒ ベルãŒè¡¨ç¤ºã•れã¾ã™ã€‚ã“れã¯ã€ãƒ„ールãŒèª¤ã£ã¦å¿…é ˆã§ã‚ã‚‹ã¨ä¸»å¼µã—ã¦ã„ã‚‹lighting機能を無効ã«ã—ãŸãŸã‚ã«ç™ºç”Ÿã™ã‚‹ãŸã‚ã€ç„¡è¦–ã§ãã¾ã™ã€‚
3. アプリケーションコードã§On/Offプラグ機能を処ç†ã™ã‚‹
Matterãƒ‡ãƒ¼ã‚¿ãƒ¢ãƒ‡ãƒ«ãŒæ›´æ–°ã•れã€Matterコントãƒãƒ¼ãƒ©ãƒ¼ã«ã‚ˆã£ã¦é©åˆ‡ã«åˆ¶å¾¡ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸãŒã€ã‚¢ãƒ—リケーションã¯On/Offプラグを制御ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚ã€å±žæ€§ã®å¤‰æ›´ã®çµæžœã¨ã—ã¦ã„ãã¤ã‹ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’実行ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚実際ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯ã€ã‚¹ã‚¤ãƒƒãƒã‚’オンã¾ãŸã¯ã‚ªãƒ•ã«ã—ã¦ã‚³ãƒ³ã‚»ãƒ³ãƒˆã¸ã®é›»åŠ›ã‚’æœ‰åŠ¹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚µãƒ³ãƒ—ルアプリケーションã§ã¯ã€DKã®LED1を使用ã—ã¦ã‚³ãƒ³ã‚»ãƒ³ãƒˆã®çŠ¶æ…‹ã‚’ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ãƒˆã§ãã¾ã™ã€‚コンセントã«ã¯ã€ã‚³ãƒ³ã‚»ãƒ³ãƒˆã®çŠ¶æ…‹ã‚’æ‰‹å‹•ã§å¼·åˆ¶ã§ãる物ç†ãƒœã‚¿ãƒ³ã‚‚ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã€DKã®BUTTON 1を使用ã—ã¦ã“ã®æ©Ÿèƒ½ã‚’エミュレートã§ãã¾ã™ã€‚
3.1 OnOff状態属性ã®å¤‰æ›´ã‚’処ç†ã—ã¦ãã ã•ã„。
データモデルã§OnOff状態属性値ãŒå¤‰æ›´ã•れãŸã¨ã„ã†æƒ…å ±ã‚’å–å¾—ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼ã®æ“作ã®çµæžœã¨ã—ã¦å¤‰æ›´ã•れãŸå ´åˆã§ã™ã€‚ãã®å¾Œã€LED1ã®çŠ¶æ…‹ã‚’ãれã«å¿œã˜ã¦å¤‰æ›´ã§ãã¾ã™ã€‚
ãã®ãŸã‚ã«ã¯ã€MatterPostAttributeChangeCallbackメソッドを実装ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“れã¯ã€å±žæ€§ã®å€¤ãŒå¤‰æ›´ã•れãŸã¨ãã«Matterデータモデルã«ã‚ˆã£ã¦å‘¼ã³å‡ºã•れるコールãƒãƒƒã‚¯ã§ã™ã€‚
変更ã•れãŸã™ã¹ã¦ã®ã‚³ãƒ¼ãƒ‰ã¯ã€src ディレクトリã®app_task.cppファイルã«é©ç”¨ã•れã¾ã™ã€‚
MatterPostAttributeChangeCallbackメソッドã®ãƒ‰ã‚ュメントã¯ã€modules/lib/matter/src/app/util/generic-callbacks.hファイルã§èªã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚
3.1.1 ä»–ã®using namespace行ã®ä¸‹ã«æ¬¡ã®2è¡Œã‚’è¿½åŠ ã—ã¦ã€ã‚ˆã‚ŠçŸã„コード行を使用ã—ã¦ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¼ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¨å€¤ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ã—ã¦ãã ã•ã„:
using namespace ::chip::app::Clusters;
using namespace ::chip::app::Clusters::OnOff;C++3.1.2 ファイルã®ä¸‹éƒ¨ã«ã€MatterPostAttributeChangeCallbackメソッドãŒå®Ÿè£…ã•れã¦ã„ã¾ã™ã€‚
次ã®è¡Œã‚’è¿½åŠ ã—ã¦ã€attributePath引数ã‹ã‚‰ã‚¯ãƒ©ã‚¹ã‚¿ãƒ¼IDã¨å±žæ€§IDã«é–¢ã™ã‚‹æƒ…å ±ã‚’å–å¾—ã—ã¦ãã ã•ã„:
ClusterId clusterId = attributePath.mClusterId;
AttributeId attributeId = attributePath.mAttributeId;C++3.1.3 åŒã˜é–¢æ•°ã§ã€å¤‰æ›´ã•れãŸå±žæ€§ãŒé–¢å¿ƒã®ã‚る属性ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’検証ã™ã‚‹ãƒã‚§ãƒƒã‚¯ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。MatterPostAttributeChangeCallbackメソッドã¯ä»»æ„ã®å±žæ€§å¤‰æ›´æ™‚ã«å‘¼ã³å‡ºã•れるãŸã‚ã§ã™ã€‚OnOff属性ã®çŠ¶æ…‹ã«å¿œã˜ã¦ã€DKã®LED1ã®çŠ¶æ…‹ã‚’å¤‰æ›´ã—ã¦ãã ã•ã„。ã•らã«ã€ãƒ‡ãƒãƒƒã‚°ç”¨ã®ãƒã‚°è¡Œã‚’è¿½åŠ ã—ã¾ã—ょã†ã€‚
次ã®ã‚³ãƒ¼ãƒ‰ã‚¹ãƒ‹ãƒšãƒƒãƒˆã‚’è¿½åŠ ã—ã¦ãã ã•ã„:
if (clusterId == OnOff::Id && attributeId == OnOff::Attributes::OnOff::Id) {
LOG_INF("Cluster OnOff: attribute OnOff set to %" PRIu8 "", *value);
Nrf::GetBoard().GetLED(Nrf::DeviceLeds::LED2).Set(*value);
}C++LED1を使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ãŒã€ã‚³ãƒ¼ãƒ‰ã¯Nrf::DeviceLeds::LED2ã‚’å‚ç…§ã—ã¦ã„ã‚‹ã“ã¨ã«æ°—付ãã‹ã‚‚ã—れã¾ã›ã‚“。ã“れã¯ã€Nordic DKãŒã‚·ãƒªãƒ¼ã‚ºã«ã‚ˆã£ã¦ç•°ãªã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’使用ã™ã‚‹ãŸã‚ã§ã™ã€‚一部ã¯0ã‹ã‚‰å§‹ã¾ã‚Šã€ä»–ã¯1ã‹ã‚‰å§‹ã¾ã‚Šã¾ã™ã€‚コード内ã®ãƒžã‚¯ãƒã¯å¸¸ã«1ã‹ã‚‰å§‹ã¾ã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒä»˜ã‘られã¦ã„ã‚‹ãŸã‚ã€ã‚ªãƒ•セットãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
3.2 手動状態変更ã«å応ã—ã¦LED状態を変更ã™ã‚‹ãƒœã‚¿ãƒ³å‡¦ç†ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
変更ã•れãŸã™ã¹ã¦ã®ã‚³ãƒ¼ãƒ‰ã¯ã€app_task.cppファイルã«é©ç”¨ã•れã¾ã™ã€‚
3.2.1 ButtonEventHandler()関数ã§ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ãŒæ±Žç”¨çš„ã§ã‚りã€ãƒ©ã‚¤ãƒ–ラリãŒã™ã¹ã¦ã®ãƒœã‚¿ãƒ³ã«å¯¾ã—ã¦ãれを呼ã³å‡ºã™ãŸã‚ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ãŒBUTTON1ã®å¤‰æ›´ã«å応ã—ã¦å‘¼ã³å‡ºã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’確èªã—ã¦ãã ã•ã„。ButtonEventHandler()関数ã¯å‰²ã‚Šè¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‹ã‚‰ç›´æŽ¥å‘¼ã³å‡ºã•れるãŸã‚ã€ãã®ä¸ã§é•·ã„æ“作を実行ã›ãšã€ãŸã¨ãˆã°PostTask()メソッドを使用ã—ã¦ã‚¢ãƒ—リケーションã‚ューã«ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚
次ã®ã‚³ãƒ¼ãƒ‰ã‚¹ãƒ‹ãƒšãƒƒãƒˆã‚’è¿½åŠ ã—ã¦ãã ã•ã„:
if ((DK_BTN2_MSK & hasChanged) & state) {
Nrf::PostTask([] {
Nrf::GetBoard()
.GetLED(Nrf::DeviceLeds::LED2)
.Set(!Nrf::GetBoard().GetLED(Nrf::DeviceLeds::LED2).GetState());
/* STEP 3.3.3 - Update the attribute state using the Set() method */
});
}C++LEDã¨åŒæ§˜ã«ã€DKã®BUTTON1ã¯ã‚³ãƒ¼ãƒ‰å†…ã§å¯¾å¿œã™ã‚‹BTN2マクãƒã‚’使用ã—ã¾ã™ã€‚
3.2.2 AppTask::Init()メソッドã§å‘¼ã³å‡ºã•れるNrf::GetBoard().Init()メソッドã«ã‚«ã‚¹ã‚¿ãƒ ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‚’渡ã—ã¦ãã ã•ã„。
ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã§æ–°ã—ã„ボタンを処ç†ã™ã‚‹ã«ã¯ã€AppTask::Init()メソッドã§å‘¼ã³å‡ºã•れるNrf::GetBoard().Init(メソッドã«ã‚«ã‚¹ã‚¿ãƒ ボタンãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‚’渡ã™å¿…è¦ãŒã‚りã¾ã™ã€‚ãƒãƒ³ãƒ‰ãƒ©ãƒ¼APIã®ãƒ‰ã‚ュメントã«ã¤ã„ã¦ã¯ã€nrf/samples/matter/common/src/board/board.hファイルをå‚ç…§ã—ã¦ãã ã•ã„。ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯button_handler_tåž‹ã§ã‚ã‚‹å¿…è¦ãŒã‚りã€ã“れã¯nrf/include/dk_buttons_and_leds.hファイルã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚
次ã®ã‚³ãƒ¼ãƒ‰ã‚¹ãƒ‹ãƒšãƒƒãƒˆã‚’è¿½åŠ ã—ã¦ãã ã•ã„:
if (!Nrf::GetBoard().Init(ButtonEventHandler)) {
LOG_ERR("User interface initialization failed.");
return CHIP_ERROR_INCORRECT_STATE;
}C++3.3 ボタン押下ã«å応ã—ã¦Matterデータモデルを更新ã—ã¦ãã ã•ã„。
ã“れã¾ã§ã®å®Ÿè£…ã§ã¯ã€LED1ã®ãƒãƒ¼ã‚«ãƒ«çŠ¶æ…‹ã‚’æ›´æ–°ã—ã¦ã„ã¾ã™ãŒã€ã“ã®æƒ…å ±ã¯Matterãƒ‡ãƒ¼ã‚¿ãƒ¢ãƒ‡ãƒ«ã«æ¸¡ã•れãªã„ãŸã‚ã€å±žæ€§çŠ¶æ…‹ãŒç‰©ç†ãƒ‡ãƒã‚¤ã‚¹ã®çŠ¶æ…‹ã¨çŸ›ç›¾ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
3.3.1 ä»–ã®#include行ã®ä¸‹ã«æ¬¡ã®è¡Œã‚’è¿½åŠ ã—ã¦ãã ã•ã„:
#include <app-common/zap-generated/attributes/Accessors.h>C++3.3.2 Matterデータモデルã¨å¯¾è©±ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã«OnOffPlugエンドãƒã‚¤ãƒ³ãƒˆã®IDã‚’ä¼æ’ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れるヘルパーconst値を定義ã—ã¦ãã ã•ã„。
constexpr EndpointId kOnOffPlugEndpointId = 1;C++3.3.3 Accessor.hファイルã®Set()メソッドを使用ã—ã¦OnOff属性状態を更新ã—ã¦ãã ã•ã„。
アプリケーションスレッドã‹ã‚‰Matterスタックã¨ãƒ‡ãƒ¼ã‚¿ãƒ¢ãƒ‡ãƒ«ã‚³ãƒ³ãƒ†ã‚ストを変更ã™ã‚‹ã“ã¨ã¯ã€æœªå®šç¾©ã®å‹•作ã«ã¤ãªãŒã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚許å¯ã•れã¦ã„ã¾ã›ã‚“。代ã‚りã«ã€Matterスレッドを使用ã—ã¦ã“れを行ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
ã“れã¯SystemLayer().ScheduleLambda()メソッドを使用ã—ã¦å®Ÿè¡Œã§ãã¾ã™ã€‚
ButtonEventHandler()é–¢æ•°ã«æ¬¡ã®ã‚³ãƒ¼ãƒ‰ã‚¹ãƒ‹ãƒšãƒƒãƒˆã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
SystemLayer().ScheduleLambda([] {
Protocols::InteractionModel::Status status = Clusters::OnOff::Attributes::OnOff::Set(
kOnOffPlugEndpointId, Nrf::GetBoard().GetLED(Nrf::DeviceLeds::LED2).GetState());
if (status != Protocols::InteractionModel::Status::Success) {
LOG_ERR("Updating on/off cluster failed: %x", to_underlying(status));
}
});
C++4. アプリケーションをビルドã—ã¦DKã«ãƒ•ラッシュã™ã‚‹
レッスン2ã®æ¼”ç¿’1ã¨åŒæ§˜ã«ã€ã‚¢ãƒ—リケーションをビルドã—ã¦DKã«ãƒ•ラッシュã—ã¦ãã ã•ã„。
5. CHIPツールを使用ã—ã¦OnOffPlugデãƒã‚¤ã‚¹ã‚’コミッショニングã™ã‚‹
レッスン2ã®æ¼”ç¿’1ã¨åŒæ§˜ã«ã€CHIPツールを使用ã—ã¦OnOffPlugデãƒã‚¤ã‚¹ã‚’コミッショニングã—ã¦ãã ã•ã„。
5.1 ThreadボーダールーターãŒã¾ã 実行ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。実行ã•れã¦ã„ãªã„å ´åˆ:
5.1.1 æ–°ã—ã„コマンドラインターミナルを開ãã€æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦OpenThreadボーダールーターを実行ã—ã¦ãã ã•ã„:
/dev/ttyACM0ã‚’Threadコプãƒã‚»ãƒƒã‚µãƒ¼ãŒä½¿ç”¨ã—ã¦ã„るシリアルãƒãƒ¼ãƒˆç•ªå·ã«ç½®ãæ›ãˆã¦ãã ã•ã„。
sudo docker run -it --rm --privileged --name otbr --network otbr -p 8080:80 \
--sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" \
--volume /dev/ttyACM0:/dev/radio nrfconnect/otbr:fbde28a --radio-url spinel+hdlc+uart:///dev/radio?uart-baudrate=1000000Terminal command「The container name “/otbr” is already in use by container…」のようなエラーが発生した場合は、次のコマンドを実行してください
sudo docker kill otbrsudo ip -6 route del "fd11:22::/64" dev otbr0 via "fd11:db8:1::2"sudo ip link set dev otbr0 downsudo docker network rm otbr5.1.2 Webブラウザã§http://localhost:8080/アドレスを開ãã€OpenThreadボーダールーターã®ã‚°ãƒ©ãƒ•ィカルユーザーインターフェースã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ãã ã•ã„。
5.1.3 サイドパãƒãƒ«ã‹ã‚‰Formタブã«ç§»å‹•ã—ã€æŒ¿å…¥ã•れãŸã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãŒæ¬¡ã®ç”»åƒã¨åŒã˜ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。次ã«ã€FORMボタンを押ã—ã¦ã€OpenThreadボーダールーターã«Threadãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’å½¢æˆã—ã¦Threadリーダーã«ãªã‚‹ã‚ˆã†è¦æ±‚ã—ã¦ãã ã•ã„。

5.1.4 æ–°ã—ã„コマンドラインターミナルを開ãã€Docker内ã§å®Ÿè¡Œã•れã¦ã„ã‚‹Threadノードã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’確èªã—ã¦ãã ã•ã„:
sudo docker exec -it otbr sh -c "sudo ot-ctl state"Terminal commandå‡ºåŠ›ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™:
leader
DoneTerminal5.2 CHIPツールãŒã¾ã 実行ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。実行ã•れã¦ã„ãªã„å ´åˆ:
5.2.1 æ–°ã—ã„コマンドラインターミナルを開ãã€æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使用ã—ã¦å‰ã®æ¼”ç¿’ã§å–å¾—ã—ãŸãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰æ¸ˆã¿ãƒã‚¤ãƒŠãƒªãƒ•ァイルを実行ã—ã¦ãã ã•ã„:
PCã®å ´åˆ:
./chip-tool_x64 interactive start
Raspberry Piã®å ´åˆ:
./chip-tool_arm64 interactive start
5.3 デãƒã‚¤ã‚¹ã‚’ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ã‚³ãƒŸãƒƒã‚·ãƒ§ãƒ‹ãƒ³ã‚°ã—ã¦ãã ã•ã„。
5.3.1 Bluetooth LE経由ã®Matter広告ãŒå®Ÿè¡Œã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。
デãƒã‚¤ã‚¹ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã«æ¬¡ã®ãƒã‚°ãŒè¡¨ç¤ºã•れã¾ã™:
I: 730208 [DL]CHIPoBLE advertising started
I: 730212 [DL]NFC Tag emulation startedTerminalBluetooth LE経由ã®Matter広告ã¯ã€Matterテンプレートサンプルã§ã¯è‡ªå‹•çš„ã«é–‹å§‹ã•れã¾ã™ãŒã€1時間後ã«ã‚¿ã‚¤ãƒ アウトã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。広告ãŒã‚¿ã‚¤ãƒ アウトã—ãŸå ´åˆã¯ã€Matterデãƒã‚¤ã‚¹ã®BUTTON0を押ã—ã¦å†åº¦é–‹å§‹ã—ã¦ãã ã•ã„。
5.3.2 CHIPツールアプリケーションを実行ã—ã¦ã„ã‚‹ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«æˆ»ã£ã¦ãã ã•ã„。
次ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã‚³ãƒŸãƒƒã‚·ãƒ§ãƒ‹ãƒ³ã‚°ãƒ—ãƒã‚»ã‚¹ã‚’é–‹å§‹ã—ã€<thread dataset>引数ã«ã€ãƒ¬ãƒƒã‚¹ãƒ³2ã®æ¼”ç¿’1ã§å–å¾—ã—ã¦ã‚³ãƒ³ãƒ”ューターã«ä¿å˜ã—ãŸThreadデータセットを入力ã—ã¦ãã ã•ã„。<your_selected_node_id>ã‚’ã€ä»–ã®æ¼”ç¿’ã§ä½¿ç”¨ã•れã¦ã„ãªã„ランダムãªãƒŽãƒ¼ãƒ‰ID(例:2)ã«ç½®ãæ›ãˆã¦ãã ã•ã„。ã“ã®åŒã˜ç•ªå·ã¯ã€CHIPツール経由ã§ãƒ‡ãƒã‚¤ã‚¹ã«ã‚³ãƒžãƒ³ãƒ‰ã‚’é€ä¿¡ã™ã‚‹ã¨ãã«ä½¿ç”¨ã•れã¾ã™ã€‚
pairing ble-thread <your_selected_node_id> hex:<thread dataset> 20202021 3840Terminal commandãã®çµæžœã€Matterドアãƒãƒƒã‚¯ãƒ‡ãƒã‚¤ã‚¹ã¨CHIPツールアプリケーションã¯ã€ã‚³ãƒŸãƒƒã‚·ãƒ§ãƒ‹ãƒ³ã‚°ãƒ•ãƒãƒ¼ã‚’示ã™å¤šãã®è©³ç´°ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ãƒã‚°ã«å‡ºåŠ›ã—å§‹ã‚ã¾ã™ã€‚ã“れらã¯ã€ãƒšã‚¢ãƒªãƒ³ã‚°ã«å•題ãŒã‚ã‚‹å ´åˆã«ç‰¹ã«å½¹ç«‹ã¡ã€å•題ã®ãƒˆãƒ©ãƒ–ルシューティングをå¯èƒ½ã«ã—ã¾ã™ã€‚
5.1 CHIPツールãŒã¾ã 実行ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。実行ã•れã¦ã„ãªã„å ´åˆ:
5.1.1 æ–°ã—ã„コマンドラインターミナルを開ãã€æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使用ã—ã¦å‰ã®æ¼”ç¿’ã§å–å¾—ã—ãŸãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰æ¸ˆã¿ãƒã‚¤ãƒŠãƒªãƒ•ァイルを実行ã—ã¦ãã ã•ã„:
PCã®å ´åˆ:
./chip-tool_x64 interactive start
Raspberry Piã®å ´åˆ:
./chip-tool_arm64 interactive start
5.2 デãƒã‚¤ã‚¹ã‚’ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ã‚³ãƒŸãƒƒã‚·ãƒ§ãƒ‹ãƒ³ã‚°ã—ã¦ãã ã•ã„。
5.2.1 Matterデãƒã‚¤ã‚¹ã®BUTTON0を押ã—ã¦ã€Bluetooth LE経由ã®Matterアドãƒã‚¿ã‚¤ã‚¸ãƒ³ã‚°ã‚’é–‹å§‹ã—ã¦ãã ã•ã„。
デãƒã‚¤ã‚¹ã®ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã«æ¬¡ã®ãƒã‚°ãŒè¡¨ç¤ºã•れã¾ã™:
I: 730208 [DL]CHIPoBLE advertising started
I: 730212 [DL]NFC Tag emulation startedTerminal5.2.2 CHIPツールアプリケーションを実行ã—ã¦ã„ã‚‹ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«æˆ»ã£ã¦ãã ã•ã„。
次ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã€<wifi_ssid>ã¨<wifi_password>引数ã«Wi-Fiãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‡ãƒ¼ã‚¿ã‚’入力ã—ã¦ãã ã•ã„。
<your_selected_node_id>ã‚’ã€ä»–ã®æ¼”ç¿’ã§ä½¿ç”¨ã•れã¦ã„ãªã„ランダムãªãƒŽãƒ¼ãƒ‰ID(例:2)ã«ç½®ãæ›ãˆã¦ãã ã•ã„。ã“ã®åŒã˜ç•ªå·ã¯ã€CHIPツール経由ã§ãƒ‡ãƒã‚¤ã‚¹ã«ã‚³ãƒžãƒ³ãƒ‰ã‚’é€ä¿¡ã™ã‚‹ã¨ãã«ä½¿ç”¨ã•れã¾ã™ã€‚
pairing ble-wifi <your_selected_node_id> <wifi_ssid> <wifi_password> 20202021 3840Terminal commandãã®çµæžœã€Matterドアãƒãƒƒã‚¯ãƒ‡ãƒã‚¤ã‚¹ã¨CHIPツールアプリケーションã¯ã€ã‚³ãƒŸãƒƒã‚·ãƒ§ãƒ‹ãƒ³ã‚°ãƒ•ãƒãƒ¼ã‚’示ã™å¤šãã®è©³ç´°ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ãƒã‚°ã«å‡ºåŠ›ã—å§‹ã‚ã¾ã™ã€‚ã“れらã¯ã€ãƒšã‚¢ãƒªãƒ³ã‚°ã«å•題ãŒã‚ã‚‹å ´åˆã«ç‰¹ã«å½¹ç«‹ã¡ã€å•題ã®ãƒˆãƒ©ãƒ–ルシューティングをå¯èƒ½ã«ã—ã¾ã™ã€‚
6. OnOffPlugã®çŠ¶æ…‹ã‚’åˆ¶å¾¡ã™ã‚‹
6.1 CHIPツールã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€OnOffクラスターã§ä½¿ç”¨å¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ã‚’確èªã—ã¾ã—ょã†:
onoffTerminal command次ã®å‡ºåŠ›ã«ã€ä½¿ç”¨å¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•れã¾ã™:
onoff command_name [param1 param2 ...]
+-------------------------------------------------------------------------------------+
| Commands: |
+-------------------------------------------------------------------------------------+
| * command-by-id |
| * off |
| * on |
| * toggle |
| * off-with-effect |
| * on-with-recall-global-scene |
| * on-with-timed-off |
| * read-by-id |
| - Read attributes from this cluster; allows wildcard endpoint and attribute. |
| * read |
| * write-by-id |
| * force-write |
| * write |
| * subscribe-by-id |
| - Subscribe to attributes from this cluster; allows wildcard endpoint and attri...|
| * subscribe |
| * read-event-by-id |
| - Read events from this cluster; allows wildcard endpoint and event. |
| * subscribe-event-by-id |
| - Subscribe to events from this cluster; allows wildcard endpoint and event. |
+-------------------------------------------------------------------------------------+Terminal6.2 CHIPツールã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€OnOffクラスターã§èªã¿å–りå¯èƒ½ãªå±žæ€§ã‚’確èªã—ã¦ãã ã•ã„:
onoff readTerminal command次ã®å‡ºåŠ›ã«ã€ä½¿ç”¨å¯èƒ½ãªå±žæ€§ã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•れã¾ã™:
onoff read attribute-name [param1 param2 ...]
+-------------------------------------------------------------------------------------+
| Attributes: |
+-------------------------------------------------------------------------------------+
| * on-off |
| * global-scene-control |
| * on-time |
| * off-wait-time |
| * start-up-on-off |
| * generated-command-list |
| * accepted-command-list |
| * attribute-list |
| * feature-map |
| * cluster-revision |
+-------------------------------------------------------------------------------------+Terminal6.3 CHIPToolã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€OnOff属性ã®çŠ¶æ…‹ã‚’èªã¿å–ã£ã¦ãã ã•ã„:
onoff read on-off <your_selected_node_id> 1Terminal commandデフォルトã§ã¯OnOffPlugã®çŠ¶æ…‹ãŒã‚ªãƒ•(LED1ãŒã‚ªãƒ•)ã§ã‚ã‚‹ãŸã‚ã€CHIPãƒ„ãƒ¼ãƒ«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã«æ¬¡ã®ã‚ˆã†ãªå‡ºåŠ›ãŒè¡¨ç¤ºã•れã¾ã™:
[1770350882.137] [23287:23289] [TOO] Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 4111306799
[1770350882.137] [23287:23289] [TOO] OnOff: FALSETerminal6.4 CHIPãƒ„ãƒ¼ãƒ«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€OnOffPlugをオンã«ã—ã¦ãã ã•ã„:
onoff on <your_selected_node_id> 1Terminal commandLED1ã®çŠ¶æ…‹ãŒã‚ªãƒ³ã«å¤‰ã‚ã£ãŸã“ã¨ãŒç¢ºèªã§ãã¾ã™ã€‚ã¾ãŸã€Matterデãƒã‚¤ã‚¹ã®ãƒã‚°ã«æ¬¡ã®ã‚ˆã†ãªå‡ºåŠ›ãŒè¡¨ç¤ºã•れã¾ã™:
I: 267590 [ZCL]Toggle ep1 on/off from state 0 to 1
I: Cluster OnOff: attribute OnOff set to 1Terminal6.5 CHIPツールã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€OnOff属性ã®çŠ¶æ…‹ã‚’å†åº¦èªã¿å–りã€å¤‰æ›´ã•れãŸã“ã¨ã‚’確èªã—ã¦ãã ã•ã„:
onoff read on-off <your_selected_node_id> 1Terminal command今回ã¯ã€OnOffPlugã®çŠ¶æ…‹ãŒã‚ªãƒ³(LED1ãŒã‚ªãƒ³)ã§ã‚ã‚‹ãŸã‚ã€CHIPãƒ„ãƒ¼ãƒ«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã«æ¬¡ã®ã‚ˆã†ãªå‡ºåŠ›ãŒè¡¨ç¤ºã•れã¾ã™:
[1770351060.542] [23287:23289] [TOO] Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 4111306804
[1770351060.542] [23287:23289] [TOO] OnOff: TRUETerminal6.6 BUTTON1をクリックã—ã¦ã€LED1ã®çŠ¶æ…‹ãŒã‚ªãƒ•ã«å¤‰ã‚ã£ãŸã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。
6.7 CHIPツールã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€OnOff属性ã®çŠ¶æ…‹ã‚’å†åº¦èªã¿å–りã€å¤‰æ›´ã•れãŸã“ã¨ã‚’確èªã—ã¦ãã ã•ã„:
onoff read on-off <your_selected_node_id> 1Terminal command今回ã¯ã€OnOffPlugã®çŠ¶æ…‹ãŒã‚ªãƒ•(LED1ãŒã‚ªãƒ•)ã§ã‚ã‚‹ãŸã‚ã€CHIPãƒ„ãƒ¼ãƒ«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã«æ¬¡ã®ã‚ˆã†ãªå‡ºåŠ›ãŒè¡¨ç¤ºã•れã¾ã™:
[1770351094.016] [23287:23289] [TOO] Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 4111306806
[1770351094.016] [23287:23289] [TOO] OnOff: FALSETerminalOnOff属性をサブスクライブã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼ã‹ã‚‰æ‰‹å‹•ã§çŠ¶æ…‹ã‚’èªã¿å–ã‚‹å¿…è¦ãŒãªããªã‚Šã€çŠ¶æ…‹ãŒå¤‰æ›´ã•れãŸå ´åˆã«è‡ªå‹•çš„ã«é€šçŸ¥ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã¾ãšã€æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã‚³ãƒžãƒ³ãƒ‰ã®ä½¿ç”¨æ–¹æ³•ã‚’å¦ç¿’ã—ã¦ãã ã•ã„:
onoff subscribeTerminal command次ã®å‡ºåŠ›ã«ã€ä½¿ç”¨å¯èƒ½ãªå±žæ€§ã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•れã¾ã™:
Usage:
onoff subscribe attribute-name [param1 param2 ...]
+-------------------------------------------------------------------------------------+
| Attributes: |
+-------------------------------------------------------------------------------------+
| * on-off |
| * global-scene-control |
| * on-time |
| * off-wait-time |
| * start-up-on-off |
| * generated-command-list |
| * accepted-command-list |
| * attribute-list |
| * feature-map |
| * cluster-revision |
+-------------------------------------------------------------------------------------+Terminal次ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€ã‚µãƒ–スクリプションパラメータをå¦ç¿’ã—ã¦ãã ã•ã„:
onoff subscribe on-offTerminal command次ã®å‡ºåŠ›ã«ã€å¿…è¦ãªå¼•æ•°ã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•れã¾ã™:
Usage:
onoff subscribe on-off min-interval max-interval destination-id endpoint-idsTerminal6.8 次ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã€OnOff属性値をサブスクライブã—ã¦ãã ã•ã„:
onoff subscribe on-off 0 30 <your_selected_node_id> 1Terminal commandCHIPãƒ„ãƒ¼ãƒ«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã«æ¬¡ã®ã‚ˆã†ãªå‡ºåŠ›ãŒè¡¨ç¤ºã•れã¾ã™:
[1770351174.845] [23287:23289] [DMG] Subscription established in 217ms with SubscriptionID = 0xd60a035c MinInterval = 0s MaxInterval = 30s Peer = 01:0000000000000001Terminal6.9 BUTTON1をクリックã—ã¦ã€OnOff状態ã«é–¢ã™ã‚‹é€šçŸ¥ãŒå—ä¿¡ã•れるã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。BUTTON1をクリックã™ã‚‹ãŸã³ã«ã€CHIPãƒ„ãƒ¼ãƒ«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã«æ¬¡ã®ã‚ˆã†ãªå‡ºåŠ›ãŒè¡¨ç¤ºã•れã¾ã™:
[1770351187.923] [23287:23289] [TOO] Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 4111306807
[1770351187.923] [23287:23289] [TOO] OnOff: FALSETerminal