تقوم شركة Honeywell (Ademco) بتطوير أنظمة أمان VISTA الشهيرة ، بدءًا من VISTA-10s البسيطة إلى VISTA-250s الغنية. تحتوي أنظمة الأمن VISTA-128/250 متعددة الوظائف على منفذ RS232 ، والذي يسمح لك بدمجها في أي نظام آخر.تم تكليفي بالمهمة: " لدمج نظام الأمان VISTA-10 L في نظام أتمتة المنزل في فيبارو ، من تطبيق محمول واحد ، تحتاج إلى التحكم في كل من الإضاءة وأبواب المرآب وتسليح المنزل ."دراسة سريعة لـ VISTA-10 L ، اتضح أنه لا يوجد UART على الإطلاق. لحسن الحظ ، تم العثور على شركة www.alarmdecoder.com على مساحات الإنترنت الأمريكية، الذي يقوم بتطوير لوحات تحاكي تشغيل لوحة التحكم. اللوحة موجودة في 3 خيارات اتصال: USB ، RS-232 ، درع UART لـ Raspberry Pi. اخترت درع AD2Pi لـ Raspberry Pi.
يتم توصيل لوحة AD2Pi بأطراف لوحة التحكم ويتم تقديمها كنظام تحكم وعرض آخر لنظام الأمان.
التحكم عن بعد والعرض (لوحة التحكم)مخطط الاتصال بسيط:AD2Pi | لوحة تحكم VISTA |
- | 4 - لوحة المفاتيح (-) |
+ | 5 - KEYPAD PWD (+) |
DI | 6 - البيانات في لوحة المفاتيح |
افعل | 7 - البيانات خارج لوحة المفاتيح |

بعد توصيل AD2Pi بلوحة تحكم VISTA ، ننتقل إلى العمل مع البرنامج. يسمح لك برنامج التنبيه بالتحكم الكامل ومراقبة نظام الأمان.1) تثبيت مكتبة المبرمج بيثون التنبيه
يسمح لك alarmdecoder باستلام جميع رسائل النظام في شكل تحليل ، وإرسال أوامر التحكم والتكوين.pip install alarmdecoder
أو من بوابةgit clone https://github.com/nutechsoftware/alarmdecoder.git
cd alarmdecoder
python setup.py install
2) تثبيت ser2sock - المسلسل إلى معيد التوجيه Socket
يتيح لك ser2sock الاتصال بالمنفذ التسلسلي عن بعد ، وهذا ضروري للتحكم في نظام الأمان ليس فقط مع Raspberry Pi ، ولكن أيضًا من أي جهاز كمبيوتر / جهاز آخر مباشرة.git clone https://github.com/nutechsoftware/ser2sock.git
تفاصيل التثبيت هنا: https://github.com/nutechsoftware/ser2sock3) إعداد لوحة AD2Pi
بادئ ذي بدء ، تحتاج إلى تكوين لوحة AD2Pi بحيث تنقل لنا جميع الأحداث المهمة. الاتصال بالمنفذ التسلسلي AD2Pi عبر minicom وأدخل "!" للدخول إلى وضع التكوين. لاحظ أن عنوان لوحة التحكم الافتراضية يجب أن يكون 31 ، ويجب أن يكون LRR Y ، والقناع الموجود في العناوين ffffffff ، أي تلقي رسائل من الجميع.sudo minicom -d /dev/ttyAMA0
في لوحة التحكم ، تحتاج إلى تنشيط وظيفة إرسال الرسائل عبر LRR / GSM ، ثم سنعرف أي مستخدم قام بإزالته وتسلحه.
4) التحقق من صحة النظام
قم بتشغيل ser2sock والاستماع إلى المنفذ 10000:sudo /etc/init.d/ser2sock start
nc localhost 10000
يجب أن ترى رسائل من النظام:
5) معالجة الرسائل من النظام الأمني

برنامج Python النصي لإرسال رسائل من منبهة الإنذار إلى وحدة تحكم الأتمتة في 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()
لمعالجة الرسالة ، كتبت نص ثعبان صغير وضعه في التحميل التلقائي.يتصل البرنامج النصي بخدمة ser2sock ، ويستقبل الرسائل منه ويرسلها إلى وحدة تحكم الأتمتة في Home Center 2. على وحدة التحكم ، أقوم بمعالجة الرسائل وعرضها في جهاز ظاهري وإرسال إشعار دفع حول حالة نظام الأمان.6) القطعة لإدارة نظام الإنذار هوم سنتر 2
في Home Center 2 ، قمت بإنشاء جهاز افتراضي يمكنك التسلح باستخدامه في أوضاع مختلفة ، ونزع سلاحه ، ويعرض حالة النظام ومعلومات حول من قام بتعيين أو نزع سلاحه.للتسلح أو نزع السلاح ، ما عليك سوى إرسال طلب TCP مع رمز الذراع / نزع السلاح.
نص لوا لمعالجة الرسائل من التنبيه
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
كان مطلوبًا أيضًا إنشاء العديد من المتغيرات العالمية في Home Center 2 ، التي تخزن الحالة الحالية للنظام والمستخدمين.
يمكن معالجة جميع المعلومات المعروضة على لوحة التحكم: نزع السلاح / التسلح ، وتنشيط المستشعر ، وبطارية المستشعر المنخفضة ، والتحويل إلى طاقة احتياطية ، وما إلى ذلك ، وإرسالها إلى نظام التشغيل الآلي لمزيد من الإجراءات.يتم بث جميع أجهزة Home Center 2 إلى الجسر المنزلي ، مما يسمح لك بالتسلح والإزالة باستخدام مساعد صوت Siri.رسوم من alarmdecoder يمكن استخدامها مع أي نظام التشغيل الآلي، وثائق مفصلة و سهلة الاستخدام API تجعل من الممكن بسهولة وبسرعة دمج النظام الأمني في أي منزل ذكي!