Honeywell (Ademco) développe des systèmes de sécurité VISTA populaires, allant des simples VISTA-10 aux riches VISTA-250. Les systèmes de sécurité multifonction VISTA-128/250 contiennent un port RS232, qui vous permet de les intégrer dans n'importe quel autre système.On m'a confié la tâche: "Pour intégrer le système de sécurité VISTA-10 L dans le système domotique Fibaro, à partir d'une seule application mobile, vous devez contrôler à la fois l'éclairage et les portes de garage et armer la maison ."Une étude superficielle de VISTA-10 L, il s'est avéré qu'il n'y a aucun UART là-bas. Heureusement, la société www.alarmdecoder.com a été trouvée sur les étendues de l'Internet américain, qui développe des cartes simulant le fonctionnement du panneau de commande. La carte existe en 3 options de connexion: USB, RS-232, blindage UART pour Raspberry Pi. J'ai choisi le bouclier AD2Pi pour le Raspberry Pi.
La carte AD2Pi est connectée aux bornes du panneau de commande et pour le système de sécurité, elle est présentée comme un autre panneau de commande et d'affichage.
Télécommande et affichage (panneau de commande)Le schéma de connexion est simple:AD2Pi | Panneau de contrôle VISTA |
- | 4 - MISE À LA TERRE DU CLAVIER (-) |
+ | 5 - CLAVIER PWD (+) |
DI | 6 - DONNÉES DANS LE CLAVIER |
Faire | 7 - DONNÉES SUR LE CLAVIER |

Après avoir connecté l'AD2Pi au panneau de contrôle VISTA, nous continuons à travailler avec le logiciel. alarmdecoder vous permet de contrôler et de surveiller entièrement le système de sécurité.1) Installer la bibliothèque python alarmdecoder
alarmdecoder vous permet de recevoir tous les messages du système sous forme analysée, d'envoyer des commandes de contrôle et de configuration.pip install alarmdecoder
ou de gitgit clone https://github.com/nutechsoftware/alarmdecoder.git
cd alarmdecoder
python setup.py install
2) Installation de ser2sock - Serial to Socket Redirector
ser2sock vous permet de vous connecter à distance au port série, cela est nécessaire pour contrôler le système de sécurité non seulement avec Raspberry Pi, mais aussi à partir de tout autre ordinateur / appareil directement.git clone https://github.com/nutechsoftware/ser2sock.git
Détails d'installation ici: https://github.com/nutechsoftware/ser2sock3) Configuration de la carte AD2Pi
Tout d'abord, vous devez configurer la carte AD2Pi pour qu'elle nous transmette tous les événements d'intérêt. Connectez-vous au port série AD2Pi via minicom et entrez "!" Pour entrer dans le mode de configuration. Notez que l'adresse du panneau de commande virtuel doit être 31, le LRR doit être Y et le masque aux adresses ffffffff, c'est-à-dire Recevez des messages de tout le monde.sudo minicom -d /dev/ttyAMA0
Sur le panneau de commande, vous devez activer la fonction d'envoi de messages via LRR / GSM, puis nous saurons quel utilisateur a supprimé et armé.
4) Vérification de la santé du système
Exécutez ser2sock et écoutez le port 10000:sudo /etc/init.d/ser2sock start
nc localhost 10000
Doit voir les messages du système:
5) Traitement des messages du système de sécurité

Script Python pour envoyer des messages de alarmdecoder au contrôleur d'automatisation 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()
Pour traiter le message, j'ai écrit un petit script python qui l'a mis en chargement automatique.Le script se connecte au service ser2sock, en reçoit des messages et les envoie au contrôleur d'automatisation Home Center 2. Sur le contrôleur, je traite les messages, les affiche dans un périphérique virtuel et envoie une notification push sur l'état du système de sécurité.6) Widget pour la gestion du système d'alarme Home Center 2
À Home Center 2, j'ai créé un appareil virtuel avec lequel vous pouvez armer dans différents modes, désarmer et qui affiche l'état du système et des informations sur qui a configuré ou désarmé.Pour armer ou désarmer, il vous suffit d'envoyer une requête TCP avec le code d'armement / désarmement.
Script Lua pour le traitement des messages de 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
Il était également nécessaire de créer plusieurs variables globales sur Home Center 2 qui stockent l'état actuel du système et des utilisateurs.
Toutes les informations affichées sur le panneau de commande: désarmé / armé, déclenchement du capteur, batterie faible du capteur, passage à l'alimentation de secours, etc., peuvent être traitées et envoyées au système d'automatisation pour d'autres actions.Tous les appareils Home Center 2 sont diffusés sur homebridge , ce qui vous permet d'armer et de supprimer à l'aide de l'assistant vocal de Siri.Les cartes alarmdecoder peuvent être utilisées avec n'importe quel système d'automatisation, une documentation détaillée et une API pratique vous permettent d'intégrer facilement et rapidement le système de sécurité dans n'importe quelle maison intelligente!