工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Raspberry Pi 2(Windows 10 IoT Core)を使用したホームオートメーション

コンポーネントと消耗品

>
Raspberry Pi2モデルB
× 1
HSRel5-I²C-Bus-Relaisplatine
5つのリレー、3つのGPIO、およびI2C接続を備えたリレーボードは、PCF8574に基づく配電器での取り付けをサポートします。
× 1
HSRel8(+8)-8fach-Relaisplatine
8つのリレー、8つのGPIO、およびI2C接続を備えたリレーボードは、MAX7311に基づく配電器での取り付けをサポートします。
× 1
I2C-Port 16 HS 16Bit-Porterweiterung
16個のGPIOとI2C接続を備えたポートエキスパンダーボードは、MAX7311に基づく配電盤での取り付けをサポートします。
× 1
>
DR-60-12 Hutschienen Netzteil 12V / 54W
すべてのデバイス用の12V電源
× 1
Hutschienen Netzteil 15W 5V 3A; MeanWell、DR-30-5
すべてのデバイス用の5V電源
× 1
ラズベリーパイのプロトタイピングシールド
ステータス表示用のLEDと入力ボード用の保護された割り込み入力を追加するために使用されます。信頼性の高い接続のための3極ネジ留め式端子も提供します。
× 1
I2C-Buffer HS
必要なプルアップ抵抗などを含むI2Cレベルシフターは、P82B96に基づく配電器での取り付けをサポートします。
× 1
Arduino Nano R3
DHT22センサーとI2Cバス間のブリッジとして使用されます。
× 1
433Mhz送信者と受信者
ワイヤレスリレーのサポート用。
× 1

アプリとオンラインサービス

>
Microsoft Visual Studio 2015
Arduinoソフトウェア(IDE)

このプロジェクトについて

更新2: プロジェクトはまだ成長しており、多くの新機能がすでに実装されています(Twitter-ClientやTelegram-Botsの統合など)。新機能の詳細については、GitHubリポジトリとリリースノートを確認してください(またはTwitterでフォローしてください)。このプロジェクトページをできるだけ早く更新できることを願っています。

更新1: まず、このプロジェクトのページを読んでフィードバックをくれたすべての人に「ありがとう」と言いたいです(プライベートまたはコメントで)。このプロジェクトをMakerFaire Rome2015とMicrosoftTechnical Summit 2015で発表するのはとても楽しかったし、今後のイベントはまだ待っています。イベントの写真をいくつか追加しました。

<図> <図> <図> <図> <図> <図> <図>

私は過去3年間、ホームオートメーションソリューションを開発しています。これには、ハードウェアの物理的なインストールとソフトウェアの開発が含まれます。

機能

現時点では、次の機能がサポートされています。

入力

  • プッシュボタン(BUSCH-JAEGER 2020US)
  • モーションディテクター(Abus360°BW8085)
  • 室温(DHT22に基づく自分のデバイス)
  • 室内湿度(DHT22に基づく自分のデバイス)
  • ウィンドウの状態(Honeywell Slimlineリードコンタクトを使用して開いたり閉じたり)
  • 日の出、日の入り、気温、湿度(OpenWeatherMapから取得)

出力

  • ランプ(天井)(リレーで駆動、調光なし)
  • ソケット(リレーで駆動、調光なし)
  • ローラーシャッター(窓)(上下に2つのリレーで駆動)
  • ファン(天井)(ギアごとに3つのリレーで駆動)
  • バスルームファン(ギアごとに2つのリレーで駆動)

その他の機能

  • このソリューションには、仮想アクチュエータの制御に使用できるiOS、Android、Windows、MacOSX用のWebアプリが含まれています。 Webアプリの構成は、コントローラー(Windows IoTインスタンス)から読み込まれます。
  • 入力と出力によって生成されたすべてのイベントは、Microsoft Azure Event Hubに公開したり、CSVファイルに記録したりできます。
  • コントローラー(Windows IoTインスタンス)は、コンソールアプリケーションを使用して表示できるUDPベースのトレースを提供します。トレースは非常に詳細であり、バグや誤って接続されたアクチュエータなどを見つけるために使用できます。
  • カスタムアクチュエータを追加して、より多くのハードウェアをサポートできます。
  • 物理出力を論理出力に組み合わせることができます。
  • アニメーション(論理出力内の物理出力をアニメーション化できます)。
  • システム全体は、エラー/ハードウェア障害に対して可能な限り耐性があるように設計されています。複数のコアコンポーネントが切断/破損している場合でも、残りのシステムは意図したとおりに機能します(たとえば、ハードウェア障害のためにリビングルームのボードの一部に到達できませんが、バスルームは意図したとおりに機能します)
  • 433Mhzリモートリレーのサポート。


コンセプト

3年前に家をリフォームしたので、自分のホームオートメーションソリューションを実装することにしました。実装の背後にある主なアイデアは、リレーを使用して配電器からすべてを制御することです。この決定により、すべてのボタン、ランプ、ソケット、ローラーシャッターなどは、アクチュエータを介して独自のケーブルで配電器に接続する必要があります。 KNXやEIBのようなバスは必要ありません。

:私はドイツに住んでいるため、すべてのコンポーネントは230V電源で動作するように設計されています。他の種類の電源装置は、さらに変更が必要な場合があります。 230Vケーブル(NYM)、新しい配電器などの設置は、私の好みで行われます。 電気技師であり、私自身ではありません。


ハードウェア

新しい配電器

家の2階を担当する新しい配電器を設置しました。

<図> <図> <図>

I2Cバス

一般に、I2Cバスは長いケーブルで動作するようには設計されていませんが、いくつかのトリックを使用して可能な最大長を増やすことができます(すべての最適化の理由はわかりませんが、これらはWWWで見つけたものです)。

  • バスを5Vで駆動します。 RaspberryPiは3.3Vでバスを駆動するため、I2Cレベルシフター(P82B96)が必要です。これは、RaspberryPi 2(私のソリューションではコントローラーと呼ばれます)に追加された最初の(そして唯一の)デバイスです。この接続用のケーブルはできるだけ短くする必要があります。この仕様では、バスを最大15Vで実行できますが、PCF8574などのスレーブは最大5Vしかサポートしていません。
  • CAT7のようなツイストペアケーブルを使用します。 1つのペアをSDA&GNDに使用し、もう1つのペアをSCL&GNDに使用することが重要です。 SDA&SCLに1本のツイストペアケーブルを使用しないでください。また、ケーブルのシールドがPE(ドイツ)に接続されていることを確認してください。
  • より線ケーブルをお勧めします。これにより、すべてを接続するのがより複雑になりますが、ケーブルの長さが長くなります。
  • SDAおよびSCLのバスの端に10kのプルアップ抵抗を追加します。
  • スレーブがより速い速度をサポートしている場合でも、バス速度を100kビット(標準モード)に制限します。
  • I2Cバッファー(P82B96)を含めます。 ICは、レベルシフターとして使用することも、物理セグメントでバスを分離するために使用することもできます。配電器内でこのバッファの1つを使用しました。バッファはバスの中央に配置する必要があります。

この最適化されたI2Cバスは、配電器内のすべてのボードを接続するために使用されます。


リレーボード(出力)

CCTools ドイツからは、I2Cバスに接続できるリレー付きのボードを販売しています。ボードを個別部品として購入することも、回路基板のみを購入することもできます。これにより、ポートエキスパンダーをピン互換の代替品に置き換えることができます。デバイスの使用可能なアドレスが限られているため、前者が必要です。リレーとICのホルダーを追加したので、片方が壊れた場合でも簡単に交換できます。もう1つのポイントは、 PCA9555D を使用できることです。 MAX7311 の代わりに PCA9555D 安くて注文も簡単です(ドイツ)。

<図>

HSRel5 リレーボードには、5つのリレーと3つの GPIO があります 。必要なすべてのポートは、内部の PCF8574 から取得されます。 8つの GPIO を備えた8ビットポートエキスパンダー 。最初の5つはリレーに使用され、最後の3つは他の出力に使用できます。リレーの動作には12Vが必要ですが、これはポートエキスパンダー(LEDのみを駆動可能)では提供できません。したがって、リレードライバが必要です。リレーはリレードライバーに接続され、リレードライバーはインバーターに接続されます。ポートエキスパンダーのすべてのポートの状態が HIGH であるため、このインバーターが必要です。 ICに電力が供給された後。これにより、すべてのリレーが閉じられますが、これは意図しない動作です。

結論: 最初のリレーを閉じる必要がある場合は、 00011110(MSB)を送信する必要があります。 I2Cバスを使用してポートエクスパンダに接続します。これにより、最初のポートが LOW に設定されます (他のポートも更新されます)。ポートエキスパンダーの最初のポートは、インバーターの最初の入力に配線されています。また、インバータの最初の出力は、リレードライバ(ULN2803)の最初の入力に配線されています。チェーンの最後の部分として、リレーはリレードライバーの最初の出力に配線されます。

CCTools の別のリレーボード HSRel8(+8)です MAX7311 を使用します ポートエクスパンダとして、8つのリレーと8つの GPIO が含まれています 。このボードはハードウェアインバータを必要としません。これは、 HIGH HSRel5 でのリレーの状態 オフを意味します および HIGH HSRel8(+8)での状態 ONを意味します。 この異なる動作は、これらのデバイスのドライバーによって処理され、ソフトウェアの一部です。

すべてのランプ、ソケットなどは、これらのリレーの1つに接続されています。自宅では現在、8 HSRel5 を使用しています および4 HSRel8 。ソリッドステートリレーやその他の種類のリレーを備えたボードも使用していますが、短くするために、ここでは詳しく説明しません。 HSRel5 最も単純なリレーボードです。ただし、 PCF8574 8つの異なるアドレスのみを許可します。 PCF8574 A は同じポートエクスパンダですが、8つの異なるアドレスがあります。これは、16 HSRel5 I2C に配線できます バス。


ポートエキスパンダー(入力)

ボタン、モーションディテクター、リードスイッチ(窓用)は、 I2C-Port16 HS と呼ばれるボードに配線されています。 CCTools から 。このボードには、ポートエキスパンダー( MAX7311 )が含まれています )、すべてのポート用のプルアップ抵抗(5V、10K)およびセラミックコンデンサ( 100NF )。ボードは12Vまたは5V電源で使用できます。セラミックコンデンサは、ノイズを除去するために使用されます(グリッチフィルタ)。

<図>

すべての入力デバイス(ボタン、モーション検出器、リードスイッチ)には、配電器につながる独自のケーブルがあります。 CAT7 PE(保護グランド)に接続されたシールドが必要なため、すべての入力デバイスにケーブルが使用されます。ローラーシャッターのボタンのように複数のボタンがあるスポットは、1つの CAT7 のみを使用して接続できます。 ケーブル。

配電器では、すべての入力デバイスがポートエキスパンダーの1つのポートと GND に配線されています。 。プルアップ抵抗により、ポートの状態は HIGH デフォルトでは。ボタンを押すと、ポートが GND に接続されます その結果、 LOW ポートの状態。モーションディテクターとリード接点もそのように機能しています。

共有された割り込み ケーブルはすべての入力ボードに配線されています。このケーブルはデフォルトでプルアップされています。いずれかのポートエクスパンダで状態が変更された場合、対応するポートエクスパンダが割り込みの状態を設定します。 LOWに。 この動作により、I2Cバスを使用したすべてのポートエクスパンダの継続的なポーリングが防止されます。 Pi2のソフトウェアは、対応する GPIOのみをポーリングしています。 割り込みGPIOでの状態が変更された場合、各入力ボードの現在の状態がそれに応じてポーリングされ、必要に応じてイベントが発生します。


ラズベリーパイ2

Raspberry Pi2はWindows10 IoTを実行しており、カスタムケースを使用して配電器に取り付けられています。また、ステータスLEDを備えたプロトタイピングシールドがあり、割り込み プルアップ抵抗付きのポート( 10K )、保護抵抗器( 1K )、およびセラミックコンデンサ( 100NF )グリッチフィルタリング用。すべてのケーブルはネジ留め式端子を使用して配線できます。

<図> <図> <図>

温度および湿度センサー

すべての部屋/場所(現在は10)の現在の温度と湿度は、 DHT22(AOSONG)を使用して測定されます。 このセンサーは、アドレス指定をサポートしていない独自のプロトコルを使用して、現在の温度と湿度を提供します。これには、すべてのセンサーがマイクロコントローラーに配線されている必要があります。私のソリューションでは、 Arduino Nano V3.0 を追加することにしました。 I2C のスレーブとして バス。 Arduino Nano 接続されているすべてのセンサーから2.5秒ごとに値を読み取り、ローカルにキャッシュします。これらの値は、 Arduino Nano から読み取ることができます。 ポートID(0-10)を送信した後。 I2Cバスを使用してレジスタからデータを読み取る場合も同じ動作です。

<図> <図> <図> <図>

温度と湿度は、2つの異なるビューを使用してWebアプリに表示されます。

<図>

湿度の右側にあるアイコン( "Luftfeuchtigkeit" )エントリは、壁にカビが発生するリスクが高いかどうかを示します。 60%未満の値は 、70%未満が黄色 70%を超えると赤になります。

Webアプリは、すべてのセンサーの概要も提供します。


ハードウェアのセットアップ

次の画像は、入力ボードと出力ボードを使用した配電器でのハードウェア設定を示しています。 12V / 5V電源とN / PE接続は表示されていません。

<図> <図>

433Mhzリモートリレー

この課題の過程でプロジェクトを移行して文書化する一方で、温度センサーと湿度センサーとともにプレーンケース内に便利に隠される433Mhzセンダーユニットも開発しました。

この機能により、リレーボードはオプションになります。 Arduino Nano DHT22 を担当します (温度と湿度)センサーも433Mhz信号を送信しています。送信者( FS1000A )家の中央の部屋のケース内に温度と湿度センサーと一緒に取り付けられています。センダの範囲をさらに広げるために、さらに12Vで電力が供給されます(3.3でも動作しますが、短距離で動作します)。

<図> <図>


リモートリレーの主な問題の1つは、状態情報を送信していないことです。したがって、ユーザーが元のリモコンを使用してシステムに状態の変化を導入することは絶対に可能です。同期を強制するために、ソフトウェアソリューションは5秒ごとに状態を自動的に更新します。これにより、Webアプリに表示される状態が可能な限り信頼できる状態に保たれます(ただし、元のリモコンの使用は役に立たなくなります)。

リモートリレーはすべての自動化で使用でき、リレーボードからのリレーと同じ機能を提供します。

433Mhzリモコンのコードは、現在、プロトタイピングボード上の回路構築を介してのみ手動で構成できます。次に、これらのコードが構成にコピーされます。 フリッツ 必要な回路基板のスケッチは以下で参照され、 Arduino スケッチは、リポジトリの CK.HomeAutomation.SensorsBridge \ RemoteCodeFinder フォルダにあります。 。


デジタル猫用トイレ

私たちの猫用の猫用トイレは、使用後に新鮮な空気を入れるための窓が残念ながらない保管室に置かれています。この問題により、ボックスは古い未使用に接続されています 煙道。煙道に接続されているチューブの前に、配電器のリレーに配線されたファンがあります。物置の人感センサーが猫も検知し、数分間ファンを始動させます。

<図> <図> <図> <図>

猫のトイレには、ファンをリモートで制御できる独自のアイコンがWebアプリにあります。

<図> <図>

生成されたログを分析し、対応するアクチュエータの変更(Azure SQL DBまたはCSVファイル)でフィルタリングすることにより、猫のトイレの使用状況を経時的に追跡し、必要なクリーニング間隔を改善することができます。


ソフトウェア

Windows 10 IoTがリリースされる前は、ソフトウェアは G120 で実行されていました。 GHIエレクトロニクスから バージョン4.3で.NETMicroFrameworkを使用します。ただし、主にパフォーマンス(120Mhz、16MB RAM、インタープリター)が不足しているため、計画されているすべての機能が計画どおりに機能しているわけではありません。

数週間前、Microsoft Azure統合などの機能を追加しながら、Windows 10IoTバックグラウンドタスクとして実行するようにコードベースの移行を開始しました。

以下で参照されているリポジトリには、Visual Studio2015ソリューションとそれに依存するすべてのプロジェクトが含まれています。 Raspberry Pi 2をホームオートメーションコントローラーとして使用するために必要なのは、他のリレーボードやセンサー用のカスタムドライバーを作成することで拡張できるようにすることだけです。


プロジェクト

ソフトウェアソリューションのプロジェクトは、次のようにグループ化されています。

  • アプリ(Webアプリを含む)
  • コントローラー(Piのスタートアッププロジェクトとホーム構成が含まれています)
  • SDK(すべての共有プロジェクトを含む)
<図> <図>

CK.HomeAutomation.TraceViewer

このプロジェクトには、コントローラー(Pi2インスタンス)によって送信されたトレースメッセージを表示するコンソールアプリケーションが含まれています。現在、すべての通知は、UDPソケットを使用してブロードキャストアドレスに継続的に送信されます。したがって、ファイアウォールでポート(19227など)を開く必要があります。私は主にバグや設定ミスを見つけるためにTraceViewerを使用しています。

<図>

通知を送信するために必要なすべてのクラスは、プロジェクト CK.HomeAutomation.Notifications にあります。 。


CK.HomeAutomation.Networking

このプロジェクトには、基本的なHTTPサーバーの実装が含まれています。 HTTPサーバーはウェブアプリに必要であり、JSON形式でステータス情報を提供し、ステータスが変更されたリクエストを受け入れます。

HTTPサーバーはWebアプリをホストすることもできます。パッケージ名が異なるため、Webアプリのコンテンツは、管理用SMB共有を使用して宛先フォルダーに手動でアップロードする必要があります。

ターゲットフォルダ: \\ [IP] \ c $ \ Users \ DefaultAccount \ AppData \ Local \ Packages \ CK.HomeAutomation.Controller-uwp_p2wxv0ry6mv8g \ LocalState \ app


CK.HomeAutomation.Controller。*

Controllers の各プロジェクト フォルダはスタートアッププロジェクトです IoTバックグラウンドタスクの実装 。詳細なドキュメントが提供されるまで、これらのプロジェクト(現在私の家で使用されている)を例として使用できます。

さらに、プロジェクト CK.HomeAutomation.Controller.Empty を提供します ソリューションを試すための出発点として。 Cellar という名前のコントローラー 庭と駐車場の照明を担当するのは、このドキュメントではカバーされていません。

ソリューションをテストする前に、次のタスクに精通している必要があります。

  • Windows 10IoTを使用してRaspberryPi2を最初からセットアップする(https://ms-iot.github.io/content/en-US/win10/SetupRPI.htm)
  • Microsoft PowerShellリモートセッション(https://ms-iot.github.io/content/en-US/win10/samples/PowerShell.htm)を使用してRaspberryPi2に接続します
  • ユニバーサルWindowsアプリをRaspberryPi2にデプロイします。

ソリューションディレクトリには、小さな PowerShell も含まれています。 SetupRaspberryPi.ps1 というスクリプト RaspberryPi2をセットアップするためのコマンドの共通チェーンを実行します。スクリプトを実行することをお勧めしますが、必須ではありません(独自のインフラストラクチャに応じてすべてのIP設定を調整してください

<図>

CK.HomeAutomation.Actuators

このプロジェクトは、最高レベルの抽象化を提供します。家、部屋は押しボタン、ランプ、ソケットなどのすべてのアクチュエーターを終了し、このプロジェクトで実装され、すべてのアクチュエーターの機能に応じて特別なイベントと方法を提供します。

部屋は、構成を読みやすく理解しやすい流暢なAPIを使用して作成できます。

<図>

MotionDetector-アクチュエータ

このアクチュエータは、部屋の人や動きを検出するために使用されます。 Abus から360°のモーションディテクターBW8085を使用しています すべての部屋の天井に取り付けられています。

モーションディテクタアクチュエータの実装は、2つのイベントを提供します。 2つのうちの最初のものは MotionDetected です モーションが検出された場合に発生するイベント。物理モーションディテクタは、出力を HIGH に保ちます それ以上の動きが検出されなくなるまでレベルを上げ、その時点で2番目のイベント DetectionCompleted 解雇されます。

次の画像は、Webアプリのモーション検出器のエントリを示しています。すべてのモーションディテクターは、Webアプリを使用して(ソフトウェアのみで)非アクティブ化できます。赤い点は、モーションが現在検出されていることを示します。

<図>

ボタン-アクチュエータ

このアクチュエータは、物理的な押しボタンを表しています。ボタンには、押されたことを示す2つのイベントがあります。イベント PressedShort イベント PressedLong の間にボタンが短時間(<1.5秒)押された場合に発生します ボタンが長時間(> 1.5秒)押された場合にのみ発生します。継続時間(1.5秒)を超えてプッシュボタンが離されなかった場合も、2番目のイベントが自動的に発生します。この2つのイベントにより、複数の機能を備えたボタンが可能になります。

例:

<図>

このソリューションには、 VirtualButton も含まれています 。このボタンは同じインターフェースを実装します( IButton )、ウェブアプリのみを使用して「押す」ことができます。


ソケット、ランプ、BinaryStateOutput-アクチュエータ

基本クラス BinaryStateOutput バイナリ状態( ON )をサポートするすべてのアクチュエータに使用されます およびオフ ) それだけ。これらのアクチュエータの例は、 Socket です。 および Lamp 。基本実装は、更新するためのメソッドを提供します( ON およびオフ )または状態を切り替えます。 ボタン IBinaryStateOutputActuator を実装するオブジェクトと対話できます 、これにより、複数のカスタムアクチュエータを追加できます。

次の画像は、すべてのバイナリ状態出力のテンプレートを示しています。左側のアイコンは、ソケットとランプで異なります。 「Mückenstecker」の毒瓶のようなカスタムアイコン "エントリは、構成ファイル( Configuration.js )を使用して定義できます。 )Webアプリの場合。

<図>

CombinedBinaryStateActuators

タイプ BinaryStateOutput のすべての物理アクチュエータ 論理バイナリ状態アクチュエータを作成するために使用できます。 1つのアクチュエータを「マスター」に設定する必要があります。これは、状態を切り替える必要がある場合に新しい状態を判別するために必要です。アクチュエータには独自のIDがあり、他のバイナリ状態出力アクチュエータと同じように使用できます(必要なインターフェイスが実装されています)。

この実装の重要な利点の1つは、状態の更新を処理する方法です。通常、バイナリ状態出力の新しい状態は、I2Cバスを介して各デバイスに1つずつ直接コミットされます。この動作により、アクチュエータの状態が更新されるたびに、短いが目に見える遅延が発生します。 CombinedBinaryStateActuator 内部変更追跡を使用してこの遅延を防ぎます。

例:

<図>

StateMachine-アクチュエーター

ON よりも複雑な状態 およびオフ StateMachine を使用して構成できます 。このアクチュエーターは、ポート(リレー)または他のバイナリ出力アクチュエーターの複数の状態を可能にします。

ファンの例:

<図>

The state machine provides methods to turn it off or moving to the next state. The state is reset to OFF if the last state of the state machine has been reached and the initial state should be applied next.

Another use case for the state machine is creating templates or "moods" for a couple of other actuators.

Example mood:

<図>

The method WithTurnOffIfStateIsAppliedTwice ensures that the state of the state machine will change to OFF if a particular trigger has been activated a second time as the configured state is still active (Example :Pressing the push button for "DeskOnly " will activate the "DeskOnly " mood. If the push button is pressed again while the "DeskOnly " mood is still active, the actuator applies the OFF state. A dedicated push button for the OFF state is not needed.).

The following image shows the template for state machines. The caption and image of each state can be changed using the configuration file of the web app.

<図>

TemperatureSensor / HumiditySensor

The values for temperature and humidity are read using the I2C sensors bridge. Both values are read from a single physical device but separated into an actuator for temperature and an actuator for humidity. The values are automatically polled every 10 seconds.


Home Automation !=Home Control

As mentioned before the importing thing is automation. Without automations, the whole solution is only one big remote for the home. This solution provides several automations:


AutomaticTurnOnAndOffAutomation

This automation sets the connected binary state outputs to ON. A push button or motion detector can be used as the trigger. It is required to specify the desired duration of the ON state. The state is set to OFF if that range exceeds. The state is automatically set to OFF if the specified range is exceeded. An optional time range can be provided in which the automation rule is enabled. Predefined ranges for "day only " or "night only " are available (requires a weather station object).

Example:

<図>

AutomaticRollerShutterAutomation

This automation is used to move several roller shutters automatically according to several conditions. One of these conditions is sunrise and sunset which means that the roller shutters are automatically moving up at sunrise and moving down at sunset (requires a weather station object). It is also possible to add a diff to sunrise and sunset. According to the sunrise and sunset feature, it is possible to specify a time for "do not open before" which will ensure that the roller shutter is never opened before that point in time has been reached. Another condition is the outside temperature (also requires a weather station object), which enables the roller shutters to be closed automatically if the outside temperature exceeds a certain value like for example 28°C. This feature is intended for roof windows.

The position of the roller shutter is also tracked via time measuring. The required duration between up and fully closed must be configured.

Example:

<図>

The following screenshot shows an entry for roller shutters at the web app. The progress bar over the buttons is showing the current position.

<図>

AutomaticConditionalOnAutomation

This automation is used to set the state of several binary state outputs to ON while conditions are matching. This automation is used for lamps in the garden which are only ON 夜に。 It is possible to specify one time range for the ON state and multiple time ranges for the OFF state. It is also possible to use sunrise and sunset for the ON state (requires a weather station object).

Example:

<図>

General automation and complex conditions

The latest feature of the new implementation is a generic automation and condition framework. The generic automations are designed to execute custom actions if the configured conditions are met. This is checked every time a trigger is invoked via a push button, motion detector, interval or any other code.

<図> <図>

Weather station

Many of the automations and conditions are depend on environment conditions like the current weather, sunrise and sunset times, outside temperature or humidity. All of these information is currently provided every 60 seconds by a virtual weather station backed by WebApi of OpenWeatherMap. The virtual weather station is implemented using the interface IWeatherStation , this makes it easy to seamlessly integrate physical stations located in garden.


CK.HomeAutomation.Hardware

This project contains the drivers for all currently supported input and output devices. Specifically the relay boards, input boards from CCTools and 433Mhz remote switches. The driver and source code of the Arduino Nano (sensor bridge and 433Mhz sender) is included too. All higher level objects like actuators and automations are implemented against interfaces to add an abstraction layer to the concrete bare to the metal hardware classes. This makes it easy to later add further drivers for other boards and sensors.


CK.HomeAutomation.Telemetry

This project contains two components. The first one is a CSV writer which writes every changed state to the "LocalState" directory of the package. This file can be downloaded from the Pi2 using the administrative SMB share: \\192.168.1.15\c$\Users\DefaultAccount\AppData\Local\Packages\CK.HomeAutomation.Controller-uwp_p2wxv0ry6mv8g\LocalState\BinaryStateOutputActuatorChanges.csv

Example content of the the CSV file:

<図>

The second component is the AzureEventHubPublisher 。 This component sends events for any state has change and the values of any sensor change to an Microsoft Azure EventHub 。 Events are also generated if push buttons are pressed or motion is detected. The solution contains the SQL scripts for creating the required SQL database tables and the required query for a StreamAnalytics job (in folder #Azure).

<図>

Every changed actuator state generates to entries at the Azure SQL database. The first entry contains the START event and the new state. The second entry contains the END event with the total duration of that state in seconds.

I already created some reports using a free Microsoft PowerBI account.

<図>

WebApp

The software solution contains the project CK.HomeAutomation.App . This project is a web app building on top of AngularJS , jQuery and Bootstrap 。 The room configuration is read from the controller (Pi2) and the UI is generated according to the existing rooms.

The web app can be opened directly from the file system using the index.html  file or uploaded to a web server. The file Configuration.js  is used to configure and translate the web app. The IP address of the Controller (Pi2 instance) must be set in the configuration file.

The web app can be added to the home screen of iOS only if it is hosted at a web server (I am personally using a BananaPi with nginx). Adding a web app to the home screen is described here: http://www.tech-recipes.com/rx/44908/ios-add-website-shortcut-to-home-screen/

<図> <図> <図> <図> <図>

Hosting the web app at the Raspberry Pi2 is already in progress but currently not supported completely.

Terminal

The web app also runs at the living room. An old iPad 3 is used as the terminal.

<図>

Future

The solution described above is still under development and will get more features in the future. Some of the planned are: 

  • Support for actuators based on infra red signals (like an RGB-LED-Strip).
  • Support for XML based configuration files in addition to code based configuration.
  • Implementation of a dedicated tablet web app with a different layout.
  • Support for reed switches for windows which are showing the state at the web app.
  • Libraries with drivers for devices from other manufacturers (like 433Mhz remote switches).
  • Controlling of the valves of the heating system (outputs and temperature reading already implemented).
  • Alarm system which sends notifications if motion is detected or windows are opened (requires implementation of point 4).
  • A hardware weather station.
  • Automatically closing roller shutters if the window is open and rain is detected (the currently used weather API already provides the required information).
  • More Unit Tests.
  • Detailed documentation at the GitHub wiki.
  • Animations (this feature was already implemented using NETMF but I was not able to migrate it completely within the time range of the IoT contest)

If you are interested to contribute to this project (hardware, software, documentation or anything else), feel free to contact me.

コード

CK.HomeAutomation
This repository contains the complete solution including the SDK, WebApp and my personal configuration.https://github.com/chkr1011/CK.HomeAutomation.git

回路図

This is the circuit which us required to read the 433Mhz codes from the remote control. The sketch contains the circuit board of the DHT22 sensor which is mounted at every room. The shield contains a status LED and screw terminals for the I2C bus and the interrupt. This is a regular temperature and humidity sensor which conains a 433Mhz sender. Only one is required for the entire home.

製造プロセス

  1. RaspberryPi温度ロガー
  2. RaspberryPiを使用した天気のリモートモニタリング
  3. Node-REDを使用してBlynkへのSensorTag
  4. RaspberryPiを使用したモーションセンサー
  5. RaspberryPiを使用して自宅の温度を監視します
  6. Windows 10 IoT Core –心拍数パルスの読み取り
  7. RASPBERRY PI HOME AUTOMATION
  8. Raspberry Pi2上のWindows10 IoT Core –Adafruitセンサーデータ
  9. Windows 10 IoTCoreおよびSHT15
  10. Windows 10 IoT Core for Raspberry Pi3モデルB +
  11. ラズベリーパイとブリッジシールドを使用したロボット