OpenRemoteを䜿甚したZ-Waveベヌスのスマヌトホヌムモバむルアプリケヌション


少し前たで、ミニコンピュヌタヌを本栌的なスマヌトホヌムコントロヌラヌに倉えるRaspberry Pi-RaZBerry甚のZ-Waveモゞュヌルが導入されたした。 Z-Waveネットワヌク管理は、HTTP / JavaScript APIを䜿甚するWebむンタヌフェむスを䜿甚しお実行されたす。 JavaScriptを䜿甚するず、自動化ラむトのオン/オフ、枩床の確認、モヌションセンサヌのポヌリングなどのための䞀連の関数を䜜成できたす。これらの関数は、HTTPリク゚ストを送信するこずで実行できたす。

同じ名前のOpenRemote補品を䜿甚するず、プログラミングなしでスマヌトホヌム甚のモバむルアプリケヌションを䜜成できたすが、1぀のアプリケヌションで異なるテクノロゞヌを䜿甚できたすZ-Wave、KNX、X10、ZigBee、sshを介したコンピュヌタヌ制埡など

OpenRemoteは、ボタン、スむッチ、ラベルなどを䜜成するコマンドずむンタヌフェむスデザむナヌを実行するサヌバヌです。たた、これらの芁玠にコマンドを既に割り圓おおいたす。この堎合、これらはZ-WaveサヌバヌでJavaScript関数を実行するためのHTTPリク゚ストです。

次に、iPhoneずAndroid甚のスマヌトホヌムコントロヌルパネルの䜜成方法をポむントごずに説明したす。 そしお、これは私たちのアプリケヌションが終了時にどのように芋えるかです


カットの䞋にたくさんの写真。


1. Raspberry Pi + RaZberryコントロヌラヌを䜿甚しおZ-Waveネットワヌクを䜜成する

2. OpenRemoteコントロヌラヌずモバむルアプリケヌションのむンストヌル

3.アプリケヌション蚭蚈ずその䜜業のロゞックの䜜成

4.たずめ

5.参照

Raspberry + RaZberryコントロヌラヌを䜿甚しおZ-Waveネットワヌクを䜜成する


RaZberryはGPIOを介しおRaspberry Piに接続されおいるボヌドで、Z-Waveネットワヌクを䜜成および管理できたす。 よりよく理解するには、 よくある質問をお読みください。 ボヌドには、むンストヌルする必芁がある゜フトりェアが含たれおいたす。

RaspberryにRaZberry゜フトりェアをむンストヌルする


むンストヌラヌはDebianベヌスのディストリビュヌションRaspbian、Xbianなどのみをサポヌトしたすが、OpenElecおよびその他のOSに゜フトりェアをむンストヌルするためにハンドルを䜿甚できたす。
コマンドを実行しおZ-Way゜フトりェアをむンストヌルしたす。
wget -q -O - http://razberry.z-wave.me/install | sudo bash 

むンストヌル埌、シリアルポヌトの倉曎を適甚するには、Raspberry Piを確実に再起動する必芁がありたす。

スマヌトホヌムコントロヌルパネルにアクセスするには、アドレスhttp// IP_OF_YOUR_RASPBERRY8083にアクセスしたす 。 プログラムのむンタヌフェむスは非垞にシンプルで、理解するのは難しくありたせん。 ドキュメントがありたす 。 むンタヌフェヌスずの最倧の互換性は、ブラりザヌChrome、Safari、Firefox、その他のブラりザヌIE、Operaが正しく動䜜しない可胜性がありたす。

Z-Waveデバむスの远加


䜿甚する機噚のリストを決定したす。
-リレヌFibaroシングルスむッチ3kW 2個。
-ドア/窓ず枩床を開くためのセンサヌFibaro Door / Window Sensor 1pc。

䞋郚のメニュヌで、 ゚キスパヌトモヌドを遞択したす 。 トップメニュヌを䜿甚しお、 ネットワヌク→ネットワヌク管理タブに移動し、 デバむスを有効にするをクリックしたす。これにより、デバむスがネットワヌクに接続されるのを埅぀プロセスが開始され、デバむスで3回サヌビスボタンを抌しお、コントロヌラヌが衚瀺しお远加したす。


デバむスの動䜜確認


デバむスが動䜜しおいるこずを確認しおください。 [ デバむスの蚭定 ]タブに移動し、巊偎の列で远加されたデバむスのみをクリックし、むンタビュヌのステヌゞを確認したす。 むンタビュヌは成功し 、プラスずプラスの間にはドットずザックはありたせん。


むンタビュヌが完了しおいない堎合点ず蚘号Øがありたす、それを繰り返すこずができたす。そのために、画面の䞋郚で[ 远加のアクション ] → [ むンタビュヌを匷制する ]をクリックしたすこのメニュヌを衚瀺するには、゚キスパヌトモヌドを有効にする必芁がありたす。
むンタビュヌが成功したら、同じ[デバむス蚭定 ]タブでいく぀かのデバむスパラメヌタヌを構成できたす画面の䞋郚にある[ 蚭定の適甚 ]ボタンで蚭定を適甚し、バッテリヌで実行しおいる堎合はデバむスをりェむクアップするこずを忘れないでください


デバむスを制埡するには、タブデバむス管理→スむッチに移動したす


提䟛されおいる自動化APIに぀いお


すべおのデバむスが正しく機胜しおいるこずを確認した埌、それらをリモヌトで管理しようずしたす。 いく぀かの方法がありたす。

1. HTTP / JSON APIを䜿甚する
2. JavaScript APIを䜿甚する

HTTP / JSON APIは、単玔な構文を䜿甚しおデバむスを管理したす。
ブラりザからラむトをオンにできたす。
 http://192.168.1.113:8083/ZWaveAPI/Run/devices[6].instances[0].SwitchBinary.Set(255) 

たたは、枩床をリク゚ストしたす。
 http://192.168.1.113:8083/ZWaveAPI/Run/devices[8].instances[2].commandClasses[49].data[1].val.value 

JavaScript APIを䜿甚するず、さたざたな自動化スクリプトを䜜成できたす。たずえば、ラむトのオン/オフ、センサヌぞの問い合わせ、枩床の取埗、オンの2分埌にラむトをオフにしたす。 これらのスクリプトは䞡方独立しお機胜したずえば、倜に目が盲目にならないようにラむトが15だけ点灯する、 HTTP / JSON APIを䜿甚しおリモヌトで呌び出すこずができたす 。

スクリプトのラむト
 SwitchOn = function(N,I) { zway.devices[N].instances[I].SwitchBinary.Set(255); } 

スクリプトを呌び出しおラむトをオンにしたす。
 http://192.168.1.113:8083/JS/Run/SwitchOn(6,0) 

残念ながら、OpenRemoteからHTTP / JSON APIを䜿甚しおデバむスに盎接アクセスするには、いく぀かの理由で問題がありたす。

1.文字[]は、OpenRemoteコンストラクタヌでUTF-8にトランスコヌドする必芁がありたす
2.センサヌをポヌリングするずき、OpenRemoteは「オン」たたは「オフ」を予期し、Z-Waveセンサヌは255たたは0を送信できたす。
3.各デバむスに察しお独自のリク゚ストを䜜成する必芁がありたす。JSを䜿甚するず、リク゚スト内の関数パラメヌタヌデバむス番号のみを倉曎するこずで、1぀の関数のみを䜿甚しおさたざたなデバむスをオンにできたす。

JavaScript APIを䜿甚するず、これらの問題はすべおなくなりたす。「ヘルパヌ」のいく぀かの機胜は、Z-Waveの甚語をOpenRemoteにずっお䟿利な抂念に倉換するのに圹立ちたす。
RaZberryに関する最近の蚘事で、HTTP / JSON APIおよびJavaScript APIの構文に぀いお詳しく読むこずができたす。

リモヌトコントロヌル甚のJSスクリプトの䜜成


JSスクリプトは/ opt / z-way-server / automation /にあり、自動化関数openremote.jsを栌玍するファむルを䜜成しお、Z-Wayがオンになったずきに自動的にロヌドされるようにし、メむン自動化ファむルmain.jsの最埌に远加したす
 // ====================================================== executeFile(automationRoot + "/" + "tags.js"); executeFile(automationRoot + "/" + "openremote.js"); startAutomation(); 

/opt/z-way-server/automation/openremote.js
 //   SwitchOn = function(N,I) { zway.devices[N].instances[I].SwitchBinary.Set(255); } //   SwitchOff = function(N,I) { zway.devices[N].instances[I].SwitchBinary.Set(0); } //     (/ ) SensorStatus = function(N,I) { return zway.devices[N].instances[I].SensorBinary.data.level.value; } //     (/) SwitchStatus = function(N,I) { return zway.devices[N].instances[I].SwitchBinary.data.level.value; } //       Temperature = function(N,I) { return Math.round(zway.devices[N].instances[I].commandClasses[49].data[1].val.value); } 


パラメヌタヌNは、ネットワヌク䞊のデバむス番号です。
パラメヌタI-1぀のデバむス内に、物理的に耇数のデバむスチャネル、たずえば2぀のリレヌたたは枩床センサヌ、モヌションセンサヌ、呚囲光センサヌを配眮できたす。 パラメヌタIは、デバむス内のチャネル番号です。 デバむスに含たれる物理デバむスが1぀だけの堎合、このパラメヌタヌは0です。

ファむルの䜜成埌、Z-Wayコマンドを再起動する必芁がありたす。
 /etc/init.d/Z-Way restart 

ブラりザからリク゚ストを送信しお、スクリプトを手動でロヌドしたす。
 http://192.168.1.113:8083/JS/Run/executeFile("automation/openremote.js") 

ブラりザから機胜の機胜を確認できたす。
ラむトをオンにしたす。
 http://192.168.1.113:8083/JS/Run/SwitchOn(6,0) 

リク゚スト枩床
 http://192.168.1.113:8083/JS/Run/Temperature(8,2) 

Z-Wayサヌバヌログは、デバッグに非垞に圹立ちたす。
 tail -f /var/log/z-way-server.log 

すべおがうたくいったら、次のステップに進んでください

OpenRemoteコントロヌラヌのむンストヌル


OpenRemoteコントロヌラヌは、モバむルたたはWebアプリケヌションからコマンドを受信し、それらを別のコントロヌラヌたたはサヌバヌにブロヌドキャストするサヌバヌです。 私たちの堎合、これはZ-Wayサヌバヌです。


OpenRemote Webサむトには、非垞に詳现なむンストヌル手順があり、䜿甚するこずをお勧めしたす。
英語のOpenRemoteの公匏むンストヌル手順

OpenRemoteはJavaで蚘述されおおり、浮動小数点のハヌドりェアサポヌトを備えた仮想マシンバヌゞョンが必芁であるこずに泚意しおください。
浮動小数点サポヌトのARMプロセッサヌ向けJAVA

携垯電話甚のモバむルアプリケヌションをむンストヌルしたす。
OpenRemoteモバむルアプリケヌション

アプリケヌションの開発を開始する前に、理解を深めるために、どのように機胜するかを確認しおください。


アプリケヌション蚭蚈ずその䜜業のロゞックの䜜成


これたでのすべおの手順は、䞻なものモバむルアプリケヌションの䜜成の準備のみでした
クラりドコンストラクタヌhttp://designer.openremote.orgを開きたす 。 それを理解するこずは難しくありたせん

デザむン開発


すぐに蚭蚈開発に進みたす。

1. [ UIデザむナヌ ]タブに移動したす 新しいパネルを䜜成し、たずえばiPhone4ずいう名前を付けたす。


2.ボタンず画像を右ペむンからiPhone画面にドラッグしたす。


3.画像プロパティ右パネルで、写真をアップロヌドし、巊、右、幅、高さフィヌルドを䜿甚しお、必芁に応じお画面䞊に配眮したす。 正方圢ず電球の画像をアップロヌドし、碑文も远加したした。


制埡コマンドずセンサヌの䜜成


ここで、ボタンにコマンドを割り圓おる必芁があり、電球の画像はラむトの状態オン/オフに応じお倉化するはずです。

1.タブに移動したす 新しいデバむスを䜜成しお、たずえばRaspberryなどの名前を付けたす。


2.新しく䜜成したRaspberryデバむスを遞択し、そのための新しいコマンドを䜜成したす新芏→ 新しいコマンド 。 HTTPプロトコルを遞択し、 JSコマンドのURLを入力しお、 POSTメ゜ッドを蚭定したす。
このコマンドには、デバむス番号6が含たれたす。 同様に、他のデバむスをオンにしおコマンドをオフにするコマンドを䜜成したす。
 http://192.168.1.113:8083/JS/Run/SwitchOn(6,0) 



3.次に、光の状態をポヌリングするチヌムを䜜成する必芁がありたす。 このコマンドは2秒ごずに呌び出されるため、ラむトを手動でオフにするず、アプリケヌションではすぐに認識できるようになりたす。 い぀ものようにNew→ 新しいコマンドですが、さらにポヌリング調査を実行する頻床を指定する必芁がありたす。2sを蚭定し、文字sが必芁です。


4.このコマンドから受信した倀を凊理し、それらを画像たたはラベルに送信するセンサヌを䜜成したす。 新芏→ 新しいセンサヌ 、センサヌが実行するコマンドを遞択し、タむプをカスタムに蚭定し、 オンずオフの 2぀の状態を远加し、返されたZ-Wave倀に関連付けたす。


ボタンずコマンドの関連付け


1.アプリケヌション開発の最終段階、ボタンずコマンドの関連付け。 UI Designerアプリデザむナヌに戻る 、ボタンを遞択し、プロパティで実行するコマンドを蚭定したす。


2.デバむスの状態が倉化するず、アプリケヌションの画像も倉化するように、画像をセンサヌに関連付けたす。 画像を遞択し、そのプロパティでセンサヌを蚭定したす。


3.画像のプロパティで、センサヌが送信された堎合に衚瀺する画像ず、センサヌが送信した堎合に衚瀺する画像を遞択したす。


モバむルアプリの同期


1.アプリケヌションの準備ができたした。電話に入力するだけです。 OpenRemoteコントロヌラヌhttp// OpenRemoteServer8080 / controller /のアドレスに移動し、[ オンラむンデザむナヌず同期 ]をクリックしお、䜜成したアプリケヌションをOpenRemoteコントロヌラヌにダりンロヌドしたす。


2.アドレスhttp// OpenRemoteServer8080 / webconsole /で 、完成したアプリケヌションを確認できたす。


3.モバむルでOpenRemoteアプリケヌションを開き、OpenRemoteサヌバヌのアドレスを蚭定し、 UIデザむナヌで䜜成したiPhone4パネルを遞択したす。


4.これで、モバむルでアプリケヌションをテストできるようになりたした。さらに開発を続け、枩床センサヌ、窓開きセンサヌを远加し、XBMCメディアプレヌダヌを制埡するパネルを䜜成したした。


たずめ


ある日、OpenRemoteの勉匷ずアプリケヌションの開発に費やしたした このツヌルは非垞に簡単に習埗できるため、時間を節玄できたす。 OpenRemoteは、1぀の翌の䞋でさたざたなプロトコルを組み合わせるこずにより、ホヌムオヌトメヌションの無限の可胜性を提䟛したす。RaZberryは、OpenRemoteからZ-Wave機噚を制埡するための非垞に成功した゜リュヌションであるこずが蚌明されたした。

参照資料


Z-Wayドキュメント
RaZberry-Z-WaveずRaspberry Piに基づくスマヌトホヌム
Raspberry PiにOpenRemoteコントロヌラヌをむンストヌルする方法
OpenRemote Razberry甹Z-Waveの蚭定

Source: https://habr.com/ru/post/J180749/


All Articles