Istnieje oczywiście możliwość integracji przez moduł eth, ale ponieważ jest on kosztowny zaprojektowałem proste rozwiązanie wykorzystując wolne wyjścia w domowej centrali Satel Integra. Nie jest to dwukierunkowa integracja, a jedynie przekazywanie informacji od alarmu do HomeAssistant. Dzięki temu można stworzyć fajne automatyzacje na podstawie wykrytego ruchu. Koszt integracji ok 50 PLN
W tym rozwiązaniu akumulator w centrali alarmowej jest wykorzystywany jako UPS dla RaspberryPI, co oczywiście skraca czas działania alarmu przy długich wyłączeniach prądu.
Hardware
- Konwerter poziomów logicznych dwukierunkowy, 4-kanałowy – Pololu – 2 szt.
- Przetwornica Step-Down – 9-38V – na 5V – USB – 5A
- NodeMCU (alternatywnie Wemos D1 mini – tańsze rozwiązanie, ja miałem pod ręką akurat wolny chipset NodeMCU)
Schemat blokowy

Zastosowałem 25W przetwornicę napięcia, aby z alarmu zasilić od razu RaspberryPI na którym jest uruchomiony HomeAssistant. Dzięki temu w przypadku braku zasilania RPi działa aż do wyczerpania baterii w alarmie.
Ważne jest użycie i skonfigurowanie odpowiednich wyjść w na płycie Integra – nie wszystkie wyjścia są wyjściami wysokoprądowymi.
Uwaga na schemacie nie zaznaczono masy.
Widok płytki od strony elementów

Software
Alarm
Konfiguracja w systemie alarmowym jest wykonana w oprogramowaniu DLOADX.
Wyjścia typu Out są wysterowane przez 3 sekundy przez wejścia z czujek PIR

Wyjście OUT Integra64 | Opis | NodeMcu |
4 | Zasilanie 12V/3A: – Raspberry 5V/2,5A – NodeMCU 5V/300mA | – |
5 | Załączony alarm w strefach: 1, 3 | D3/GPIO0 |
6 | PIR1 | D1/GPIO5 |
7 | PIR2 | D4/GPIO2 |
9 | PIR3 | D2/GPIO4 |
10 | PIR4 | D5/GPIO14 |
12 | PIR5 | D0/GPIO16 |
13 | PIR6 | D6/GPIO12 |
14 | PIR7 | D7/GPIO13 |
HomeAssistant
ESPHome
Należy wcześniej zainstalować addon ESPHome w HomeAssistant
Konfiguracja NodeMCU w ESPHome. Należy dodatkowo utworzyć plik secrets.yaml
esphome:
name: alarm
platform: ESP8266
board: nodemcuv2
wifi:
networks:
- ssid: !secret ssid
password: !secret password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Alarm Fallback Hotspot"
password: !secret password_fallback
captive_portal:
# Enable logging
logger:
level: INFO
# Enable Home Assistant API
api:
port: 6053
ota:
- platform: esphome
#web_server:
mqtt:
broker: !secret mqtt_broker_ip
username: !secret mqtt_username
password: !secret mqtt_password
binary_sensor:
- platform: gpio
pin:
number: GPIO0
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "alarm_1_3"
- platform: gpio
pin:
number: GPIO5
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "ruch_pir1"
device_class: motion
- platform: gpio
pin:
number: GPIO2
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "ruch_pir2"
device_class: motion
- platform: gpio
pin:
number: GPIO4
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "ruch_pir3"
device_class: motion
- platform: gpio
pin:
number: GPIO14
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "ruch_pir4"
device_class: motion
- platform: gpio
pin:
number: GPIO16
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "ruch_pir5"
device_class: motion
- platform: gpio
pin:
number: GPIO12
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "ruch_pir6"
device_class: motion
- platform: gpio
pin:
number: GPIO13
filters:
- invert:
- delayed_on: 250ms
- delayed_off: 250ms
name: "ruch_pir7"
device_class: motion
Plik secrets.yaml
#mqtt
mqtt_broker_ip: 192.168.1.1
mqtt_username: uzytkownik_mqtt
mqtt_password: haslo_mqtt
# Your Wi-Fi SSID and password
ssid: 'nazwa_wifi'
password: 'haslo_wifi'
#Wifi Fallback Hotspot
password_fallback: 'magiczne_haslo'
Przykładowe automatyzacje
Włączenie/wyłączenie światła
- id: 'auto_kuchnia_swiatla_on'
alias: 'Kuchnia - Włącz światło'
trigger:
platform: state
entity_id: binary_sensor.ruch_pir1
from: 'off'
to: 'on'
condition:
condition: and
conditions:
- condition: state
entity_id: light.kuchnia
state: 'off'
for:
seconds: 5
- condition: template
value_template: "{{ states.sun.sun.attributes.elevation | int < 3 }}"
action:
service: light.turn_on
entity_id: light.kuchnia
- id: 'auto_kuchnia_swiatla_off'
alias: 'Kuchnia - wyłącz po 3 min'
trigger:
platform: state
entity_id: binary_sensor.ruch_pir1
to: 'off'
for:
minutes: 3
condition:
- condition: state
entity_id: light.kuchnia
state: 'on'
action:
service: light.turn_off
entity_id: light.kuchnia
Wyłączenie urządzeń przy załączeniu strefy w alarmie
- id: 'auto_alarm_swiatla_off'
alias: 'Alarm - Wyłącz światła przy załączonym alarmie'
trigger:
platform: state
entity_id: binary_sensor.alarm_1_3
from: 'off'
to: 'on'
for:
seconds: 15
condition:
- condition: state
entity_id: group.swiatla_dol
state: 'on'
action:
- service: light.turn_off
entity_id: group.swiatla_dol
- service: switch.turn_off
entity_id: switch.pompa_wody
- service: light.turn_off
entity_id: light.lampki_choinkowe
- service: media_player.turn_off
entity_id: media_player.amplituner
- service: media_player.turn_off
entity_id: media_player.tv