A Honeywell (Ademco) está desenvolvendo sistemas populares de segurança VISTA, variando de simples VISTA-10s a ricos VISTA-250s. Os sistemas de segurança multifuncional VISTA-128/250 contêm uma porta RS232, que permite integrá-los a qualquer outro sistema.Foi-me dada a tarefa: "Para integrar o sistema de segurança VISTA-10 L ao sistema de automação residencial Fibaro, a partir de um aplicativo móvel, você precisa controlar a iluminação e as portas da garagem e armar a casa ".Um estudo superficial do VISTA-10 L revelou que não existe UART. Felizmente, a empresa www.alarmdecoder.com foi encontrada nas extensões da Internet americana, que está desenvolvendo placas que simulam a operação do painel de controle. A placa existe em 3 opções de conexão: USB, RS-232, blindagem UART para Raspberry Pi. Eu escolhi o escudo AD2Pi para o Raspberry Pi.
A placa AD2Pi é conectada aos terminais do painel de controle e, para o sistema de segurança, é apresentada como outro painel de controle e exibição.
Controle remoto e display (painel de controle)O diagrama de conexão é simples:AD2Pi | Painel de controle VISTA |
- | 4 - TERRA DO TECLADO (-) |
+ | 5 - PWD COM TECLADO (+) |
DI | 6 - DADOS NO TECLADO |
FAZER | 7 - DADOS PARA O TECLADO |

Depois de conectar o AD2Pi ao painel de controle VISTA, continuamos a trabalhar com o software. O alarmdecoder permite controlar e monitorar totalmente o sistema de segurança.1) Instale a biblioteca python alarmdecoder
O alarmdecoder permite que você receba todas as mensagens do sistema em formato analisado, envie comandos de controle e configuração.pip install alarmdecoder
ou do gitgit clone https://github.com/nutechsoftware/alarmdecoder.git
cd alarmdecoder
python setup.py install
2) Instalação do ser2sock - redirecionador serial para soquete
O ser2sock permite conectar-se à porta serial remotamente, isso é necessário para controlar o sistema de segurança não apenas com o Raspberry Pi, mas também diretamente em qualquer outro computador / dispositivo.git clone https://github.com/nutechsoftware/ser2sock.git
Detalhes da instalação aqui: https://github.com/nutechsoftware/ser2sock3) Configuração da placa AD2Pi
Primeiro de tudo, você precisa configurar a placa AD2Pi para que ela nos transmita todos os eventos de interesse. Conecte-se à porta serial AD2Pi via minicom e digite "!" Para entrar no modo de configuração. Observe que o endereço do painel de controle virtual deve ser 31, o LRR deve ser Y e a máscara nos endereços ffffffff, ou seja, Receba mensagens de todos.sudo minicom -d /dev/ttyAMA0
No painel de controle, você precisa ativar a função de enviar mensagens via LRR / GSM, para saber qual usuário foi removido e armado.
4) Verificando a integridade do sistema
Execute ser2sock e ouça a porta 10000:sudo /etc/init.d/ser2sock start
nc localhost 10000
É necessário ver as mensagens do sistema:
5) Processando mensagens do sistema de segurança

Script Python para enviar mensagens do alarmdecoder para o controlador de automação do Home Center 2
import json
import base64
import time
from time import gmtime, strftime
import requests
from requests.auth import HTTPBasicAuth
from alarmdecoder import AlarmDecoder
from alarmdecoder.devices import SocketDevice
HOSTNAME = 'localhost'
PORT = 10000
username = "admin"
password = "admin"
def main():
"""
Example application that prints messages from the panel to the terminal.
"""
try:
device = AlarmDecoder(SocketDevice(interface=(HOSTNAME, PORT)))
device.on_message += handle_message
device.on_lrr_message += handle_lrr_message
with device.open():
while True:
time.sleep(1)
except Exception, ex:
print 'Exception:', ex
def handle_message(sender, message):
"""
Handles message events from the AlarmDecoder.
"""
print message.text
jsonData = {"value":message.text}
requests.put('http://10.0.1.43/api/globalVariables/AlarmStatus', json = jsonData, auth=HTTPBasicAuth(username, password))
def handle_lrr_message(sender, message):
"""
Handles message events from the AlarmDecoder.
"""
lrr_message = message.event_data + " " + message.event_type
print lrr_message
jsonData = {"value":lrr_message}
requests.put('http://10.0.1.43/api/globalVariables/AlarmUsers', json = jsonData, auth=HTTPBasicAuth(username, password))
if __name__ == '__main__':
main()
Para processar a mensagem, escrevi um pequeno script python que o colocou no carregamento automático.O script se conecta ao serviço ser2sock, recebe mensagens dele e as envia para o controlador de automação do Home Center 2. No controlador, eu processo as mensagens, as mostro em um dispositivo virtual e envio uma notificação por push sobre o status do sistema de segurança.6) Widget para gerenciar o sistema de alarme do Home Center 2
No Home Center 2, criei um dispositivo virtual com o qual você pode armar em diferentes modos, desarmar e exibir o status do sistema e informações sobre quem configurou ou desarmou.Para armar ou desarmar, basta enviar uma solicitação TCP com o código armar / desarmar.
Script Lua para processar mensagens do alarmdecoder
securityStatus = fibaro:getGlobalValue('AlarmStatus')
lastSecurityStatus = fibaro:getGlobalValue('lastSecurityStatus')
if (lastSecurityStatus ~= securityStatus) then
fibaro:call(108, "setProperty", "ui.Label1.value", os.date("%x %X ") .. securityStatus)
fibaro:setGlobal('lastSecurityStatus',securityStatus)
fibaro:debug(fibaro:getValue(108, 'ui.Label1.value'))
end
alarmUsers = fibaro:getGlobalValue('AlarmUsers')
lastAlarmUsers = fibaro:getGlobalValue('lastAlarmUsers')
if (lastAlarmUsers ~= alarmUsers) then
fibaro:setGlobal('lastAlarmUsers',alarmUsers)
userID = string.sub(alarmUsers, 3, 3)
event = string.sub(alarmUsers, 5)
if userID == "4" then
userID = "Raspberry"
elseif userID == "3" then
userID = ""
elseif userID == "2" then
userID = ""
end
if event == "ARM_AWAY" then
event = " "
elseif event == "ARM_STAY" then
event = " "
elseif event == "OPEN" then
event = " "
end
fibaro:call(108, "setProperty", "ui.Label2.value", event .. " " .. userID)
fibaro:debug(fibaro:getValue(108, 'ui.Label2.value'))
fibaro:call(100, "sendPush", fibaro:getValue(108, 'ui.Label2.value'))
fibaro:call(25, "sendPush", fibaro:getValue(108, 'ui.Label2.value'))
end
Também foi necessário criar várias variáveis globais no Home Center 2, que armazenam o estado atual do sistema e dos usuários.
Todas as informações exibidas no painel de controle: desarmadas / armadas, ativação do sensor, bateria fraca do sensor, mudança para energia de reserva, etc., podem ser processadas e enviadas ao sistema de automação para ações adicionais.Todos os dispositivos do Home Center 2 são transmitidos para homebridge , o que permite armar e remover usando o assistente de voz da Siri.As placas do decodificador de alarme podem ser usadas com qualquer sistema de automação, documentação detalhada e uma API conveniente, permitindo a integração rápida e conveniente do sistema de segurança em qualquer casa inteligente!