рд╣рдиреАрд╡реЗрд▓ (Ademco) рд▓реЛрдХрдкреНрд░рд┐рдп VISTA рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг VISTA-10s рд╕реЗ рд▓реЗрдХрд░ рдЕрдореАрд░ VISTA-250s рд╢рд╛рдорд┐рд▓ рд╣реИрдВред VISTA-128/250 рд╡рд┐рд╡рд┐рдз рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ RS232 рдкреЛрд░реНрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдореБрдЭреЗ рдпрд╣ рдХрд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: " рд╡рд┐рд╕реНрдЯрд╛ -10 рдПрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдлрд╛рдЗрдмреНрд░реЛ рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░рдХрд╛рд╢ рдФрд░ рдЧреЗрд░рд╛рдЬ рджрд░рд╡рд╛рдЬреЗ рджреЛрдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдШрд░ рдХреЛ рдЖрд░реНрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред"VISTA-10 L рдХрд╛ рдПрдХ рд╕рд░рд╕рд░реА рдЕрдзреНрдпрдпрди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд╣рд╛рдБ рдХреЛрдИ UART рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХрдВрдкрдиреА www.alarmdecoder.com рдЕрдореЗрд░рд┐рдХреА рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреЛрд░реНрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдмреЛрд░реНрдб 3 рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ: USB, RS-232, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЗ рд▓рд┐рдП UART рдврд╛рд▓ред рдореИрдВрдиреЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЗ рд▓рд┐рдП AD2Pi рдврд╛рд▓ рдХреЛ рдЪреБрдирд╛ред
AD2Pi рдмреЛрд░реНрдб рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдХреЗ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдкреИрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ (рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓)рдХрдиреЗрдХреНрд╢рди рдЖрд░реЗрдЦ рд╕рд░рд▓ рд╣реИ:AD2Pi | VISTA рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ |
- | 4 - рдкреНрд░рдореБрдЦ рднреВрдЧреЛрд▓ (-) |
+ | 5 - KEYPAD PWD (+) |
рдбрд┐ | 6 - рдХреБрдВрдЬреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ |
рдбреАрдУ | 7 - рдХреБрдВрдЬреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ |

AD2Pi рдХреЛ VISTA рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрд▓рд╛рд░реНрдордХреЙрдХрд░ рдЖрдкрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред1) рдкрд╛рдпрдерди рдЕрд▓рд╛рд░реНрдордбреНрд░реИрдХрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЕрд▓рд╛рд░реНрдордХрд╛рд░реНрдб рдЖрдкрдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдлреЙрд░реНрдо рдореЗрдВ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредpip install alarmdecoder
рдпрд╛ рдЧрд┐рдЯ рд╕реЗgit clone https://github.com/nutechsoftware/alarmdecoder.git
cd alarmdecoder
python setup.py install
2) рдЗрдВрд╕реНрдЯрд╛рд▓рд┐рдВрдЧ ser2sock - рд╕реАрд░рд┐рдпрд▓ рд╕реЗ рд╕реЙрдХреЗрдЯ рд░рд┐рдбрд╛рдпрд░реЗрдХреНрдЯрд░
ser2sock рдЖрдкрдХреЛ рджреВрд░ рд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рди рдХреЗрд╡рд▓ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЗ рд╕рд╛рде, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкреНрдпреВрдЯрд░ / рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рд╕реАрдзреЗ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИредgit clone https://github.com/nutechsoftware/ser2sock.git
рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ: https://github.com/nutechsoftware/ser2sock3) AD2Pi рдмреЛрд░реНрдб рд╕реЗрдЯрдЕрдк
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ AD2Pi рдмреЛрд░реНрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрддрд╛рдПред рдорд┐рдирд┐рдХреЙрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ AD2Pi рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ "!" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХрд╛ рдкрддрд╛ 31 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрд▓рдЖрд░рдЖрд░ рд╡рд╛рдИ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкрддреЗ рдкрд░ рдорд╛рд╕реНрдХ рдлреНрдлреНрдлрдл, рдпрд╛рдиреАред рд╕рднреА рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВредsudo minicom -d /dev/ttyAMA0
рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдкрд░, рдЖрдкрдХреЛ LRR / GSM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рд╕рд╢рд╕реНрддреНрд░ рд╣реИред
4) рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
Ser2sock рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ 10000 рдХреЛ рд╕реБрдиреЗ:sudo /etc/init.d/ser2sock start
nc localhost 10000
рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрджреЗрд╢ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
5) рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рд╕рдВрджреЗрд╢ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛

рдЕрд▓рд╛рд░реНрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣реЛрдо рд╕реЗрдВрдЯрд░ 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 рд╕реЗрд╡рд╛ рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ, рдЗрд╕рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣реЛрдо рд╕реЗрдВрдЯрд░ 2 рд╕реНрд╡рдЪрд╛рд▓рди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рднреЗрдЬрддреА рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдкрд░, рдореИрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЖрднрд╛рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдзрдХреНрдХрд╛ рд╕реВрдЪрдирд╛ рднреЗрдЬрддрд╛ рд╣реВрдВред6) рд╣реЛрдо рд╕реЗрдВрдЯрд░ 2 рдЕрд▓рд╛рд░реНрдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреЗрдЯ
рд╣реЛрдо рд╕реЗрдВрдЯрд░ 2 рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдореЛрдб рдореЗрдВ рдмрд╛рдВрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд░рд╕реНрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕реЗрдЯ рдпрд╛ рдирд┐рд░рд╕реНрддреНрд░реАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИредрд╣рд╛рде рдпрд╛ рдирд┐рд░рд╕реНрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рдЯреАрд╕реАрдкреА рдЕрдиреБрд░реЛрдз рдХреЛ рд╣рд╛рде / рдирд┐рд░рд╕реНрддреНрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред
рдЕрд▓рд╛рд░реНрдоdecoder рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Lua рд╕реНрдХреНрд░рд┐рдкреНрдЯ
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
рд╣реЛрдо рд╕реЗрдВрдЯрд░ 2 рдкрд░ рдХрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА: рдирд┐рд░рд╕реНрддреНрд░ / рд╕рд╢рд╕реНрддреНрд░, рд╕реЗрдВрд╕рд░ рд╕рдХреНрд░рд┐рдпрдг, рдХрдо рд╕реЗрдВрд╕рд░ рдмреИрдЯрд░реА, рдмреИрдХрдЕрдк рдкрд╛рд╡рд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рдЖрджрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╕рднреА рд╣реЛрдо рд╕реЗрдВрдЯрд░ 2 рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╣реЛрдордмреНрд░рд┐рдЬ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рд╕рд┐рд░реА рдХреЗ рд╡реЙрдпрд╕ рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдЕрд▓рд╛рд░реНрдордХрд╛рд░реНрдб рд╕реЗ рдмреЛрд░реНрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА, рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рд╕реНрдорд╛рд░реНрдЯ рдШрд░ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ!