スマートホームソフトウェア

すべての良い一日。 趣味として、彼は「スマートホーム」システムの一部として使用できるプログラムを書きました。 読者にすぐに興味を持たせるために、ソフトウェアの使用シナリオの一部を紹介します。

画像

画像
モバイルアプリケーションからZWave電球をオンまたはオフにします
画像
デバイスがネットワークに表示されるとき(ユーザーが家に到着するとき)、
ZWave電球、Modbus RTUリレーモジュールをオンにし、WakeOnLanを介してコンピューターを起動し、テレビをオンにします
画像
ブラウザを起動し、Yandex.radioに切り替えて、
トラックのフリップ(ホットキーのエミュレーション)

要するに:

1.ソフトウェアの主要部分は、C#で記述されたWindows上で実行されるサーバーです。
2. Javaで記述されたAndroid OS上のクライアント。
3. UWPおよびIOS上の計画クライアント、Webクライアント。

ソフトウェアのいくつかの機能:

1.スクリプトデザイナー。 サイクルと条件を含む複雑なシナリオの作成。
2. ZWaveおよびModbusデバイスを操作します。
3.ネストのシナリオ。 あるスクリプトを別のスクリプトで手順として使用できます。
4.リモートスクリプトを実行します。 現在のサーバーのスクリプトで、リモートスクリプトを実行できます。
5.モジュールを作成してシステムに機能を追加する機能。
6.スマートフォンを使用してスクリプトを実行します。

スクリプトコンストラクター


このプログラムを使用すると、複雑なスクリプトと単一のアクションの両方を作成できます。

単一のアクションは、1つのアクションのみを含むスクリプトです。 サイクルと条件を作成する方法はありませんが、クライアントUIのボタンの特定のアクションのみを「マッピング」できます。

例として、「ソケット」カテゴリを作成し、すべてのランプ、家庭用ファン、ランプ、テレビ、コンピューターを収集しました。 これらのデバイスのいずれかを有効にするには、Androidでクライアントを開き、「ソケット」カテゴリに移動して、適切なメニュー項目を選択します。

通常、単一のアクションを使用するのは不便です。これは、さまざまなデバイスをある条件下で起動するのが便利であるためです。 これは「複雑なシナリオ」が必要なものであり、これについては後で説明します。

複雑なスクリプトコンストラクターを使用すると、ループと条件を持つスクリプトを作成できます。 表示と編集の2つのモードがあります。
表示モードのスクリプト例
編集モードのスクリプト例
画像
画像

コンストラクター内のIFおよびELSE 。 これらの構成では、論理演算子NOT、OR、Iを使用して条件チェーンを作成できます。コンストラクターを使用すると、条件のグループを作成し、そのグループで演算子を直接使用できます。 条件が空のままの場合、自動的にfalseとして計算されます。

いくつかの組み込みチェック(日付、時刻などのチェックなど)とプラグインがあります。

これまでのところ、コンストラクタで 。 サイクルは状態と身体から成ります。 条件は、IFコンストラクトで作成されるのと同じ方法で作成されます(条件グループ、NOT、OR、AND演算子)。
IFステートメントと可能な条件
バイオペレーター
画像
画像

画像
もしそうでなければ、そして何かで満たされる必要がある場合の身体。 実際、このコンテンツはスクリプトで最も重要なものです。

スクリプトデザイナーのメインウィンドウ
画像

次のスクリプトオプションを構成することもできます。

-外部から(オン/オフ)実行すると、スクリプトを別のマシンまたはクライアントから実行することを禁止または許可できます。
-システム起動時のスクリプトの自動起動。
-スクリプトカテゴリを選択すると、クライアントUIにメニュー項目を表示して、特定のカテゴリでスクリプトを実行できます。

ZWaveおよびModbusデバイスを使用する


現在、システムはZWave(openzwaveに基づく)およびModbus RTU(nmodbusに基づく)デバイスをサポートしています。

ZWaveは、ホームオートメーションで使用される無線通信プロトコルです。 プロトコルを実装するには、小型の低電力RFモジュールが使用されます。 現在、ZWave市場には、ZWave電球、ソケット、リレーモジュール、スイッチ、ロック、温度センサー(湿度、動き、漏れ)、温度コントローラー、空調制御デバイスなど、かなり広範なデバイスのリストがあります。 マルチセンサーも一般的です-いくつかのセンサー(たとえば、ライト、プレゼンス、温度センサー、ドアセンサーなど)を組み合わせたデバイスは、経済的なコストと部屋の場所の点で非常に魅力的です。

私のプログラムでは、ZWaveモジュールを使用すると、デバイスの削除、追加、コントローラーのリセットなど、デバイスですべての標準操作を実行できます。 複数のZWaveコントローラーを使用することもできますが、エンドユーザーには違いがわかりません。 たとえば、コントローラー「A」に接続されているセンサーから温度測定値を取得し、コントローラー「B」を使用して空調を開始できます。 制限はありません。アクションと検証は標準的な方法で実行され、スクリプトデザイナーに追加されます。
画像
ZWaveデバイスの市場は非常に広いです。 リレーモジュール、電球、空調用デバイス、温度コントローラー、床暖房レギュレーター、ソケット、スイッチなど、多くのアクチュエーターがあります。 ドア開閉装置、温度センサー、漏れセンサー、存在センサーなど、多くのセンサーもあります。 ZWaveコントローラーとして、USBスティックを使用できます。
画像
ZWaveモジュールのメインウィンドウ
画像
コントローラーとその操作を選択するためのウィンドウ
画像
サイトの選択(センサー、スイッチなど)
画像
ノードパラメーターの選択(オン/オフ、温度、湿度などのさまざまな数値パラメーター)

Modbusは、それをサポートする電子デバイス間の通信に使用される有線プロトコルです。 このプログラムのコンテキストでは、自宅で使用するリレーモジュールを操作するのに役立ちます。
画像
Modbusリレーモジュール。 COMポート経由でコントローラーに接続します
画像
Modbus RTUモジュールのメインウィンドウ

スクリプトのネスト


スクリプトのネストは、スマートホームスクリプトを分解するために使用されます。 多くの場合、1つのアクションが多くのシナリオに関与する状況があります(たとえば、すべてのwi-fiデバイスが単純にタイマーによってネットワークを終了するシナリオに従って、プログラムのメニュー項目をクリックすると、すべての家庭用デバイスの切断が発生します)。 (または編集)各シナリオで同じアルゴリズムを使用すると便利ではないようです。 これを行うには、現在作成されているスクリプトを現在のスクリプトで実行できる組み込みアクションがあります。 また、新しい家電製品が頻繁に追加される(または「スマートホーム」のアルゴリズムのその他の頻繁な変更)場合にも便利です。すべてのシナリオの動作を変更するには、それらで使用される1つのシナリオのみを変更すれば十分です。
リスト内の既存のスクリプトアクション
既存のシナリオを選択する
画像
画像

リモートスクリプトの実行


リモートスクリプトを実行することにより、あるサーバーのスクリプトを別のサーバーのスクリプトで実行できます。 例として、この機能を使用したいと思います。 部屋の照明をオンにし、デスクトップを起動し(WakeOnLanを使用)、テレビをオンにし、デスクトップが接続されている「light + multimedia」というスクリプト(ホームサーバー上)作成し、今すぐ待機しますプログラムのインスタンス(デスクトップ)が起動され、リモートスクリプトを起動することで「音楽をオンにする」スクリプトと「20ユニットのサウンド」スクリプトを実行します。
リスト内の「リモートスクリプトの実行」
サーバーとそのスクリプトを選択する
画像
画像

カスタムモジュールの作成


ユーザーが通常のツールを使用して複雑なスクリプトを作成できるという事実に加えて、プログラムではC#のカスタムモジュールを使用して「拡張」できます。 スクリプトのアクションとチェックのすべての要素(「日付によるチェック」、「メッセージの表示」、「Modbusアクション」、「ZWaveアクション」など)は、ICustomActionおよびICustomCheckerから継承されたクラスです。 特定のルールに従って、ユーザーは独自のモジュールを作成できます。モジュールは非常に単純(たとえば、窓の外で現在の気温を鳴らす)でも、フレームワーク全体をカバーできる複雑なものでもかまいません。 ICustomActionまたはICustomCheckerインターフェイスから継承し、いくつかの属性を配置し、DLLをコンパイルし、「MODULES」タブ(モジュール作成するための完全な指示 )を通じてプログラムに追加するだけで十分です。
タブ「モジュール」
画像

スマートフォンを使用してスクリプトを実行する


*これまでのところ、Android OSのみ

スクリプトは、メイン画面とカテゴリに表示されます。 カテゴリは仮想の「フォルダ」です。 スクリプトが開始されると、対応するボタンのステータスが更新されます。
接続設定画面
スクリプト画面
画像
画像

さらに、PCのクイック起動メニューからスクリプトを実行することもできます。
クイック起動メニュー
画像

将来、UWP、IOS、Web、およびデバイスを管理する音声モジュール(近い将来の計画)および音声を使用してスクリプトを作成する(戦略的な計画)のクライアントが計画されています。

最後のビデオ:



» プログラムページ
» ダウンロードリンク
» 使用説明書
» 独自のモジュールを作成する手順

PS:プログラムでエラーを見つけた場合は、 メールに転送してください。

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


All Articles