開発の紹介にはかなりの時間がかかりましたが、ほとんどのドキュメントの注意深い研究を
開発プロセス全体は、GroovyのSmartThings IDE Webアプリケーションで行われます。 テストはモバイルデバイスから実行する方が便利ですが、同じ開発環境でデバイスシミュレーターを作成することは可能です。 グラフィカルシェルをテストする場合、SmartThings Classicモバイルアプリケーション( Android 、 iOS )を使用する必要が既にあります。
プラグインデバイスは、Z-Waveのほぼすべてのデバイスに制御を追加できるボードです。 さらに、接続されているデバイスは異なる数(最大32個)にすることができます。 したがって、ソフトウェアレベルでは、接続されているすべてのタイプのデバイスも処理し、アプリケーションへの出力を制御する必要があります。
処理されたタイプのリスト:
- スイッチバイナリ-2つの位置のみを持つデバイス:オン/オフ
- マルチレベルの切り替え-さまざまな意味でオンまたはオフにできるデバイス。 たとえば、ダイマー。
- センサーマルチレベル-非バイナリ値を送信するセンサー。 たとえば、温度センサー。
- メーター-カウンターのようなデバイス
- 通知-バイナリセンサーはこのタイプになります。 たとえば、リードスイッチ。
- サーモスタット-サーモスタットの操作を担当する別のクラスのチーム
文書構造
2つの論理ブロックを区別できます。
- ハンドラーに関する説明とメタ情報。 これには、デバイスに関する情報、UIおよびその他の情報の描画方法が含まれます。
metadata()
メソッドによって割り当てられます。
- ハンドラーメソッドはハンドラーロジックです。 デバイスとの「通信」を担当します。
別に、デバイスから受信したコマンドを解釈するparse()メソッドを区別できます。
一連の記事の中で、各ブロックの目的と内容をさらに詳しく説明します。
メタデータ
メソッドの名前からわかるように、これにはメタ情報が含まれています。
このブロックに含まれるものを順番に考えてみましょう。
定義()
このメソッドでは、引数はそれぞれハンドラーの名前、名前空間、作成者の名前の3つのことを示します。
- ハンドラーの名前は、公開時および子デバイスの作成時に将来使用されます。
- 名前でハンドラーを検索するときに名前空間を使用して、たとえば同じ名前のハンドラー間で正しい名前が見つかるようにします。 SmartThingsでは、githubでニックネームを使用することをお勧めします。
- 著者の名前にはあなたの名前が記入されています。
definition(name: "Your device", namespace: "yournamespace", author: "your name") {}
次の変数をメソッド本体で宣言できます:
attribute, capability, command, fingerprint
。 さらに、それが何であり、いつ適用されるかについて、より詳細に検討します。
接続とフィンガープリント
デバイスを接続します。 この場合、SmartThings V2 HubとZ-Unoが使用されます。
新しいZ-WaveまたはZigBeeデバイスの追加時に、ハブは接続しようとしているデバイスのタイプを認識し、最も関連性の高いハンドラーの検索を開始しようとします。 彼は「指紋」によってそれを選択します。 ハブがカスタムハンドラーで一致を検出しない場合、最も近い標準テンプレートの1つを使用しようとします。
「フィンガープリント」はハンドラー自体に設定され、サポートするデバイスのタイプを示します。 公式ドキュメントには、Z-WaveデバイスとZigBeeデバイスでは異なると記載されていますが、Z-Waveの実装を検討します。
Z-Waveプロトコルデバイスには、製造元、デバイスタイプ、機能などに関する情報が保存されます。 デバイスとのいわゆる「インタビュー」の間に、STはこの情報をZ-Waveの生の説明で収集します。 そのような行の例:
zw:Ss type:2101 mfr:0086 prod:0102 model:0064 ver:1.04 zwv:4.05 lib:03 cc:5E,86,72,98,84 ccOut:5A sec:59,85,73,71,80,30,31,70,7A role:06 ff:8C07 ui:8C07
各キーの値は、「指紋」を埋めるために使用されます。 各項目の詳細な説明は、 ここにあります 。 ハンドラーで使用されるものを検討します。
情報を含むこの行を見つけるには、[マイデバイス]タブに移動して、目的のデバイスをクリックする必要があります(その前に、デバイスをネットワークに追加する必要があります)。
mfrは、製造元IDを含む16ビット値です。 製造元とそのIDのリストは、 ここにあります 。
prod-製品タイプIDを含む16ビット値-一意のデバイスタイプID。
modelは、製品IDを含む16ビット値です。
inClusters-特定のコマンドクラスの必要性を確立する8ビット値。 たとえば、ハンドラがMultiChannel CCで動作することを示す必要がある場合、そのコード0x60を記述する必要があります。 SmartThings CCで利用可能なリストは、 ここにあります 。
これらの4つのキーは、このハンドラが属するデバイスをハブが正確に理解するのに十分です。 それらが私とどのように使用されるかの例:
fingerprint mfr: "0115", prod: "0110", model: "0001", inClusters: "0x60" fingerprint mfr: "0115", prod: "0111", inClusters: "0x60"
デバイスはより多くのパラメーターを持つことができます。その場合、このハンドラーに正常に接続できますが、宣言された指紋と一致しないパラメーターが少なくとも1つある場合、デバイスはこのハンドラーを無視します。
Smartthingsでは、製造元(mfr)とモデル(prod、model)に関する指紋情報を追加して、ハンドラーの選択が明らかでない場合を除外することをお勧めします。 たとえば、デフォルトで使用されるテンプレートまたは例のいずれかの指紋が自分のものと一致する場合。
コード内の場所
metadata { definition(...) { ... fingerprint mfr: "0115", prod: "0110", model: "0001", inClusters: "0x60" fingerprint mfr: "0115", prod: "0111", inClusters: "0x60" } ... }
リリースまで、記事の完全なサイクルが計画されています。 この情報が開発に役立つことを願っています。