當前位置: 華文星空 > 財經

鋪設智慧家居,有哪些傳感器和感應器是值得安裝的?

2021-04-20財經

前邊的esphome教程裏講過怎麽使用esp-01s制作智慧開關、智慧彩燈控制器、溫濕度檢測儀、土壤濕度檢測儀等等,今天呢我們再講講人體傳感器。

目前主流的人體傳感器檢測元件不外呼紅外和微波兩種,像安防系統中用到的雙鑒探頭、多元三鑒探頭,都是用的這個。下圖就是被動紅外模組和微波模組。

PS:講解下被動紅外的概念,探測器本身不發射任何能量而只被動探測、接收來自環境的紅外放射線。一旦有人體紅外線放射線進來,經光學系統聚焦後熱釋電器件就會產生突變電訊號。與被動紅外相對應的是主動紅外,安防中用的紅外對射就是主動紅外。

該紅外傳感器是5V-12V供電,輸出3.3V高電平(切記不要使用3.3V供電,會帶不起來),它有兩種觸發模式:

1、當檢測到有人活動時,會持續輸出高電平,等延時時間一結束就變為低電平(公共區域的感應照明就是這個模式);

2、當檢測到有人活動時,會輸出高電平,在延時時間段內,如果有人體在其感應範圍活動,將一直保持高電平輸出,直到人體離開檢測範圍,才輸出低電平(感應模組檢測到人體的每一次活動後會自動順延一個延時時間段,並且以最後一次活動的時間為延時時間的起始點)。

PS:我們需要用到的是模式2,原理:透過ESP 監測模組輸出引腳,當有高電平時(即有人活動時),觸發相應動作(比如控制一個燈開啟;夜間觸發報警)。

話不多說,上程式碼:

esphome: name: pir_sensor ##這裏的名稱一定要與你建立這個模組時的名稱相同; platform: ESP8266 ##這裏不能變; board: esp01_1m ##這裏不能變; wifi: ssid: "test-wifi" ## wifi帳號; password: "12345678" ## wifi密碼; manual_ip: static_ip: 192.168.123.198 ##固定此裝置IP地址為192.168.123.198; gateway: 192.168.123.1 ##路由器、閘道器地址; subnet: 255.255.255.0 ##子網路遮罩; # Example configuration entry debug: # Logger must be at least debug (default) logger: level: debug # Enable Home Assistant API api: password: "1" ## api密碼,用於連結ha驗證; ota: password: "1" ## ota密碼,用於後續線上升級; web_server: ## web控制,添加了這2行,就可以在網頁端開啟裝置ip; port: 80 switch: - platform: gpio name: "PIR light relay" pin: GPIO2 ##使用GPIO-0 id: relay binary_sensor: - platform: gpio pin: GPIO0 ##使用GPIO-0 name: "PIR Sensor" device_ class: motion ##傳感器型別 id: pir_motion ##設定傳感器ID on_press: ##如果觸發,則執行繼電器開合的動作 - switch.turn_on: relay - platform: template ##引入自動化樣版 name: temp_motion ##樣版名稱 lambda: 'return id(pir_motion).state;' filters: - delayed_off: 2min ##若觸發紅外傳感器,則延時2min後關閉繼電器 on_release: - switch.turn_off: relay

上面程式用到自動化樣版控制項Template,它的作用在於觸發紅外傳感器時,能夠自動將繼電器開啟 ,延時一段時間後自動關閉,如果光使用relay,是達不到自動關閉的效果的。

目前只測試了下自動延時的效果,其實還可以改成if_else、while和wait_until的觸發模式,也就是說,不需延時,只要檢測到人體就一直保持觸發狀態,讓繼電器一直閉合(這裏需要將紅外模組設定成連續觸發模式)

這個可以用於衛生間、起床小夜燈的場景,當檢測到人體活動時,一直保持觸發狀態,讓燈一直開著。

下面以if_else程式碼為例:

##前面配置部份省略 switch: - platform: gpio name: "PIR light relay" pin: GPIO2 ##使用GPIO-0 id: relay binary_sensor: - platform: gpio pin: GPIO0 ##使用GPIO-0 name: "PIR Sensor" device_ class: motion ##傳感器型別 id: pir_motion ##設定傳感器ID on_press: ##如果觸發,則執行繼電器開合的動作 - switch.turn_on: relay - platform: template ##引入自動化樣版 name: temp_motion ##樣版名稱 on_press: then: - if: condition: lambda: 'return id(pir_motion).state;' then: - logger.log: "Detected somebody activity" - switch.turn_on: relay ##這裏也可以加延時語句,這樣就跟上面的一樣了 else: - logger.log: "There is no one around" - switch.turn_off: relay


如果只是單純當人體傳感器,用來當安防探頭用的話,直接這樣寫就好:

binary_sensor: - platform: gpio pin: GPIO0 ##使用GPIO-0 name: "PIR Sensor" device_ class: motion

PS:當然你按最後這個寫,然後在homeassistant的自動化中再關聯燈也是可以的。總之「條條大道通羅馬」。

燒錄及homeassistant中的操作見前邊的文章。下邊為homeassistant中的顯示情況。

PS:上述模組,可單用一個,也可以兩個都有(兩個都用會更準確,減少誤報率)。

本人實際使用中,發現蹲廁所時,總是要動一下才行。本來出個恭,結果順帶打了一套太極拳;這種事情「是可忍,孰不可忍也」。於是我又用了下邊這個模組,公釐波雷達。

PS:人體存在感應器就用的這玩意兒,不過那個頻率更高,79G的(人體存在感應器就是人在微動的情況下就能檢測到,比如呼吸時)。

塗鴉智慧和綠米是有成品賣的,價格在400多。不過這個模組也不便宜,見下圖。

PS:關於esphome系列,目前先講到這裏吧;如果後續有太另類的東西,再開講吧。

-- -- -- -- -- -- END -- -- -- -- -- --

我是小白,智慧家居愛好者、一卡通行業從業者、曾經的建築智慧化從業者。致力為開源智慧家居平台添磚加瓦。