在天文化
有限公司

HomeBridege上的動作偵測實作-filesensor

本篇背景是要利用eps8622觸發人體感應器,並將訊號送入HomeBridge,達成動作偵測。

環境:

  • 利用docker安裝的HomeBridge一個
  • PHP伺服器一個eps8622
  • 紅外線感應器一個。

    主要流程為:

    ESP8266偵測到動作—>觸發http服務—>touch對應檔案—>docker判斷對應檔案異動—>觸發sensor服務

HomeBridge部分會利用到homebridge-better-filesensor這個插件,他的原理是偵測一個對應的檔案是否被異動,來當作觸發條件,因此這邊的作法是:
1.設定一個sensor對應檔案,此檔案直接對應到實體主機中的檔案。
2.eps8622偵測到對應人體訊號時異動該檔案,這樣插件就會偵測到檔案異動並觸發HomeBridge動作感應器。

–開始–

HomeBridge端

1.將docker內目錄對應到實體目錄,因後面要使用HTTP的方式觸發檔案異動,因此將目錄對應到主機網頁目錄

docker          實體主機
/var/www/html   /mnt/sensor2

2.搜尋homebridge-better-filesensor 並安裝。
3.設定一個玄關動作感應器,且對應檔案為/mnt/sensor2/motion1.txt:

{
    "accessory": "FileSensor",
    "name": "玄關動作感應器",
    "path": "/mnt/sensor2/motion1.txt",
    "window_seconds": "5",
    "inverse": false,
    "sensor_type": "m"
}

eps8622觸發服務

建立一個PHP檔,這裡叫做filesensor.php,只需寫入以下短短程式

<?php
$typ = $_GET['typ'];
$file = __DIR__ .'/'.$typ.'.txt';
echo $file;
touch($file);
?>

當ESP8266偵測到人體活動時,只要觸發http://url/filesensor.php?typ=motion1
這樣filesensor.php就會執行touch /var/www/html/motion1.txt,
此時docker內/mnt/sensor2/motion1.txt也會異動,進而觸發sensor元件。

寫在最後

因HomeBridge是利用docker安裝,因此檔案管理需特別處理,原本一開始是另外寫一隻程式去偵測實體檔案是否有異動,再去docker中觸發對應檔案。但這樣會有以下缺點:

  1. 需要一直監視特定檔案是否異動。
  2. 需多維護一隻監控程式,風險加大。
  3. docker內檔案異動時間與實體檔案有時間差,造成人可能已經離開了才觸發對應服務。

因此最後想到不如將實體目錄掛進docker中,這樣不僅不用一直掃描檔案,而且可同步觸發sensor。

最後,這個方式任何homebirdge中利用file作處理的感應器都可如法炮製,將對應目錄連結至實體目錄,並將所需檔案產生至該目錄,這樣docker中就可同步取得所需資料。

贊(0) 抖內一下
未經允許請勿轉載在天文化有限公司 » HomeBridege上的動作偵測實作-filesensor

評論 搶沙發

  • 暱稱 (必填)
  • 信箱 (必填)
  • 網址

台灣PAY掃一掃斗內我

WordPress Appliance - Powered by TurnKey Linux