Olá pessoal.
Estou a criar um alarme cá para casa com um raspberry (script em python), depois da central ter avariado, aproveitei apenas os sensores.
ja recebo o estado dos sensores no HA, só que eu queria receber notificaçao se o alarme estiver no estado Armado e os sensores detetarem movimento…mas nao estou a receber nada…
sensor:
- platform: mqtt
name: Estado Do Alarme
state_topic: "aveiro/alarme/estado"
- platform: mqtt
name: Cozinha
state_topic: "aveiro/sensor/cozinha"
- platform: mqtt
name: Garagem
state_topic: "aveiro/sensor/garagem"
- platform: mqtt
name: Hall Entrada
state_topic: "aveiro/sensor/hall-Entrada"
- platform: mqtt
name: Hall Piso 1
state_topic: "aveiro/sensor/piso1"
- platform: mqtt
name: Sala
state_topic: "aveiro/sensor/sala"
- platform: mqtt
name: Gás Cozinha
state_topic: "aveiro/sensor/gas"
- platform: mqtt
name: Fumo Cozinha
state_topic: "aveiro/sensor/fumocozinha"
####################################################
automation:
- alias: Estado Do Alarm
initial_state: true
trigger:
- platform: state
entity_id: switch.arm_desarm
from: 'off'
to: 'on'
action:
service: notify.telegram
data:
title: Home Assistant
message: Alarme De Casa Ativado
- alias: Estado Do Alarm2
initial_state: true
trigger:
- platform: state
entity_id: switch.arm_desarm
from: 'on'
to: 'off'
action:
service: notify.telegram
data:
title: Home Assistant
message: Alarme De Casa Desativado
- alias: testealarmmmm
initial_state: true
trigger:
- platform: state
entity_id: sensor.cozinha
to: 'Movimento Detetado'
- platform: state
entity_id: sensor.garagem
to: 'Movimento Detetado'
condition:
- condition: state
entity_id: sensor.estado_do_alarme
state: Armado
action:
service: notify.telegram
data:
title: Home Assistant
message: ALARM a tocar
aqui vai o script que tenho no raspberry…cada zona da casa tem um script que le um pinout diferente…
Cozinha.py
import RPi.GPIO as GPIO
import time
import os
from datetime import datetime
from time import gmtime, strftime #importamos gmtime y strftime
import paho.mqtt.client as mqtt
Zonas = {}
Zonas["Cozinha "] = 8
client = mqtt.Client("P178")
client.connect ("192.168.60.21")
for k in Zonas:
GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme
GPIO.setup(Zonas[k], GPIO.IN, pull_up_down=GPIO.PUD_UP) # Button pin set as input w/ pull-up
def check_motion(pin, zona):
if GPIO.input(pin): # button is released
timex = str(datetime.now())
time.sleep(0.5)
print " | %s | Movimento Detetado |"% (zona)
client.publish ("aveiro/sensor/cozinha","Movimento Detetado")
else:
print " | %s | Standby |"% (zona)
client.publish("aveiro/sensor/cozinha","Standby")
try:
while(1):
for k in Zonas:
check_motion(Zonas[k], k)
time.sleep(0.5)
except KeyboardInterrupt: # If CTRL+C is pressed, exit cleanly:
GPIO.cleanup() # cleanup all GPIO
cada script é um sensor no HA via MQTT… ex da cozinha.py:
client.publish (“aveiro/sensor/cozinha”,“Movimento Detetado”)
ou
client.publish(“aveiro/sensor/cozinha”,“Standby”)
ex GAragem .py
client.publish (“aveiro/sensor/garagem”,“Movimento Detetado”)
ou
client.publish(“aveiro/sensor/garagem”,“Standby”)
Faltam-te as aspas no Armado no state do alarme, na condition…
Já agora, sem me querer meter demasiado, fazias o mesmo mais facilmente e mais barato com um nodemcu e tasmota do que com o rpi… Just say’in…