ESPHomeでエントランスのオートロックを自動開錠
18855 ワード
要件
- 自宅(賃貸)のオートロックを物理鍵なしで開けたい
- 不在時は訪問者の画像をスマホへ通知したい
- 賃貸なので加工はできない
- インターホンはアイホン株式会社のVHK-RMA-S
検討内容
- インターホン(VHK-RMA-S)をハックしてデータ取得、開錠コマンド送信
- 解析してる人はいる模様 (アイ〇ンのプロトコルの話)
- 火災報知機なども連動しているので、壊したり入居者に迷惑をかけるリスクが高いため却下
- 備え付けのインターホンに、公式のネットワークアダプタを取り付ける
-
携帯電話アダプターVHW-FMCを使えば、NWに接続して形態に通知は飛ばせる模様
- 高すぎ(6万円から9万円)なので却下
採用した方法
- 自作
- センサとサーボで物理ボタンを押す
- 室内のインターホンに明るさセンサをつけて帰宅/来客を検知
- サーボモータで開錠スイッチを押す。または通知を送信
- デメリット:インターホンが使いづらい
- 肉厚の両面テープで固定してるので、すぐ原状復帰可能
- コストは5千円以下
- 不在時の訪問者は、画面に表示されてるのをIPカメラで撮影
- デメリット:画質いまいち
主な部品例
- インターホン(VHK-RMA-S)をハックしてデータ取得、開錠コマンド送信
- 解析してる人はいる模様 (アイ〇ンのプロトコルの話)
- 火災報知機なども連動しているので、壊したり入居者に迷惑をかけるリスクが高いため却下
- 備え付けのインターホンに、公式のネットワークアダプタを取り付ける
- 携帯電話アダプターVHW-FMCを使えば、NWに接続して形態に通知は飛ばせる模様
- 高すぎ(6万円から9万円)なので却下
採用した方法
- 自作
- センサとサーボで物理ボタンを押す
- 室内のインターホンに明るさセンサをつけて帰宅/来客を検知
- サーボモータで開錠スイッチを押す。または通知を送信
- デメリット:インターホンが使いづらい
- 肉厚の両面テープで固定してるので、すぐ原状復帰可能
- コストは5千円以下
- 不在時の訪問者は、画面に表示されてるのをIPカメラで撮影
- デメリット:画質いまいち
主な部品例
- 室内のインターホンに明るさセンサをつけて帰宅/来客を検知
- サーボモータで開錠スイッチを押す。または通知を送信
- デメリット:インターホンが使いづらい
- デメリット:画質いまいち
部品 | 型番 | 備考 |
---|---|---|
マイコン | ESP-WROOM-02 | またはシリアル付きのもの |
ピッチ返還基盤 | ESP-WROOM-02ピッチ変換用基板 | |
光センサ | BH1750 | |
サーボ | FEETECH FS90 | |
三端子レギュレータ | TA48033S | |
電源 | 5V 1A | 5Wあれば十分 |
ケース | お好みのもの | |
WROOM-02のライタ | シリアル付きなら不要 |
配線
ESPHomeの設定
esphome:
name: lobbydoor-opener
platform: ESP8266
board: esp_wroom_02
# Enable logging
logger:
# Enable Home Assistant API
api:
password: !secret api_password
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: lobbydoor-outdoor
password: !secret wifi_ap_password
captive_portal:
#############################
esphome:
name: lobbydoor-opener
platform: ESP8266
board: esp_wroom_02
# Enable logging
logger:
# Enable Home Assistant API
api:
password: !secret api_password
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: lobbydoor-outdoor
password: !secret wifi_ap_password
captive_portal:
#############################
globals:
- id: auto_open
type: bool
restore_value: no
initial_value: 'false'
- id: not_opened
type: bool
restore_value: no
initial_value: 'false'
- id: opening
type: bool
restore_value: no
initial_value: 'false'
i2c:
sda: GPIO4
scl: GPIO5
scan: True
sensor:
- platform: bh1750
name: "Interphone Illuminance"
address: 0x23
update_interval: 1s
internal: true
on_value_range:
- above: 8 #8lux以上
then:
- if:
condition:
lambda: 'return id(auto_open) == true;'
then:
#flg on
- globals.set:
id: opening
value: 'true'
# open!
#Click 応答
- servo.write:
id: servo1
level: -40%
- delay: 500ms
- servo.write:
id: servo1
level: 0%
#Click 開錠
- servo.write:
id: servo2
level: -50%
- delay: 500ms
- servo.write:
id: servo2
level: 0%
- servo.detach: servo2
#Click 閉じる
- servo.write:
id: servo1
level: -40%
- delay: 500ms
- servo.write:
id: servo1
level: 0%
- servo.detach: servo1
# auto off
- globals.set:
id: auto_open
value: 'false'
# flg off
- globals.set:
id: opening
value: 'false'
else:
#flg on
- globals.set:
id: not_opened
value: 'true'
- delay: 500ms
# flg off
- globals.set:
id: not_opened
value: 'false'
binary_sensor:
- platform: template
name: "LobbyDoor not open"
id: lobbydoor_not_open
lambda: 'return id(not_opened);'
- platform: template
name: "LobbyDoor opening"
id: lobbydoor_opening
lambda: 'return id(opening);'
servo:
- id: servo1
output: pwm_output1
auto_detach_time: 10s
- id: servo2
output: pwm_output2
auto_detach_time: 10s
output:
- platform: esp8266_pwm
id: pwm_output1
pin: GPIO12
frequency: 50 Hz
- platform: esp8266_pwm
id: pwm_output2
pin: GPIO13
frequency: 50 Hz
switch:
- platform: template
name: Lobbydoor Auto Open
id: lobbydoor_auto_open
internal: false
lambda: 'return id(auto_open);'
turn_on_action:
- globals.set:
id: auto_open
value: 'true'
turn_off_action:
- globals.set:
id: auto_open
value: 'false'
使い方
- Home Assistantからスイッチをオンにして、ロビーから自分の部屋を呼び出す
- entity: switch.lobbydoor_auto_open
- 玄関の鍵開けたり⇒センサの変化をトリガーにオートメーションを設定
- entity: binary_sensor.lobbydoor_opening
- 不在通知など⇒センサの変化をトリガーにオートメーションを設定
- entity: binary_sensor.lobbydoor_not_open
esphome:
name: lobbydoor-opener
platform: ESP8266
board: esp_wroom_02
# Enable logging
logger:
# Enable Home Assistant API
api:
password: !secret api_password
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: lobbydoor-outdoor
password: !secret wifi_ap_password
captive_portal:
#############################
esphome:
name: lobbydoor-opener
platform: ESP8266
board: esp_wroom_02
# Enable logging
logger:
# Enable Home Assistant API
api:
password: !secret api_password
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: lobbydoor-outdoor
password: !secret wifi_ap_password
captive_portal:
#############################
globals:
- id: auto_open
type: bool
restore_value: no
initial_value: 'false'
- id: not_opened
type: bool
restore_value: no
initial_value: 'false'
- id: opening
type: bool
restore_value: no
initial_value: 'false'
i2c:
sda: GPIO4
scl: GPIO5
scan: True
sensor:
- platform: bh1750
name: "Interphone Illuminance"
address: 0x23
update_interval: 1s
internal: true
on_value_range:
- above: 8 #8lux以上
then:
- if:
condition:
lambda: 'return id(auto_open) == true;'
then:
#flg on
- globals.set:
id: opening
value: 'true'
# open!
#Click 応答
- servo.write:
id: servo1
level: -40%
- delay: 500ms
- servo.write:
id: servo1
level: 0%
#Click 開錠
- servo.write:
id: servo2
level: -50%
- delay: 500ms
- servo.write:
id: servo2
level: 0%
- servo.detach: servo2
#Click 閉じる
- servo.write:
id: servo1
level: -40%
- delay: 500ms
- servo.write:
id: servo1
level: 0%
- servo.detach: servo1
# auto off
- globals.set:
id: auto_open
value: 'false'
# flg off
- globals.set:
id: opening
value: 'false'
else:
#flg on
- globals.set:
id: not_opened
value: 'true'
- delay: 500ms
# flg off
- globals.set:
id: not_opened
value: 'false'
binary_sensor:
- platform: template
name: "LobbyDoor not open"
id: lobbydoor_not_open
lambda: 'return id(not_opened);'
- platform: template
name: "LobbyDoor opening"
id: lobbydoor_opening
lambda: 'return id(opening);'
servo:
- id: servo1
output: pwm_output1
auto_detach_time: 10s
- id: servo2
output: pwm_output2
auto_detach_time: 10s
output:
- platform: esp8266_pwm
id: pwm_output1
pin: GPIO12
frequency: 50 Hz
- platform: esp8266_pwm
id: pwm_output2
pin: GPIO13
frequency: 50 Hz
switch:
- platform: template
name: Lobbydoor Auto Open
id: lobbydoor_auto_open
internal: false
lambda: 'return id(auto_open);'
turn_on_action:
- globals.set:
id: auto_open
value: 'true'
turn_off_action:
- globals.set:
id: auto_open
value: 'false'
使い方
- Home Assistantからスイッチをオンにして、ロビーから自分の部屋を呼び出す
- entity: switch.lobbydoor_auto_open
- 玄関の鍵開けたり⇒センサの変化をトリガーにオートメーションを設定
- entity: binary_sensor.lobbydoor_opening
- 不在通知など⇒センサの変化をトリガーにオートメーションを設定
- entity: binary_sensor.lobbydoor_not_open
- entity: switch.lobbydoor_auto_open
- entity: binary_sensor.lobbydoor_opening
- entity: binary_sensor.lobbydoor_not_open
Author And Source
この問題について(ESPHomeでエントランスのオートロックを自動開錠), 我々は、より多くの情報をここで見つけました https://qiita.com/hgn/items/981798d639f473f68e80著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .